メールを送信し、スパムとして分類されないようにする方法は?


82

これは、サーバーから送信された電子メールをスパムとして誤分類する方法についての標準的な質問です。追加情報については、以下の同様の質問が役立つ場合があります。

時々、顧客にニュースレターを送りたいです。問題は、電子メールの一部がスパムメッセージとして検出されることです。ほとんどの場合、クライアントのOutlookで(自分のOutlook 2007でも)。

ここで、「良い」メールを作成するために何をすべきかを知りたいです。逆引き検索などは知っていますが、(たとえば)一意のIDを持つ登録解除リンクはどうですか?スパムの評価は上がりますか?


ステップ・バイ・ステップのチェックリストだけでなく、トラブルシューティングのガイドラインはで見つけることができる良い答えsuperuser.comに類似した質問
MattBianco

回答:


82

メールが典型的なスパムメールのように見えないようにしてください。大きな画像のみを挿入しないでください。文字セットが正しく設定されていることを確認してください。「IPアドレスのみ」リンクを挿入しないでください。通常のメールを書くのと同じように、コミュニケーションを書きます。簡単に登録解除またはオプトアウトできます。そうしないと、ユーザーは「スパム」ボタンを押して登録を解除し、それが評判に影響します。

技術面では、SMTPサーバーを選択できる場合は、それが「クリーン」なSMTPサーバーであることを確認してください。スパムSMTPサーバーのIPアドレスは、多くの場合、他のプロバイダーによってブラックリストに登録されています。SMTPサーバーが事前にわからない場合は、バッチサイズとバッチ間の遅延を制御するための構成オプションをアプリケーションに提供することをお勧めします。一部のメールサーバーは、大量の送信バッチまたは継続的なアクティビティを受け入れません。

SPFドメインキーなどの電子メール認証方法を使用して、電子メールとドメイン名が同じであることを証明します。良い副作用は、電子メールドメインがスプーフィングされるのを防ぐのに役立ちます。また、リバースDNSチェックして、メールサーバーのIPアドレスがメールの送信に使用するドメイン名を指していることを確認します。

メールの返信先アドレスが有効な既存のアドレスであることを確認してください。電子メールアドレス(例:)だけでなく、[宛先]フィールドで宛先の完全な実名を使用し、"John Doe" <john.doe@example.com>abuse @example.compostmaster@example.comなどの不正アカウントを監視します。


また、テキストのみを含むHTMLメールのマルチパート/代替バージョンを使用します。これは、スパムスキャナーが分類する際に、より便利なものを持っていることを意味します。
マット

22

電子メールアドレスがバウンスするメッセージの受信者を自動的に登録解除し、主要なメールプロバイダーとの苦情フィードバックループを確立し、メッセージをスパム/ジャンクとして報告する受信者を自動的に登録解除します。これは、あなたの評判と成果を改善するのに大いに役立ちます。


4
これは非常に興味深いです。これらのフィードバックループについては何も知りませんでした。すべてのプロバイダーがそのようなプログラムを提供していますか?
kcode 09

1
すべてのプロバイダーではありません。しかし、YahooやAOLなどを含む主要なもののほとんど。私が知っているすべての苦情フィードバックループでは、DKIMまたはDomainKeysによって認証されたドメインからメッセージを送信する必要があります。一部にはSPFも必要ですが、あまり一般的ではないと思います。

15

この質問は基本が整っていることを述べていますが、他の人にこれを規範的な質問として指摘しているので、私たちは私たちの基盤を確実にカバーしたいだけです。

