J'ai cherché partout et j'ai vraiment du mal avec celui-ci. Je pense que j'ai essayé à peu près tout.
Informations de fond
- VPS avec CentOS 6.7
- Postfix 2.6.6
- pigeonnier, amavis, mysql, fail2ban
- J'ai vérifié auprès de mon fournisseur VPS qu'ils ne bloquent aucun port.
Les choses que j'ai faites
- Sendmail stock supprimé
- J'ai installé postfix, dovecot, mysql etc. pour une solution de messagerie complète
- J'autorise uniquement imap, smtp avec STARTTLS (ports 143 et 587)
- Connexions SSH désactivées, uniquement avec des clés
- Je peux recevoir des mails (via le port 143)
- Je peux telnet de localhost aux deux ports (587, 25) et je reçois un message d'accueil postfix
- Essayer de me connecter au 587 ou 25 (client de messagerie ou telnet) ne me donne aucune réponse, c.-à-d.
Les choses que j'ai essayées
1) Les ports sont-ils ouverts? Oui, 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 écoute-t-il sur le port 587? Oui. Écoute-t-elle uniquement sur localhost? Non, tout hôte.
Voici 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
Et voici également le postfix / main.cf, juste au cas où:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) Forcer correctement les connexions sécurisées? Au meilleur de ma connaissance, oui, voici le 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) Qu'en est-il des restrictions smtpd? Semble 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 fonctionne-t-il correctement?
Oui, la connexion au serveur et l'envoi de courrier de test à partir de la console fonctionne et le courrier électronique est reçu à l'autre extrémité, à savoir:
echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]
6) Que se passe-t-il lors de la connexion sur le port 587?
Apparemment, rien du tout. Si j'essaye de telnet à n'importe quel port aléatoire, j'obtiens au moins quelque chose. Par exemple, essayer de telnet sur le port 666 (qui n'est pas ouvert) ne produit aucune réponse au client, mais au moins j'obtiens quelque chose dans 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
Lorsque tcpdumping port 587, absolument rien ne se passe lorsque vous essayez de vous y telnet.
Que me manque-t-il encore?
Tout ce qui précède épuise ma connaissance des choses que je peux encore essayer. J'ai réussi à le fixer à mon port 587 complètement bloqué par quelque chose. Comme je l'ai dit, mon fournisseur VPS a confirmé qu'il ne bloquait aucun port. J'ai essayé le port 25 et c'est la même histoire.
La seule autre chose que je peux voir, c'est que j'ai en quelque sorte bloqué ces ports lors de la configuration de mon serveur, mais je ne me souviens pas si c'est le cas et je ne sais pas comment tester cela.
J'apprécierais vraiment toute aide que vous pourriez me donner. En fait, j'achète une bière pour celui qui m'aide à résoudre ce problème , j'ai déjà perdu deux jours dessus et ça commence à devenir vraiment ennuyeux.
iptables
sortie ci-dessus par celle deiptables -L -n -v
, entière et non supprimée? De plus, étant donné vostcpdupmp
tests et l'assurance de votre fournisseur que je ne bloque pas les entrées 25 et 587 , il est également possible que l'endroit que vous testez à partir des blocs 25 et 587 sortants . Si vous avez publié l'adresse IP, il serait beaucoup plus facile de confirmer ou d'infirmer cette hypothèse.Réponses:
Reachergilt, bienvenue à SF et merci pour une excellente première question. Vous pensez peut-être que nous vous avons sauvé, mais honnêtement - vous aviez déjà fait tout le gros du travail et l'aviez présenté de manière très systématique. Avec un état d'esprit médico-légal comme ça, j'espère que vous resterez autour de ces parties pendant un certain temps à venir.
La
tcpdump
sortie est particulièrement accablante. Cela prouve hors de tout doute raisonnable que vos tentatives de connexion n'atteignent même pas votre serveur, ce qui exonère le pare-feu du serveur,postfix
ses liaisons et tout le reste côté serveur.Armé de ce pointeur, vous êtes parti et avez confirmé que vos connexions sortantes étaient bloquées, donc vos tests n'atteignaient jamais votre serveur. Il est assez (déprimant) normal que 25 (et dans une moindre mesure, 587) soient bloqués à la sortie des réseaux modernes, car les botnets d'envoi de spam les utilisent.
En tout cas, vous êtes maintenant heureux que votre nouveau serveur de messagerie fonctionne comme annoncé, et c'est bien.
la source