テストサーバー(aaa.com)から別サーバー(bbb.com)にsendmailで送信する際に手間取ったので備忘録。
テストサーバーから別サーバーに送信しようと思ったのだが、別サーバーにはドメインが実在するメールアドレスのみ取得するように設定していたため、適当なドメインであるテストサーバーから送信することができませんでした。
なので、実在するドメインに偽ってメール送信するようにしました。
SendMailの設定
テストサーバーのsendmailにて別ドメイン送信する方法はMASQUERADE_ASを使います。
MASQUERADE_AS(`example.com')dnl
これでサーバーのホスト名がbbb.comだったとしてもexample.comにマスカレードします。
そのほかのホストもマスカレードしたい場合はMASQUERADE_DOMAINを使います。
MASQUERADE_AS(`example.com')dnl
MASQUERADE_DOMAIN(`test.example.com')dnl
修正後、endmailを再起動します。
# /etc/rc.d/init.d/sendmail restart
「 sendmail.mc:10: m4: Cannot open /usr/share/sendmail-cf/m4/cf.m4 」が発生した場合
「sendmail.mc:10: m4: Cannot open /usr/share/sendmail-cf/m4/cf.m4」
というエラーが発生した場合 sendmail-cfがない可能性があるのでyum等でインストールしてください。
#yum install sendmail-cf
この設定でexample.comでメール送信ができるはず……
メールを送信・・・失敗
メールコマンドでメール送信
#mail -s "test" test@bbb.com
test
.
Cc:
これを別サーバーで受信……できてない。
テストサーバーのmaillogを見るとちゃんとメールが送信されている様子。
別サーバーのmaillogを見るとaaaというドメインがないため破棄と書かれてた……あれ?
メールヘッダ情報の誤りが原因
テストサーバー向けにメール送るとヘッダー情報がaaaとなっていてexample.comに置き換わっていませんでした。
なんでだろう……とあれこれ設定変えてみても結果変わらず、サーバーのホスト名変えないといけないのかな。と思いつつsendmailの設定を見直していると。
EXPOSED_USER(`root')dnl
という項目が……EXPOSED_USERはマスカレードをさせないアドレスだそうです。
そしてテストしていたユーザーはrootだったのです……
EXPOSED_USER(`')dnl
に変更してから再度sendmailを再起動し、テスト送信してみるとうまく別サーバでメールを見ることができました。
EXPOSED_USERが原因だったとは……
また同じような状況にでも即座に対応できるようになりたいですね。