Gmailは、認証不足を理由にメッセージを拒否するとき、550 5.7.26を返します。コードはどの場合も同じですが、その後のテキストは異なります。GoogleのSMTPコード一覧には、修正方法が異なる3つのバージョンがあります。バウンスメールの該当行によって、以下のどのセクションが当てはまるかが決まります。
"This email has been blocked because the sender is unauthenticated"
以前のバウンスでは、"This mail has been blocked" と表示されます。SPFとDKIMのどちらも認証に成功していないため、Gmailはメッセージをどのドメインにも関連付けられません。通常、バウンスの残りの部分には、DKIM = did not pass や SPF [example.com] with ip: [203.0.113.5] = did not pass のように両方の結果が記載され、Gmailが確認したドメインとサーバーが分かります。
一般的な原因は次のとおりです。
- メッセージを送信したサーバーまたはサービスがSPFレコードに含まれていない。
- サービスがDKIMでまったく署名していないか、すでに公開されていない鍵で署名している。
- スクリプト、プリンター、Webサイトのフォーム、またはCRMから、正しく設定されたメールプロバイダーを経由せず、Gmailへ直接メッセージを送信した。
該当する原因を修正します。サービスをSPFに追加するか、より望ましい方法として、そのサービスに自分のドメインのDKIMを設定します。このバウンスを回避するには、SPFとDKIMのどちらか一方が認証に成功すれば十分です。
"The (E)MAIL FROM domain has an SPF record with a hard fail policy (-all)"
ここでは、SPFが失敗しただけではありません。末尾が-allのレコードに対して失敗しています。これは、記載されていないサーバーからのメールを受信側に拒否させる指定です。Gmailはその指定どおりに処理しました。送信サーバーをレコードに含める必要があるのに記載されていないか、使用すべきでないサーバー経由でメールが送信されています。
そのサーバーのinclude、またはアドレスをレコードに追加します。どのサービスがそのドメインを送信元として使用しているかをまだ確認中の場合、~allは拒否ではなくsoftfailになり、その後の処理はDMARCが決定します。
"Unauthenticated email from example.com is not accepted due to domain's DMARC policy"
これはDMARCに関するエラーです。ドメインがp=rejectを公開しており、メッセージは*From行のドメインに対して*SPFとDKIMのどちらにも合格していません。多くの場合、両方に合格していても、送信サービス独自のドメインに対する合格であるため、アライメントが成立していません。DMARC failのページでは、ヘッダーからこの状態を読み取る方法を説明しています。
対処方法は2つあります。送信サービスに自分のドメインでDKIM署名させるか、自分のドメインのリターンパスを設定してSPFアライメントを成立させます。ポリシーをp=noneに下げるとバウンスは発生しなくなりますが、同時にドメインの保護も停止します。そのため、これは2つの修正方法のいずれかを適用するまでの時間を稼ぐだけです。
一時的なバージョン
421 4.7.26 と "This email has been rate limited because it is unauthenticated" は、配信を完全に拒否するのではなく、Gmailがメールの配信速度を制限している点を除けば、遅延と同じ問題です。修正方法は、上記の最初のバージョンと同じです。
修正の確認
SPF、DKIM、DMARCの照会でレコードが設定されていることは確認できますが、メッセージを判定するのはGmailなので、レコードだけでは解決したとは判断できません。変更後、バウンスが発生したのと同じサービスから完全なテストを1回実行します。
レポートには、SPFが確認されたエンベロープドメイン、各DKIM署名のd=ドメイン、DMARCが適用されたFromドメインが表示されます。この3つの名前から、上記のどのケースが引き続き発生するかを確認できます。