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.