Iptables bloqueando smtp

1

O Iptables está bloqueando a saída e a entrada do smtp no meu servidor, embora eu tenha especificado não. Minhas políticas são DROP tudo, exceto o que é especificado. Alterar as políticas para ACEITAR tudo "resolve" o problema, mas não quero tráfego ilimitado neste servidor. As regras foram definidas da seguinte forma (a parte smtp é a última):

# 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

É um servidor da web. A função send_mail do Django é o que está sendo usado para enviar e-mails. As configurações são as seguintes:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587

Eu assumi que 587 estava sendo usado para email, então eu adicionei para a porta 587 as mesmas regras mostradas acima para a porta 25. Eu também tentei trocar --dport / --sport para smtp, nada. Definir as regras como em this e estas perguntas (ambas para as portas 25 e 587) não ajuda também. Eu até tentei fazer o mesmo para a porta 1025, só porque foi mencionado nos docs, nada ...

    
por Alex 29.11.2013 / 18:46

2 respostas

3

Suas regras de firewall não permitem o tráfego DNS (porta UDP 53). Assim, seu aplicativo Django não pode realizar uma pesquisa de DNS para localizar smtp.gmail.com :

gaierror at /contact/mailto [Errno -2] Name or service not known

Para corrigir isso, escreva regras de firewall que permitam consultas DNS de saída e respostas DNS recebidas.

    
por 29.11.2013 / 21:07
0

Será que o --sport e --dsport devem ser o contrário?

# 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
    
por 29.11.2013 / 20:38