我想将 sendmail 配置为仅发送电子邮件,而不是收听和接收。在/etc/mail/sendmail.conf我有:
DAEMON_MODE="None";
QUEUE_MODE="Daemon";
iptables 被禁用(暂时;仅用于此测试)
但在/var/log/mail/mail.log
Nov 18 13:40:04 novy sm-msp-queue[13548]: rAIC9RiF012445: [email protected], ctladdr=root (0/0), delay=00:30:37, xdelay=00:00:00, mailer=relay, pri=390130, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
当我设置/etc/mail/sendmail.conf DAEMON_MODE="Daemon";
电子邮件时已成功发送。
需要倾听吗?
答案1
如果您确实正在运行sendmail
,而不是冒充“替代”sendmail 的东西,则这适用。
默认安装通常的工作方式sendmail
是:
- 一个 MTA 守护进程(至少)监听 localhost:25
- 从 clientmqueue 发送到该 MTA 的非侦听 MSP 队列运行守护进程
/var/spool/mqueue
在每种情况下,分别有一个假脱机目录/var/spool/clientmqueue
。这些有不同的权限,本来是为了解决setuid-root二进制文件的问题,本地邮件提交需要setgid“smmsp”才能写入clientmqueue spool。
当您发送电子邮件时,例如使用sendmail(或mailx),它使用“客户端”模式,如果它无法连接到本地主机,它只会添加到clientmqueue(或者您可以强制排队-ODeliveryMode=q
),队列运行程序将定期重试它。
需要注意的重要一点是,始终有一个 sendmail 侦听,因为提交过程尝试使用尽可能少的权限执行尽可能少的操作。上面的错误日志是提交进程无法连接到 MTA 守护程序(因为您将其关闭)。
简单的选项是
确保您的监听守护进程仅通过以下方式为 127.0.0.1 (和/或 ::1)
DAEMON_OPTIONS(`端口=smtp,地址=127.0.0.1,名称=提交')
在
sendmail.mc
文件中,那么它只能从自身接收(尽管这与使用 iptables 阻止入站 SMTP 没有太大区别)。如果您的意思是“不倾听和接收”,这只是一个解决方案来自网络”。更改连接到 127.0.0.1 的“提交”默认值
特征(`msp',`[127.0.0.1]')
并将 127.0.0.1 替换为您的“智能主机”或本地 SMTP 中继
要进行上述任一更改,您应该安装 sendmail cf/m4 支持文件,这可能是一个额外的软件包。添加/修改源 .mc 文件中指示的指令(通常sendmail.mc
是 和submit.mc
),并运行提供的 make 脚本来重建sendmail.cf
和/或submit.cf
文件。
你会发现勇敢的灵魂直接修改他们的.cf
文件来实现上述效果,我不推荐这种方法......