Accueil > Serveurs Web > Sendmail sur Jaguar

Sendmail sur Jaguar

Par James Duncan Davidson, conférencier à la O’Reilly Mac OS X Conference, 09/10/2002

traduit par Quentin, le 26/11/2002

Sendmail est un logiciel compliqué, il n’y a pas de doute. Mais c’est aussi un des meilleurs serveurs de mails, ce qui ne signifie pas un de ces petits colifichets à clefs. Il s’agit bien plutôt du monstre de trois pouces de large avec tous ces outils, que la plupart du temps vous n’avez jamais vu ailleurs et dont vous n’avez aucune idée de ce qu’ils font. Avec un peu de temps et de patience cependant, vous aussi vous pouvez devenir suffisamment expert de sendmail pour lui faire faire tout ce dont vous avez besoin.

Cet article vous aidera à comprendre les outils les plus utiles que sendmail vous offre et servira de compagnon à l’article Configurer un Serveur Web sous Jaguar en résolvant les problèmes de configuration de sendmail que nous avons soulevés dans cet article.

Voici ce que je couvrirai dans cet article :

  • Gérer les permissions de Jaguar et sendmail
  • Travailler avec les fichiers de Configuration
  • Le LUSER_RELAY
  • Comment créer des alias
  • Comment autoriser le relai à partir de certains hôtes
  • Fonctionner derrière un coupe-feu
  • Travailler avec les ISP boiteux

Attention, cet article ne s’adresse pas aux débutants. Si vous avez du mal à passer des commandes shell en tant qu’utilisateur root de votre système avec sudo et à éditer des fichiers avec vi, emacs, or pico, alors il y a de fortes chances que vous soyez un peu perdu ici. Cependant, si vous connaissez un peu le shell et que je ne vous ai pas effrayé en mentionnant le terme emacs, alors ceci sera parfait comme guide de référence.

Des Permissions et du Blâme

Le “truc” numéro un pour mettre en place sendmail sur Mac OS X est de voir comment Apple a configuré les permissions des différents répertoires du système de fichiers. Vous voyez, dans sa volonté de donner à l’UNIX un air plus “Mac”, Apple a décidé que ce serait mieux d’autoriser les utilisateurs, au moins les administrateurs, à être capables de déplacer des fichiers vers et hors le répertoire root en toute impunité. Apparemment Apple ne veut pas montrer aux utilisateurs une boîte de dialogue disant “Vous ne pouvez pas déplacer ce fichier ici !”.

Cela s’oppose résolument avec la paranoïa intrinsèque de sendmail. Sendmail veut vraiment que seul l’utilisateur root puisse modifier les répertoires évoqués. Cela inclut les répertoires ‘/’ et ‘/Users’ . Il se plaindra amèrement et refusera de se lancer avec une phrase du type :

/etc/mail/sendmail.cf: line 93: fileclass: cannot open ‘/etc/mail/local-host-names’: Group writable directory

