私の問題は基本的にこれに要約されます。Exchange(2016)は、存在しないアドレスのメールを受け入れ、後で送信者に失敗を通知するためにDSN(配信ステータス通知)を送信します。代わりに、550応答で存在しないアドレスに送信されたメールをすぐに拒否したいと思います。
より多くの背景
私のセットアップはおおよそ次のようになります。
+-----+
Datacenter Office |User1|
+----------+ +---------+ +----------+ +-----+ +-----+
| Internet | <--> | Postfix | <--> | Exchange | |UserN|
+----------+ +---------+ +----------+ +-----+ +-----+
|User2|
+-----+
着信メールは最初に私のPostfixサーバーに届きます。Postfixサーバーはウイルススキャン、スパムフィルタリング、検疫を行います。その後、オフィスのExchangeサーバーに転送されます。
Postfixは、Exchangeサーバーに対して受信者の検証を行うように構成されています。これには、サーバーへの接続と、RCPT TO
コマンドまでの部分的なSMTPトランザクションの実行が含まれます。サーバーがコード250で応答した場合、受信者は有効であると見なされます。
問題は、Exchangeが常に250で応答していることです...明らかに、RCPT TO
コマンドを受信しても検証を試みません。
Exchangeでスパム対策機能と受信者の検証を有効にするためのtechnetの指示に従いましたが、ExchangeのSMTPサーバーの動作が以前とまったく同じであるため、何が行われたのかわかりません。
これを機能させるためにExchangeサーバーで実行したコマンドは次のとおりです。
& $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1
Restart-Service MSExchangeTransport
Set-RecipientFilterConfig -Enabled $true
Set-RecipientFilterConfig -RecipientValidationEnabled $true
Exchangeの受信者検証は、RCPT TO
を受信するとすぐに検証を実行するように想定されていますか? (そうでない場合、それは正確に何をしますか?)
この質問 は似ており、受け入れられた答えは私のために働いた。
RCPT TO
コマンドの直後に受信者の検証を行うには、(フロントエンドトランスポートではなく)ハブトランスポートに接続する必要があります。ポート2525にバインドされている既存のハブトランスポートを編集し、[匿名ユーザー]が接続できるようにチェックボックスをオンにしました(既知のサーバーのみがアクセスできるように、他の方法でこれをロックしてください)。
次に、このExchangeサーバーと通信するときにポート2525を使用するように、ゲートウェイ(postfix)サーバーの設定を変更しました。この時点で、受信者の検証は意図したとおりに機能し始めました。
SMTP通信で失敗を試みる代わりに、LDAPルックアップに切り替えます。はるかに信頼性があります。