Tous les services opérationnels Devise EUR Aucun frais de mise en service Vous êtes à La Réunion ?
‹ Serveurs VPS et Docker

Envoyer un mail depuis un serveur Linux

Pour envoyer un mail depuis un serveur Linux, le plus fiable est de passer par un serveur SMTP authentifié, sur le port 587 avec STARTTLS : votre messagerie professionnelle ou un service d'envoi transactionnel. Un serveur qui envoie lui-même ses messages, sur le port 25, finit presque toujours en indésirable, et beaucoup d'hébergeurs bloquent ce port en sortie. Sur le serveur, msmtp suffit pour les scripts ; une application se règle avec ses propres paramètres SMTP.

Par Jonathan Dewaele · publié le

Pourquoi ne pas envoyer directement

Un serveur peut, en théorie, remettre lui-même ses messages aux serveurs des destinataires, sur le port 25. En pratique, les grandes messageries se méfient d'une adresse IP qui n'a pas d'historique d'envoi, et exigent que le domaine de l'expéditeur autorise ce serveur par SPF, signe ses messages par DKIM et publie une règle DMARC. Sans tout cela, vos messages arrivent en indésirable ou sont refusés.

Passer par le serveur SMTP qui envoie déjà pour votre domaine règle ces questions, à condition qu'il soit déclaré dans votre SPF et qu'il signe vos messages, comme le fait une messagerie bien configurée. Voir Enregistrement SPF et Mes e-mails arrivent en spam.

Ce qu'il vous faut

  • Un serveur SMTP qui accepte l'envoi authentifié sur le port 587 : celui de votre messagerie professionnelle, ou celui d'un service d'envoi transactionnel.
  • Un identifiant et un mot de passe pour ce serveur. Créez de préférence une adresse ou un accès réservé au serveur, pour pouvoir le révoquer sans toucher à votre boîte personnelle.
  • Une adresse d'expéditeur de votre domaine, autorisée par ce serveur.

Envoyer depuis un script avec msmtp

msmtp est un client SMTP léger : il transmet un message à un serveur SMTP, sans rien recevoir. Les directives ci-dessous suivent son manuel, version 1.8.34, lu le 14 octobre 2026.

  1. Installez-le : sudo apt install msmtp sur Ubuntu comme sur Debian.
  2. Créez le fichier de configuration ~/.msmtprc :
defaults
port 587
tls on
tls_starttls on
logfile ~/.msmtp.log

account envoi
host smtp.example.com
from [email protected]
auth on
user [email protected]
password remplacez-par-le-mot-de-passe

account default : envoi
  1. Protégez ce fichier, qui contient un mot de passe en clair : chmod 600 ~/.msmtprc. Le manuel demande qu'il ne soit lisible que par vous, et propose aussi passwordeval pour lire le mot de passe dans un fichier chiffré.
  2. Vérifiez la connexion au serveur SMTP, sans rien envoyer : msmtp --serverinfo --tls -a envoi. La commande affiche ce que le serveur annonce, et son certificat.
  3. Envoyez un message d'essai :
printf 'Subject: Essai\n\nMessage envoyé depuis le serveur.\n' | msmtp [email protected]

En cas d'échec, le journal ~/.msmtp.log donne la réponse du serveur. L'option --debug affiche tout l'échange, mais le manuel prévient qu'elle peut faire apparaître le mot de passe : ne copiez pas sa sortie dans un message ou un ticket.

Régler une application dans Docker

Une application lancée dans un conteneur (n8n, Nextcloud, Vaultwarden, un site en Node.js…) n'utilise pas msmtp : elle a ses propres paramètres SMTP, le plus souvent des variables d'environnement dans le fichier compose. Leurs noms changent d'une application à l'autre ; les valeurs à donner sont toujours les mêmes :

ParamètreValeur
Serveurle nom du serveur SMTP
Port587
SécuritéSTARTTLS
Identifiantl'identifiant SMTP
Mot de passele mot de passe SMTP
Expéditeurune adresse de votre domaine

Rangez le mot de passe dans un fichier .env à côté du fichier compose, lisible par vous seul, plutôt que dans le fichier compose lui-même. Voir Docker Compose : décrire et lancer vos conteneurs.

Sur un VPS Hubspace

Les ports 25 et 465 sortants sont bloqués, contre le spam ; le port 587 reste ouvert. Une application réglée pour envoyer directement, ou sur le port 465, échouera sans message clair : réglez-la sur le port 587 avec STARTTLS.

Si vous avez une messagerie chez Hubspace, vous pouvez vous servir d'une de ses adresses : le serveur d'envoi est hub.hubspace.fr, port 587 en STARTTLS, avec l'adresse complète comme identifiant. Les réglages sont dans Serveur SMTP et IMAP : les réglages. Pour des envois en nombre, un service d'envoi transactionnel est plus adapté.

Questions fréquentes

Pourquoi mon application n'envoie-t-elle rien, sans erreur visible ?

Sur un VPS Hubspace, le plus souvent, elle essaie le port 25 ou le port 465, bloqués en sortie. Le délai de connexion expire et l'erreur reste dans les journaux de l'application. Passez sur le port 587 avec STARTTLS.

Faut-il installer Postfix sur le serveur ?

Non, pas pour envoyer quelques messages. Un serveur de messagerie complet demande une configuration et une surveillance que msmtp ou les réglages SMTP d'une application rendent inutiles.

Les messages partent mais arrivent en indésirable : que vérifier ?

Que l'adresse d'expéditeur appartient bien au domaine pour lequel le serveur SMTP envoie, et que ce domaine publie un SPF qui l'autorise, une signature DKIM et une règle DMARC. Ouvrez un message reçu et affichez sa source : les lignes Authentication-Results disent ce qui a réussi ou échoué.

Articles liés

  • Premiers pas avec votre VPS HubspacePremiers pas sur un VPS Hubspace : le courriel de livraison, la connexion SSH en admin, ce qui est déjà installé et les réglages à faire avant vos applications.
  • Se connecter en SSH à un serveur LinuxSe connecter en SSH à un serveur depuis Mac, Linux ou Windows : la commande ssh, la clé à utiliser, la première connexion et les erreurs les plus courantes.
  • PuTTY : se connecter en SSH depuis WindowsPuTTY pas à pas : créer une clé avec PuTTYgen, la donner au serveur, renseigner l'adresse et la clé privée, puis enregistrer la session pour la rouvrir.