在我们的应用程序中,我们发送不同类型的邮件。从广义上讲,我们可以将其概括为两类,
- 监控应用程序运行状况的邮件。
- 我们发送给最终用户的邮件。
有没有什么方法(设置一些标题/在后缀中配置一些参数),以便对于相同的发送方地址,我们可以使用不同的中继主机?
答案1
在 Postfix 中,你可以使用运输地图为不同的域指定不同的中继主机。在文件中/etc/postfix/main.cf
,你需要包含一行:
transport_maps = hash:/etc/postfix/transport
传输图文件的语法如下:
# Syntax: .domain transport:relay_host
# Specifies specific domains for local delivery
mydomain1.com :
mydomain2.com :
# Specify domains that need to be relayed through 192.168.1.1
anotherdomain1.com relay:192.168.1.1
anotherdomain2.com relay:192.168.1.1
不要忘记运行postmap transport
生成.db
文件,然后重新加载/重新启动 postfix 进程。
答案2
传输图(在 Khaled 的回答中)可以根据域更改邮件的中继。
您还可以使用header_checks和body_checks根据电子邮件正文中找到的匹配标头和内容更改传输(并执行其他操作)。这些可以基于正则表达式或哈希。我下面的示例是基于正则表达式的。
在/etc/postfix/main.cf
:
header_checks = regexp:/etc/postfix/header_checks
在/etc/postfix/header_checks
:
/^Subject: Host [a-z0-9]* is down!/ FILTER relay:192.168.1.1
/^Subject: [^ ]* has posted a new blog entry./ FILTER relay:192.168.1.2
/^Message-ID: <[0-9a-z]*@dbserver.local>/ FILTER relay:192.168.1.1
/^Message-ID: <[0-9a-z]*@mydomain.com>/ FILTER relay:192.168.1.2
工作body_checks
方式与 相同header_checks
。
如果您想要过滤某些独特的内容,您可以在应用中设置任意标题。