![阻止来自本地主机外部的 SMTP 连接](https://linux22.com/image/505981/%E9%98%BB%E6%AD%A2%E6%9D%A5%E8%87%AA%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E5%A4%96%E9%83%A8%E7%9A%84%20SMTP%20%E8%BF%9E%E6%8E%A5.png)
我有一个网站需要发送电子邮件来确认订单并提醒订阅用户某些事件。我确实不是由于其他原因,需要通过服务器发送电子邮件,因此我想阻止 localhost 之外的任何人连接到 SMTP 的端口 25。我尝试这样做:
sudo iptables -A INPUT -p tcp -s 0.0.0.0 --dport 25 -j DROP
但我仍然可以远程登录到端口 25 并从另一台计算机键入 SMTP 命令。我做错了什么?此外,有没有更好的方法来实现我想要的?澄清一下:我想要的是一台可以发送电子邮件(通过 SMTP)的机器,但只能发送来自机器上运行的脚本的电子邮件。并且任何配置都必须在重新启动后“存活”。
我在 Ubuntu(Hardy)上使用 Postfix。
答案1
我认为,如果您不想接收来自外部的电子邮件,更好的解决方案是在文件中master.cf
替换以下内容,准确地告诉 postfix:
smtp inet n - n - - smtpd
这通常是第一个非注释行,但您的里程可能会有所不同,具体取决于您的后缀是否被供应商修改,如下所示:
127.0.0.1:smtp inet n - n - - smtpd
答案2
我相信您不想要该-s 0.0.0.0
条款。您只是拒绝来自 0.0.0.0 地址的访问。
您可能需要类似的东西:
sudo iptables -A INPUT -p tcp -s 127.0.0.0/8 --dport 25 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 25 -j DROP
这将接受来自本地主机的任何传入连接(即来自环回范围 - 127.0.0.1-127.255.255.255)并丢弃所有其他连接。