かえでBlog

色々なことを徒然と……

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

      2015/05/11

テストサーバー(aaa.com)から別サーバー(bbb.com)に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

あとはsendmailを再起動します。

# /etc/rc.d/init.d/sendmail restart

sendmail.mc:10: m4: Cannot open /usr/share/sendmail-cf/m4/cf.m4
というエラーが発生した場合 sendmail-cfがない可能性があるのでyum等でインストールしてください。

#yum install sendmail-cf 

この設定でexample.comでメール送信ができるはず……

bbbにメールを送信。

#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が原因だったとは……

 

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

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