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

LPICLinux勉強メモ

メール管理

メール配送の仕組み

  • 構成要素

    • MTA: Message Transfer Agent

      • SMTPプロトコルでメッセージをやりとりするため、SMTPサーバとも
    • MDA: Mail Delivery Agent

      • メールボックスにメールを突っ込む
    • MUA: Mail User Agent

      • メールクライアント
      • メール作成、閲覧
  • 流れ

    1. メールクライアントソフトウェア(MUA)でメール作成
    2. 送信元側のメールサーバ上のMTA(1)へ送る
    3. 宛先側のメールサーバ上のMTA(2)へ転送

      • 相手ドメインのDNSサーバに尋ねる

        • MXレコード
    4. MTA(2)がメールを受け取ると、MDAがメールをメールボックスに格納する
    5. 受取人は自分のメールボックスからメールを取り出す

      • POP
      • IMAP
  • 代表的なSMTPサーバー

    • sendmail
    • Postfix
    • exim

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
  • CentOS
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
  • /etc/hostsのIPv6のループバックアドレスをコメントアウトする
  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
  • postfixサービス起動
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
...