web-dev-qa-db-ja.com

PHPアプリケーションから送信された電子メールメッセージがスパムとして扱われるのはなぜですか?

私はこの面白いものを持っています。 yahoo、gmail、hotmailのユーザーにメールを送信するとき。リンクを含めると、スパムメールとして扱われます。しかし、リンクを削除すると、スパムメールではなく「受信トレイ」になります。変だね?

私のメールサーバーと何か関係がありますか?私の電子メールがスパムメールとして扱われないようにするにはどうすればよいですか?メールの内容にリンクが必要です:)

phpコード:

// Send Email to the user
$headers =  'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: [email protected]' . "\r\n";

// Email Variables

$toUser  = '[email protected]'; // recipient
$subject = "Subject HERE!!"; // subject
$body    = '<div style="font-family:Arial; color:#333;">
                Some content here ...
        <a href="www.google.com" target="_blank"> Link here</a> 
        </div>';

if(mail($toUser,$subject,$body,$headers)){
    echo "Email SENT" . '<br>';
} else {
    echo "Email cannot sent" . '<br>';
};
4
mrwhy2009

推測では、メールサーバーはテキスト分析と他の多くのことについて誰にも言わないことに基づいて各メッセージのスパムスコアを計算します-タイトルに単語が含まれていない場合は+3、埋め込まれたリンクなど。おそらく、生成された電子メールの1つ(リンクなし)の通常のスコアはかなり高いですが、それでもメールが通過するのに十分低いです。

一部のスパム対策ソリューションは、メッセージヘッダーにスパムスコアを貼り付けるのに十分です。そこに「X-Spam-Score」のようなものを探してください。通過したメッセージのスコアが何であるかを知ることができれば、それがスパムとしてフラグ付けされるのにどれだけ近かったかがわかります(スパムのしきい値は通常約12程度ですが、すべて独自のシステムがあります) 。クリーンなメッセージのスコアはかなり高くなると思います。リンクを追加することは、最後の手段にすぎません。

もう1つ注意すべき点は、スクリプトからメールを生成する場合は、適切なヘッダーがすべて入力されていることを確認してください。ヘッダーが欠落していると、スパムスコアがかなり高くなります。メールを送信するサーバーとそれが中継するサーバーとの間のSMTP会話からのログも役立ちます。

4
RainyRat

メールサーバー(おそらくphpコードの実行元と同じマシン)が、メールを合法的に送信するように正しく構成されていることを確認する必要があります。そのマシンから中継されるメールがすぐにスパムとしてマークされないようにするには、いくつかのことが正しいことを確認する必要があります。

まず、メールサーバー[〜#〜] must [〜#〜]は、正規のホスト名でHELOと言います。つまり、コマンドラインで実行すると、hostnameコマンドと同じ値が返されます。 postfixの下では、これは/etc/postfix/main.cfmyhostname変数の値です。

次に、DNS内のサーバーの順方向ポインターと逆方向ポインターが一致する必要があり、上記のホスト名の値と一致する必要があります。例えば

[dave@odessa ~]$ Host odessa.cheney.net
odessa.cheney.net has address 64.85.168.249
[dave@odessa ~]$ Host 64.85.168.249
249.168.85.64.in-addr.arpa domain name pointer odessa.cheney.net.

第三に、メールサーバーがオープンリレーとして機能していないことを確認します。メールサーバーが他のホストからのメールを中継するように構成されている場合は、それらのホスト自体がオープンリレーではないこと、または認証されていないホストからのメッセージを受け入れないように適切に保護されていることを確認するように十分に注意する必要があります。あなたのためにチェックしてください、 http://www.checkor.com/ 例えば。

第四に、あなたのメッセージの内容を見てください。上に投稿したサンプルから、小さなHTMLが送信されているように見えます。これは、スパムフィルターを使用した一連のアラームである可能性があります(平均的なスパムの構成を確認してください)。メールの作成には常にメールライブラリを使用する必要があります。HTMLメールを送信する場合は、text/plainバリアントを含める必要があります。

最後に、大規模なサイトでは、一部のメールがスパムとしてマークされます。これは平均の法則です。 CAN-SPAM のように、自動メールまたはバルクメールを送信するための適切な規制に準拠していることを確認するのはあなたの責任です。これの最も重要な部分は、人々があなたのメーリングリストから退会するための簡単な方法です。これを人々にとって難しいものにすると、ユーザーはメールクライアントの大きなスパムボタンを押す可能性が高くなります。このボタンはメールホストにフィードバックされ、あなたのサーバー。

4
Dave Cheney

すべての電子メールサイトは、スパム検出に独自のルールを適用します。スパムとして分類されないための完璧な方法は見つかりません。一見すると、!件名と完全にHTMLのコンテンツはスパムの良い指標です...

[email protected]に電子メールを送信すると、その外観とスパム性の分析が記載された自動レポートが返送されます。それはあなたにいくつかのアイデアを与えることができます。

1
bortzmeyer

約18か月前、リンクに新しく登録されたドメインが含まれていたため、Yahooアドレスにメールを配信する際に問題が発生しました。

返送されたメールをチェックすることでこれを特定しました。 Yahoo自体が「あなたのメールが遅れた」と報告していたが、他のいくつかのメールサーバーが配信を拒否したというエラーメッセージの手がかりを与えた。ドメインを古い、より確立されたドメインに戻すと、問題が修正されました。

また、リンク内の単語(たとえば、ソフトウェアバージョン1.0をダウンロードの代わりに今すぐ無料ソフトウェアをダウンロードするなど)とリンク自体のドメイン名も考慮してください。

0
Dan

コードからできることはほとんどありません。 DKIMのようなものを使用することはできますが、受信者がそれを使用するという保証はありません。個人的には、あなたの電子メールをファイアアンドフォーゲットスパムのように見せず、ユーザーが実際に要求した「公式」なもののように見せることに焦点を当てます。システムが送信した実際のメールを含めるように投稿を編集できますか?

0
Hirvox