tom*_*tom 4 linux iptables sendmail
我在 Ubuntu 10.04 上安装了 sendmail,仅用于 phpmail()
功能。这工作正常,除非 iptables 正在运行(我一直在sendmail myemailaddress@domain.com
用来测试这个)。
我认为我已经允许 SMTP 和 DNS(我用来测试 iptables 规则的脚本如下,在我的版本中是我的主机名称服务器的实际 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
Run Code Online (Sandbox Code Playgroud)
目前你有:
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
Run Code Online (Sandbox Code Playgroud)
这使得:
对于外发电子邮件,您需要发送邮件才能连接到外部世界。
所以你还需要这样的东西:
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
请确保你不会成为一个开放的中继。