installer et configurer exim4 en relai smarthost

exim relay

Exim peut être installé de différentes manières. De manière autonome pour gérer le SMTP en direct, mais également en relai (smarthost) si on possède déjà un serveur smtp.
Ici nous allons nous intéresser à l’installation d’Exim en mode « relai ».

Nous avons un serveur de messagerie interne qui se charge de router l’ensemble du courrier pour toutes les machines et tous les utilisateurs.
Nous ajoutons un nouveau serveur dans le réseau qui doit pouvoir envoyer ses propres emails pour des besoins administratifs uniquement (mails d’alertes, logs, emails générés par les applications, etc…).
Ce serveur SMTP ne gère pas le courrier pour les utilisateurs.

Objectif : Nous allons installer Exim pour donner la possibilité au serveur d’envoyer ses emails. Non pas directement, mais via le serveur SMTP « officiel » interne.
La méthode du relai SMTP (ou relai « smarthost » pour Exim4) est préférée car c’est un serveur connu qui va réellement envoyer le courrier et non pas un serveur privé.
Ce qui donnera : Serveur –> Serveur de messagerie –> destinataire

Important : Comme le relai de messagerie est interne, il n’y a pas d’authentification à faire sur le serveur de messagerie pour relayer les messages.

Normalement Exim est déjà pré-installé avec Debian. Mais si jamais ce n’est pas le cas, il faut installer Exim.

Installer Exim

aptitude install exim4

Pour configurer Exim il faut lancer la commande :

dpkg-reconfigure exim4-config

L’assistant ce lance, il va falloir répondre à une série de questions :

Type d’installation : Envoi par relais (« smarthost ») — pas de courrier local.
Le serveur doit juste envoyer des emails au serveur Relai. Il en gère pas de courrier directement.

Nom de courrier du système : debian.xxx.local

Liste d’adresses IP où Exim sera en attente de connexions SMTP entrantes : 127.0.0.1 ; ::1.
Le serveur ne servira pas de relai lui-même. Donc il n’écoute que sur sa boucle locale.

Autres destinations dont le courrier doit être accepté : vide.
Pour les mêmes raisons que l’option précédente, il ne gère pas d’autres domaines que le sien.

Nom de domaine visible pour les utilisateurs locaux : debian.xxx.local.
Peu importe le nom puisqu’il n’y a pas d’utilisateurs locaux.

Nom réseau ou adresse IP du système « smarthost » : mon.relai.com::25.
C’est ici que l’on renseigne le nom du serveur à qui exim va relayer le courrier.
On indique un DNS ou une IP puis « :: » et le port.

Faut-il minimiser les requêtes DNS (connexions à la demande) ? : Non.

Faut-il séparer la configuration dans plusieurs fichiers ? : Non.

La configuration est terminée et Exim redémarre.
On peut vérifier le fichier de configuration d’Exim :

more /etc/exim4/update-exim4.conf.conf

# /etc/exim4/update-exim4.conf.conf
#
# Edit this file and /etc/mailname by hand and execute update-exim4.conf
# yourself or use 'dpkg-reconfigure exim4-config'
#
# Please note that this is _not_ a dpkg-conffile and that automatic changes
# to this file might happen. The code handling this will honor your local
# changes, so this is usually fine, but will break local schemes that mess
# around with multiple versions of the file.
#
# update-exim4.conf uses this file to determine variable values to generate
# exim configuration macros for the configuration file.
#
# Most settings found in here do have corresponding questions in the
# Debconf configuration, but not all of them.
#
# This is a Debian specific file

dc_eximconfig_configtype='satellite'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost='debian.xxx.local'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='mon.relai.com::25'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

Pour vérifier que cela fonctionne on envoi un email :

mail -s "mon objet" mon@email.com

Si le mail arrive, victoire !
On peut également vérifier les logs :

2013-08-28 09:56:11 1VEabr-0000vt-13 <= root@debian-preprod.xxx.local U=root P=local S=442

2013-08-28 09:56:12 1VEabr-0000vt-13 => mon@email.com R=smarthost T=remote_smtp_smarthost H=mon.relai.com:: [ip.de.mon.relai]

2013-08-28 09:56:12 1VEabr-0000vt-13 Completed

Dernière étape, définir un alias pour root.
Par défaut tous les emails sont envoyés à l’utilisateur root. On va indiquer un alias pour que tous les emails envoyés à Root soient redirigés vers une vraie boite email.

nano /etc/aliases

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: le_premier_utilisateur_créé

Là on voit que tous les emails sont envoyés à root et que root est lui-même redirigé vers un utilisateur.
C’est le premier utilisateur qui a été créé à l’installation de Debian.
On remplace par le nom d’utilisateur par une adresse email valide :

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: mon@email.com

Faire un test en envoyant un email à root :

mail -s "mon objet" root

Le mail doit arriver dans la boite qui a été configurée.

Commandes principales d’Exim

Pour visualiser les courriers en file d’attente :

mailq

Pour relancer le process de queue :

runq

Pour forcer la livraison des emails, y compris les “gelés” et vider la queue :

exim -qff

Pour “dégelés” les messages “gelés”/“frozen” :

mailq|gawk '/frozen/{print $3}'|xargs exim4 -Mt;runq

Pour supprimer un message de la file d’attente :

exim -Mrm <message-id>

Le <message-id> est de type 1VEcvi-0001xI-Pz.
Il est affiché lors des mailq :

root@debian-preprod:~# mailq
2h  2.9K 1VEcvi-0001xI-Pz <> *** frozen ***
adresse@email.com

Vous avez aimé cet article ? Réagissez !

Votre email ne sera pas publié. Les champs requis sont marqués d'une astérisque *