Il y a deux solutions primaires au problème :

  1. Changer le possesseur des répertoires ‘/’ et ‘/Users’ en quelqu’un que sendmail préfère (ie, `chmod g-w / /Users’).
  2. Configurer sendmail pour qu’il ignore ses instincts et qu’il agisse même si les permissions de certains folders ne sont pas exactement celles qu’il souhaite.

Dans Configurer un Serveur Web sous Jaguar, je recommendais d’utiliser la première de ces solutions. J’ai expliqué aux lecteurs comment changer le possesseur, éditer le script de démarrage de sendmail pour être sûr que ces permissions soient correctes au démarrage du système, et j’ai même ajouté un travail à cron pour qu’il se mette en marche toutes les heures et qu’il vérifie que tout reste correct même si une mise à jour du système change les choses.

Je vais continuer sur le même disque et avouer que c’est une situation extrême. Comme Chuq Von Rospach (qui a de nombreuses lunes d’expérience de travail sur sendmail) me l’a écrit dans un email, c’est comme “Utiliser une mitraillette sur un moustique”. Je suis totalement d’accord avec lui, mais c’est le moyen le plus absolument sûr de mettre en place votre serveur. C’est la meilleure solution pour l’administrateur système paranoïaque qui veut être sûr que personne, pas même un de ses utilisateurs, ne puisse compromettre le système. Cela a pour conséquence que personne, pas même l’administrateur, n’est capable d’utiliser le Finder pour copier des fichiers dans les répertoires ‘/’ et ‘/Users’ .

D’un autre côté, tant que vous faites confiance à chaque personne à laquelle vous fournissez un compte utilisateur (ou au moins à chaque utilisateur que vous autorisez à administrer votre machine), il y a un meilleur moyen de gérer ceci. C’est d’utiliser le paramètre de configuration DontBlameSendmail avec sendmail. Considérez que cela revient à administrer à sendmail une petite quantité de médicaments dans le but de le pour l’assurer sur le fait que tout dans ce monde ne représente pas un risque potentiel.

Après avoir débatu sur ce point avec Chuq (et y avoir réfléchi un peu), j’ai décidé que l’utilisation de DontBlameSendmail conviendrait assez pour mon serveur et pour moi-même. En ce qui vous concerne : évaluez votre situation. Si vous vous contentez de donner des comptes sur la machine à des personnes de confiance et que vous acceptez une part raisonnable de risque, alors DontBlameSendmail est ce qu’il faut employer. Sinon, si vous ne faites pas confiance à vos utilisateurs, ou que vous êtes un paranoïaque complet, alors changez les permissions de vos répertoires.

Si vous ne pensez pas blâmer sendmail, il y a alors deux manières d’administrer ces médicaments. La première est d’éditer le script de démarrage /System/Library/StartupItems/Sendmail/Sendmail afin d’utiliser les commandes suivantes pour lancer sendmail :

/usr/sbin/sendmail -OdontBlameSendmail=GroupWritableDirPathSafe -bd -q1h
/usr/sbin/sendmail -OdontBlameSendmail=GroupWritableDirPathSafe -C /etc/mail/submit.cf -q1h

Cela fait un assez bon boulot. Cependant, d’autres commandes, dont vous allez découvrir qu’elles fonctionnent avec, se plaindront quand même des répertoires avec autorisation d’écriture pour les groupes si vous faites ceci. Une meilleure manière consiste à modifier les fichiers de configuration du répertoire /etc/mail que sendmail utilise. Néanmoins, avant de le faire, nous devons regarder comment gérer les fichiers de configuration de sendmail.

Travailler avec les fichiers de configuration

Dès que vous déciderez à travailler avec les fichiers de configuration de sendmail, vous y découvrirez un paquet de trucs confus. Jetez un coup d’oeil au fichier /etc/mail/sendmail.cf . La première chose à voir est un en-tête qui dit :

#####    DO NOT EDIT THIS FILE! Only edit the source .mc file.

Allez un peu loin pour voir quelques trucs que seul un vieux pro de Perl reconnaîtra :

# hostnames ending in class P are always canonical
R$* < @ $* $=P > $*             $: $1 < @ $2 $3 . > $4
R$* < @ $* $~P > $*             $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
R$* CC $* $| $* < @ $+.$+ < $*  $: $3 < @ $4.$5 . > $6
R$* CC $* $| $*                 $: $3
# pass to name server to make hostname canonical
R$* $| $* < @ $* > $*           $: $2 < @ $[ $3 $] > $4
R$* $| $*                       $: $2

Donc, si vous n’êtes pas supposé éditer ce fichier, et même si vous le pouviez vous ne le voudriez pas, qu’êtes-vous censé faire alors ? La réponse est l’ignorer. Traitez-le comme un fichier binaire. Vous ne vous inquiétez pas de ce qu’il y a dans l’exécutable /bin/sh pour l’utiliser n’est-ce-pas ? Adoptez la même approche pour /etc/mail/sendmail.cf.

A la place, nous allons voir comment éditer le code source de ce fichier. Jetez un coup d’oeil au fichier /usr/share/sendmail/conf/cf/generic-darwin.mc . Le corps de ce dernier a l’air de ceci :

VERSIONID(`$Id: generic-darwin.mc,v 1.3 2002/04/12 18:41:47 bbraun Exp $')
OSTYPE(darwin)dnl
DOMAIN(generic)dnl
undefine(`ALIAS_FILE')
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
FEATURE(`smrsh',`/usr/libexec/smrsh')
FEATURE(local_procmail)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash -o /etc/mail/genericstable')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`access_db')dnl
MAILER(smtp)
MAILER(procmail)

