我们正在使用 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关于它