メールを受信できない時の切り分け順序
- PostfixとDovecotが起動しているか
- SMTPでメールがサーバーへ届いているか
- Dovecotの認証が成功するか
- Maildirの所有者・権限が正しいか
- ポート、ファイアウォール、SELinuxに拒否されていないか
sudo systemctl status postfix dovecot
sudo journalctl -u postfix -u dovecot --since '30 minutes ago'
sudo postconf -n
sudo doveconf -n
sudo doveadm auth test USERNAME
sudo ss -lntp | grep -E ':(25|465|587|143|993)\b'
Maildirの権限を確認する
namei -l /home/USERNAME/Maildir
find /home/USERNAME/Maildir -maxdepth 2 -printf '%M %u:%g %p\n' | head
所有者は通常そのメールユーザーです。原因確認のためでもchmod -R 777は使用しないでください。SELinuxが有効な環境では、権限だけでなく監査ログとコンテキストも確認します。
この後の従来事例は「メールが存在するのにIMAPクライアントから見えない」場合の権限問題として参照できます。
Postfix + Dovecotでメール送受信のサーバを構築した際に、 かなりハマってしまったのでメモ。 Windowsクライアント側からIMAPでの受信を試みると、本来あるはずのメールが受信されず。 新着メールが無いものとして正常終了する。そこでサーバ側のログを確認。vi /var/log/maillog
メールログをみると、ログインはできており、特段エラーも出ていない模様。
10441 Apr 9 03:33:40 hogehoge dovecot: imap-login: Login: user=<info>, method=PLAIN, rip=XXX.XXX.XXX.XXX, lip=YYY.YYY.YYY.YYY, mpid=16225, TLS, session=<aaaaa>
10442 Apr 9 03:33:40 hogehoge dovecot: imap(info): Disconnected: Logged out in=363 out=2762
もろもろ調べてみると以下で紹介されていました。
旧Hatenaダイアリーの参考記事(現在は公開終了)
info, adminなどの特定メールアドレスは、
デフォルトでエイリアスに転送されているので、
転送させたくない場合はコメントアウトする必要がある。
(単純な知識不足でした)
#
# 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
root: hoge@fuga.com
なるほど。まさにこれ。
info宛てのメールがpostmasterになってたわけですね。
目的のinfoをコメントアウトしたら、Windowsのメールクライアント側で正常に受信が出来ました。

