iptables阻止传出和我的服务器上smtp,尽pipe我指定它不。 我的政策是DROP除了指定的东西。 改变政策接受一切“解决”的问题,但我不希望无限stream量在这台服务器上。 规则如下(smtp部分是最后一个):
# Flush all rules iptables -F iptables -X # Allow unlimited traffic on loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Allow incoming and outgoing SSH iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT # Allow incoming HTTP/HTTPS # HTTP iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # HTTPS iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT # Allow outgoing SMTP iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT # Finally, change policy to DROP ALL iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
这是一个networking服务器。 Django的send_mail函数是用来发送邮件的。 设置如下:
EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = '[email protected]' EMAIL_HOST_PASSWORD = 'password' EMAIL_PORT = 587
我假设587被用于电子邮件,所以我添加了端口587上面显示的端口25相同的规则。我也尝试切换--dport SMTP /端口smtp,什么也没有。 按照这个和这个问题(25和587端口)设置规则也没有帮助。 我甚至尝试过为1025港口做同样的事情,只是因为它在文档中提到,没有…
您的防火墙规则不允许DNSstream量(UDP端口53)。 因此,您的Django应用程序无法执行DNS查找来查找smtp.gmail.com :
gaierror at /contact/mailto [Errno -2] Name or service not known
要解决这个问题,编写允许传出DNS查询和传入DNS响应的防火墙规则。
难道运动和运动应该是相反的吗?
# Allow outgoing SMTP iptables -A OUTPUT -o eth0 -p tcp --dport 587 -m state --state NEW,ESTABLISHED -j A iptables -A INPUT -i eth0 -p tcp --sport 587 -m state --state ESTABLISHED -j ACCEPT