当我sendmail -bs
以 root 身份运行该命令时,我得到了预期的输出:
$ sudo sendmail -bs
220 mydomain.com ESMTP Postfix
ehlo localhost
250-mydomain.com
250-PIPELINING
250-SIZE 15728640
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
但是当我在没有 sudo 的情况下运行相同的命令时,我根本没有得到任何输出,并且 sendmail 不会响应任何命令:
$ sendmail -bs
ehlo localhost
quit
wtf
^C
$
如何配置 Postfix 以便 sendmail 适用于每个用户(或至少适用于某些特定用户)?我需要这个,因为 PHP 的 SwiftMailer 用于sendmail -bs
发送邮件,当它找不到任何输出时会失败。
答案1
据记载,sendmail -bs
是通过运行smtpd(8)
守护进程来实现的。
由于这绑定到端口 25,因此需要 root 权限。
考虑使用 SwiftMailer 与其他发送选项之一,例如批处理模式或 SMTP 模式。
正如文档所述,sendmail -bs
除非您以个性化方式运行它,否则它不会像“真正的” postfix SMTP 服务器一样运行mail_owner
。
与批处理模式相比,SMTP 模式的唯一优势是它允许您通过 postfix 的访问控制来运行消息。由于您无法按照当前使用的方式执行此操作,因此请改用批处理模式。