【sendmail】メールがリレーされないときの解決策

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

これでリレーされない事象が解決することもあるかなと。
するといいですね。

コメントを残す

メールアドレスが公開されることはありません。