メール管理
メール配送の仕組み
-
構成要素
-
MTA: Message Transfer Agent
- SMTPプロトコルでメッセージをやりとりするため、SMTPサーバとも
-
MDA: Mail Delivery Agent
- メールボックスにメールを突っ込む
-
MUA: Mail User Agent
- メールクライアント
- メール作成、閲覧
-
-
流れ
- メールクライアントソフトウェア(MUA)でメール作成
- 送信元側のメールサーバ上のMTA(1)へ送る
-
宛先側のメールサーバ上のMTA(2)へ転送
-
相手ドメインのDNSサーバに尋ねる
- MXレコード
-
- MTA(2)がメールを受け取ると、MDAがメールをメールボックスに格納する
-
受取人は自分のメールボックスからメールを取り出す
- 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
...