備忘録 サーバー 開発

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

テストサーバー(aaa.com)から別サーバー(bbb.com)にsendmailで送信する際に手間取ったので備忘録。

テストサーバーから別サーバーに送信しようと思ったのだが、別サーバーにはドメインが実在するメールアドレスのみ取得するように設定していたため、適当なドメインであるテストサーバーから送信することができませんでした。

なので、実在するドメインに偽ってメール送信するようにしました。

 

テストサーバーのsendmailにて別ドメイン送信する方法はMASQUERADE_ASを使います。

[text]
MASQUERADE_AS(`example.com')dnl
[/text]

これでサーバーのホスト名がbbb.comだったとしてもexample.comにマスカレードします。

そのほかのホストもマスカレードしたい場合はMASQUERADE_DOMAINを使います。

[text]
MASQUERADE_AS(`example.com')dnl
MASQUERADE_DOMAIN(`test.example.com')dnl
[/text]

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

[shell]
# /etc/rc.d/init.d/sendmail restart
[/shell]

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

[shell]
#yum install sendmail-cf
[/shell]

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

bbbにメールを送信。

[shell]
#mail -s "test" test@bbb.com
test
.
Cc:

[/shell]

これを別サーバーで受信確認
……あれ、メールがない。

テストサーバーのmaillogを見るとちゃんとメールが送信されている様子。

別サーバーのmaillogを見るとaaaというドメインがないため破棄と書かれてた……あれ?

テストサーバー向けにメール送るとヘッダー情報がaaaとなっていてexample.comに置き換わっていませんでした。

なんでだろう……とあれこれ設定変えてみても結果変わらず、サーバーのホスト名変えないといけないのかな。と思いつつsendmailの設定を見直していると。

[text]
EXPOSED_USER(`root')dnl
[/text]

という項目が……EXPOSED_USERはマスカレードをさせないアドレスだそうです。
そしてテストしていたユーザーはrootだったのです……

[text]
EXPOSED_USER(`')dnl
[/text]

に変更してから再度sendmailを再起動し、テスト送信してみるとうまく別サーバでメールを見ることができました。

EXPOSED_USERが原因だったとは……

 

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

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

© 2020 かえでBlog