先日、log4perl で logfatal を出すときに、ついでにメールを送る、そんな記事を書きました。
喜々としてサーバ2台に入れたのですが、そのうち1台からメールが送られてきません。
なぜ?
そんなとき。
原因を究明するために、コマンドラインからメールを送ろうとすると、メールサーバのログファイルに no route to host と出てきます。
調べてみると、そのサーバにはISP(bbexcite)によりOP25B が適用されているようでした(安価なDHCPプランのため。固定IPプランなら適用されない)。
さてどうしてものか。
社内にはもう1台サーバがあり、そのサーバの回線にはOP25B が適用されておらず、メールが送信できます。
もう少し整理すると、社内にはLANがあり、LANには2台(以上)のサーバがぶらさがっています。2台ともISPと契約してインターネットにつながっています。
また、これらサーバにはPostfixが入れてあり、片方の サーバからは送信ができます。もう一方のサーバからは送信ができません。
ということで、送れないサーバのPostfixから送れるサーバのPostfixにメールをリレーすることにします。ただし、グローバルIP経由でリレーすると、OP25Bが適用されてしまい本末転倒です。
メールサーバにはpostfixを使っていますので、次のように設定しました。 送れるメールサーバのプライベートIPを仮に 192.168.0.1 とします。
/etc/postfix/main.cf
myhostname = hogehoge.unicus.jp
mydomain = unicus.jp
myorigin = $myhostname
mydestination = $myhostname
allow_mail_to_commands = alias, forward, include
inet_interfaces = all
relayhost = [192.168.0.1]
これだけです。
送れる方のメールサーバは、
mynetworks = 192.168.0.0/24, 127.0.0.0/8
としておけば大丈夫です。