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.
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.Respostas:
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
tcpdump
saí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,postfix
as 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.
fonte