如何将 Postfix 配置为仅发送带有特定标题的电子邮件?

tha*_*smo 5 email postfix smtp-headers

我正在设置一个本地开发虚拟机,并且能够使用条目所有发送的电子邮件重定向到本地邮箱。virtual_alias_maps/.*/ username

我想添加的是一个选项,如果电子邮件包含特定标题,则不将电子邮件重定向到本地邮箱。

或者换句话说;如果在外发电子邮件中找到某个标题,则发送它,但如果标题丢失,则应将其重定向到本地邮箱。

我如何才能使用 Postfix 实现这一目标?

非常感谢你的帮助!

tpm*_*ml7 1

首先,我们在 中定义两个 smtpd 进程master.cf,一个启用重写,另一个禁用重写。master.cf 中默认存在启用重写的 SMTPD。现在我们将这些行

127.0.0.1:2525 inet n  -       n         -       2000     smtpd
    -o receive_override_options=no_header_body_checks,no_address_mappings
Run Code Online (Sandbox Code Playgroud)

这将启用另一个 smtpd 进程

  • 监听端口 localhost IP 端口 2525
  • 禁用 header_checks 功能和重写功能。

这是您的请求的伪代码

if header exist (postfix will checks via header_cheks)
    no rewrite 
else
    rewrite with virtual_alias_maps
Run Code Online (Sandbox Code Playgroud)

我们将使用header_checks来实现该逻辑。

添加这一行main.cf

 header_checks = regexp:/etc/postfix/mycustomheader
Run Code Online (Sandbox Code Playgroud)

内容/etc/postfix/mycustomheader

/^X-Your-Header/  FILTER smtp:[127.0.0.1]:2525
Run Code Online (Sandbox Code Playgroud)

怎么运行的

每当 postfix 检测到邮件中的X-Your-Header时,它就会将电子邮件重定向到我们之前定义的第二个 smtpd 进程。如果标头不存在,您的电子邮件将通过默认的 smtpd 进程并启用重写。

  • 感谢您的帮助!看来邮件仍然只在本地收到。看起来邮件被转发到端口 2525 上的 smtpd 进程,但它没有发送出去,而是再次重定向到本地邮箱。我已经检查了所有内容是否有拼写错误,到目前为止,我觉得一切都很好。知道为什么这仍然可能失败吗?谢谢! (2认同)