在创建传出标头时应使用哪个 Postfix 虚拟域变量?
当前服务器
我正在运行一个由以下机构管理的数据库驱动的虚拟域服务器Postfix管理员. 我想在所有发出的电子邮件的标题中添加声明使用 Postfix 系统,没有使用负责的网络应用程序或客户端。
我们需要生产...
问题是不是关于List-Unsubscribe
标题,我们已经知道看起来应该像...
在电子邮件标题中:
List-Unsubscribe: mailto:[email protected]
我们如何生产...
我们已经知道要实现这一点用一条线量身定做支出支票 /etc/postfix/smtp_header_checks
。所以,如果我们有这条线......
主配置文件:
smtp_header_checks = regexp:/etc/postfix/smtp_header_checks
(或其他类似设置some_setting = regexp:/etc/postfix/some_setting
?)
然后,我们需要...
在 /etc/postfix/smtp_header_checks 中:
/^Content-Type:/i PREPEND List-Unsubscribe: mailto:[email protected]
但是,这只适用于特定域somedomain.tld
;我需要一个依赖于发送域的变量。
在任何地方或任何其他文件中都没有mydomain =
设置;所有域都由 MySQL 管理的虚拟域映射进行管理。main.cf
/etc/postfix/
所以这个问题是关于vmail 变量任何发送头创建,不仅如此List-Unsubscribe:
,只要它可以List-Unsubscribe:
从 Postfix 创建。
(Postfix 文档不清楚标题中可用的 vmail 变量。
带有域变量的代码
这是我的最佳解决方案:$mydomain
。
在 /etc/postfix/smtp_header_checks 中:
/^Content-Type:/i PREPEND List-Unsubscribe: mailto:unsubscribe@$mydomain
从虚拟域发送时,$mydomain
将该域传递到 Postfix 发送的标题或其他电子邮件内容创建的正确方法是什么?
(使用 Postfix 非常重要,这样所有电子邮件都会有这个功能,即使是从简单的 CLI 或通过 PHP 通过第三方 Web 应用程序发送的电子邮件也是如此邮件传输协议等等。我们已经知道如何通过服务器语言标头添加它。)
答案1
Postfix
没有提供直接对应于发件人域的内置变量smtp_header_checks
,但我们可以使用与中的正则表达式参数header_checks
组合smtp_header_checks
来做同样的事情。
首先我们在
/etc/postfix/header_checks:添加此内容
/^From:.*@(.*)/i PREPEND X-Sender-Domain:$1
然后List-Unsubscribe
使用自定义X-Sender-Domain
的
在 /etc/postfix/smtp_header_checks 中: 我们有
/^X-Sender-Domain:(.*)/i PREPEND List-Unsubscribe: mailto:unsubscribe@$1
然后确保
主配置文件: 我们有
header_checks = regexp:/etc/postfix/header_checks
smtp_header_checks = regexp:/etc/postfix/smtp_header_checks
然后我们用这个命令重新加载。
$sudo postfix reload