勉強日記

チラ裏

LPIC あずき本v5.0 メール管理


メール管理

メール配送の仕組み

  • 構成要素
    • MTA: Message Transfer Agent
    • MDA: Mail Delivery Agent
    • MUA: Mail User Agent
      • メールクライアント
      • メール作成、閲覧
  • 流れ
    1. メールクライアントソフトウェア(MUA)でメール作成
    2. 送信元側のメールサーバ上のMTA(1)へ送る
    3. 宛先側のメールサーバ上のMTA(2)へ転送
    4. MTA(2)がメールを受け取ると、MDAがメールをメールボックスに格納する
    5. 受取人は自分のメールボックスからメールを取り出す
  • 代表的なSMTPサーバー

MTAの起動

  • SMTPは25番ポートで動く
  • 25番ポートを開いているソフトウェアを調べる
netstat -atnp | grep 25
  • 起動
    • SysVinit
      • sudo /etc/init.d/postfix start
    • Systemd
      • sudo systemctl start postfix.service

メールの送信と確認

  • mailコマンド
  • プリインストールされていなかった
  • Ubuntu
sudo apt install -y mailutils
sudo yum install -y mailx
  • メール送る
mail -s <subject> <宛先メールアドレスもしくはユーザ名>
  • MTAが動いていること
send-mail: fatal: parameter inet_interfaces: no local interface found for ::1
  • postfixサービス起動時にエラーが出る場合
journalctl -xe
  • IPv6とかで怒られる
-- Logs begin at Wed 2019-04-17 01:40:24 UTC, end at Wed 2019-04-17 01:41:56 UTC
. --
Apr 17 01:40:24 104d3a1be772 kernel: docker0: port 1(vethdc4a63d) entered disabl
ed state
Apr 17 01:40:24 104d3a1be772 kernel: device vethdc4a63d entered promiscuous mode
Apr 17 01:40:24 104d3a1be772 kernel: IPv6: ADDRCONF(NETDEV_UP): vethdc4a63d: lin
k is not ready
Apr 17 01:40:24 104d3a1be772 kernel: docker0: port 1(vethdc4a63d) entered blocki
ng state
Apr 17 01:40:24 104d3a1be772 kernel: docker0: port 1(vethdc4a63d) entered forwar
ding state
Apr 17 01:40:24 104d3a1be772 kernel: docker0: port 1(vethdc4a63d) entered disabl
ed state
Apr 17 01:40:24 104d3a1be772 kernel: eth0: renamed from veth8d69274
  127.0.0.1    localhost
- ::1  localhost ip6-localhost ip6-loopback
+ #::1  localhost ip6-localhost ip6-loopback
  fe00::0   ip6-localnet
  ff00::0   ip6-mcastprefix
  ff02::1   ip6-allnodes
  ff02::2   ip6-allrouters
  172.17.0.2    104d3a1be772
systemctl start postfix.service
  • メール送る
    • ヒアドキュメントみたいなかんじに本文入力
    • .で入力終了
mail -s dear_hoge hoge
> piyo
> .
  • EOT: End Of Transmission (転送処理完了)
EOT
  • メール確認する
su - hoge
mail
  • 対話的にメールを選択したりできる

メールの転送とエイリアス

ls /etc/aliases*
/etc/aliases  /etc/aliases.db
  • /etc/aliases
#
#  Aliases in this file will NOT be expanded in the header from
#  Mail, but WILL be visible over networks or from /bin/mail.
#
#   >>>>>>>>>>    The program "newaliases" must be run after
#   >> NOTE >>  this file is updated for any changes to
#   >>>>>>>>>>    show through to sendmail.
#

# Basic system aliases -- these MUST be present.
mailer-daemon:  postmaster
postmaster: root

# General redirections for pseudo accounts.
bin:        root
daemon:     root
adm:        root
lp:     root
sync:       root
shutdown:   root
halt:       root
mail:       root
news:       root
uucp:       root
operator:   root
games:      root
gopher:     root
ftp:        root
nobody:     root
radiusd:    root
nut:        root
dbus:       root
vcsa:       root
canna:      root
wnn:        root
rpm:        root
nscd:       root
pcap:       root
apache:     root
webalizer:  root
dovecot:    root
fax:        root
quagga:     root
radvd:      root
pvm:        root
amandabackup:       root
privoxy:    root
ident:      root
named:      root
xfs:        root
gdm:        root
mailnull:   root
postgres:   root
sshd:       root
smmsp:      root
postfix:    root
netdump:    root
ldap:       root
squid:      root
ntp:        root
mysql:      root
desktop:    root
rpcuser:    root
rpc:        root
nfsnobody:  root

ingres:     root
system:     root
toor:       root
manager:    root
dumper:     root
abuse:      root

newsadm:    news
newsadmin:  news
usenet:     news
ftpadm:     ftp
ftpadmin:   ftp
ftp-adm:    ftp
ftp-admin:  ftp
www:        webmaster
webmaster:  root
noc:        root
security:   root
hostmaster: root
info:       postmaster
marketing:  postmaster
sales:      postmaster
support:    postmaster


# trap decode to catch security attacks
decode:     root

# Person who should get root's mail
#root:      marc
  • <エイリアス>: <転送先>[, <転送先2>[, ...]]
    • <エイリアス>なるユーザにはメールは届かなくなる
    • 上の例では、binユーザがいてもメールは届かない。rootにのみ届く
  • /etc/aliasesを編集するだけでは転送は行われない
  • newaliasesコマンド
    • /etc/aliasesファイルをもとに/etc/alises.dbファイルを更新
      • MTAが実際に参照するデータベースファイル
file /etc/aliases.db
/etc/aliases.db: Berkeley DB (Hash, version 9, native byte-order)

.forwardファイル

ユーザは自分自身へのメール配送を、.forward ファイルをホームディレクトリ
に作ることで制御できます。それぞれのユーザの .forward ファイルの行は
aliases のエントリの右側と同じ文法です。
  • ユーザのホームディレクトリに.forwardファイルを置く
    • 転送先アドレスを記入する
      • /etc/aliasesの右カラムと同じ内容
    • ユーザー各自で設定できる
  • 一時的にメールを転送したい場合に有効

メールキューの操作

  • メールキュー
    • 送信待ちのメールが蓄えられる
      • 送信先メールサーバが停止していて送信できないような場合
      • 宛先がDNSで検索できなかった場合
  • mailqコマンド
    • メールキューを一覧
  • postfixサービスが起動していない状態でメールを送信してみる
mail -s dear_hoge hoge
piyo
.
EOT
postdrop: warning: unable to look up public/pickup: No such file or directory
  • キュー確認
mailq
  • MTAサーバが動いていないので、メールキューにメールがたまっている
postqueue: warning: Mail system is down -- accessing queue directly
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
855EE7C0381      279 Wed Apr 17 03:48:51  root
                                         hoge

-- 0 Kbytes in 1 Request.
  • MTAサーバ動かす
systemctl start postfix
  • 再度キュー確認
mailq
  • 空になった
Mail queue is empty
  • 受信確認
su - hoge
mail
  • 届いた
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/hoge": 1 message 1 new
>N  1 root                  Wed Apr 17 03:52  18/627   "dear_hoge"
& 1
Message  1:
From root@caed1000a4d0.localdomain  Wed Apr 17 03:52:45 2019
...