操作系统:Ubuntu 10.04 程序:Sendmail
我通过在 sendmail.conf 中设置 daemon_mode = “None”、queue_mode = “Daemon” 来禁用守护进程,更新了 conf 并重新启动了 sendmail。
但是,此后每当我尝试发送电子邮件时,我都会从 mail.log 中收到 stat=Deferred: Connection denied by [127.0.0.1] 。
如果我通过设置守护进程 daemon_mode = “Daemon” 再次打开守护进程,则一切正常。此外,如果我重新打开守护进程并尝试发送电子邮件,则所有之前因上述原因被拒绝的延迟电子邮件都将与新电子邮件一起成功发送。
有人知道这里出了什么问题吗?我想要的是守护进程停止监听传入的电子邮件,但留下队列来清理未发送的消息。
答案1
将/etc/mail/sendmail.mc
DAEMON_OPTIONS 更改为如下所示:
DAEMON_OPTIONS(`Name=MTA, Addr=127.0.0.1, Port=smtp')dnl
DAEMON_OPTIONS(`Name=MSP, Addr=127.0.0.1, Port=submission')dnl
然后运行sudo sendmailconfig
,就完成了。
答案2
我相信我已经解决了这个问题。我认为问题可能是如果守护进程已打开,那么 sendmail 将依赖守护进程发送电子邮件。如果守护进程已关闭,那么 sendmail 将通过另一种方式发送电子邮件,我不太清楚(如果您知道该机制,请分享您的知识 :P)。
无论如何,诀窍在于我已经很好地设置了守护进程的邮件主机,但不是为了那个“另一种手段”。我发现本文这真的很有帮助。如果有人遇到同样的问题,可以查看“处理 Sendmail v8.12”部分。显然我应该生成一个带有一些特定设置的 submit.cf,但我不想弄乱现有 submit.cf 中的其他设置,所以我只是破解了它并直接修改了 cf 文件。
我找到了这一行:
D{MTAHost}[127.0.0.1]
并将其改为:
D{MTAHost}$mailhost
其中 $mailhost 是我用来发送电子邮件的实际邮件主机,在我的情况下是 Google 服务器。修改后,必须重新启动 sendmail 才能使更改生效。注意:运行 sendmailconfig 或 update_conf 或任何其他更新 sendmail 的 conf 文件的方法都将丢弃更改,因为它没有写入任何 .mc 文件中,而是对 cf 文件的直接修改!
我希望我的经验对别人有帮助:)