linux – 即使允许使用smtp和dns,Sendmail也不能与iptables一起使用

前端之家收集整理的这篇文章主要介绍了linux – 即使允许使用smtp和dns,Sendmail也不能与iptables一起使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Ubuntu 10.04上安装了sendmail,仅用于使用PHP mail()函数.除非iptables正在运行,否则这个工作正常(我一直在使用sendmail myemailaddress@domain.com来测试这个).

我认为我已经允许SMTP和DNS(我用来测试iptables规则的脚本如下,在我的版本中是我的主机名称服务器的实际IP),但无济于事!

  1. iptables --flush
  2.  
  3. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  4. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  5. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  6.  
  7. # Postgres
  8. iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
  9.  
  10. # Webmin
  11. iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
  12.  
  13. # Ping
  14. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  15. iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
  16.  
  17. # sendmail
  18. iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
  19. iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
  20.  
  21. # DNS
  22. iptables -A INPUT -p udp --sport 53 -s <nameserver1> -j ACCEPT
  23. iptables -A INPUT -p udp --sport 53 -s <nameserver2> -j ACCEPT
  24. iptables -A INPUT -p tcp --sport 53 -s <nameserver1> -j ACCEPT
  25. iptables -A INPUT -p tcp --sport 53 -s <nameserver2> -j ACCEPT
  26.  
  27. iptables -A OUTPUT -p udp --dport 53 -d <nameserver1> -j ACCEPT
  28. iptables -A OUTPUT -p udp --dport 53 -d <nameserver2> -j ACCEPT
  29. iptables -A OUTPUT -p tcp --dport 53 -d <nameserver1> -j ACCEPT
  30. iptables -A OUTPUT -p tcp --dport 53 -d <nameserver2> -j ACCEPT
  31.  
  32.  
  33. iptables -A INPUT -j DROP
  34.  
  35. # Add loopback
  36. iptables -I INPUT 1 -i lo -j ACCEPT

解决方法

目前你有:
  1. iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

这使得:

>数据包到您的sendmail,
>来自您的端口的数据包25 out,但仅适用于已建立的连接(因此只有来自外部的连接).

对于传出的电子邮件,您需要使用sendmail才能连接到外部世界.

所以你也需要这样的东西:

  1. iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
  2. iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

请确保你没有成为一个开放的接力.

猜你在找的Linux相关文章