Tentando di configurare il server di posta, non riesco a far funzionare le porte (25, 587)


9

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.


3
Potresti sostituire l' iptablesoutput sopra con quello di iptables -L -n -v, intero e non modificato? Inoltre, dati i tuoi tcpdupmptest 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.
MadHatter,

Grazie per la risposta. Certo, ho modificato il mio post. Hmm, non ho mai pensato alle porte bloccate da parte mia, è una buona idea. Proverò a provare questo.
reachergilt

1
@MadHatter, avevi ragione sulle porte bloccate dalla mia parte. Si è scoperto (dopo molte chiamate) che l'amministratore della VPN della mia azienda ha deciso di iniziare a bloccare determinate porte, 25 e 578 di cui una, ma non altre. Questo spiega perché non ho mai avuto problemi del genere prima e non ci ho nemmeno pensato. Il mio server probabilmente stava già funzionando bene da un paio di giorni mentre stavo perdendo la testa. Se vuoi, puoi pubblicare come una vera risposta e lo accetterò. Inoltre, per favore, fammi sapere le tue informazioni PayPal (o simili), te ne meriti davvero una fredda, dio sa quando lo scoprirò.
reachergilt

L'ho scritto, quindi puoi accettare la risposta, perché altrimenti la domanda fluttuerà per sempre, e non va bene. Inoltre, questo potrebbe essere utile per gli altri in futuro. Intendevo quello che ho detto nella mia risposta sul fatto che hai già svolto gran parte del lavoro investigativo (più potere per te!) Ma se ti senti in dovere di spedirmi una birra, puoi trovare i miei dati di contatto sul mio sito personale, tramite il mio profilo.
MadHatter,

Fatto e grazie ancora per il tuo aiuto, probabilmente mi hai risparmiato ore se non giorni di tempo sprecato. Ti contatterò domani, ho già controllato il tuo sito web.
reachergilt

Risposte:


4

Reachergilt, benvenuto a San Francisco, e grazie per l'eccellente prima domanda. Potresti sentire che ti abbiamo salvato, ma onestamente, hai già fatto tutto il sollevamento pesante e l'hai presentato in modo molto sistematico. Con una mentalità forense come quella, spero che tu rimanga da queste parti per qualche tempo a venire.

L' tcpdumpoutput è particolarmente dannoso. Dimostra al di là di ogni ragionevole dubbio che i tuoi tentativi di connessione non raggiungono nemmeno il tuo server, il che esonera il firewall del server, postfixi binding del server e tutto il resto dal lato server.

Armato di quel puntatore, sei andato via e hai confermato che le tue connessioni in uscita venivano bloccate, quindi i tuoi test non arrivavano mai al tuo server. È abbastanza (deprimente) normale che 25 (e, in misura minore, 587) siano bloccati in uscita dalle reti moderne, perché le botnet che inviano spam lo usano.

Ad ogni modo, ora sei felice che il tuo nuovo server di posta funzioni come pubblicizzato, e questo va bene.


3
Sì, il mio post è una bella lista di controllo per chiunque abbia problemi simili. Abbastanza divertente, perché pensavo che qualcosa non andasse nel mio server, ho quadruplicato il controllo di tutto dalla A alla Z, permettendomi di documentare tutto qui.
reachergilt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.