C’est beaucoup plus approchable que sendmail.cf pourrait jamais l’être. C’est en fait un script écrit dans le langage de macro m4. m4 existe depuis quelque temps et Mac OS X marche avec GNU m4 version 1.4. Heureusement, il est assez simple d’utilisation et on n’a pas besoin d’apprendre beaucoup sur lui. Si vous voulez en apprendre plus, allez voir la page de projet GNU m4.

Bon, c’est le code source que nous utiliserons pour configurer sendmail. Faisons-en une copie et mettons-la quelque part où on se souviendra de son emplacement :

m4 /usr/share/sendmail/conf/m4/cf.m4 /etc/mail/config.mc > /tmp/sendmail.cf
mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old
mv /tmp/sendmail.cf /etc/mail/sendmail.cf

Nous avons maintenant une copie du code source du fichier sendmail.cf à un endroit où nous pouvons l’éditer et garder une trace de sa localisation. Cependant, même si vous avez une copie du code source, vous devez encore savoir où compiler le fichier. Dans notre cas, l’ensemble de commandes pour compiler le fichier config.mc en sendmail.cf a l’air de ceci :

#! /bin/sh
if [ /etc/mail/config.mc -nt /etc/mail/sendmail.cf ]
then
    echo Regenerating sendmail.cf
    m4 /usr/share/sendmail/conf/m4/cf.m4 /etc/mail/config.mc > \
        /tmp/sendmail.cf
    mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old
    mv /tmp/sendmail.cf /etc/mail/sendmail.cf
    /System/Library/StartupItems/Sendmail/Sendmail restart
fi

Oups! C’est trop pour qu’on s’en souvienne ! Cela va contre ma philosophie de laisser les choses aussi simples que possible (sans être trop simple bien sûr !). Heureusement, j’ai écrit un petit script qui devrait faciliter cette partie du travail sur les fichiers de configuration de sendmail, ainsi que quelques autres.

Un script qui va vous simplifier la vie

Le script qui suit compilera config.mc en sendmail.cf et relancera sendmail de manière à ce qu’il remarque les changements de configuration. Vous pouvez le mettre où vous voulez, pour ma part j’ai placé ma copie dans le folder /etc/mail afin de le trouver facilement. Ouvrez l’éditeur de votre choix et copiez-et-collez-y ceci. Puis, si vous voulez reproduire ce que j’ai fait, sauvez-le sous /etc/mail/update. Sinon, vous pourriez le sauver sous /usr/local/bin/sendmail-update ou tout autre lieu assez facile à retenir.

#! /bin/sh
if [ /etc/mail/config.mc -nt /etc/mail/sendmail.cf ]
then
    echo Regenerating sendmail.cf
    m4 /usr/share/sendmail/conf/m4/cf.m4 /etc/mail/config.mc > \
        /tmp/sendmail.cf
    mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old
    mv /tmp/sendmail.cf /etc/mail/sendmail.cf
    /System/Library/StartupItems/Sendmail/Sendmail restart
fi

Nous allons ajoutez quelques éléments à ce script plus tard. Mais pour maintenant, nous sommes prêts à administrer à sendmail quelques médicaments anti-paranoïa.

Retour sur Don’t Blame sendmail (NdT : Ne Blâmez pas sendmail)

Afin d’utiliser le paramètre de configuration DontBlameSendmail avec sendmail, nous avons juste besoin d’ajouter une ligne au fichier config.mc .

Editez-le, il ressemble à ce qui suit. La ligne à ajouter est en caractères gras.

