2016年12月18日日曜日

Webサーバとメールサーバが同一ドメインで異なるサーバの場合、Webサーバからメールが送信できない

Webサーバとメールサーバが同一ドメインで運用されていて、さらにメールがGmailなど異なるサーバの場合、Webサーバからメールが送信できないことがあります。
これ、今まで1台のサーバでWebとメールサーバを共用していて、メールだけGmailに移したりしたときに嵌りました。

ここの内容が助けになりました。

冷静によく考えれば、そりゃ飛ばないよなと思うのですが、焦っているときは、メールはMXレコードを参照するはずだし・・・と見当違いなことを考えてズブズブ嵌っていきます・・・




例えば、Webサーバがexample.comとし、いままで1台のサーバでメールも運用していましたが、
別サーバに移すことになりました。

ここで、Webサーバであるexample.comのサーバからテストとして、hoge@yahoo.co.jpに送るとします。
Webサーバは、@yahoo.co.jpなので、yahoo.co.jpのメールサーバへメールを転送し、無事届きます。
次に、Webサーバからhoge@example.comへ送信してみます。
Webサーバは、example.comのメールサーバへメールを転送・・・・しません。
なぜなら、example.comは自分自身なので、外部に送るまでもない。と判断し、内部でリレーされます。
当然、自分自身はメールサーバではないので、そんなユーザ知らんがな。と却下されます。
結果、外部にメールは飛ばないばかりか、UserUnknownでメール自体消滅します。


では参考サイトに従って、動作を確認してみましょう。
WebサーバのSendmailをテストモードで起動し、SendMailが自分宛と認識するホストを調べます。

# sendmail -bt
SendMailが自分宛と認識するホストを調べます。 /quitで抜けれます。
> $=w
example.com     <----------同じドメインが入っている
localhost.localdomain
localhost
> /quit
では、対処法です。ようはSendmailが自分宛と判断しなければよいので、Webサーバ名をwww.example.comのように”www”のサブドメインをつけます。

/etc/sysconfig/network
HOSTNAME=www.example.com    <------wwwをつける

/etc/hosts
127.0.0.1 www.example.com localhost localhost.localdomain
設定をしたら、反映させるためにサーバを再起動します。
また、DNSの設定を変更し、www.example.comをexample.comへのCNAME設定をします。


SendMailの設定を再度確認します。今度はwwwありが自分自身となりますが、www無しは対象外になり、外部へ送信されることになります。
> $=w
localhost.localdomain
localhost
[127.0.0.1]
www.example.com

そういえば、Webサーバのホスト名はwwwだし、メールはmailでしたね。


0 件のコメント:

コメントを投稿