HELPER VPS

Envoyer des e-mails depuis un VPS : relier un service d'envoi SMTP par les ports 587 et 465

Tous les serveurs HELPER VPS ferment le port 25 sortant pour empêcher le spam, ce qui préserve la réputation IP de tous les serveurs du même réseau. En envoyant par le port 587 ou 465 d'un service d'envoi, vos e-mails arrivent plus sûrement en boîte de réception.

Pourquoi envoyer par les ports 587 et 465 ?

Le port 25 est celui par lequel les serveurs de messagerie se transmettent les e-mails. Envoyer directement depuis le serveur vers le serveur de messagerie du destinataire impose de gérer soi-même réputation IP, DNS inverse et volumes d'envoi, et les e-mails envoyés depuis l'IP d'un nouveau serveur finissent facilement en spam.

Les ports 587 et 465 sont des ports de soumission par lesquels un utilisateur authentifié confie ses e-mails. En vous connectant au service d'envoi avec un identifiant et un mot de passe, vous lui confiez vos e-mails, et ses serveurs d'envoi à la réputation entretenue les transmettent pour vous. C'est le moyen le plus sûr pour que confirmations d'inscription, réinitialisations de mot de passe ou notifications de commande arrivent en boîte de réception.

  • Port 587 : la connexion s'établit en clair puis le chiffrement démarre avec STARTTLS. C'est le port utilisé par défaut par la plupart des services et logiciels.
  • Port 465 : la connexion est chiffrée en TLS dès le départ. Les écrans de configuration l'affichent souvent comme SSL ou SSL/TLS.

Choisir un service d'envoi d'e-mails

Il existe deux grands types de services d'envoi. D'un côté, les services d'e-mails transactionnels qui envoient en masse les notifications des sites et applications ; de l'autre, la fonction SMTP d'un compte de messagerie professionnel ou personnel que vous utilisez déjà. Dans les deux cas, une fois les quatre informations ci-dessous en main, vous êtes prêt pour la configuration.

  • Adresse du serveur SMTP : par exemple smtp.example.com
  • Port : 587 (STARTTLS) ou 465 (SSL/TLS)
  • Nom d'utilisateur : l'identifiant ou l'adresse e-mail fournis par le service
  • Mot de passe : le mot de passe SMTP dédié ou la clé API du service

Pour une boutique ou un service à fort volume d'envoi, un service d'e-mails transactionnels est pratique : il gère l'historique d'envoi, les rebonds et les désinscriptions. Pour quelques notifications, le SMTP d'un compte de messagerie suffit.

Vérifier la connexion SMTP depuis le serveur

Avant la configuration, vérifiez que le serveur joint bien le service d'envoi. Les commandes ci-dessous vérifient uniquement la connexion, sans envoyer d'e-mail.

Terminal
nc -vz smtp.example.com 587
openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -quiet
openssl s_client -connect smtp.example.com:465 -crlf -quiet

Si la première ligne affiche succeeded ou open, et que la commande openssl affiche un message d'accueil du serveur commençant par 220, tout est prêt. Quittez avec Ctrl+C. Si la commande nc est absente, installez-la avec apt install -y netcat-openbsd sur Ubuntu et Debian, ou dnf install -y nmap-ncat sur AlmaLinux.

Relier Postfix à un service d'envoi

Pour centraliser les e-mails envoyés par les programmes du serveur, les notifications cron et la commande mail, configurez Postfix en relais vers le service d'envoi. Tous les e-mails du serveur partent alors en s'authentifiant sur le port 587.

Étape 1. Installation

Ubuntu, Debian
apt install -y postfix libsasl2-modules mailutils

Si l'installation demande le type de configuration de messagerie, choisissez Internet Site et indiquez votre domaine comme nom de messagerie. Sur AlmaLinux 10, installez avec dnf install -y postfix cyrus-sasl-plain s-nail et activez avec systemctl enable --now postfix.

Étape 2. Configuration du relais

Terminal
postconf -e 'relayhost = [smtp.example.com]:587'
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'smtp_tls_security_level = encrypt'
postconf -e 'inet_interfaces = loopback-only'

