使用Postfix在邮件主题中添加源主机名
使用Postfix在邮件主题中添加源主机名
看起来你遇到的问题是header_checks规则写得不对导致没生效,我来帮你捋清楚问题出在哪,以及怎么修改才能实现给邮件主题加上源主机名的需求。
首先,先说说你当前配置里的几个问题:
- 你的正则规则
/^Subject:$/只会匹配完全没有内容的主题行(也就是Subject:后面啥都没有的情况),绝大多数邮件都有实际的主题内容,所以这个规则根本不会被触发。 - 规则里的
$1没有对应的正则捕获组,因为你没在正则里用()捕获任何内容,就算规则触发了,替换后也只会显示[CUSTOM TEXT],带不上原主题。
接下来是正确的配置步骤:
1. 修改header_checks规则文件
打开/etc/postfix/header_checks,把原来的规则替换成下面的内容:
/^Subject:(.*)/ REPLACE Subject: [${myhostname}] $1
/^Subject:(.*)/会匹配所有带内容的主题行,并用(.*)捕获原主题的全部内容到$1里。${myhostname}是Postfix的内置宏,会自动替换成你的服务器主机名;如果想添加的是发件方的源主机名,可以换成${sender_hostname}(这个需要确保Postfix能正确获取到发件方主机信息)。
2. 调整main.cf配置
确保你的/etc/postfix/main.cf里有这两行配置:
header_checks = regexp:/etc/postfix/header_checks expand_header_checks = yes
加上expand_header_checks = yes是为了让Postfix解析规则里的内置宏(比如${myhostname}),不然宏会被当成纯文本输出。
3. 重新加载Postfix配置
修改完配置后,执行下面的命令让Postfix生效:
postfix reload
测试验证
你可以用这条命令发一封测试邮件,看看主题是否被正确修改:
echo "这是测试邮件内容" | sendmail -s "原测试主题" your-test-email@example.com
收件后检查邮件主题,应该会变成[你的服务器主机名] 原测试主题。
如果还是有问题,可以查看Postfix的日志(/var/log/mail.log),看看有没有相关的错误提示,方便进一步排查。
备注:内容来源于stack exchange,提问作者Harold Callahan
相关产品推荐
相关产品推荐

