Nous allons voir comment configurer simplement le serveur sendmail pour gérer un MX ( Mail eXchanger ).

Préparation

Evidemment, avant toute chose, installez si ce n'est déja fait sendmail dans une version décente ( par exemple 8.12.1, dernière en date a l'écriture de cet article ).
Selon l'Unix sur lequel vous comptez utiliser votre sendmail, préférez le système de packaging en vigueur, par exemple, passez par les ports pour FreeBSD et OpenBSD,
par les pkgsrc pour NetBSD, par apt sous une GNU/Debian, etc…

Repérez à quel endroit sont installées les macros m4.

sous FreeBSD

/usr/share/sendmail/cf

sous NetBSD et OpenBSD

/usr/share/sendmail/m4

sous GNU/Debian

/usr/share/sendmail/sendmail.cf

Ecriture de la configuration

C'est injustement à cette étape que nombre d'utilisateurs décident que sendmail est un mauvais produit, le plus souvent à cause d'une
désinformation omniprésente dont l'argument majeur est qu'il est nécessaire de pouvoir réciter le fichier sendmail.cf à l'envers sans se
tromper pour obtenir une configuration de base. C'est faux.

Il est parfaitement inutile et fortement déconseillé de changer sa configuration au sein même du fichier .cf, ce dernier est quasiment un
fichier “compilé” ( notez le guillemets ), issu d'un fichier de regles .mc qui dans la plupart des cas est d'une simplicité époustouflante.

Nous nous proposons ici d'écrire une configuration simple destinée à un serveur SMTP qui sera MX d'un domaine que nous appelerons

mondomaine.org

Dans l'exemple suivant, les lignes commençant par dnl sont des commentaires :

# cat mondomaine.mc
dnl identifiant de notre fichier de regles

VERSIONID(`@(#)mondomain.org, 1.0 01/11/2001')dnl

dnl on définit le type de plate forme
dnl dans le cas d'un GNU/Linux, on ecrirait :

OSTYPE(linux)dnl

dnl ici, il s'agit d'un NetBSD

OSTYPE(bsd4.4)dnl

dnl reconstruction des aliases si besoin

define(`confAUTO_REBUILD', True)dnl

dnl on souhaite utiliser procmail comme programme de delivery local
dnl on le spécifiera plus tard, mais on donne déja ici son chemin

define(`PROCMAIL_MAILER_PATH',`/usr/pkg/bin/procmail')

dnl le fichier /etc/mail/sendmail.cw contient la liste des domaines locaux

FEATURE(`use_cw_file')dnl

dnl on souhaite pouvoir faire de la réécriture d'adresse complète
dnl comme par exemple réécrire un email monuser@domaine1.com en
dnl user@mondomaine.org
dnl le fichier ou l'on pourra faire ces manipulations est
dnl /etc/mail/genericstable

FEATURE(genericstable,DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`genericstable')

dnl on souhaite pouvoir rediriger des domaines sur d'autres serveurs
dnl ( pas forcemment SMTP... )

FEATURE(mailertable,  DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`mailertable')

dnl voici la table la plus souple, elle permet de rediriger à peu pres
dnl n'importe quoi n'importe ou, par exemple, on veut pouvoir avoir plusieurs
dnl emails ayant le même champs utilisateur
dnl cette table est indispensable dans le cas ou l'on veut hoster
dnl plusieurs domaines sur une seule machine

FEATURE(virtusertable,DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`virtusertable')

dnl voici la table permettant de simplement transformer un domaine en un autre

FEATURE(domaintable,  DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`domaintable')

dnl enfin, une derniere table, l'accessdb permet de refuser ou authoriser
dnl des mails en provenance d'un certain domaine

FEATURE(access_db,    DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`access')

dnl la feature suivante permet d'aliaser des utilisateurs qui n'existent plus
dnl sur l'email utilisateur.REDIRECT, et informer les correspondants de
dnl l'inexistance de l'email en question.

FEATURE(`redirect')

dnl comme dit précédemment, on veut utiliser procmail comme delivery local

FEATURE(local_procmail)

dnl enfin, la liste des mailers qui seront utilisés :

MAILER(local)dnl
MAILER(smtp)dnl

dnl c'est fini

“Compilation” et démarrage

Maintenant, il suffit de générer le fichier de configuration sendmail.cf grace à la commande suivante :

# m4 <chemin vers les macros m4>/m4/cf.m4 mondomaine.mc > sendmail.cf

Le fichier en question doit en général se trouver dans le repertoire /etc/mail.

Démarrez maintenant sendmail via la commande :

sendmail -bd -q30m

Testez maintenant votre serveur :

# telnet serveur 25
Connected to serveur.
Escape character is '^]'.
220 smtp.mondomaine.org ESMTP Sendmail 8.12.1/8.12.1; Thu, 1 Nov 2001 17:03:14 +0100 (CET)
quit

Ca fonctionne.

Pour plus d'information, et notamment connaitre la liste des FEATURES et autres macros disponibles, consultez l'excellent site http://www.sendmail.org,
et plus particulièrement la section m4.

unix/sendmail.txt · Last modified: 2010/01/12 13:29 (external edit)