inet_interfaces = loopback-only n'accepte que les e-mails envoyés depuis le serveur lui-même, ce qui empêche d'utiliser ce serveur comme relais de messagerie depuis l'extérieur.

Étape 3. Enregistrer les identifiants

Terminal
echo '[smtp.example.com]:587 SMTP_USER:SMTP_PASSWORD' > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
systemctl restart postfix

Pour un service qui utilise le port 465, remplacez le port par 465 dans relayhost et sasl_passwd, et ajoutez une ligne postconf -e 'smtp_tls_wrappermode = yes'.

Étape 4. Envoi de test et vérification des journaux

Terminal
echo "VPS mail test" | mail -s "Test from VPS" you@example.com
postqueue -p
journalctl -t postfix/smtp -n 20

Si status=sent apparaît dans le journal, le service d'envoi a bien pris en charge l'e-mail. postqueue -p affiche la liste des e-mails pas encore partis. Si vous avez corrigé les identifiants, relancez l'envoi avec postqueue -f après systemctl restart postfix.

Configurer le SMTP dans WordPress et les applications

La plupart des sites et applications disposent de champs de configuration SMTP : vous pouvez les relier directement au service d'envoi sans installer Postfix sur le serveur. Pour WordPress, installez une extension SMTP et saisissez les valeurs ci-dessous : les e-mails d'inscription et de mot de passe oublié partent par ce service.

  • Hôte SMTP : l'adresse du service d'envoi
  • Chiffrement : TLS (STARTTLS) pour le port 587, SSL pour le port 465
  • Port : 587 ou 465
  • Authentification : activée, avec nom d'utilisateur et mot de passe
  • Adresse de l'expéditeur : une adresse de votre domaine (par exemple no-reply@example.com)

Les applications Node.js, PHP et Python configurent leur bibliothèque d'e-mail avec les mêmes valeurs. N'écrivez pas le mot de passe directement dans le code : passez-le par une variable d'environnement ou un fichier de configuration. L'installation de WordPress est décrite dans le guide d'installation de WordPress.

Ajouter SPF, DKIM et DMARC au DNS du domaine

Le serveur de messagerie destinataire vérifie dans le DNS que l'e-mail provient bien d'un expéditeur autorisé par votre domaine. Avec ces trois enregistrements, le taux d'arrivée en boîte de réception augmente nettement.

  • SPF : la liste des serveurs autorisés à envoyer les e-mails de votre domaine. Ajoutez dans un enregistrement TXT la valeur include indiquée par le service d'envoi.
  • DKIM : une signature électronique ajoutée aux e-mails. Ajoutez tel quel l'enregistrement TXT ou CNAME généré dans l'interface du service d'envoi.
  • DMARC : définit le traitement des e-mails qui échouent aux vérifications SPF et DKIM. Commencez par une configuration qui se contente de recevoir des rapports, comme ci-dessous.
DNS TXT
_dmarc.example.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

Après quelques semaines de rapports confirmant que tous vos e-mails passent, passez à p=quarantine, puis à p=reject, pour bloquer l'usurpation de votre domaine.

Réception des e-mails et étapes suivantes

Pour recevoir les e-mails adressés à votre domaine, ajoutez à votre domaine les enregistrements MX d'un service d'hébergement de messagerie. Quand l'hébergement de messagerie gère la réception et le service d'envoi les notifications, le serveur se concentre sur le site et les applications.

Avec un service d'envoi, il suffit de reporter quelques lignes de configuration lorsque vous migrez ou recréez le serveur. Même si l'IP du serveur change, la réputation d'envoi reste du côté du service : déplacer le site vers une autre région ne fait pas varier la délivrabilité.

Ouvrez librement les autres ports selon vos services. La façon de n'ouvrir que les ports utilisés est dans le guide du pare-feu de base, et les règles d'utilisation des serveurs dans la politique d'utilisation.

Guides complémentaires

Des réglages qu'il est bon de faire à la suite de ce guide.

Voir tous les guides