最近、これらの最小値は本質的に必要です。

  1. フォワードDNSとリバースDNSが正しく構成されていることを確認してください。メールサーバーは、HELO / EHLO交換で自身を識別する必要があります。その名前は、サーバーが使用しているIPを検索する必要があります。同様に、そのIPの逆ルックアップは名前を返す必要があります。

  2. サーバーが実際にそのハンドシェイクでホスト名を送信していることを確認してください。サーバーはIPアドレスを送信しないでください。

  3. IPアドレスがDNSRBL(ブラックリスト)にないことを確認してください。もしそうなら、それの世話をしてください。

  4. より人気のあるレピュテーションサービスでIPのレピュテーションを確認します(SenderScoreは現在大きなサービスですが、時間が経つと保持されない場合があります)。これらのサービスには、一般的に評判を改善するためのガイドラインがありますが、RBLのような完全な「ゴー/ノーゴー」ではありません。

  5. 偽のヘッダは、ヘッダにある、とあなたがメッセージで最低限のヘッダを含めていることを確認してくださいしないでくださいしないでください(DateFrom要求され、そこにあるべきSubjectSenderReply-To、およびTo/ Cc/ Bcc[該当する場合])。これは、Outlook Expressのヘッダーを偽造したり、日付を省略したりするなどの理由で、最終的に迷惑メールで受け取りたい有効なニュースレターを持つ私の最大のペットの1人です。

オプションで、SPF、DKIM、およびDMARCのセットアップを検討する必要があります。これらは配信性に役立ちますが、必須ではありません(ほとんどの電子メールサーバーでは必要ありません)。


11

残念ながら、多くの異なるフィルタリング技術があり、いくつかの主要なメールプロバイダーは、使用するものやさまざまなテスト/フィルターに与えられる重みを公開しないため、通過方法を知ることは困難です。基本的に、スパムはISPとユーザーを、そのような正当なメッセージ(特にニュースレターなどの大量のメッセージ)が届きにくい場合があります。電子メールは、以前は中途半端な信頼性のある転送方法であるとは考えていません。

少しネガティブで役立つようにする...特定のクライアントで特定の問題を抱えているとき、プログラムがあなたに伝えることができるものがあるかもしれません。私は自分でどこにも使用していないため、Outlookについて具体的には知りませんが、多くのメールフィルターはヘッダーをメッセージに挿入して、使用されたフィルター、結果、およびそのフィルターに与えられた重みをリストします。したがって、メッセージの完全なソースをジャンクフォルダーに移動すると、役に立つ手がかりが見つかる場合があります。例として、SpamAssassinベースのフィルターは、次の形式のヘッダーを挿入します。

X-Spam-Flag: YES
X-Spam-Score: 13.371
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.371 tagged_above=-10 required=5.4
    tests=[BAYES_99=3.5, FB_GET_MEDS=0.803, RCVD_IN_SORBS_WEB=0.619,
    RCVD_IN_XBL=3.033, RDNS_NONE=0.1, URIBL_AB_SURBL=1.86,
    URIBL_BLACK=1.955, URIBL_JP_SURBL=1.501]

(その例は私のジャンクパイルの本物のスパムメッセージから抜粋されています)

ただし、ベイジアンフィルタリングやユーザートレーニングを含む他の方法は一般的であるため、これは明確ではありません。そのため、クライアントが最初から同じように構成されていたとしても、フィルターの合格と失敗は他の人と著しく異なる場合があります。あなたはあなたのニュースのために他のアウトレットを考慮する必要があるかもしれません(多くの人々がこれにソーシャルネットワーキングプロトコルを使用しようとしていますが、成功の度合いはさまざまです)。


9

他の人が言ったように、電子メールを送信するときにスパムメッセージのように「見える」ことは避けたいが、テクニックが異なるため、スパムのように見えるかどうかは必ずしもわかりません。

考慮したいことの1つは、ニュースレターごとにプレーンテキストの電子メールを送信することです。実際には、簡単な説明/挨拶に続いて「ここをクリックして最新のニュースレターを表示してください!」メッセージ; Webサーバーでメッセージをホストできるようにすると、電子メールのサイズを削減し(メールサーバーの負荷を軽減)、ボーナスとしてWebサーバーのログを確認して、顧客の数に関するフィードバックを取得できます実際にメッセージを読んで対削除する。


うーん。スパマーがその戦術を使用するのを見たことはありません
アーニー

一般に、正当なリンクが1つまたは2つ(自由に散りばめられているわけではない)のまっすぐなテキストは、通過する傾向があります。スパム送信者が人々に応答を促すために「汚い言葉」でインスタントメッセージングを送信したのを見たことがないというようなものです。合法的なトラフィックもそれを行います。重要なのは、「スパムすぎる」ことではありません... bevansのようなユーザー名は、おそらく「hottienakedchick69」ほど疑わしいものではありません。たとえコンテンツが同じであっても、意味がわかりますか?
バートシルバース

