Je me suis récemment penché sur l’envoi de mails en ligne de commande sous Linux. Bien pratique pour avoir des résultats à la fin de l’exécution de certains scripts ou pour surveiller mes serveurs.
Sous Debian, on a par défaut tout ce qu’il faut pour envoyer des mails aux autres utilisateurs de la machine avec la commande sendmail.
Mais j’aimerai pouvoir envoyer des mails vers l’extérieur en utilisant un serveur mail externe et parfaitement authentifié (je vais pas avoir une serveur mail sur chaque serveur Debian que je possède !).
Je vais donc détailler ici ma configuration Postfix qui servira de relais SMTP à mon serveur.

Pré requis

– Une machine sous Debian (ou dérivés)
– Un serveur mail fonctionnel (monté par vos soins ou directement celui d’un fournisseur)

Configuration de Postfix en tant que relais SMTP

On va commencer par installer Postfix sur notre machine avec la commande suivante :

Durant l’installation il est demandé pour quelle utilisation on souhaite configurer Postfix.
Nous allons choisir « Site Internet« .
site_internet
A l’étape suivante nous sommes invité à saisir le domaine de notre machine.
domain
A la fin de l’installation nous allons éditer le fichier /etc/postfix/main.cf en vérifiant que le paramètre myhostname soit bien configuré avec le nom de domaine de notre serveur.
myhostname
Nous allons maintenant créer les fichiers contenant nos informations d’identification au serveur SMTP.
Pour cela il faut créer le fichier /etc/postfix/sasl_passwd avec la syntaxe suivante :

Avec :
mail.domain.tld = adresse serveur SMTP
587 = port du serveur SMTP
username = utilisateur SMTP
password = mot de passe de l’utilisateur
Si le serveur utilise le port 25 il n’est pas obligatoire de le préciser.
sasl_passwd
Désormais nous allons créer le hash de ce fichier qui sera utilisé par Postfix pour s’authentifier.
Pour cela il faut lancer la commande suivante :

Pour sécuriser ces deux fichiers qui contiennent nos identifiants de connexion, nous allons changer les permissions pour qu’uniquement root puisse les lire.

Nous allons maintenant retourner éditer le fichier /etc/postfix/main.cf pour lui indiquer où trouver ces fichiers d’authentification.
Il faut modifier le paramètre relayhost avec la même valeur que dans le fichier sasl_passwd :

Et à la fin du fichier ajouter ces quelques lignes :

smtp_sasl
On peut désormais relancer Postfix pour prendre en charge notre configuration.

Envoyer des mails

Comme expliqué au début je souhaite obtenir des mails à la fin de l’exécution de certaines tâches par exemple.
C’est donc l’utilisateur qui exécute la commande qui est l’expéditeur du mail.
Avec notre configuration, Postfix intercepte le mail de l’utilisateur et le renvoi au serveur que l’on a configuré.
Pour tester cela, nous allons utiliser la commande sendmail :

mail
Vous pouvez donc désormais toutes sortes de mail pour vous tenir au courant de tout ce qui se passe sur votre serveur ! Par exemple recevoir un mail dès qu’un utilisateur se connecte en SSH !
Je vous laisse imaginer vos propres scripts, moi je retourne faire le vide dans ma boite mail !