postfix conexão smtp expirou, por quê?

7

Um servidor web do CentOS 7 tem postfix, dovecot e mailx instalados. Eu tenho sido capaz de fazer uma conexão IMAP para o servidor, a fim de ler e-mail caixa de entrada usando um cliente remoto do Thunderbird, mas eu não sou capaz de fazer uma conexão SMTP para enviar e-mail do Thunderbird. Quando faço a análise forense, descubro que a conexão SMTP tentada atinge o tempo limite. Como posso resolver esse problema do tempo limite da conexão, para que eu possa enviar e-mails do Thunderbird através do servidor?

Meus forenses até agora resultaram em:

Digitar hostname no terminal no servidor retorna mydomain.com .

nano /usr/lib/firewalld/services/smtp.xml indica que a porta smtp é 25

O serviço smtp é ativado na zona pública porque firewall-cmd --list-all resulta em:

public (default, active)
  interfaces: enp3s0
  sources: 
  services: dhcpv6-client imaps openvpn smtp
  ports: 
  masquerade: yes
  forward-ports: 
  icmp-blocks: 
  rich rules: 

Mas quando tento fazer telnet do meu devbox para o servidor remoto do CentOS 7, obtenho os seguintes resultados. Digitar telnet mydomain.com 25 resultou em:

Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out

Em seguida, digitar telnet smtp.mydomain.com 25 resultou em:

Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out

Além disso, digitar openssl s_client -CApath /etc/ssl/certs -starttls smtp -port 25 -host smtp.mydomain.com resulta em:

socket: Connection timed out
connect:errno=110

Da mesma forma, digitar openssl s_client -CApath /etc/ssl/certs -starttls smtp -port 25 -host mydomain.com também resultou em:

socket: Connection timed out
connect:errno=110

Eu digitei nano /etc/postfix/main.cf para começar a examinar a configuração, mas não encontrei nada relacionado a portas.

EDITAR:

De acordo com o conselho de FaheemMitha, tentei telnet mydomain.com 587 do cliente e recebi No route to host em resposta. Eu acho que isso é porque apenas a porta 25 está aberta no firewalld para smtp.

Por isso, pensei em experimentar o telnet a partir do servidor remoto mydomain.com. Quando eu entrei no meu servidor remoto via ssh e digitei telnet localhost 25 , o resultado foi:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mydomain.com ESMTP Postfix  

Isso me faz suspeitar que o postfix está sendo executado na porta 25, mas que de alguma forma não é capaz de aceitar conexões externas.

EDIT # 2

Como por sugestão @ RedCricket, eu corri iptables -L . Como os resultados foram detalhados, os enviei para um site de compartilhamento de arquivos, que você pode visualizar clicando neste link.

Eu também tentei iptables --flush seguido por firewall-cmd --reload e, em seguida, repeti os testes telnet e thunderbird acima, mas ainda estou recebendo o erro de tempo limite da conexão.

O que mais eu posso experimentar?

Carreguei todo o /etc/postfix/main.cf em um site de compartilhamento de arquivos. Você pode ler clicando neste link.

EDIT # 3

Um endereço de e-mail válido, someone.else@some_other_domain.com, envia um e-mail para [email protected] sem problemas. Portanto, como teste, solicitei que meu cliente remoto do Thunderbird tentasse enviar um email para someone.else@algum_dominio.com como parte do trabalho documentado acima neste OP. Esta manhã, recebi um retorno à mensagem do remetente no meu Thunderbird como resultado do email de teste. Eu interpreto esta mensagem retornada para significar que pelo menos uma das minhas mensagens de teste do Thunderbird entrou no SMTP em mydomain.com, mas que mydomain.com não pôde procurar ou se conectar a some_other_domain.com. Aqui está a mensagem:

This is the mail system at host mydomain.com.

I'm sorry to have to someone.elserm you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<someone.else@some_other_domain.com>: Host or domain name not found. Name service error for
    name=some_other_domain.com type=MX: Host not found, try again

Reporting-MTA: dns; mydomain.com
X-Postfix-Queue-ID: 2C915811BD1C
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Mon, 23 Feb 2015 16:46:34 -0500 (EST)

Final-Recipient: rfc822; someone.else@some_other_domain.com
Action: failed
Status: 4.4.3
Diagnostic-Code: X-Postfix; Host or domain name not found. Name service error
    for name=some_other_domain.com type=MX: Host not found, try again

ForwardedMessage.eml
Subject: key enclosed
From: [email protected]
Date: 02/23/2015 01:46 PM
To:    someone.else@some_other_domain.com

this is the body of the email  

Assim, parece que às vezes a conexão do meu devbox remoto para mydomain.com é fechada e, em outros casos, a conexão de mydomain.com para o resto da internet é fechada.

EDIT # 4

Seguindo o conselho do @ derobert, eu primeiro tentei os dois comandos telnet do devbox para o servidor, então eu tentei enviar um email do [email protected] usando o cliente Thunderbird no meu devbox, e então eu executei o comando tcpdump tanto no devbox quanto no servidor. Digitar tcpdump port 25 no terminal devbox resultou no seguinte:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

ouvindo em tun0, RAW (Raw IP), tamanho de captura 65535 bytes     ^ C     0 pacotes capturados     0 pacotes recebidos pelo filtro     0 pacotes descartados pelo kernel

Em seguida, digitar tcpdump no servidor resultou em tanta saída que os resultados rolaram indefinidamente até que eu digitei Ctrl-C. Então eu digitei tcpdump port 25 e obtive os seguintes resultados:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel

Como curiosidade, digitei tcpdump port 25 novamente no devbox e no servidor simultaneamente e deixei-o aberto sem digitar Ctrl-C , e tentei enviar manualmente um email de [email protected] usando o cliente Thunderbird meu devbox. Ainda tenho a mesma falha de tempo limite de conexão, mas não houve atividade relatada pelos comandos tcpdump port 25 abertos. E os totais também chegaram a zero quando digitei Ctrl-C nos dois terminais posteriormente.

    
por CodeMed 28.02.2015 / 01:04

1 resposta

5

Após a solução de problemas , determinamos que o ISP no lado do cliente está bloqueando a porta de saída 25 ( SMTP). Isso foi confirmado usando um site de teste de servidor de email aleatório na Internet e descobrindo que ele poderia se conectar ao servidor de email bem. Os pacotes SMTP da máquina cliente não chegaram de forma alguma (confirmados via tcpdump ).

A solução é reconfigurar o ouvinte SMTP em uma porta diferente. 465 (SMTP sobre SSL) e 587 (envio de mensagens, RFC6409) são opções comuns.

    
por 03.03.2015 / 20:03