アプリケーションからクリーンな電子メール メッセージを送信するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/108292

  •  01-07-2019
  •  | 
  •  

質問

通知電子メール メッセージを送信するアプリケーションを開発する場合、ベスト プラクティスは何ですか?

  1. ホスティング会社からスパム送信者としてフラグを立てられません。(次のいずれかをカバーします:)
    • メールサーバーがフラッディングしないようにするための最良のテクニック
    • 独自にセットアップする場合に最適なメール サーバー製品
    • 適切な電子メール エチケットを破ることなく、特定のユーザーからであるかのようにメッセージを送信しますが、明らかにアプリケーションからのものです (苦情などが確実に戻ってくるようにするため)。
    • その他の教訓
  2. 受信者のクライアントによってスパムとしてフラグが立てられていませんか?(次のいずれかをカバーします:)
    • 送信者 ID、ドメイン キー、SPF、リバース DNS などを設定および使用して、メールが適切に識別されることを確認します。
    • ユーザーに電子メールを送信するときにスパムとしてフラグが立てられることを回避するための最適な SMTP ヘッダー技術 (たとえば、Sender ヘッダーと From ヘッダーを一緒に使用する)
    • その他の教訓

追加の要件:このアプリケーションは、イベントに基づいて単一のメッセージを単一の受信者に送信します。したがって、同じメッセージを複数の受信者に送信するテクニックは適用されません。

役に立ちましたか?

解決

メールサーバーがフラッディングしないようにするための最良のテクニック

これについては、メール サーバー管理者に確認する以外にできることはあまりありません (共有ホスティング アカウントの場合、または制御できない場合)。ただし、イベントごとに 1 人の受信者に 1 通の電子メールを送信するという要件がある場合は、それほど問題にはなりません。メール システムが詰まりやすいのは、受信者が数百人 (またはそれ以上) の電子メールです。

イベントが常に発生している場合は、それらを統合し、要約した電子メールを定期的に送信することを検討してください。

適切な電子メール エチケットを破ることなく、特定のユーザーからであるかのようにメッセージを送信しますが、明らかにアプリケーションからのものです (苦情などが確実に戻ってくるようにするため)。

これは、「Reply-To」ヘッダーを使用することで実現できます。これにより、クライアントは電子メール メッセージの作成時に From アドレスの代わりにそのアドレスを使用するようになります。

また、電子メールの「Return-Path」ヘッダーも設定する必要があります。これが含まれていない電子メールはフィルタで除外されることがよくあります。

元。

From: me@me.com
Return-Path: me@me.com
Reply-To: auto@myapp.com

送信者 ID、ドメイン キー、SPF、リバース DNS などを設定および使用して、メールが適切に識別されることを確認します。

これはすべて、メール サーバーと DNS サーバーの所有権をどの程度持っているかに大きく依存します。SPF/送信者IDなど...すべて DNS の問題であるため、DNS にアクセスできる必要があります。

あなたの例では、これはかなりの問題を引き起こす可能性があります。メールが特定のユーザーから送信されるように設定している場合、そのユーザーは、メール サーバーを有効な送信者として許可するために、DNS に SPF (たとえば) を設定する必要があります。さまざまなドメイン名を持つ多数のユーザーがこれを実行すると、(まったく不可能ではないにしても) どれほど面倒なことになるか想像できるでしょう。

逆引き DNS などについては、実際には状況によります。ほとんどのクライアント ISP など...逆引きDNSが設定されているかどうかを確認するだけです。(つまり、host.here.domain.com が 1.2.3.4 に解決されない場合でも、1.2.3.4 は host.here.domain.com に解決されます)。これは、世の中に共有ホスティングが大量にあるためです (メール サーバーは、実際のメール サーバーではなく、クライアントのドメイン名として自分自身を報告することがよくあります)。

逆引き DNS の一致を必要とする厳格なネットワークがいくつかありますが、そのためには、そもそも一致しない場合にメール サーバーを制御できる必要があります。

もう少し具体的にしていただければ、もう少しアドバイスできるかもしれませんが、一般的に、アプリケーションメールを送信する必要があり、自分の環境をあまり制御できない人には、次のことをお勧めします。 :

  • 必ず「Return-Path」を設定してください
  • ヘッダーにアプリと悪用情報も追加すると便利です。「X-Mailer」と「X-Abuse-To」(これらはカスタムヘッダーであり、実際には情報提供のみを目的としています)
  • 送信メールサーバーのIPアドレスに逆引きDNSが設定されていることを確認してください

他のヒント

まず前回の簡単な修正

復路:受信メッセージのエンベロープ送信者に基づいて受信システムによって追加されるヘッダーです

SPF が機能するには、return-path/envelope-sender が yourapp@yourdomain.com である必要があります。

yourdomain.com の SPF レコード、または yourapp@yourdomain.com のユーザーごとの SPF レコードで、アプリをホストするサーバーでのメールの発信/メールの送信が許可されていることを確認します。

このエンベロープ送信者は、すべてのバウンス/エラーを受信するアドレスです。

現在、Sender-IDは完全に異なります。リターンパス/エンベロープセンダーとfromをチェックします。address {メッセージの内部に保存}から送信する場合:hisname yourapp@yourdomain.com返信:彼の名前 hisaddres@hisdomain.com

以下から送信すると、これは問題ではありません。彼の名前 hisaddres@hisdomain.com

それはそうなるでしょう、そしてあなたはあなたからresりを追加する必要があります:hisname yourapp@yourdomain.comこれは、fromを無視するように指定しています。送信者 ID チェックには、あなたが彼の代わりに送信したものであるため、代わりにこれを使用してください

次に、その他の価値のある部分について説明します

記載されているIPはメールサーバーです

a同じIP FQDNにも解決する名前をIPのPTRポイントにポイントします

b サーバー helo/ehlo に anything.domain.com を設定します。ここで、domain.com はステップ A の名前のドメインと同じです {以下の理由では同じ名前ではありません}

その helo/ehlo サーバー名もサーバーの IP に解決されるようにします

d次のspfレコードをそのhelo/ehlo名に追加します "v = spf1 a -all" {sean helo/ehloをipのこの名前でこの名前を指します}

e次のSender-ID行をHeLo/Ehloの名前に追加します{純粋に完全性のために "SPF2.0/MFROM、PRA-ALL" {IE@this-domain}はいません}

f次のSPFをFQDNS-NAMEに追加し、サーバーのその他のホスト名 "v = spf1 -all" {ieこの名前としてhelo/ehloはありません。

{FQDN 名はボット/感染によって決定される可能性があるため、この名前を helo/ehlo グリーティングで直接使用することは絶対に許可しない方が良いです。両方の有効性を証明するには、helo/ehlo ID と同じドメインからのものであれば十分です。 }

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top