Tentando configurar o servidor de correio, não é possível fazer com que as portas (25, 587) funcionem

9

Eu procurei em todos os lugares e estou realmente lutando com este. Eu acho que tentei quase tudo.

Informação de fundo

  • VPS com CentOS 6.7
  • Postfix 2.6.6
  • dovecot, amavis, mysql, fail2ban
  • Eu verifiquei com meu provedor VPS que eles não bloqueiam nenhuma porta.

Coisas que eu fiz

  • Sendmail de estoque removido
  • Instalei o postfix, dovecot, mysql etc. para uma solução completa de email
  • Estou permitindo apenas imap, smtp com STARTTLS (portas 143 e 587)
  • Logins SSH desativados, apenas com chaves
  • Posso receber e-mails (via porta 143)
  • Posso telnet do host local para ambas as portas (587, 25) e recebo a saudação postfix
  • Tentar conectar-me ao 587 ou 25 (cliente de email ou telnet) me dá resposta zero, isto é, tempo limite da conexão

Coisas que eu tentei

1) As portas estão abertas? Sim, iptables:

Chain INPUT (policy DROP 11 packets, 1375 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:587
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:587
   25  2579 f2b-dovecot  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 110,995,143,993,587,465,4190
   68  7788 f2b-postfix  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 25,465,587
    0     0 f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22
   25  2579 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:143
    7   600 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080
23464 2662K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
   49  2940 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3915
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:143
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:587
    5   300 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 23235 packets, 2494K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain f2b-dovecot (1 references)
 pkts bytes target     prot opt in     out     source               destination
   25  2579 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain f2b-postfix (1 references)
 pkts bytes target     prot opt in     out     source               destination
   68  7788 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain f2b-sshd (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

2) O postfix está escutando na porta 587? Sim. Ele está ouvindo apenas no host local? Não, nenhum host.

Aqui está o netstat:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      7173/master
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      917/httpd
tcp        0      0 127.0.0.1:4190              0.0.0.0:*                   LISTEN      749/dovecot
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN      7173/master
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      749/dovecot
tcp        0      0 127.0.0.1:24                0.0.0.0:*                   LISTEN      749/dovecot

E aqui está o postfix / main.cf também, por precaução:

# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4

# Enable all network interfaces.
inet_interfaces = all

3) Você está forçando conexões seguras corretamente? Que eu saiba, sim, aqui está o postfix / master.cf:

# Submission, port 587, force TLS connection.
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

4) E as restrições do smtpd? Parece ok:

# HELO restriction
smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_non_fqdn_helo_hostname
    reject_invalid_helo_hostname
    check_helo_access pcre:/etc/postfix/helo_access.pcre

5) O postfix está funcionando corretamente?

Sim, o login no servidor e o envio de email de teste do console funciona e o email é recebido na outra extremidade, ou seja:

echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]

6) O que acontece ao conectar na porta 587?

Aparentemente, nada. Se eu tentar telnetar para qualquer porta aleatória, pelo menos recebo alguma coisa. Por exemplo, tentar telnet para a porta 666 (que não está aberta) não produz resposta para o cliente, mas pelo menos recebo algo no tcpdump:

15:22:20.305697 IP xxx > xxx.com.mdqs: Flags [S], seq 3195304468, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0

Quando tcpdumping a porta 587, absolutamente nada acontece quando se tenta telnetar para ela.

O que ainda estou perdendo?

Tudo acima esgota o meu conhecimento das coisas que ainda posso tentar. Consegui prendê-lo à minha porta 587 sendo completamente bloqueada por algo. Como eu disse, meu provedor de VPS confirmou que eles não estão bloqueando nenhuma porta. Eu tentei a porta 25 e é a mesma história.

A única outra coisa que vejo é que, de alguma forma, bloqueei essas portas ao configurar meu servidor, mas não me lembro se é esse o caso e não sei como testar isso.

Eu realmente aprecio qualquer ajuda que você possa me dar. Na verdade, estou comprando uma cerveja para quem me ajudar a resolver isso , já perdi dois dias e está começando a ficar realmente irritante.

alcançar
fonte
3
Você poderia substituir a iptablessaída acima pela de iptables -L -n -vinteiro e sem reduções? Além disso, dado o seu tcpdupmpteste e a garantia do seu provedor de que eu não bloqueio 25 e 587 de entrada , também é possível que o local que você está testando dos blocos 25 e 587 de saída . Se você postou o endereço IP, seria muito mais fácil confirmar ou negar essa hipótese.
MadHatter
Obrigado por responder. Claro, eu editei minha postagem. Hmm, nunca pensei em portas bloqueadas do meu lado, é uma boa ideia. Vou tentar testar isso.
reachergilt
1
@ MadHatter, você estava completamente certo nas portas bloqueadas do meu lado. Aconteceu (após muitas chamadas) que o administrador da VPN da minha empresa decidiu começar a bloquear determinadas portas, sendo 25 e 578 uma delas, mas não outras. Isso explica porque eu nunca tive esses problemas antes e nem pensei nisso. Meu servidor provavelmente já estava funcionando bem nos últimos dias, enquanto eu estava perdendo a cabeça por causa disso. Se você quiser, pode postar como uma resposta real e eu aceito. Além disso, por favor, envie-me uma MP com suas informações do PayPal (ou similar), você realmente merece uma grande e fria, sabe Deus quando eu descobrir isso.
reachergilt
Eu o escrevi para que você possa aceitar a resposta - porque, caso contrário, a pergunta flutuará para sempre, e isso é ruim. Além disso, isso pode ser útil para outras pessoas no futuro. Eu quis dizer o que disse na minha resposta sobre você já ter feito a maior parte do trabalho de investigação (mais poder para você!), Mas se você se sentir obrigado a me enviar uma cerveja, poderá encontrar meus detalhes de contato no meu site pessoal, via meu perfil.
1819 MadHatter
Feito e obrigado novamente por sua ajuda, você provavelmente me salvou horas, se não dias, de tempo perdido. Entrarei em contato com você amanhã, já verifiquei seu site.
reachergilt

Respostas:

4

Reachergilt, bem-vindo ao SF e obrigado por uma excelente primeira pergunta. Você pode sentir que nós o salvamos, mas honestamente - você já fez todo o trabalho pesado e o apresentou de forma muito sistemática. Com uma mentalidade forense como essa, espero que você fique por aqui por algum tempo.

A tcpdumpsaída é particularmente prejudicial. Isso prova, sem sombra de dúvida, que suas tentativas de conexão nem chegam ao servidor, o que exonera o firewall do servidor, postfixas ligações e tudo mais do lado do servidor.

Armado com esse ponteiro, você foi embora e confirmou que suas conexões de saída estavam sendo bloqueadas, para que seus testes nunca chegassem ao seu servidor. É bastante (deprimente) normal que 25 (e em menor extensão, 587) sejam bloqueados na saída de redes modernas, porque as redes de bot que enviam spam as usam.

De qualquer forma, agora você está feliz que seu novo servidor de email esteja funcionando como anunciado, e isso é bom.

Chapeleiro Louco
fonte
3
Sim, minha postagem faz uma boa lista de verificação para quem tem problemas semelhantes. Engraçado o suficiente, porque pensei que havia algo errado com meu servidor, verifiquei quatro vezes tudo, de A a Z, permitindo que eu documentasse tudo aqui.
reachergilt