Email
iptables 阻塞 smtp
iptables 在我的伺服器上阻止傳出和傳入的 smtp,儘管我指定它不是。我的政策是 DROP 除指定內容外的所有內容。更改策略以接受一切“解決”問題,但我不希望此伺服器上的流量不受限制。規則設置如下(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
這是一個網路伺服器。Django 的
send_mail
功能是用來發送郵件的。設置如下:EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'person@gmail.com' EMAIL_HOST_PASSWORD = 'password' EMAIL_PORT = 587
我假設 587 被用於電子郵件,所以我為埠 587 添加了上面為埠 25 顯示的相同規則。我還嘗試為 smtp切換
--dport
/ ,什麼都沒有。像這個和這個--sport
問題一樣設置規則(對於埠 25 和 587)也沒有幫助。我什至嘗試對埠 1025 做同樣的事情,只是因為它在文件中被提及,沒有…
您的防火牆規則不允許 DNS 流量(UDP 埠 53)。因此,您的 Django 應用程序無法執行 DNS 查找來定位
smtp.gmail.com
:gaierror at /contact/mailto [Errno -2] Name or service not known
要解決此問題,請編寫允許傳出 DNS 查詢和傳入 DNS 響應的防火牆規則。
會不會是 –sport 和 –dsport 應該反過來?
# 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