sendmailで、『“Smart” relay host』にリレーの設定を入れているのにも関わらず、なぜかリレーされないという謎事象にぶち当たりましたのでその解決策をメモ的に残しておきたいと思います。
状況
今回の環境の状況としては、まず hosts ファイルに転送先となるリレーサーバを記載します。
# vi /etc/hosts 192.168.100.1 mailhost
続いて sendmail.cf にリレーの設定を。
# vim /etc/mail/sendmail.cf 下記に修正 # "Smart" relay host (may be null) DSmailhost$?m.$m$.
あとは sendmail を再起動すればメールがリレーされるようになる・・・ はずだったのですが、実際には転送されず。maillogを確認したところ、なぜか localhost での配送となってしまっていました。
Jun 28 10:37:07 pgdbsv sendmail[6546]: v5S1b7Ul006546: from=root, size=80, class=0, nrcpts=1, msgid=< 201706280137.v5S1b7Ul006546@pgdbsv.local>, relay=root@localhost Jun 28 10:37:07 pgdbsv sendmail[6546]: v5S1b7Ul006546: to=[宛先メールアドレス], delay=00:00:00, mailer=e smtp, pri=30080, dsn=4.4.3, stat=queued
つまるところ、転送先となるメールサーバーの名前解決がhostsに記載しているのにできていなくてそのままスルーされているか感じです。
結論:service.switchファイルを作成する
解決策としては、service.switch というファイルを作成して名前解決に hosts を優先するということを明記すればOKでした。
ただ他の環境ではこんなことなかったのでこの sendmail のバージョン( sendmail-8.13.8-8.1.el5_7 )のバグじゃないのかな‥とも思いつつ。
# vim /etc/mail/service.switch hosts files (間はスペースじゃなくてタブが必須) # /etc/rc.d/init.d/sendmail restart
これでリレーされない事象が解決することもあるかなと。
するといいですね。