使用 Exchange 实现可变信封返回路径 (VERP)

使用 Exchange 实现可变信封返回路径 (VERP)

我们正在考虑实施可变信封返回路径(VERP)用于改进我们的应用程序的退回处理。

我们当前的邮件基础设施是 MS Exchange 2007,但正在升级到 2010。我们还在实施 Postini 进行垃圾邮件过滤。

Exchange 不支持子寻址(另见此关于一次性地址的问题)——VERP 在某种程度上是子寻址的一种专门应用。

是否有任何选项可以在 Exchange 中实施 VERP,而无需在 Exchange 前面放置另一个非 Exchange SMTP 中继来预处理传入消息?具体来说,是否可以创建一个传输规则,该规则可以与目标(不存在)收件人匹配,将该收件人地址存储在添加到邮件的特殊标头中,并将邮件重定向到预先创建的邮箱?

注意:如果可以以某种方式使用自定义代码,我们有可用的开发人员资源。

答案1

当然,Exchange 2007/2010 中没有对 VERP 的开箱即用支持。如您所知。我认为您无法创建传输规则(即使使用 PowerShell)来执行您想要的操作。我相信您最接近的方法是构建自己的传输代理。您可以在 msdn.microsoft.com 找到 Exchange SDK。如果您的目标是确定邮件被退回给谁,您最好解析协议日志。必须打开协议日志记录,并具有单独的发送/接收日志。祝你好运,保罗

答案2

Exchange 在这方面很差劲。Linux 邮件软件是免费的。将它安装在盒子上,为您发送的所有应用程序特定邮件配置一个子域。(例如 myapp.mycompany.tld,因此您的所有邮件都来自[电子邮件保护]

编写(或让别人编写)一个快速而粗糙的应用程序来接收和处理退回消息并使用 SOAP 之类的东西通知您的应用程序是相当容易的。

如果您处于仅限 Windows 的环境中,那么脱离出来运行一次性的 Linux 服务器就没什么意思了,但我不知道如何使用 Exchange 来做到这一点。

另一种选择可能是在每封邮件的标题、主题或正文中嵌入一串唯一的字符。使用 X-MyApp-Id: blah。当然,这可能会触发更多垃圾邮件过滤器...

答案3

我们通过解析消息跟踪日志并制定在发送之前删除退回消息的规则来实现这一点。如果您的发送应用程序可以创建 VERP 返回路径,则此方法有效。不是 Exchange 的 SMTP 部分无法执行 VERP,而是邮箱部分无法处理通配符以将退回消息存入邮箱。如果您使用日志,则不必发送退回消息,从而减少邮件流量。日志是 csv 文件,因此它们可以整齐地加载到数据库中,然后您可以解析 VERP 记录 ID 的返回路径字段并使用原因代码将其标记为硬退回或软退回。我们遇到的问题是,如果您的应用程序使用 smtp 连接到交换服务器,这种方法非常有效。出于某种原因,如果您使用拾取目录,交换会将您的 verp 返回路径替换为发件人地址,您将失去执行此操作的能力。仍在尝试解决这个问题。

相关内容