我已经在Ubuntu 10.04上安装了sendmail,专门用于使用php mail()函数。 这工作正常,除非iptables正在运行(我一直在使用sendmail [email protected]来testing这个)。
我认为我已经允许SMTP和DNS(我用来testingiptables规则的脚本如下,在我的版本是我的主机名称服务器的实际IP),但没有用!
iptables --flush iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Postgres iptables -A INPUT -p tcp --dport 5432 -j ACCEPT # Webmin iptables -A INPUT -p tcp --dport 10000 -j ACCEPT # Ping iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT # sendmail 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 # DNS iptables -A INPUT -p udp --sport 53 -s <nameserver1> -j ACCEPT iptables -A INPUT -p udp --sport 53 -s <nameserver2> -j ACCEPT iptables -A INPUT -p tcp --sport 53 -s <nameserver1> -j ACCEPT iptables -A INPUT -p tcp --sport 53 -s <nameserver2> -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -d <nameserver1> -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -d <nameserver2> -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -d <nameserver1> -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -d <nameserver2> -j ACCEPT iptables -A INPUT -j DROP # Add loopback iptables -I INPUT 1 -i lo -j ACCEPT
目前你有:
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
这使得:
对于传出的电子邮件,您需要sendmail能够连接到外部世界。
所以你也需要这样的东西:
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
请确保你不会成为一个开放的继电器。
我假设你将连接到一个继电器(智能主机)发送邮件,并不需要任何传入的邮件。 如果不是,将会有更多的工作要做。 自动化系统往往没有configuration好的电子邮件服务,这可能会导致邮件被丢弃或发送到垃圾邮件存储桶。
您可能想要使用conntrack来处理已build立的连接。 这简化了其余规则,因为您只需要担心其他规则中的新连接。
iptable -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptable -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
您的ping条目之前,您的规则看起来不错。
您的规则需要覆盖传出的stream量
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
您的ICMP规则似乎不完整
iptables -A INPUT -p icmp --icmp-type 3/4 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 3/4 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT