Differences

This shows you the differences between two versions of the page.

Link to this comparison view

unix:sendmail [2010/01/12 13:29] (current)
Line 1: Line 1:
 +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**  ​
 +<​code>​
 +/​usr/​share/​sendmail/​cf
 +</​code>​
 +
 +sous **NetBSD** et **OpenBSD**
 +<​code>​
 +/​usr/​share/​sendmail/​m4
 +</​code>​
 +
 +sous **GNU/​Debian** ​
 +<​code>​
 +/​usr/​share/​sendmail/​sendmail.cf
 +</​code>​
 +
 +**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 :
 +
 +<​code>​
 +# cat mondomaine.mc
 +</​code>​
 +
 +<​code>​
 +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
 +</​code>​
 +
 +**"​Compilation"​ et démarrage**
 +
 +Maintenant, il suffit de générer le fichier de configuration sendmail.cf grace
 +à la commande suivante :
 +
 +<​code>​
 +# m4 <chemin vers les macros m4>/​m4/​cf.m4 mondomaine.mc > sendmail.cf
 +</​code>​
 +
 +Le fichier en question doit en général se trouver dans le repertoire /etc/mail.
 +
 +Démarrez maintenant sendmail via la commande :
 +
 +<​code>​sendmail -bd -q30m</​code>​
 +  * **-bd** :sendmail demarre en demon
 +  * **-q30m** : la queue est traitée toutes les 30 minutes
 +
 +Testez maintenant votre serveur :
 +
 +<​code>​
 +# 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
 +</​code>​
 +
 +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 [[http://​www.sendmail.org/​m4/​basics.html|section m4]].
  
unix/sendmail.txt · Last modified: 2010/01/12 13:29 (external edit)