我无法在 Postfix 队列前接受新邮件时触发邮件过滤器。显然,我有些地方做得不对,但我不知道是什么地方。
我有以下设置:Ubuntu Server,Postfix 2.11。
Postfix 服务正在运行,并能正常接收本地账户的电子邮件。
脚本 /tmp/milter.sh(所有者:me,组:me,权限:rwx-rwx-rx)每次运行时都会记录一些字符串。在终端中以用户 me 启动时,它可以正常工作。
在 中/etc/postfix/master.cf
,我有:
smtp inet n - - - - smtpd
-o content_filter=mymilter
...
mymilter unix - n n - - pipe
flags=F user=me argv=/tmp/milter.sh
新配置由
sudo postfix reload
答案1
看起来你对 Milter、队列过滤器之前和之后感到困惑。这三项彼此不同。我建议你阅读有关Postfix Milter 支持,队列过滤器之前和队列过滤器之后。
参数content_filter
表明您运行 AFTER-QUEUE 内容过滤器。有关此参数的代码片段来自Postfix 文档
消息进入队列后,将整个消息发送到指定交通:目的地。 这运输name 指定 master.cf 中邮件传递代理定义的第一个字段;语法下一跳目的地在相应的投递代理的手册页中有描述。有关外部内容过滤器的更多信息,请参阅 Postfix过滤器自述文件文件。
至于您为什么无法正常工作的问题,请查看邮件日志。我猜您应该mymilter:dummy
只mymilter
在参数 content_filter 中添加。请参阅 t 中的示例他的官方文件。
最后要注意的是,如果您进行修改,master.cf
那么最好使用postfix stop; postfix start
让 postfix 读取配置。