ドメインとテナントでSPFとDKIMが正しく設定されており、DMARCポリシーがp=reject
に設定されています。それでも、From
ヘッダーにドメインが偽装されたメールは拒否されませんが、Office 365のJunk Emailフォルダーに表示されます。人々は自分の迷惑メールをチェックしています誤検知の場合、およびすべてのCEOの詐欺、セクストーションの手紙などをまだ読んでいます。
これは、Microsoftの documentation で説明されているように、バグではなく機能のようです。
DMARCに失敗した受信メールをOffice 365がどのように処理するか
送信サーバーのDMARCポリシーが
p=reject
の場合、EOPはメッセージを拒否するのではなく、スパムとしてマークします。つまり、受信メールの場合、Office 365はp=reject
とp=quarantine
を同じように扱います。一部の正当な電子メールがDMARCに失敗する可能性があるため、Office 365はこのように構成されています。たとえば、メーリングリストに送信されたメッセージがすべてのリスト参加者に中継される場合、そのメッセージはDMARCに失敗する可能性があります。 Office 365がこれらのメッセージを拒否した場合、人々は正当な電子メールを失い、それを取得する方法がなくなる可能性があります。代わりに、これらのメッセージはDMARCに失敗しますが、スパムとしてマークされ、拒否されません。
ただし、この推論にはいくつかの欠点があります。
DKIMは正当なメールを保護します。 DKIMで署名されたメッセージは、メーリングリストで転送されたときにSPFと一致しない場合でも、DMARCポリシーで渡されます。 (とにかく、メーリングリストはenvelope senderを変更してSPFチェックに合格する必要があります。そのため、SPFチェックはおそらく合格しますが、調整されません。)
p=reject
ではなくp=quarantine
を実装することで、ドメインの所有者はメールを拒否する必要があると述べています。したがって、マイクロソフトの実装は RFC 7489、6. に違反しています。
p: Requested Mail Receiver policy ... reject: The Domain Owner wishes for Mail Receivers to reject email that fails the DMARC mechanism check. Rejection SHOULD occur during the SMTP transaction.
Office 365でこの動作を変更してこれらのメッセージを拒否する設定はありますか?
これは、Office 365テナントでトランスポートルールを追加することで実現できます。 p=reject
が含まれるドメインのDMARCテストに合格しないメールでは、 dmarc=fail action=oreject
ヘッダー にcompauth=fail reason=000
およびAuthentication-Results
が含まれます。
dmarc=fail action=oreject
をキャッチできます:
action
DMARCチェックの結果に基づいてスパムフィルターが実行したアクションを示します。
oreject
またはo.reject
:オーバーライド拒否を表します。この場合、Office 365は、DMARCチェックに失敗したメッセージを、DMARC TXTレコードにp = rejectというポリシーがあるドメインから受信したときに、このアクションを使用します。メッセージを削除または拒否する代わりに、 Office 365はメッセージをスパムとしてマークします。
残念ながら、 複合認証compauth=fail reason=000
はp=reject
とp=quarantine
の両方で同じです。単独で使用すると、検疫のみを行うより厳密でないポリシーのメールにも影響します。 RFC 7489、6. の後には、これは望ましくありません。
compauth=fail
メッセージは、明示的な認証(DNSでドメイン公開レコードを明示的に送信)または暗黙的な認証(DNSでレコードを公開しなかったため、Office 365がレコードを公開したかのように結果を補間しました)に失敗しました。
reason=0xx
メッセージは複合認証に失敗しました。
000
は、メッセージが拒否または隔離のアクションでDMARCに失敗したことを意味します。
誤検知を回避するには、両方を要求するのが最善です。ただし、Office 365トランスポートルールには「and」条件のオプションがありません。適切なオプションは、「メッセージヘッダーに含まれる...」のみです。 「or」リストのみ、つまり「includesanyof these words」のみです。これらの理由により、私はdmarc=fail action=oreject
を選び、以下の手順で使用しました。
トランスポートルールを追加する手順:
Exchange管理センターにアクセスしますhttps://Outlook.office365.com/ecp/
mail flow>rulesで+
を押してルールを追加し、ルールに名前を付けます。 DMARCは拒否します。
必要な設定を表示するには、選択項目の下にある[その他のオプション...]リンクを押します。
オン "このルールを適用する場合..."選択 "メッセージヘッダー..."および「そこにある単語のいずれかを含む」。
詳細を追加します:'Authentication-Results'
header include'dmarc=fail action=oreject'
。
「次を実行...」および「メッセージをブロック...」の設定で目的のアクションを選択します。
RFC 7489、1.3メッセージの拒否 は、2つの可能性を示唆しています。
o A "silent discard", wherein the SMTP server returns a 2xy reply code implying to the client that delivery (or, at least, relay) was successfully completed, but then simply discarding the message with no further action.
これに相当するものは、 "誰にも通知せずにメッセージを削除する"です。
o Full rejection, wherein the SMTP server issues a 5xy reply code as an indication to the SMTP client that the transaction failed; the SMTP client is then responsible for generating notification that delivery failed (see Section 4.2.5 of SMTP RFC 5321).
"説明付きでメッセージを拒否...rejected by DMARC policy
"
ただし、Microsoft Office 365 connection-stage rejection はサポートされていないため、後者はSMTPで正確に応答しません5xy
応答コード、ただし配信不能レポート(NDR)をエンベロープ送信者に送信し、定義されたカスタムメッセージ:
NDRの技術的なエラーは550 5.7.1 TRANSPORT.RULES.RejectMessage; the message was rejected by organization policy
で、元のメッセージヘッダーが添付されています。