为了使用专门用于外发电子邮件的清理守护进程,我在 中定义了一个特殊的 smtpd 进程,master.cf
用作default_transport
。(只有 postfix 才能通过此守护进程提交电子邮件!)
127.0.0.1:10027 inet n - - - - smtpd
-o syslog_name=postfix-smtpout
-o cleanup_service_name=srscleanup
-o smtpd_tls_security_level=none
-o content_filter=smtp:
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_sender_restrictions=permit
这很好用。但是,它对连接到此端口并在未经身份验证的情况下提交邮件的计算机上的任何本地用户/进程开放(由于发件人/收件人限制宽松),这不是很安全。
因此,我想将其smtpd
作为 unix 域套接字运行(只有在 postfix 用户下运行的进程才能访问)。
我设置default_transport = smtpout
并创建了一个master.cf
如下服务:
smtpout unix - - - - - smtpd
-o syslog_name=postfix-smtpout
-o cleanup_service_name=srscleanup
-o smtpd_tls_security_level=none
-o content_filter=smtp:
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_sender_restrictions=permit
但是,这会导致电子邮件卡在队列中并记录如下消息:warning: unexpected end-of-input from private/smtpout socket while reading input attribute name
。
我该如何修复这个问题并使用绑定到 unix 域套接字(而不是绑定到 inet)的 smtpd 进程?