我的问题基本上可以归结为:Exchange (2016) 正在接受不存在地址的邮件,然后发送 DSN(传递状态通知)以通知发件人失败。我希望它立即拒绝发送到不存在地址的邮件并返回 550 响应。
更多背景信息
我的设置大致如下:
+-----+
Datacenter Office |User1|
+----------+ +---------+ +----------+ +-----+ +-----+
| Internet | <--> | Postfix | <--> | Exchange | |UserN|
+----------+ +---------+ +----------+ +-----+ +-----+
|User2|
+-----+
收到的邮件首先到达我的 postfix 服务器,该服务器会进行病毒扫描、垃圾邮件过滤和隔离。然后,它会被转发到我们办公室的 Exchange 服务器。
Postfix 配置为针对 Exchange 服务器进行收件人验证。这涉及连接到服务器并执行部分 SMTP 事务,直至命令RCPT TO
。如果服务器以代码 250 响应,则收件人被视为有效。
问题是 Exchange 总是以 250 进行响应......它显然在收到命令后甚至没有尝试进行任何验证RCPT TO
。
我已按照 Technet 上的说明在 Exchange 中启用反垃圾邮件功能和收件人验证,但我不知道它做了什么,因为 Exchange 的 SMTP 服务器的行为与我执行任何操作之前完全相同。
以下是我在 Exchange 服务器上运行的尝试使其正常工作的命令。
& $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1
Restart-Service MSExchangeTransport
Set-RecipientFilterConfig -Enabled $true
Set-RecipientFilterConfig -RecipientValidationEnabled $true
Exchange 的收件人验证应该让它在收到后立即执行验证RCPT TO
?(如果不是,它到底做了什么?)
答案1
这个问题类似,并且其接受的答案对我有用。
为了在命令之后立即完成收件人验证RCPT TO
,您必须连接到集线器传输(而不是前端传输)。我编辑了绑定到端口 2525 的现有集线器传输,选中允许“匿名用户”连接到它的复选框(确保通过其他方式锁定它,以便只有已知的服务器才能访问它)。
然后,我更改了网关 (postfix) 服务器上的设置,以便在与此 Exchange 服务器通信时使用端口 2525。此时,收件人验证开始按预期工作。
答案2
我会切换到 LDAP 查找,而不是尝试在 SMTP 通信上失败。更可靠。