ローカルにあるMTA(qmail)からのメール送信時の注意
linux, サーバー関連 2010年2月11日,
かなり・・・ハマったというか・・・
知らなかったのですがー。
ローカルに構築したMTAからメールを送信すると、
受け取り側のMTA側によっては拒否される、というもの。
たとえばこんな構成があった場合で
WEB1、2はロードバランスされて振り分けられる構成。
まぁよくある構成なんだけど、このWEB1かWEB2にMTAがあって
たとえばPHPやPerlでmailコマンドとかを利用してメールを送信したとすると・・・。
MTAにqmailを使ってる場合。qmailのログ( /var/log/qmail/current )にこんなログが出る事がある
1 | delivery 40950: failure: Connected_to_xxx.xxx.xxx.xxx_but_sender_was_rejected./Remote_host_said:_553_ird-131w010.ahref.org_does_not_exist/ |
とか
1 | delivery 40379: deferral: xxx.xxx.xxx.xxx_does_not_like_recipient./Remote_host_said:_450_4.1.8_<sonar@web2.sonarsrv.com>:_Sender_address_rejected:_Domain_not_found/Giving_up_on_xxx.xxx.xxx.xxx./ |
など。。
このエラーログをみる限りだと
Sender address rejected: Domain not found
だからメールを配信してるサーバーのドメイン名が正引きできない為に相手MTAに拒否られてるって事。
MTAの設定にもよるけど、基本的にはサーバーのホスト名でメールが送信されるため、
PHPやPerlでメールを送信しようとするとエンベローブとかがここでは
sonar@web2.sonarsrv.comみたくなってしまう。
読み替えると、Fromのアドレスは
Linuxユーザー名@defaultdomain(もしくはサーバーのホスト名)
となってしまう。
まぁここまでわかってしまうと解決は簡単で
①WEB1かWEB2のMTAから直接メール送信するのではなく、LB側のMTAを使用する。
②WEB1とWEB2のドメインを名前解決してやる
のどっちかで対策すればOKです。
①ならPHPやPerlで送信する際にLB側のsmtpを指定すればOK。
②はここではweb1.sonarsrv.comの正引きとしてLBと同じIPが引けるようにすればOK
検証にはソフトバンクの携帯を使うといいかも。
ソフトバンクの携帯はローカルに建てられたメールサーバーからのメールは
逆引きできないホスト名だった場合に拒否してきます。
7月 21st, 2013 at 5:42 AM
そなーブログ » Blog Archive » ローカルにあるMTA(qmail)からのメール送信時の注意