我环顾四周并尝试了许多方法。
如果我想要一个(centos)服务器只能发送电子邮件(通知我)但不能访问其他互联网,那么 iptables 是什么。
我已尝试过,但没有用,只有当 iptables 停止时才会发送电子邮件。
iptables -A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m tcp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -j REJECT
有任何帮助/知识吗?
Sendmail 日志显示:当 iptables 处于活动状态时,stat=Deferred: Connection denied by [127.0.0.1]
更新:以下规则似乎有效:
iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -j REJECT
答案1
Sendmail-8.12+ 通过 127.0.0.1:25 传递“命令行电子邮件”。这样做是为了避免被安装为 set root uid。
您可以让 sendmail 仅在 127.0.0.1(环回接口)上接受传入的 SMTP 连接。它应该阻止传入的外部 SMTP 连接。
将以下行添加到 sendail.mc 并将其重新复制到 sendmail.cf 中[1]:
DAEMON_OPTIONS(`Addr=127.0.0.1,Port=smtp,Name=MTA')
您也可以尝试以下 iptables 规则:
iptables -A INPUT -p tcp --dport 25 -d 127.0.0.1 -i lo -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -m state --state NEW -j REJECT
iptables -A INPUT -p tcp --dport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -j REJECT