如何让Plesk 11服务器接受到带有分隔符(VERP)的地址的电子邮件



我想要什么

我们通过电子邮件发送批量续订通知,如果我们能将任何反弹消息与数据库中的相应记录链接起来,那将是理想的选择。我最近了解了VERP(wiki),并认为这将是我们的完美解决方案

我尝试了什么

在做出任何更改之前,我做了一个测试,消息会像预期的那样反弹回发送者。然后我在/etc/postfix/main.cf中取消了这一行的注释,并重新启动了postfix。

recipient_delimiter = +

问题

不幸的是,我似乎无法让它发挥作用。发送到包含分隔符的地址的消息不再被拒绝,但它们似乎也不会发送到任何地方。以下是邮件日志的摘录:

Jul  8 12:14:36 cl-t082-392cl postfix/smtpd[28723]: 6E98A1A404CC: client=mta02.eastlink.ca[24.224.136.13]
Jul  8 12:14:36 cl-t082-392cl postfix/cleanup[28727]: 6E98A1A404CC: message-id=<6.1.2.0.2.20130708131351.24958960@pop.eastlink.ca>
Jul  8 12:14:36 cl-t082-392cl postfix/qmgr[28717]: 6E98A1A404CC: from=<me@example.com>, size=1343, nrcpt=1 (queue active)
Jul  8 12:14:36 cl-t082-392cl postfix/pipe[28752]: 6E98A1A404CC: to=<bounces+test@ourdomain.com>, relay=plesk_virtual, delay=0.22, delays=0.15/0/0/0.07, dsn=2.0.0, status=sent (delivered via plesk_virtual service)
Jul  8 12:14:36 cl-t082-392cl postfix/qmgr[28717]: 6E98A1A404CC: removed

因此,Postifx似乎在做它的工作,但plesk_virtual服务正在丢球。没有邮件返回给发件人。反弹/Maildir/cur中没有显示任何消息。如果plesk_virtual在某个地方写入错误,我不知道在哪里(我检查了/var/log/messages)。

我的搜索工作

我搜索了谷歌、这里和Parallels论坛。我在谷歌上因为同样的问题被点击了好几次,但都是因为差不多3年前的同一条消息。没有给出解决方案。几天前,我在Parallels论坛上发帖。我得到了一些意见,但没有任何回应。

我不想要的东西

我也见过类似的问题,建议将所有未送达的邮件转发到特定地址。这是一个包罗万象的问题。在当今垃圾邮件的世界里,这不是一个现实的解决方案。

问题

如何让Plesk正确识别并将消息传递到带有分隔符的地址?我无法想象我是唯一一个想在Plesk服务器上这样做的人。

我在Plesk论坛上回答了这个问题。对于仍然感兴趣的人来说,有一个修补后的解决方法。在main.cf中添加了以下内容:

recipient_canonical_classes = envelope_recipient
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical_map

使用以下regex:创建了一个文件/etc/postfix/recipient_canonicl_map

/^(.+)+.+@(.*)/ ${1}@${2}

当然,它假设+是唯一的VERP分隔符,但它确实有效。唯一需要注意的是,它不会弹出坏地址,这可能不是一件坏事。。

最新更新