Accueil

Configurer et utiliser Sendmail

Par Serge.

Configurer et utiliser sendmail.

Ce document est sous licence Licence pour Documents Libres de la guilde des doctorants.

Sommaire

Introduction

Sendmail est peut-être le plus connu des serveurs de courriers électronique du monde Unix, et il est naturellement fournit en standard sur la Slackware. Mais sa configuration a tendance à paraître "barbare" lors de ses premières prises en main. Ce document a pour but de vous familiariser avec sa configuration au travers d'un exemple relativement complet:

Dans cet exemple, les courriers sont délivrés dans des boites aux lettres Maildir d'utilisateur réels (ou système), c'est à dire que chaque boite aux lettres demandent la création d'un utilisateur via la commande adduser ou useradd.

Configuration de sendmail

La configuration de Sendmail se trouve dans le fichier /etc/mail/sendmail.cf. Mais ce fichier est relativement complexe, et pour le créer nous créons en premier un fichier .mc qui, une fois traités par le pré-processeur m4, donnera le fichier de configuration sendmail.cf . Nous devons alors créer un fichier "mc" qui va décrire les fonctionnalités et options que nous souhaitons pour notre configuration.

Le fichier mc

Pour creer ce fichier, placez-vous tout d'abord dans le répertoire /usr/share/sendmail/cf/cf, qui contient d'ailleur déjà pas mal de fichier exemple de configuration.

Voici tout d'abord ce fichier que nous expliquerons aprés. N'utilisez pas cette configuration comme ça, lisez bien les explications qui suivent ou sendmail ne pourra pas fonctionner corectement:

 dnl# Fichier exemple de configuration sendmail-slackfr.mc
 dnl# 
 dnl# Septembre 2004
 dnl# 
 dnl# http://slackfr.org
 dnl# 
 dnl# Include et paramétres généraux
 include(`../m4/cf.m4')
 VERSIONID(`Exemple de configuration slackfr.org v0.1')dnl
 OSTYPE(`linux')dnl
 dnl# empêche de detecter les emails valides
 define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
 dnl# utilisation du serveur du FAI pour les mails sortants (A PERSONNALISER)
 define(`SMART_HOST',`smtp.fai.tld')
 dnl# Evite les timeout sur l'ident
 define(`confTO_IDENT', `0')dnl
 dnl# Gestion de noms multiples pour ce serveur
 FEATURE(`use_cw_file')dnl
 dnl# Gestion des utilisateurs de confiance
 FEATURE(`use_ct_file')dnl
 dnl# Gestion de routage spécifique à certain domaine
 FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
 dnl# Gestion multi-domaine
 FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
 dnl# Mappage des noms de domaine
 FEATURE(`domaintable',`hash -o /etc/mail/domaintable.db')dnl
 dnl# Gestion des autorisations / liste noire / anti spam
 FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access')dnl
 FEATURE(`blacklist_recipients')dnl
 dnl# Définition du mailer local
 FEATURE(`local_procmail',`',`procmail -t -Y -a $h -d $u')dnl
 dnl# Force l'ajout du domaine meme en local 
 FEATURE(`always_add_domain')dnl
 dnl# Gestion du redirect pour les emails qui ont "déménagés"
 FEATURE(`redirect')dnl
 dnl# Ne pas vérifier la validité du domaine de l'expéditeur 
 FEATURE(`accept_unresolvable_domains')dnl
 EXPOSED_USER(`root')dnl
 dnl# Accepte les mails locaux localhost.localdomain générés 
 dnl# par certains programmes locaux à la machine
 LOCAL_DOMAIN(`localhost.localdomain')dnl
 MAILER(local)dnl
 MAILER(smtp)dnl
 MAILER(procmail)dnl
 

Explication du fichier mc.

Nous allons reprendre chaque ligne du fichier de configuration et expliquer son rôle. Les lignes commençant par dnl sont des commentaires et ne seront pas prisent en compte lors de la génération du fichier cf (le # ajouté apres le dnl est là juste avoir une syntaxe proche des commentaires des scripts shells et facilite la lecture).

Le reste des options sont necessaires à l'utilisation du serveur en local. Il nous reste donc maitenant à génerer notre fichier sendmail.cf, pour cela sauvegarder votre fichier mc et lancez alors la commande:

sh Build fichier.mc

qui va créer le fichier fichier.cf qu'il vous suffit de copier en /etc/mail/sendmail.cf pour qu'il soit pris en compte par sendmail.

Les autres fichiers de sendmail.

Comme nous l'avons vu, vous devez aussi renseigner les fichiers /etc/mail/access, /etc/mail/domaintable, /etc/mail/mailtertable, /etc/mail/virtualusertable suivant votre configuration.

Attention: Les fichiers /etc/mail/access, /etc/mail/domaintable, /etc/mail/mailtertable et /etc/mail/virtualusertable ne sont pas utilisés directement dans ce format par sendmail, mais dans le format de "hash". Pour cela, à chaque fois que vous modifiez ou créez un tel fichier, utilisez la commande: makemap hash fichier.db < fichier dans le répertoire /etc/mail avec fichier ayant pour valeur access, mailertable, ....

Il y a aussi un autre fichier très important, qui est le fichier /etc/mail/aliases qui lui permet le mappage de compte réel. Par exemple vous voulez que tout les courriers normalement destiné à l'utilisateur root soient redirigés vers un autre utilisateur local (par exemple serge), vous devez alors mettre dans votre fichier /etc/mail/aliases:

root: serge

Ce fichier contient déjà par défaut pas mal de mappage.

Attention: le fichier /etc/mail/aliases demande lui aussi d'être transformé en /etc/mail/aliases.db, mais il est légèrement différent des autres et il est généré par la commande newaliases (sans arguments) et non pas par la commande makemap.

Configuration de procmail

Nous devons maintenant configurer procmail pour que les boîtes aux lettres des utilisateurs soient au format Maildir, qui est bien plus pratique pour la gestion des mails que le format mailbox par défaut. Pour cela rien de plus simple, il suffit pour chaque utilisateur de créer un fichier .procmailrc qui va contenir ces instructions:

 PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:.
 MAILDIR=$HOME/Maildir/
 DEFAULT=$MAILDIR/
 LOGFILE=$HOME/.procmail_log
 LOCKFILE=$HOME/.lockmail
 

Vous devez aussi créer le répertoire Maildir dans chaque répertoire home de chaque utilisateur.

Astuce:Au lieu de vous embetter à créer un fichier .procmailrc et un répertoire Maildir à chaque utilisateur, créer une seule fois un fichier .procmailrc et un répertoire Maildir dans le répertoire /etc/skel et vous créez ensuite vos utilisateurs via adduser, de ce fait le répertoire Maildir et le fichier .procmailrc sera automatiquement créé.

Conclusion

Cet article n'est qu'un exemple de configuration de sendmail dans une utilisation "personnelle courante". Bien d'autres options sont possibles surtout pour une utilisation plus professionnelle et ne sont pas couvertes ici. Nous verrons aussi dans d'autres articles comment ajouter un filtre antispam comme SpamAssassin, ajouter un serveur pop3 ou imap aux boites aux lettre pour pouvoir lire le courrier, ajouter un antivirus etc ... Ces articles sont en préparation.

Thèmes : #articles #logiciels #reseau #serge #services

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.