Tentando configurar o servidor de correio, não consigo 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ções de plano de fundo

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

Coisas que fiz

  • Sendmail de estoque removido
  • Eu instalei o postfix, dovecot, mysql etc. para uma solução de e-mail completa
  • Estou permitindo apenas imap, smtp com STARTTLS (portas 143 e 587)
  • Logins do SSH desativados, somente com chaves
  • posso receber e-mails (via porta 143)
  • Eu posso fazer telnet de localhost para as duas portas (587, 25) e recebo uma saudação pós-fixada
  • Tentar se conectar ao 587 ou 25 (cliente de e-mail ou telnet) me dá uma resposta zero, ou seja, tempo limite de conexão

Coisas que 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. Está escutando apenas no host local? Não, qualquer 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, apenas no caso:

# 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? Para o melhor do meu conhecimento, 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 quanto às restrições 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 certo?

Sim, fazer login no servidor e enviar e-mails de teste dos trabalhos do console e o e-mail é recebido do outro lado, ou seja:

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

6) O que acontece quando se conecta na porta 587?

Aparentemente, nada. Se eu tentar telnet para qualquer porta aleatória, eu pelo menos consigo 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 eu 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 porta 587, absolutamente nada acontece ao tentar telnet para ele.

O que ainda estou sentindo falta?

Tudo acima esgota meu conhecimento das coisas que ainda posso experimentar. Eu consegui pregar até a porta 587 estar 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 posso ver é que de alguma forma bloqueei essas portas ao configurar meu servidor, mas não consigo me lembrar se esse é o caso e não sei como testar isso.

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

    
por reachergilt 19.05.2016 / 15:41

1 resposta

4

Reachergilt, seja 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 saída tcpdump é particularmente danosa. Isso prova, sem sombra de dúvida, que suas tentativas de conectar-se nem chegam ao seu servidor, o que exonera o firewall do servidor, as ligações de postfix e tudo o mais no lado do servidor.

Armado com esse ponteiro, você foi embora e confirmou que suas conexões de saída estavam sendo bloqueadas, de modo que seus testes nunca foram tão longe quanto o seu servidor. É razoavelmente (deprimente) normal que 25 (e em menor escala, 587) sejam bloqueadas de saída das redes modernas, porque os botnets de envio de spam as usam.

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

    
por 19.05.2016 / 21:39