7

電子メールがスパムとして識別されたり受信者に届かないようにするための詳細なソリューション

状況の例:メールexample.com送信する必要があるPHP Webサイトを実行しているサーバーがあります。また、メールが常に配信されるとは限らないことに気づきます。(あなたが店主であり、購入後に顧客がメールを受け取らない場合は大きな問題です!)。

以下の手順をすべて実行すると、99,9%の問題解決するはずです。(私は最初にそれらのうちのいくつかだけを実行し、例えばDKIMをスキップすることが可能であると考えましたが、最終的にはすべてが私が抱えていたすべての問題を解決するために必要でした)。

  1. まず第一に、誰がメールを送信していますか?

    PHPコードがメールを送信するときは、多くの場合、有名なPHP関数を使用していますmail(...)。しかし、この機能は内部で何をしますか?test.phpを含むページを実行しましょう<?php echo ini_get('sendmail_path'); ?>。たとえば、次のようになり/usr/sbin/sendmail -t -iます。良いニュースです。これで、どのプログラムが実際にメールを処理するかがわかりました。
    トリッキーな情報:名前sendmailさまざまなプログラムになります。sendmail前の手順で確認した場合でも、sendmailまたはpostfixまたはexim、またはqmailなどがインストールされている場合があります。さんがやってみましょうdpkg -S /usr/sbin/sendmail。答えはpostfix: /usr/sbin/sendmail、[OK]これはインストールしたことpostfix意味します。

  2. ログファイル/var/mail/www-dataを調べて、正しく送信されなかった電子メールとその理由を確認してください。これは次の手順に役立つ場合があります。

  3. Jeff Atwoodのブログで述べたように、今度は逆PTRレコードを調べます。(詳細はここに追加されます)。

  4. postfix構成ファイルに次の行を追加し/etc/postfix/main.cfます。

    inet_protocols=ipv4
    

    次に、でpostfixを再起動しservice restart postfixます。どうして?受信者がGmailの場合、次のような問題が発生したためです。

    システムは、このメッセージが550-5.7.1がPTRレコードおよび550-5.7.1認証に関するIPv6送信ガイドラインを満たしていないことを検出しました。550 5.7.1の詳細については、550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_errorご覧ください。

    最も簡単な解決策を切り替えるために次いでpostfix、IPv4のみすることはこのステップ4(あなたのために不要だろうか?)。

  5. SPF DNSレコード。から電子メールを送信できることを証明するために@example.com、ドメインのDNSレコードにSPFレコードを追加できますexample.com。どこかで見つけたThe DNS record type 99 (SPF) has been deprecatedので、代わりにTXTレコードを使用します。これをTXT DNSレコードとして追加しましょう(注1も参照)

    v=spf1 a mx include:_spf.google.com include:sendgrid.net ~all
    

    なぜこれらが含まれていますか?@ example.comからメールを送信するのは私のサーバーだけではないからです!信頼できるSMTPプロバイダーSendgridを使用して、contact @ example.com としてメール送信するようにGmailを設定しました(こちらのスクリーンショットを参照)。これらを追加しないと、Gmailからのメールを送信できません。include:@example.com

  6. DKIMデジタル署名。ここで述べたよう、DKIMの目標は、送信中にメールコンテンツが改ざんされないようにすることです。Ubuntuでのインストールプロセスを次に示します(ここでも役立つガイドです)。

    • apt-get install opendkim opendkim-tools

    • キーを作成します(http://dkimcore.org/tools/を使用してキーと関連するDNS TXTレコードを生成することもできます)。

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • これを入れましょう/etc/opendkim.conf

      Syslog                 yes
      Domain                 *
      KeyFile                /etc/opendkim/mail.private
      Selector               mail
      AutoRestart            yes
      Background             yes
      Canonicalization       relaxed/relaxed
      DNSTimeout             5
      Mode                   sv
      SubDomains             no
      

      これで/etc/default/opendkim

      SOCKET="inet:8891@localhost" # Ubuntu default - listen on loopback on port 8891
      

      最後に、これをpostfix設定ファイルの最後に追加します/etc/postfix/main.cf

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • 次に、公開鍵(にある/etc/opendkim/mail.txt)をドメインのDNSレコードに追加します。

      mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=OqYHd...waPaQAX"
      

      レジストラIsenxでの表示は次のとおりです。

    • DKIMの最後の手順:でメールサービスを再起動しますservice restart opendkim ; service restart postfix

  7. すべてが機能するかどうかをテストします。最も簡単な方法は、PHP経由で電子メールを送信することですauth-results@verifier.port25.com(この非常に便利なツールは、Port25 Solutionsによって利用可能になります)。

    $emailfrom = "Example <contact@example.com>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/plain; charset=utf-8\n";
    $headers .= "Reply-To: " . $emailfrom . "\n";
    $headers .= "From: " . $emailfrom . "\n";
    $headers .= "Bcc: example@gmail.com\n";
    mail("check-auth@verifier.port25.com", "Hello", "Hello!", $headers);
    

    次に、このツールの答えを参照してください。次のようになります。

    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DKIM check:         pass
    SpamAssassin check: ham
    

    mail-tester.comサービスも役立ちます。

  8. (オプション)postmaster.google.comを試してください。私はそれを使用しましたが、助けたかどうか覚えていません。

  9. それでも動作しない場合、解決策は、プロのソリューションでメールを外部委託し、日中の(失敗した)デバッグを回避することです。ここでは、この程度の良い品です。ここで引用です:「。S ***半分の時間、メッセージ独自のサーバーから送信されますだけで、受信者の迷惑メールフォルダにダンプを取得することができますあなたのアプリからのメールの送信は」数週間の調整の後、悲しいことに真実を発見しました。


その他の注意事項:

(1)

-all : Fail: All mail servers not listed in the SPF record are explicitly not authorized to send mail using the sender’s domain.
~all : Soft Fail: All mail servers not listed in the SPF record are not authorized to send mail using the sender’s domain, but the owner of the domain is unwilling to make a strong assertion to that effect.
?all : Neutral: The domain controller cannot or does not want to assert whether or not all mail servers not listed in the SPF record are authorized to send mail using the sender’s domain.
+all : Pass: All mail servers are authorized to send mail on behalf of the sender’s domain.

6

私のオンラインビジネスでは、注文確認メールがスパムになったり、配信されなかったりする問題(メールサーバー経由で回避)がありました。これらは、サイトのドメインへのリンクが1つある単純な「注文の概要」メールです。結局、ビジネス用にいくつかのGoogle Appsアカウントを購入しました。SMTPサーバーとして機能するようにそれらの1つをセットアップできます。Googleをメール送信者にすると、これらの問題はすべてなくなりました。

メールニュースレターについては、オプトイン/アウトを処理するサービスを必ず使用してください。サービス以外のユーザーを使用してバルクメールを送信すると、おそらく禁止されることになります。


これは回避策です。適切な解決策は、障害のあるシステムを修正し、少なくともDNSに適切なSPFレコードがあることを確認することです。
ジョンガーデニアーズ

3
実際、メールサーバーを使用しているISPがスパムとして黒旗を立てられた場合、幸運を祈ります。当時はRackspaceにいました。Googleがブラックリストに登録されていないことをGoogleが確認したため、SMTPとしてGoogleを使用すると助かりました。
クリスK

2

電子メールの受信ボックスに公開されている新しいガイドがあります

私が今まで見た中で最も包括的なもの。スパムとしてマークされないようにする方法のすべての蛇口をカバーする43の異なるポイントのチェックリスト。それは継続的に更新されます。

DNSの設定、認証の設定、レピュテーションモニタリングの設定、直帰率の削減、メールコンテンツのテストなど。

ZeroBounce.NETによるすべての情報を網羅

https://www.zerobounce.net/guide-to-improve-inbox-and-delivery.html


現時点では、この投稿は本質的に単なるリンクです。リンクが壊れた場合でも答えが有用であることを確認するには、関連情報を含めるように編集してください。
不安
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.