基于正则表达式转发Postfix邮件

基于正则表达式转发Postfix邮件

我们正在使用 PHP 构建一个票务系统。我们现在遇到了识别客户回复的问题。

  • 在主题中放置 ID 是行不通的,因为用户可以删除它。
  • 在自定义标头中发布 ID 是行不通的,因为某些邮件客户端会删除它。
  • 在邮件正文中发布代码也不起作用,因为就像主题一样,用户可以删除它。

我们考虑将 ID 放入电子邮件地址中。t<ticketid>@mydomain.com

但是,我们不确定如何将其重定向到[email protected]

答案1

我的建议是使用+样式子地址:support+<ticketid>@mydomain.example。 Postfix 将像发送到 一样传递这些邮件[email protected],而忽略子地址。

Postfix 还允许定义要使用的不同字符。将recipient_delimiter您的参数设置/etc/postfix/main.cf为所需的值:

recipient_delimiter = +-

这将允许[email protected][email protected],以相同的方式处理两个地址。

一些 Linux 发行版附带的 postfixrecipient_delimiter设置为+,因此这可能已经可以开箱即用了。

答案2

您可以使用 virtual_alias_maps [*]:

#virtual_alias_maps = hash:/etc/postfix/aliases
virtual_alias_maps = regexp:/etc/postfix/aliases

并填写 /etc/postfix/aliases

/t(.*)@mydomain.com/ [email protected]
/t(.*)@mydomain.com/ support+${1}@mydomain.com
/^(.*)@domain1.com$/ ${1}@domain2.com

然后运行命令并更新 virtual.db

postmap /etc/postfix/virtual

您当然可以微调正则表达式以完全匹配您的 Ticketid 代码(即仅数字等)或使用反向引用。

[*] 如果你在 postfix 中不使用任何虚拟域,你也可以使用 alias_maps,但它的工作原理有时会令人困惑,请阅读https://serverfault.com/questions/644306/confused-about-alias-maps-and-virtual-alias-maps关于它

相关内容