Configuration Exim

Exim est le serveur SMTP packagé par défaut de la distribution Debian. Il y a beaucoup de supporters de Postfix, mais dans la pratique, pour envoyer des emails depuis la crontab ou depuis une application Web, Exim fait très bien l’affaire et surtout il est « facile » à tester lors de la mise au point des configurations.

Le serveur SMTP est souvent la dernière roue du carrosse sur les serveurs de l’Internet. Aussi, il arrive souvent qu’au login sur le serveur, on voit passer un message signalant qu’on a reçu des emails. Beaucoup d’utilisateurs ignorent le message qui est souvent la marque d’un serveur SMTP non configuré.

Si on décide de regarder ce qu’il y a dans la boîte aux lettres, on a souvent une surprise de ce type :

On voit que le serveur émet des alertes, qui, tant qu’on n’a pas ouvert la boîte aux lettres, sont ignorées. D’autre part, le fichier qui contient tous ces emails « /var/mail/root » ne fait que grossir….

C’est dommage, car les messages des crons permettent souvent de diagnostiquer un problème rapidement.

Exim est particulièrement simple à configurer pour faire le minimum, c’est à dire permettre l’envoi des emails administratifs. Pour les emails applicatifs, il est souvent préférable d’avoir un service externalisé d’envoi d’emails pour éviter d’avoir à gérer tous les problèmes de rejets d’emails et de whitelisting auprès des grands acteurs du mail, comme Gmail, Hotmail, Free, Orange, La Poste, etc…

Préliminaires

L’outil dpkg-reconfigure permet d’initialiser la configuration d’Exim de manière interactive en quelques écrans.

Avant de lancer la configuration, il faut s’assurer que la machine a un nom FQDN correct, c’est à dire que la commande « hostname -f » renvoie le nom complet de la machine. Lors de l’installation le nom fourni se retrouve dans le fichier /etc/hostname. C’est le nom court de la machine. Le nom long provient du fichier /etc/hosts dans lequel on doit retrouver le nom court.

Si /etc/hostname contient arditi-host3, dans /etc/hosts on doit retrouver une ligne avec le nom FQDN suivi du nom court.

Ici, on déclare l’IP du serveur lui-même, mais on peut aussi utiliser une IP locale : 127.0.1.1 pour déclarer le FQDN. On a un fichier de la forme

Et la commande répond :

Une fois cette étape réalisée, on peut lancer la configuration d’Exim avec la commande dpkg-reconfigure exim4-config

Dans les écrans qui suivent, on indique qu’on va envoyer et recevoir des emails sur Internet, mais comme on mettre 127.0.0.1 en IP d’écoute, aucun mail ne pourra arriver depuis l’extérieur. On est donc dans une configuration qui ne peut qu’envoyer des emails vers l’Internet. On verra dans un autre article l’utilisation d’un relais (smarthost). Dans le nom du système, on met le nom FQDN de la machine.

Configuration des alias et des adresses

Dernier point pour que les emails administratifs fonctionnent, c’est la configuration des alias. En effet, les emails administratifs sont pour la plupart des emails provenant de tâches planifiées (cron), qui sont adressés à « root » par défaut. On va donc donner à root une véritable adresse email grâce au fichier /etc/aliases, c’est la dernière ligne du fichier :

Pour signer les emails administratifs, et en particulier s’ils bouncent, il faut une boîte aux lettres réelle pour les émetteurs. Ainsi les bounces vont pouvoir revenir sur une boîte aux lettres plutôt que d’être perdus dans le « goulp » ! On déclare ces emails dans le fichier /etc/email-addresses

A noter que j’ai déclaré une adresse pour www-data, car c’est l’utilisateur qui va envoyer les emails lorsqu’on utilise un serveur Apache pour une application Web.

Pour terminer, afin de donner un nom à l’émetteur, on peut modifier le fichier /etc/password et mettre à jour le champ Gecos de l’utilisateur

La ligne root contient le nom long, comme ça on voit d’où vient l’email sans avoir à regarder les en-têtes SMTP.

Un email reçu depuis cette machine sera de la forme :

from:root-arditi-host3.arditi.net <alain@arditi.fr>
to:root@arditi-host3.arditi.net
date:Feb 23, 2024, 12:01 PM

On voit dans cet exemple, la différence entre le destinataire du message qui est root et l’adresse de l’enveloppe, alain@arditi.fr qui permet à l’email de sortir sur Internet et d’arriver dans la boîte aux lettres.