// comment corriger
Port SMTP 25 bloqué : « Connection timed out » sur AWS, Azure, GCP, VPS
Votre serveur n'arrive pas à joindre les autres serveurs mail sur le port 25 ? Hébergeurs cloud et FAI le bloquent souvent. Testez-le et relayez via le port 587.
Ce que ça veut dire
Pour livrer un email, votre serveur se connecte au serveur mail du destinataire sur le port 25. Si cette connexion n'obtient jamais de réponse, votre réseau ou votre hébergeur bloque probablement le port 25 en sortie. Les messages restent dans la file d'attente et finissent par vous être retournés au bout de plusieurs jours.
Selon le logiciel, l'erreur ressemble généralement à ceci :
connect to gmail-smtp-in.l.google.com[142.250.27.26]:25: Connection timed out Error: connect ETIMEDOUT 203.0.113.50:25 SMTP ERROR: Failed to connect to server: Connection timed out (110)
« Timed out » (aucune réponse du tout) indique un blocage. « Connection refused » ou une réponse 5xx est un problème différent, de l'autre côté.
Pourquoi cela arrive
Les spammeurs aiment louer des serveurs bon marché, donc la plupart des hébergeurs bloquent le port 25 en sortie par défaut. Les politiques changent : consultez la documentation actuelle de votre hébergeur. Au moment où nous écrivons :
- Amazon EC2 et Lightsail restreignent le port 25 sortant par défaut. Vous pouvez demander à AWS de lever la limite via leur formulaire, en expliquant votre usage. Amazon SES sur le port 587 ou 465 est l'alternative.
- Google Cloud (Compute Engine) bloque les connexions sortantes vers le port 25 des adresses externes. Google recommande un service d'envoi sur un autre port.
- Microsoft Azure bloque le port 25 sortant pour la plupart des types d'abonnement ; seuls certains contrats entreprise peuvent envoyer directement. Microsoft recommande un relais authentifié.
- DigitalOcean bloque le SMTP sur les Droplets par défaut ; selon des retours de la communauté, le blocage peut inclure les ports 465 et 587.
- Les connexions internet domestiques et de bureau bloquent généralement aussi le port 25. Les IP résidentielles figurent en plus sur des listes de blocage, donc envoyer directement depuis chez soi fonctionne rarement de toute façon.
Comment vérifier
Depuis le serveur lui-même, testez le port 25 vers un grand serveur mail, puis un port de soumission :
nc -vz -w 5 gmail-smtp-in.l.google.com 25 nc -vz -w 5 smtp.gmail.com 587
Si le 587 se connecte et que le 25 expire, le blocage se situe sur votre réseau ou chez votre hébergeur, pas chez Google. Vérifiez aussi votre propre pare-feu (ufw status, iptables -L OUTPUT) et les règles sortantes de votre pare-feu cloud ou de votre security group.
Sur Postfix, postqueue -p liste les messages bloqués avec la raison. Une fois que vous avez une route qui fonctionne, envoyez un test à l'adresse unique affichée sur la page d'accueil de Delivmail pour vérifier tout le parcours.
Comment corriger
Option 1 : demander à l'hébergeur de débloquer le port 25
Certains hébergeurs (AWS par exemple) acceptent une demande. Il faut généralement expliquer ce que vous envoyez, régler un nom de reverse DNS et garder un faible taux de plaintes. Avant cela, lisez la checklist pour votre propre serveur mail : une nouvelle IP cloud n'a aucune réputation.
Option 2 : relayer via un service d'envoi sur le port 587
C'est la solution habituelle. Votre serveur envoie vers un service d'email (votre fournisseur de messagerie ou un service transactionnel) sur le port 587 avec un identifiant, et ce service livre sur le port 25 depuis ses propres IP bien réputées. Beaucoup de services acceptent aussi le port 2525 ou une API HTTP si le 587 est bloqué lui aussi. Exemple pour Postfix, dans main.cf :
relayhost = [smtp.your-provider.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt
Et dans /etc/postfix/sasl_passwd :
[smtp.your-provider.com]:587 username:password
chmod 600 /etc/postfix/sasl_passwd postmap /etc/postfix/sasl_passwd systemctl reload postfix
Dans une application (nodemailer, PHPMailer…), utilisez l'hôte du service avec port: 587 et STARTTLS au lieu d'une connexion directe.
Authentifiez ensuite le relais
Le relais envoie depuis de nouvelles IP : ajoutez-le au SPF et activez sa signature DKIM pour votre domaine ; voir authentifier votre domaine dans vos outils d'envoi. Sinon, vous obtiendrez un SPF fail : serveur non autorisé.
Vérifiez que c'est corrigé
Videz la file d'attente (postqueue -f) et surveillez le journal : vous devez voir status=sent avec votre hôte de relais. Lancez un nouveau test Delivmail et vérifiez que le SPF, le DKIM et le DMARC passent pour le relais, puis renvoyez votre message à l'adresse qui avait échoué.
Vérifiez que c'est corrigé
Une modification DNS peut prendre de quelques minutes à quelques heures. Ensuite, envoyez un nouvel email de test ou scannez à nouveau votre domaine.
Fiches liées
- Gérer votre propre serveur mail : la checklist de délivrabilitéUn serveur Postfix auto-hébergé peut très bien délivrer, mais seulement si toutes les bases sont en place : reverse DNS, SPF, DKIM, DMARC, TLS et aucun relais ouvert.
- Régler le reverse DNS (PTR) chez votre hébergeurLe PTR de l'IP de votre serveur se règle chez votre hébergeur, pas dans le DNS de votre domaine. Voici les grandes étapes chez OVH, Hetzner, Scaleway, AWS et DigitalOcean.
- Votre serveur mail est un relais ouvertUn relais ouvert permet à n'importe qui sur internet d'envoyer des emails via votre serveur. Les spammeurs le trouvent en quelques heures et votre IP finit sur les blacklists.
- « 554 5.7.1 Relay access denied » à l'envoiVotre serveur de messagerie refuse de transmettre votre email parce que vous n'êtes pas connecté. En général, il manque l'identifiant SMTP ou le port est mauvais dans votre application ou votre imprimante.
- « 450 4.7.1 Client host rejected: cannot find your hostname » (ou « reverse hostname ») : comment le corrigerLe serveur destinataire n'a pas pu associer votre IP à un nom d'hôte. Corrigez le DNS inverse (PTR) et son enregistrement A pour faire disparaître cette erreur.