这看起来像是一个简单的任务,但我不知道如何去做。
我已经配置了一个 postfix 邮件过滤器,根据以下规则处理通过 SMTP 端口 25 发送的每一封电子邮件:Postfix 文档中的简单过滤器示例。
因此master.cf
,我添加了
filter unix - n n - 5 pipe
flags=Rq user=mailfilter null_sender=
argv=/opt/custom/postfix/myfilterscript.sh -f ${sender} -- ${recipient}
服务配置如下:
smtp inet n - n - 1 postscreen
smtpd pass - - n - - smtpd
-o content_filter=filter:dummy
dnsblog unix - - n - 0 dnsblog
tlsproxy unix - - n - 0 tlsproxy
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
smtp unix - - n - - smtp
我怀疑问题就在这里,但我不知道如何在端口 587 上启用对传入电子邮件的过滤。我不熟悉 postfix 配置,而且似乎无法在文档中找到解释。
那么我需要做哪些更改才能使 postfix 对端口 587 使用与端口 25 相同的邮件过滤器?
答案1
解决方案很简单:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o content_filter=filter:dummy
但是,我很难理解 service_name 和 service_type 条目的含义。手册在我看来不是很有帮助,因为它说
服务名称以 host:port 的形式指定,表示应接受新连接的主机和端口。主机部分(和冒号)可以省略。
有了这样的解释,读者会一直想知道现有条目的含义,因为现在人们会期望这里是数字端口。虽然它提到这smtp
代表收到的邮件,但细节仍然是个谜,而且文档中没有其他地方可以帮助解释这一点。
我最终怀疑smtp
代表端口 25,而submission
代表端口 587,所以我也-o content_filter=filter:dummy
向条目中添加了该参数。看来我的假设是正确的,因为它现在可以正常工作了。submission
但仍然想知道这是在哪里定义或描述的。