Email

iptables 阻塞 smtp

  • November 29, 2013

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

引用自:https://serverfault.com/questions/558294