Ho cercato dappertutto e sto davvero lottando con questo. Penso di aver provato praticamente tutto.
Informazioni sullo sfondo
- VPS con CentOS 6.7
- Postfix 2.6.6
- dovecot, amavis, mysql, fail2ban
- Ho verificato con il mio provider VPS che non bloccano alcuna porta.
Cose che ho fatto
- Rimosso stock sendmail
- Ho installato postfix, dovecot, mysql ecc. Per una soluzione di posta completa
- Sto permettendo solo imap, smtp con STARTTLS (porte 143 e 587)
- Login SSH disabilitati, solo con chiavi
- Posso ricevere mail (tramite la porta 143)
- Posso telnet da localhost ad entrambe le porte (587, 25) e ottengo il saluto postfix
- Cercare di connettermi a 587 o 25 (client di posta o telnet) mi dà zero risposte, cioè timeout della connessione
Cose che ho provato
1) Le porte sono aperte? Sì, 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) Postfix è in ascolto sulla porta 587? Sì. Ascolta solo su localhost? No, nessun host.
Ecco 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
Ed ecco anche il postfix / main.cf, nel caso in cui:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) Stai forzando correttamente le connessioni sicure? Per quanto ne so, sì, ecco il 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) Che dire delle restrizioni di smtpd? Sembra 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) Postfix funziona correttamente?
Sì, l'accesso al server e l'invio della posta di prova dalla console e la posta elettronica vengono ricevuti dall'altra parte, ovvero:
echo "Test mail from postfix" | mail -s "Test Postfix" user@something.com
6) Cosa succede quando si collega sulla porta 587?
Apparentemente, niente di niente. Se provo a telnetare su qualsiasi porta casuale, almeno ottengo qualcosa. Ad esempio, provare a telnet alla porta 666 (che non è aperta) non produce alcuna risposta al client, ma almeno ottengo qualcosa in 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, assolutamente nulla accade quando si tenta di telnet ad esso.
Cosa mi manca ancora?
Tutto quanto sopra esaurisce la mia conoscenza delle cose che posso ancora provare. Sono riuscito a inchiodarlo alla mia porta 587 essendo completamente bloccato da qualcosa. Come ho già detto, il mio provider VPS ha confermato che non sta bloccando alcuna porta. Ho provato la porta 25 ed è la stessa storia.
L'unica altra cosa che posso vedere è che in qualche modo ho bloccato quelle porte durante l'impostazione del mio server, ma non riesco a ricordare se è così e non so come testarlo.
Gradirei davvero qualsiasi aiuto tu possa darmi. In effetti, sto comprando una birra per chiunque mi aiuti a risolverlo , ci ho già perso due giorni e sta iniziando a diventare davvero fastidioso.
iptablesoutput sopra con quello diiptables -L -n -v, intero e non modificato? Inoltre, dati i tuoitcpdupmptest e la certezza del tuo provider che non blocco 25 e 587 in entrata , è anche possibile che il posto che stai testando dai blocchi 25 e 587 in uscita . Se hai pubblicato l'indirizzo IP sarebbe molto più semplice confermare o smentire tale ipotesi.