当前服务器

当前服务器

在创建传出标头时应使用哪个 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

相关内容