我已禁用 sendmail 守护进程(通过在 /etc/sysconfig/sendmail 中设置 DAEMON=no)。它没有监听端口 25。
相反,我使用自定义 SMTP 服务器。
- 之前:它监听端口 25。它接受来自外部和本地的邮件(正如我想要的那样)。但是以 root 身份运行不好。
- 之后:我只是将其改为监听端口 25252,并使用 iptables 将流量从 25 重定向到 25252。
这对于连接到端口 25 的其他机器来说很有效;它被重定向到 25252。
但是本地发送的邮件(例如 cron、monit)仍然尝试连接端口 25,但那里已经没有任何内容了。
要将本地邮件路由到我的替换 SMTP 服务器,似乎有两个选择:
- 更改本地邮件发送以连接端口 25252。
- 使 iptables 处理本地流量并将其从 25 重定向到 25252。
我更喜欢 2(如果可能的话),因为它扩展了我已经使用的方法(而 sendmail mc 文件让我头晕目眩)。但无论哪种方式,1 或 2,我都会感谢任何能帮助我学习如何做到这一点的人。谢谢。
答案1
您能否尝试一下:
iptables -t nat -A OUTPUT -p tcp -o lo --dport 25 -j DNAT --to-destination :25252
或者:
iptables -t nat -A OUTPUT -p tcp -o lo --dport 25 -j DNAT --to-destination IP:25252
其中 IP 是 sendmail 用于监听的 IP。您可以使用以下命令找到它:
sudo netstat -tlnp|grep sendmail
答案2
问题:您不能以 root 身份将自定义 SMTP 服务器绑定到端口 25/tcp 吗?然后放弃其特权?