PHPで送信したメールがスパム判定された!
あるサーバーでPHPからmb_sendmailで送信したメールが宛て先のサーバーにスパムと判定されて拒否されてしまいました。
何とかならないかってことで、まずは拒否されたメールのヘッダーを見ると
message-ID:×××@localhost.localdomain
return-PATH:<空白>
received from abc@localhost.localdomain [外部IP]
*******************************************
received from abc@localhost.localdomain [127.0.0.1]
*******************************************
こんなアヤしいヘッダーじゃ誰が見てもスパマーですねw
また、そのサーバーはメールサーバーとしては稼働していないため、sendmailがインストールされたままの状態でした。
sendmailなんて使ったことないんで、とりあえずあちこちのサイトの記述を参考に設定することに。
なかなかヘッダー情報が直らないんで、設定を変えながらいろいろ試した結果、何とかヘッダー情報はまともになりました。
・・・と思ったら、今度は名前解決がうまくいかないようでPHPで送信ボタンを押してから完了画面になるまで1分以上かかるようになっちゃいました。
2日ほどかかっていろいろ試行錯誤した結果、以下の設定でやっとうまくいくようになりました。
※サーバーOS:fedora10
ホスト名:aaa、ドメイン名:bbb.com として記述します。
●/etc/mail/sendmail.mcで以下を編集し、「m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf」
でsendmail.cfに反映
/etc/mail/sendmail.mc
define(‘confDOMAIN_NAME’,’bbb.com’)dnl
MASQUERADE_AS(‘bbb.com’)dnl
EFATURE(masquerade_envelope)dnl
MASQUERADE_DOMAIN(aaa.bbb.com)dnl
ついでに送信者がrootでも設定が反映されるように下記をコメントアウト
(コンソールからrootでチェック用のテストメールを直接送信するため)
dnl # EXPOSED_USER(‘root’)dnl
●/etc/mail/service.switchファイルを新規作成してsendmailが名前解決に/etc/hostsを先に参照するように変更
/etc/mail/service.switch
hosts files dns ← hostsとfilesの間はタブ送り
※service.switchファイルの場所はsendmail.cfで確認し、sendmail.cfの当該ヶ所のコメントアウトを外したんですが、sendmailを再起動して確認したらまたコメントアウトされてました。(まぁ、ちゃんと動いてるんでここは追及しない方向で。。w)
●sendmailが名前解決出来るように/etc/hostsを編集
/etc/hosts
127.0.0.1 aaa.bbb.com aaa localhost.localdomain localhost
192.168.1.100 aaa.bbb.com aaa ← サーバーのIPアドレスを追記
123.456.78.901 aaa.bbb.com aaa ← 外部IPアドレスを追記
ここまででだいぶイイ感じになったんですが、、
PHPで送信元アドレスを普段使ってる別のメールアドレスに設定しているため、
送信元:vic@ddd.net
return-PATH:apache@bbb.com
と送信元とreturn-PATHが違ってます。これもスパム判定の要因になります。
下記のように「mb_sendmail」の第5引数で「-f vic@ddd.net」を指定してreturn-PATHを設定すれば送信元と同じに出来ます。
mb_send_mail(“宛て先メールアドレス”, “メールタイトル”, “メール本文”, “from:vic@ddd.net”,” -f vic@ddd.net”);
が、今度はメールヘッダーに「X-Authentication-Warning」が付加され、これもスパム判定の要因になります。
そこで以下のファイルを編集します。
●「/etc/mail/trusted-users」に元々のreturn-PATHのユーザ名(WEBサーバーの実行ユーザ名)「apache」を追記
/etc/mail/trusted-users
apache
これでPHPのmb_sendmailの第5引数に’-f vic@ddd.net’ を設定しても「X-Authentication-Warning」は出なくなりました。
ここまでの設定でヘッダー情報はかなりスッキリしていると思うので、これでしばらく様子を見ることにします。