1 min read

Cronのメールが届かなくなった

sendmail のアップグレードをしたら届かなくなって焦った。

同LAN内に Postfix のメール鯖を建てており、そこ宛てに送ろうとしている。
だがなにをやっても送れない。
もちろん Postfix 側では同LANからの送信をすべて許可している。

  • 送信: user@cron-server
  • 送信: postmaster@mail-server
  • 備考: 送信元の crontab 内で MAILTO=postmaster@mail-server

/var/mail/${USER} に以下のようなログが出力される。(抜粋)

Final-Recipient: RFC822; postmaster@mail-server
Action: failed
Status: 5.1.8
Remote-MTA: DNS; [127.0.0.1]
Diagnostic-Code: SMTP; 553 5.1.8 <postmaster@mail-server>... Domain of sender address user@cron-server does not exist

最初はメール鯖側が悪いのかと思っていたが、調べまくるとどうも sendmail が自身のホストの検証に失敗している模様(?)
(メール関係には詳しくないので信じすぎないように)

# /etc/mail/access に自ホストをリレーで追記
cron-server RELAY

# /etc/mail/access は root 600 なので root 権限でDB再構築
# makemap hash /etc/mail/access.db < /etc/mail/access

このように自分自身を許可してあげるとちゃんと送れるようになった。
一件落着!

参考