最近の受信サーバは、Return-Pathが入っていないメールは受け取らんとですか?(なぜ博多弁?)
以前から、某企業のサーバに設置したPHPのフォームメールが、特定の送信先に届かないことがあって困っていた。送信側でもエラーを吐かないし、エラーメールも戻ってこない…こいつはどうしたものやら。
ところが今日、すずりょ氏から、sendmailを直接呼んでReturn-Path設定してみたら?とアドバイスをいただいた。phpでsendmailを直接呼ぶって、私にはなんだか良くわかりませんでしたが(苦笑)、mb_send_mailの第5引数に-fをつけて、Retrun-Pathを設定してみたら、不達問題が解消されたのデス!届きました、これまで駄目だったメールアドレスあてにフォームからのメールがっ!
mb_send_mail($recipient, $subject, $fullmsg, $headers, "-f $from");
つまり、Return-Pathが入っていないメールは受信側でスパム扱いしてたっつーこってすかな?受信したように見せかけて吸収されしまってたということですか。ま、言い換えればフォームメーラーの作り手が、Return-Pathをちゃんと入れさえすれば良いだけなんですが、PHPの4.4.1からだっけ、第5引数が効かなくなってしまったバージョンもあったはず。そういうバージョンの場合は、どうする?問題が増えた気もしないでもない…。
んー、でも第5引数を入れない同じスクリプトを別のサーバに設置すると、駄目だったメールアドレスにもちゃんと届くんだよな。…つーことは、あれですか、フォームメーラーを設置したサーバのphpの設定がおかしいんですかね?
なんだか良くわからない。
でも、第5引数のReturn-Pathはなるべく入れようってことだよね :-)


メール関連でのReturn-Pathは基本的に、
中継サーバが勝手に入れるものなので、
たぶんPHPで必須とされる条件とは
別の話なんじゃないかなあ。
どちらかというと送信側、つまり
共用レンタルサーバの制限だったりするのかも。
メール送信フォームを勝手に使われると
postmasterあてのエラーメール処理が
大変になるから、
送信フォーム設置者の責任を明確にしたい、
という感じの。
>はらさん
いつもありがとうございますwww
コメント、心強い :-)
そかそか、”送信フォーム設置者の責任”で、ね。そういう解釈もありですよねぇ。
でも、届くメールアドレスと、届かないメールアドレスがあったのですよ。
私の独自ドメインのメールアドレスには届かないけど、yahooメールには届いた。gooメールはだめだけど、exciteはいい、みたいな…。あ、うちのケーブル回線のメアドも駄目でした。
送信側の制限だとすれば、それって、送信側があて先で判断してるのかなぁ。
うーーーーん。
Return-Pathではなくて、-f オプションでenvelope-senderを明示的に示すとスルーできるかもということです。
-f オプションを付けるとsendmailの設定によっては、今度はX-Authentication-Warningというのが付いたりするのですが...
localhostにSMTP接続するのがいいかも。。。
あーそうか。そう言うことすね>すずさん
えーと、SMTPサーバと通信する際、
MAIL FROM(Envelope From)というのを
SMTPサーバに送る必要があります。
これはメールのFrom:フィールドとは別のものです。
で、SMTPサーバはそのメールがエラーメールになった場合、
From:ではなくMAIL FROMに返すんです。
エラーじゃない場合は、メールの
Return-Path:にこの内容を書き出す場合がほとんどです。
で、spamメールの特徴として、
このMAIL FROMが正しくない場合があります。
ほんとはこういう特徴をspam判別に使っちゃいけないのですけど、
手抜きでそう言うことをしている人(サーバ)は
結構いる、ということですね。
>はらさん、すずりょさん
おー、よくわかりました。エントリのタイトル直したほうがいいような気がしてきた。