備忘録 サーバー 開発

【sendmail】ドメインを変更して送信する方法

2013年12月18日

テストサーバー(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が原因だったとは……

また同じような状況にでも即座に対応できるようになりたいですね。

-備忘録, サーバー, 開発
-, , ,