Não é possível conectar a porta 587 do postfix / dovercot externo usando tls

0

Não é possível conectar-se à porta SMTP 567

Eu criei o servidor de correio postfix + dovecot.

openssl s_client -starttls smtp -crlf -connect localhost:587

Isso funciona e pode enviar e-mail manualmente.

openssl s_client -starttls smtp -crlf -connect smtp.example.com:587

mostra este erro

connect: Connection refused
connect:errno=61

O que eu verifiquei é netstat, iptables.

Ambos parecem funcionar bem para 587 apresentações.

netstat -anutp

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:58592         127.0.0.1:587           ESTABLISHED 2793/openssl    
tcp        0    388 133.242.184.252:22      210.149.252.243:46415   ESTABLISHED -               
tcp        0      0 127.0.0.1:587           127.0.0.1:58592         ESTABLISHED -               
tcp6       0      0 :::22                   :::*                    LISTEN      -               
udp        0      0 133.242.184.252:123     0.0.0.0:*                           -               
udp        0      0 127.0.0.1:123           0.0.0.0:*                           -               
udp        0      0 0.0.0.0:123             0.0.0.0:*                           -               
udp6       0      0 :::123                  :::*                                -    

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:3000
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

Existe algum outro ponto que eu deva verificar ???

    
por whitebear 06.09.2017 / 08:36

2 respostas

1

Lembre-se de que as regras do iptables são lidas de cima para baixo. Quando você adiciona uma regra com -A é anexada no final (ou após o número fornecido), quando você usa -I inserido na frente.

Agora você basicamente tem:

  1. aceita ICMP, HTTP, SSH, ...
  2. rejeitar tudo
  3. aceita SMTP, POP3

Então você precisa mover as regras "aceitar SMTP ..." acima da rejeição geral.

Você pode excluí-los e adicionar novamente especificando manualmente a posição:

     iptables -A INPUT 7 -p tcp ...
(or) iptables -I INPUT 8 -p tcp ...

(use iptables -L --line para ver os números das regras.)

Como alternativa, edite a lista completa de uma só vez - e apenas troque as linhas:

iptables-save > rules.txt
nano rules.txt
iptables-restore < rules.txt

Notas laterais:

  • No futuro, pode ser melhor se você postou as regras usando iptables -S ou mesmo iptables-save ; é um pouco mais fácil de digitalizar do que a saída -L altamente reformatada. (Ou talvez os dois.)

  • O Dovecot apenas fala POP / IMAP / LMTP, mas não SMTP. Seu servidor SMTP é o Postfix.

  • Ao usar netstat com a opção -p , você deve executar o comando como root, caso contrário, ele não exibirá nenhuma das informações do processo.

por 06.09.2017 / 09:04
1

Os Iptables tentam sequencialmente corresponder às suas regras na ordem em que aparecem. No seu caso ( como dito nos comentários, forneça o resultado dos comandos iptables -S , pois não temos informações com iptables -L como a interface correspondente )

  1. se os pacotes corresponderem a state RELATED,ESTABLISHED na interface ? , eles serão aceitos e nenhuma outra correspondência nesses pacotes será feita;
  2. else, se os pacotes corresponderem a icmp na interface ? eles serão aceitos e nenhuma outra correspondência nesses pacotes será feita;
  3. else, o iptables aceita todos os pacotes na interface ?
  4. ....

Então, dado que não sabemos em qual interface são feitas as regras, acho que sua única regra de REJEIÇÃO (na tabela INPUT) é correspondida na mesma interface que a regra tcp dpt:smtp . Como sua regra REJECT é correspondida antes de sua regra snmp, a última nunca é correspondida.

EDITAR muito longo para escrever o post ...

    
por 06.09.2017 / 09:55