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" user@something.com
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.
iptables
saída acima pela deiptables -L -n -v
inteiro e sem reduções? Além disso, dado o seutcpdupmp
teste 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.