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.