% sudo emacs /etc/mail/config.mc
VERSIONID(`$Id: generic-darwin.mc,v 1.3 2002/04/12 18:41:47 bbraun Exp $')
OSTYPE(darwin)dnl
DOMAIN(generic)dnl
undefine(`ALIAS_FILE')
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
define(`confDONT_BLAME_SENDMAIL', `GroupWritableDirPathSafe')
FEATURE(`smrsh',`/usr/libexec/smrsh')
FEATURE(local_procmail)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash -o /etc/mail/genericstable')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`access_db')dnl
MAILER(smtp)
MAILER(procmail)

Attention, remarquez que les guillemets autour des valeurs font apparaître en même temps les deux caractères ` et autour des arguments de la phrase define … Sauvez le fichier. Nous devons ensuite le compiler. Exécutez votre script de mise à jour. Vous devrez peut-être vous rappeler de lui donner des permissions en exécution (`chmod g+x /etc/mail/update’) d’abord !

% sudo ./update Regenerating sendmail.cf Restarting mail services

Voilà tout ce que vous avez besoin de faire. Si vous avez suivi mon précieux conseil dans Configurer un Server Web sous Jaguar et que sendmail marche déjà, vous pouvez alors retirer la ligne `chmod g-w / /Users’ du script /System/Library/StartupItems/Sendmail/Sendmail . Assurez-vous d’éditer l’entrée root crontab entry aussi.

Si sendmail ne marche toujours pas, contentez-vous d’exécuter le script de lancement du système avec l’argument start :

% sudo /System/Library/StartupItems/Sendmail/Sendmail start

De plus, si vous ne l’avez pas déjà fait, assurez-vous d’éditer /etc/hostconfig pour que sendmail se lance avec le système. Si vous ne vous rappelez plus comment le faire, référez-vous à Configurer un Server Web sous Jaguar.

Sortir NetInfo de l’image

Une partie de la documentation d’Apple sur sendmail (notamment le fichier /etc/mail/README ) indique que c’est une bonne idée d’ajuster quelques propriétés sur NetInfo pour s’assurer que le binaire de sendmail lit sa configuration dans /etc/mail/sendmail.cf. Jusqu’à maintenant, je n’ai pas eu de problème avec ceci, mais dans l’intérêt d’être sûr qu’on ne se fait pas mordre par un binaire modifié de sendmail par Apple dans le futur, nous allons aller de l’avant et exécuter les commandes qui modifieront la base de données netinfo:

% sudo niutil -create . /locations/sendmail
% sudo niutil -createprop . /locations/sendmail sendmail.cf /etc/mail/sendmail.cf

Jetons maintenant un coup d’oeil à d’autres possibilités et aux résultats variés qui en découlent.

Mettre en place le LUSER_RELAY

Le prochain ajustement que nous allons traiter est le LUSER_RELAY. Non, ce n’est pas un moyen de s’occuper de ces gosses de 14 ans qui posent leurs mains sur leur front en disant “peeeeeer-daaaant” (NdT : loser=perdant et luser=loser), mais plutôt un moyen de manipuler des emails venant de votre serveur qui ne sont adressés à aucun utilisateur. L’ajustement LUSER_RELAY dirigera chaque courrier sans destination de votre serveur vers le compte d’un utilisateur particulier.

Cela revet une importance particulière quand vous voulez pouvoir gérer plein d’adresses différentes, comme im-a-geek@myhost.com and spam-target@myhost.com, sans avoir rien à mettre en place. J’utilise personnellement ce moyen chaque fois que je donne mon adresse email à des magasins qui m’intéressent tout en craignant qu’ils ne revendent mon adresse ou qu’ils ne surchargent ma boîte aux lettres avec trop d’informations.

Ainsi, pour régler ceci, éditez simplement le fichier config.mc comme suit (La ligne en gras est celle ou vous remplacerez duncan par le nom de l’utilisateur dont vous voulez obtenir les mails !) :

% sudo emacs /etc/mail/config.mc

VERSIONID(`$Id: generic-darwin.mc,v 1.3 2002/04/12 18:41:47 bbraun Exp $')
OSTYPE(darwin)dnl
DOMAIN(generic)dnl
undefine(`ALIAS_FILE')
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
define(`confDONT_BLAME_SENDMAIL', `GroupWritableDirPathSafe')
define(`LUSER_RELAY', `local:duncan')

FEATURE(`smrsh',`/usr/libexec/smrsh')
FEATURE(local_procmail)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash -o /etc/mail/genericstable')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`access_db')dnl
MAILER(smtp)
MAILER(procmail)

Lancez maintenant le script de mise à jour :

% sudo ./update
Regenerating sendmail.cf Restarting mail services

Faites des essais. Utilisez votre client mail pour envoyer du courrier à toutes sortes d’adresses sur votre machine qui n’existent pas. Quand vous serez fatigué de recevoir des mails d’une de vos adresses, utilisez procmail pour les filtrer. Plus d’information sur la manière d’utiliser procmail sur l’article de Dru Lavigne (Filtering Spam with Procmail). Procmail est déjà installé et prêt à fonctionner sur votre système - vous avez juste à définir un fichier ~/.procmailrc . Ou si vous ne voulez pas le faire, vous pouvez utiliser les possibilités de filtrage de votre client mail pour supprimer les emails indésirables.

Etablir les alias

Notre prochain arrêt de ce voyage est consacré aux alias. Un alias vous permet de définir du courrier vers une adresse qui en fait renvoie vers quelqu’un d’autre. Cette autre personne peut être un utilisateur de la machine locale, ou bien une adresse email d’un système complètement différent.

Si vous avez suivi quand on éditait le fichier config.mc , vous aurez remarqué la phrase undefine(`ALIAS_FILE’). Pour permettre les alias, nous devrons éditer cette ligne pour convenir à ce qui suit :

% sudo emacs /etc/mail/config.mc

VERSIONID(`$Id: generic-darwin.mc,v 1.3 2002/04/12 18:41:47 bbraun Exp $')
OSTYPE(darwin)dnl
DOMAIN(generic)dnl
define(`ALIAS_FILE', `/etc/mail/aliases')
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
define(`confDONT_BLAME_SENDMAIL', `GroupWritableDirPathSafe')
define(`LUSER_RELAY', `local:duncan')
FEATURE(`smrsh',`/usr/libexec/smrsh')
FEATURE(local_procmail)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash -o /etc/mail/genericstable')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`access_db')dnl
MAILER(smtp)
MAILER(procmail)

N’oubliez pas de lancer le script de mise à jour :

% sudo ./update

Regenerating sendmail.cf
Restarting mail services

Nous allons maintenant faire quelques alias. Le format d’un fichier d’alias est simple. Chaque ligne du fichier se compose d’un nom d’adresse locale suivi d’une ou plusieurs adresses localas ou lointaines auxquelles envoyer le message. Par exemple, mon fichier d’alias ressemble à peu près à ce qui suit :

% sudo emacs /etc/mail/aliases

root:           duncan
friend:         someone@somewhere.com
party:          duncan, john@doe.com

La première ligne dirige le mail de root@host vers l’utilisateur duncan. La deuxième dirige les mails provenant de afriend@host vers someone@somewhere.com. La troisième dirige les mails provenant de party@host vers l’utilisateur duncan et vers john@doe.com.

Pour que sendmail prenne ces alias en compte, nous devons exécuter la commande newaliases .

% sudo newaliases
 /etc/mail/aliases: 3 aliases, longest 26 bytes, 68 bytes total

Cette commande compile les alias dans un fichier de base de données, /etc/mail/aliases.db. Sendmail fait ceci pour des raisons de performance — sur un site de petit volume, la tÿche supplémentaire d’analyser un fichier texte serait négligeable, mais sendmail utilise l’un des plus importants systèmes de mails d’Internet. Sous de grandes contraintes, cette petite chose pose un beau problème.

Vous pouvez ajouter autant de lignes que vous voulez à ce fichier. Utilisez des alias pour créer des mailing lists de groupes, des listes d’équipes de travail, ou simplement des listes pour gérer les fêtes.

Oh, une chose à garder en tête: Sendmail est compilé de manière à ce qu’il aille voir dans NetInfo (sous le folder /aliases ), puis le fichier /etc/mail/aliases . S’il y a un alias défini dans NetInfo, il masquera un alias du même nom dans /etc/mail/aliases.

Autoriser le Relai de Certains Hôtes

Sendmail n’apprécie pas de relayer le mail qui n’est pas envoyé par des sources de confiance. Les designers de sendmail font intentionnellement cela pour essayer d’atténuer le problème du spam. Vous voyez, les spammeurs sont favorisés par les serveurs de mail qui relaieront les messages de n’importe qui pour envoyer des messages à tout le monde en détournant à leur profit les coûts de bande passante des autres. C’est réellement atroce.

Par défaut, la paranoïa de sendmail signifie que quand on met en place un serveur, on peut seulement relayer, par lui, le courrier qui vient de la machine locale. Pour l’utiliser comme un vrai serveur de mails, nous devons lui faire savoir à quels hôtes faire confiance pour relayer les mails. Par exemple, mon serveur de mails, est confoguré pour accepter les emails qui viennent du réseau privé de ma maison qui fonctionne derrière un NAT avec une adresse IP fixée. De plus, je veux être toujours capable d’envoyer des mails (N.d.T: envoyer des mails = to send mail), en utilisant mon portable, de chez mes amis qui ont des noms d’hôtes DSL connus. Pour cela, vous devez simplement définir ces règles dans le dossier /etc/mail/access , comme indiqué :

% sudo emacs /etc/mail/access
192.168.123.2 RELAY dsl-1-1-1-1.networkprovider.net RELAY

Vous pouvez aussi autoriser des blocs d’adresses IP ou des adresses de domaines partielles à relayer par votre serveur. Par exemple, pour autoriser quiconque sur un sous-réseau, ainsi que laisser tout le monde du domaine oreilly.com utiliser mon serveur mail, je pourrais éditer ce fichier pour qu’il ait cette allure :

% sudo emacs /etc/mail/access 192.168.123.2 RELAY
  dsl-1-1-1-1.networkprovider.net RELAY
  192.168.145 RELAY
  oreilly.com RELAY

Cela autorisera quiconque a une adresse commençant par 192.168.145, ou dont l’adresse IP fait référence au domaine oreilly.com à utiliser notre serveur. De même que pour les alias, nous devons compiler ce fichier en une forme que sendmail peut utiliser. Pour cela, utiliser la commande suivante :

% sudo makemap hash /etc/mail/access < /etc/mail/access

Oui, c’est encore une autre commande à mémoriser et personnellement, je dois toujours la ressortir pour l’utiliser. N’ayez pas peur, on peut régler ce problème.

Etendre notre script d’aide

Puisque j’ai horreur d’utiliser la documentation pour exécuter ce qui devrait être de simples commandes, j’ai en fait ajouté toutes ces commandes (et d’autres) dans mon script de mise à jour. Je vous en ai donné un court plus tôt. Voici le modèle long (la section non encore abordée est en caractères gras) :

#! /bin/sh

if [ /etc/mail/config.mc -nt /etc/mail/sendmail.cf ]
then
    echo Regenerating sendmail.cf
    m4 /usr/share/sendmail/conf/m4/cf.m4 /etc/mail/config.mc > \
        /tmp/sendmail.cf
    mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old
    mv /tmp/sendmail.cf /etc/mail/sendmail.cf
    /System/Library/StartupItems/Sendmail/Sendmail restart
fi

if [ /etc/mail/aliases -nt /etc/mail/aliases.db ]
then
    echo Updating aliases
    newaliases
fi

if [ /etc/mail/access -nt /etc/mail/access.db ]
then
    echo Updating access
    makemap hash /etc/mail/access < /etc/mail/access
fi

Rapidement, ce fichier vérifie s’il doit:

  1. Compiler le fichier sendmail.cf .
  2. Mettre à jour la base de données d’alias.
  3. Mettre à jour la base de données d’accès.

Quand le source d’un de ces fichiers doit être mis à jour, il l’est. Facile hein ? Maintenant, nous avons juste à nous souvenir de lancer update chaque fois que nous éditons un des fichiers de configuration et tout ira bien.

Fonctionner Derrière un Coupe-Feu

Lancer sendmail derrière un coupe-feu, encore plus si c’est un NAT, peut le perturber. Vous savez, sendmail fait de son mieux pour essayer de s’imaginer le nom de son hôte. Tant que votre machine est un citoyen de première classe d’Internet (i.e., a une adresse IP visible depuis la totalité d’Internet), il peut normalement faire un bon boulot à ce sujet. Cependant, quand vous fonctionnez derrière un NAT, ou si votre adresse IP ne fait référence à aucun nom d’hôte, vous devrez donner un petit coup de pouce à sendmail. Par exemple, si vous êtes un hôte mail de domain.com, vous devez dire à sendmail que son nom de domaine est $w.domain.com. La partie $w est importante parmi les bidules de sendmail est signifie “insère le nom d’hôte local ici.”

Pour configurer sendmail pour qu’il utilise un nom de domaine spécifique, éditez votre fichier /etc/mail/config.mc comme suit :

% sudo emacs /etc/mail/config.mc

VERSIONID(`$Id: generic-darwin.mc,v 1.3 2002/04/12 18:41:47 bbraun Exp $')
OSTYPE(darwin)dnl
DOMAIN(generic)dnl
undefine(`ALIAS_FILE')
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
define(`confDONT_BLAME_SENDMAIL', `GroupWritableDirPathSafe')
define(`LUSER_RELAY', `local:duncan')
define(`confDOMAIN_NAME', `$w.domain.com')
FEATURE(`smrsh',`/usr/libexec/smrsh')
FEATURE(local_procmail)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash -o /etc/mail/genericstable')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`access_db')dnl
MAILER(smtp)
MAILER(procmail)

Comme toujours, n’oubliez pas de lancer le script de mise à jour :

% sudo ./update
Regenerating sendmail.cf
Restarting mail services

Jetons maintenant un coup d’oeil à un autre problème courant que les gens ont introduit par leur ISP.

Travailler avec les ISP boiteux

Qu’entends-je par “ISP boiteux” ? Eh bien, j’entends ces ISPs qui bloquent tout le trafic sortant du port 25. Au lieu de vous laisser avoir accès à Internet par le port 25, ils veulent vous faire utiliser leur propre serveur de mails. Ils font ça pour essayer d’empêcher les spammeurs d’utiliser des relais ouverts sur leurs réseaux. Cependant, cela vaut dire que votre serveur de mails ne peut envoyer de mails à d’autres hôtes sur Internet.

Heureusement, sendmail est le couteau suisse des serveurs de mails, et il y a donc une directive de configuration pour résoudre ceci. Pour faire passer tous les mails de votre serveur par votre serveur mail d’ISP, éditez votre dossier /etc/mail/config.mc pour le faire correspondre à ce qui suit :

% sudo emacs /etc/mail/config.mc

VERSIONID(`$Id: generic-darwin.mc,v 1.3 2002/04/12 18:41:47 bbraun Exp $')
OSTYPE(darwin)dnl
DOMAIN(generic)dnl
undefine(`ALIAS_FILE')
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
define(`confDONT_BLAME_SENDMAIL', `GroupWritableDirPathSafe')
define(`LUSER_RELAY', `local:duncan')
define(`confDOMAIN_NAME', `$w.domain.com')
define(`SMART_HOST' `mail.mindspring.com')
FEATURE(`smrsh',`/usr/libexec/smrsh')
FEATURE(local_procmail)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash -o /etc/mail/genericstable')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`access_db')dnl
MAILER(smtp)
MAILER(procmail)

Encore une fois, lancez le script de mise à jour :

% sudo ./update

Regenerating sendmail.cf
Restarting mail services

Problème résolu.

Conclusion

Je vous ai proposé un tour en coup de vent des zones de configuration principales de sendmail. Pour dire le vrai, il y a plus, encore pas mal de choses, que je devrais couvrir dans cet article. Cependant, après avoir lu ceci, vous devriez commencer à être auto-suffisant avec sendmail. Et si vous voulez en savoir plus, allez absolument chercher sendmail, 2nd Edition par Bryan Costales et Eric Allman. C’est plus d’un millier de pages, mais il y a une bonne raison ! Il y a aussi une troisième édition en cours, sans doute dans quelques mois…

Textes originaux en anglais sur O’Reilly : Configuring sendmail on Jaguar par James Duncan Davidson

quentin Serveurs Web , , ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
S'abonner aux commentaires de cet article