将sendmail配置为仅发送

将sendmail配置为仅发送

我想将 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 守护程序(因为您将其关闭)。

简单的选项是

  1. 确保您的监听守护进程仅通过以下方式为 127.0.0.1 (和/或 ::1)

    DAEMON_OPTIONS(`端口=smtp,地址=127.0.0.1,名称=提交')

    sendmail.mc文件中,那么它只能从自身接收(尽管这与使用 iptables 阻止入站 SMTP 没有太大区别)。如果您的意思是“不倾听和接收”,这只是一个解决方案来自网络”。

  2. 更改连接到 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文件来实现上述效果,我不推荐这种方法......

相关内容