Next Previous Contents

8. Configurer les emails. (COMPLET)

VERSION des produits necessaires : package sendmail 8.9.x (Informations également pour les versions precedentes.) ainsi que fetchmail.

Notre configuration va grandement varier en fonction des cas. Nous savons en effet que puisque nous ne sommes pas présent de maniere permanente, nous devons deleguer la partie mail à quelqu'un. La meilleure des solutions pour ce genre de cas, reste d'utiliser UUCP. Malheureusement ce type de service tend à disparaitre. N'hesitez pas tout de meme à faire pression sur votre fournisseur cheri, qui sait si de plus en plus de gens le demande ... peut etre que. Sinon quelques fournisseurs commerciaux ou non assume ce type de service (teaser, frmug, fdn etc etc). Bref vous trouverez une legere introduction au cas uucp plus loin pour le cas ou.

Mais la plus part d'entre vous devrons faire un choix. Comment gerer ce probleme.

  1. Le premier cas consiste à utiliser les boites d'un domaine que vous avez sur internet. Ce type de solution n'est pas forcement un mauvais choix. Vous aurrez ainsi tout loisir de disposer d'un certain nombre de boites et cela facilitera notre configuration. C'est le cas que je vous presente sous le nom sortilege.net Attention il vous faudrat rajouter le cout de gestion du nom de domaine ainsi que la location du service.
  2. L'autre solutions c'est d'utiliser les boites que vous avez chez votre fai.(En moyenne 5 boites et 10 pour l'education) ou bien d'avoir des boites sur les ordinateurs de votre academie (solution disponibleofficiellement partout, mais certains me disent qu'eux n'arrivent pas à l'obtenir). Autre solution utiliser les services gratuit de societe fournissant des boites pop. Vous avez quelques adresses dans la partie notion courrier. Dans tout les cas c'est la solution ce type de solution du fait que nous ne sommes pas "proprietaire" du domaine des boites impose de prendre quelques precautions.

Mais avant tout de chose nous avons un travail préparatoire a faire.

8.1 Reperer les fichiers dont nous avons besoins.

Plusieurs fichiers entre en ligne de compte dans la configuration de sendmail. Ainsi que quelques répertoires.


-rw-r--r--   1 root     root         2215 jun 24 20:21 /etc/aliases
drwxr-xr-x   2 root     root         1024 jun 24 20:49 /etc/mail
-rw-r--r--   1 root     root        14786 avr 15 07:51 /etc/mail/README
-rw-r--r--   1 root     root          329 jun 24 20:29 /etc/mail/access
-rw-r--r--   1 root     root        16384 jun 24 20:29 /etc/mail/access.db
lrwxrwxrwx   1 root     root           10 jun 23 12:59 /etc/mail/aliases -> ../aliases
  -rw-r--r--   1 root     root           85 avr 15 07:51 /etc/mail/interneuser
  -rw-r--r--   1 root     root        16384 jun 23 13:42 /etc/mail/interneuser.db
  -rw-r--r--   1 root     root           85 avr 15 07:51 /etc/mail/genericstable
  -rw-r--r--   1 root     root        16384 jun 23 13:42 /etc/mail/genericstable.db
  -rw-r--r--   1 root     root         1465 avr 15 07:51 /etc/mail/mailertable
  -rw-r--r--   1 root     root        16384 jun 23 13:42 /etc/mail/mailertable.db
  -rw-r--r--   1 root     root           92 jun 24 20:33 /etc/mail/sendmail.cw
  -rw-r--r--   1 root     root          267 avr 15 07:51 /etc/mail/userdb
  -rw-r--r--   1 root     root            0 jun 23 13:42 /etc/mail/userdb.db
  -rw-r--r--   1 root     root           73 avr 15 07:51 /etc/mail/virtusertable
  -rw-r--r--   1 root     root        16384 jun 23 13:42 /etc/mail/virtusertable.db
drwxrwxrwt   2 root     root         1024 jui  5 14:37 /var/spool/mail
drwxr-xr-x   2 root     root         1024 jui  5 14:47 /var/spool/mqueue
drwxr-xr-x  11 root     root         1024 jun 23 12:59 /usr/share/sendmail/
  -r--r--r--   1 root     root        90792 fév  3 23:06 /usr/share/sendmail/README
  drwxr-xr-x   2 root     root         1024 jui  3 23:48 /usr/share/sendmail/cf
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/domain
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/feature
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/hack
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/m4
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/mailer
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/ostype
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/sh
  drwxr-xr-x   2 root     root         1024 jun 23 12:59 /usr/share/sendmail/siteconfig

Sous RH le repertoire /usr/share/sendmail doit etre si mes souvenirs sont bon dans : /usr/lib/sendmail-cf

Pas de panique je donne tout les fichiers / repertoires mais tous ne seront pas à decouvrir enfin vous verrez bien :)

aliases.

ce fichier sert à creer des alias, des pseudos noms en quelque sorte. Par exemple si vous ecriviez à webmaster@sortilege.net ou stephane@sortilege.net cela ne changerait rien. Ma boite email s'appelle stephane@sortilege.net mais grace à aliases si un courrier arrive pour webmaster c'est moi qui vais le recevoir.

sendmail.cw

Ce fichier sert à indiquer à sendmail les noms des domaines dont il à la charge. Ne mettez jamais dedans le nom du domaine de votre fai. En effet dans ce cas la il n'expedirait plus le courrier au bon endroit et vous n'aurriez jamais de réponse. (Enfin cela ce serait le "moins pire" des problemes).

access et access.db

Ce fichier nous sera utile pour declarer qui à le droit de nous utiliser pour envoyer du courrier ou non.

interneuser et interneuser.db

Ces fichiers nous servirons à eviter que le courrier interne ne transite par internet.

genericstable et genericstable.db

Fichier qui nous servira à nous assurer que notre nom de boite local n'est pas envoyé par erreur à la place de notre nom de boite internet. C'est confus mais vous pourrez mieu comprendre tout à l'heure.

mailertable et mailertable.db

Fichier qui nous servira dans le cas d'uucp ou si notre réseau grandit un jour.

virtusertable et virtusertable.db

Fichier dont nous n'aurrons pas vraiment l'utilité, mais j'aime bien son nom.

var spool mail

Repertoire qui contient les courriers recus.

var spool mqueue

Repertoire qui contient les courriers en attente de depart.

usr share sendmail

Repertoires pour la configuration.

Voila nous savons maintenant ou nous devrons aller .. y a plus qu'a ...

8.2 Configurons sendmail en utilisant les boites de notre fai. (dial.oleane.com)

Nous allons partir du principe que les boites emails de nos utilisateurs ont la forme :

login@dial.oleane.com Pour illustrer l'exemple nous allons faire comme si il y avait trois utilisateurs :

stephane@dial.oleane.com nathalie@dial.oleane.com antoine@dial.oleane.com

A partir de la nous devrons respecter certains imperatifs.

  1. Lorsque un utilisateur ecrit a quelqu'un en "interne" (si stephane ecrit à nathalie) le message ne devra pas transiter par internet.
  2. Les messages à destinations de personne sur internet devront etre placés en attente pour partir régulierement tous ensemble.
  3. Notre programme d'exepdition des mails devra travailler de maniere conforme aux normes en vigueurs de maniere à ne pas causer de trouble aux autres systémes.

Preparons notre fichier de configuration.

Je vous livre l'exemple, vous le lisez puis nous detaillons :


include(`../m4/cf.m4')dnl
OSTYPE(`linux')dnl

DOMAIN(generic)dnl
GENERICS_DOMAIN(sortilege.net)dnl

FEATURE(use_cw_file)dnl
define(`confCW_FILE', `/etc/mail/sendmail.cw')dnl


FEATURE(genericstable,`hash -o /etc/mail/genericstable')dnl
FEATURE(virtusertable,`hash -o /etc/mail/virtusertable')dnl
FEATURE(mailertable,  `hash -o /etc/mail/mailertable')dnl
FEATURE(accessdb,`hash -o /etc/mail/access')dnl


FEATURE(nocanonify)dnl

FEATURE(always_add_domain)dnl
FEATURE(accept_unresolvable_domains)dnl

FEATURE(masquerade_envelope)dnl
MASQUERADE_AS(dial.oleane.com)dnl

define(`STATUS_FILE', `/var/log/sendmail.st')dnl


define(`confDEF_USER_ID', `daemon:daemon')dnl

define(`confPRIVACY_FLAGS',`noreceipts,novrfy')dnl
define(`confNO_RCPT_ACTION',`add-apparently-to')dnl


define(`confCF_VERSION',` stephane marchau - 15/03/99')dnl
define(`confSMTP_MAILER',`smtp8')dnl
define(`SMTP_MAILER_FLAGS',`e9')dnl
define(`confCON_EXPENSIVE',`True')dnl
define(`confME_TOO',`True')dnl
define(`confCOPY_ERRORS_TO',`PostMaster')dnl
define(`confDEF_CHAR_SET',`ISO-8859-1')dnl
define(`confMIME_FORMAT_ERRORS',`True')dnl
define(`confTO_QUEUEWARN',`24h')dnl

define(`SMART_HOST',`smtp:[smtp.dial.oleane.com]')dnl

MAILER(`local')
MAILER(`smtp')



LOCAL_CONFIG


Kinterneuser hash -o /etc/interneuser.db

LOCAL_RULE_0

#
# Auteur de la solution : from Pablo Saratxaga (pirateo)
#
R$+ < @ $+ . > $*       $: < $(interneuser $1 @ $2 $: $) > $1 < @ $2 . > $3
R$+ < @ $+ $~. > $*     $: < $(interneuser $1 @ $2 $3 $: $) > $1 < @ $2 $3 >$4
R< $+ > $+ < @ $+ > $*  $@ $>97 $1 $4
R<> $+ < @ $+ > $*      $: $1 < @ $2 > $3

# ATTENTION IL VOUS FAUT ABSOLUMENT METTRE UNE TABULATION ENTRE LES $* et les $: ou $@
# SINON SENDmAIL VA HURLER ET COMME GENERALEMENT IL EST TRRRRRRRES POINTILLEURS NOUS
# N'AVONS PAS BESOIN D'EN RAJOUTER
#

Bien allons y detaillons :

include(`../m4/cf.m4')

Ajouter des elements standard.

OSTYPE(`linux')

Nous utilisons linux.

DOMAIN(generic) et GENERICS_DOMAIN(sortilege.net)

Indiquer notre nom de domaine.

FEATURE(use_cw_file)

Utiliser un fichier cw pour gerer les domaines dont doit s'occuper notre sendmail.

define(`confCW_FILE', `/etc/mail/sendmail.cw')

Indiquer ou est le fichier sendmail.cw

FEATURE(genericstable,`hash -o /etc/mail/genericstable')

Utiliser les regles genericstable (pour plus d'info reportez vous à la section Preparons les fichiers annexes.

FEATURE(virtusertable,`hash -o /etc/mail/virtusertable')

Utiliser les regles virtusertable (pour plus d'info reportez vous à la section Preparons les fichiers annexes.

FEATURE(mailertable, `hash -o /etc/mail/mailertable')

Utiliser les regles mailertable (pour plus d'info reportez vous à la section Preparons les fichiers annexes.

FEATURE(accessdb,`hash -o /etc/mail/access')

Utiliser la base acces (pour plus d'info reportez vous à la section Preparons les fichiers annexes. Attention à n'utiliser qu'avec les versions de sendmail > 8.9.X

FEATURE(accept_unresolvable_domains)

Ne pas chercher a resoudre le nom de domaine du champ from. Il sagit d'une mesure antispam qui nous generait plus qu'autre chose. Attention ceci n'est a mettre que dans les versions de sendmail > 8.9.X )

FEATURE(masquerade_envelope)

Nous allons lui dire de cacher notre domaine dans les mails car il n'est pas reconnu sur internet).

MASQUERADE_AS(dial.oleane.com)

Nous indiquons par quoi il devra remplacer. (Mettre le domaine de votre fournisseur de boite email.

define(`STATUS_FILE', `/var/log/sendmail.st')

Placer les stats de sendmail dans le fichier indiqué.

define(`confDEF_USER_ID', `daemon:daemon')

Nous indiquons à sendmail les droits qu'il utilisera

8.3 Configurons sendmail avec notre propre domaine.(sortilege.net)

Le fait que nos boites soient sur notre propre domaine, va allerger notre fichier de configuration. C'est le seul avantage que nous allons en tirer. Mais il n'est pas negligeable vu le nombre de fichier que nous devons configurer pour mettre en route notre réseau.

Preparons notre fichier de configuration.

8.4 Préparons les fichiers Annexes.

Voyons maintenant les fichies annexe. Dans notre configuration nous avons demandé à sendmail d'aller chercher des informations dans un certain nombre de fichiers.

Dans tout les cas Le premier des fichiers commun a tout les cas :

sendmail.cw

Il a pour objectif de permettre à sendmail de connaitre tout les noms de domaine qu'il devra gerer en interne.


sortilege.net
polgara.sortilege.net
merlin.sortilege.net
gandalf.sortilege.net
belgarath.sortilege.net
<code>

C'est un fichier texte tout bete. Nous listons dedans tout nos postes puisque dans la configuration
dns nous avons placé un rr MX de chaque poste sur le serveur donc nous identifions chaque poste
par principe.

<descrip>
<tag/genericstable/ Ce fichier à un objectif tres precis et particulierement utile pour nous. En effet il permet de modifier automatiquement le champ from d'un message. Cela permetra de mettre en "accord" un nom local de boite avec le nom utilisé sur internet. Exemple stephane@sortilege.net est mon nom de boite si vous m'envoyez un message; mais sur mon reseau interne je suis stef. Pourtant tout mes messages (qu'ils soient en interne ou extern) ont un champ from avec stephane. C'est grace à genericstable.


La structure d'un fichier 

<code>


Pour le cas dial.oleane.com

Pour le cas sortilege.net

8.5 Lancons la configuration et testons.

Bien tout est en place pour que nous essayons de maniere à verifier que nous avons bien travaillé. Une derniere chose reste a faire. Transformer le fichier MC que nous avons crée en fichier sendmail.cf mais comme nous sommes des gens prudents nous allons d'abord le transformer sans l'activé de maniere à faire quelques tests basiques.

Transformer un fichier mc en sendmail.cf

J'adore cette partie car elle represente 2 avantages, simplicité pour vous, rapidité à ecrire pour moi :)


m4 /usr/share/sendmail/cf/sortilege.mc >/etc/sendmail.cf

Voila, voili, c'est rapide heinn :) et en plus si vous n'avez pas fait de faute de syntaxe cela marche.

Testons.

Mettons en route.

vous trouverez sous /etc/rc.d./* un script au doux nom :

sendmail generalement il vous suffira de faire :


./sendmail stop
./sendmail start

Pour avoir votre sendmail en etat de marche et tenant compte des dernieres modificaitons que vous pourriez avoir fait.

8.6 Configurons fetchmail pour recuperer en Pop.

8.7 Configurons fetchmail pour recuperer en Etrn.

Si vous avez l'avantage de pouvoir recuperer vos messages en etrn faites le.

8.8 La solution avec les plussed users.

Cette solution n'a d'interet que si vous avez besoin d'adresse email non permanente. Nous savons que comme nous ne sommes pas connectés de maniere permanente il nous faut 2 boites. Une sur internet (pour recevoir les messages qui viennent de n'importe ou) et une sur notre serveur pour les messages en interne.

Si la boite pour les messages en interne ne pose pas de probleme (nous verrons tout à l'heure comment en creer) les boites sur internet sont plus difficile à trouver. Cette solution permet donc de traiter avec une unique sur internet plusieurs utilisateurs locaux.

Nous configurerons sendmail et fetchmail pour qu'ils gerent ce cas au mieu. Mais attention cette solution ne peut convenir qu'a des cas tres particuliers (centre de formation, ecole bref tout type de structure qui à besoin d'adresse pour des personnes qui NE RESTERONT PAS LONGTEMPS).

Pourquoi ?? parceque cette solution peut poser des problemes dans des cas certes particuliers mais relativement habituel. Dans le cas ou quelqu'un envoie un message en BCC ( copie invisible) ou si l'utilisateur veut s'abonner à une Mailing liste. Je ne vais pas entrer dans les details mais sachez que dans ces cas la ce type de solution est à proscrire.

Plussed Users

La technique du plussed user utilise une opportunité des programmes de transport de mail. En effet pour toute boite email (stephane@sortilege.net par exemple), vous pouvez ajouter un deuxieme nom.

stephane+CEQUEVOUSDESIREZ@sortilege.net est identique à stephane@sortilege.net

Un courrier destiné à l'un ou à l'autre sera traité de la meme maniere, c'est à dire qu'il sera envoyé dans votre boite tout simplement.

Donc pour un petit réseau si je reprends mes trois utilisateurs exemple, les adresses seraient :

une boite generique pour le réseau a ouvrir sur internet (sortilege@sortilege.net)

l'utilisateur local * aurrait pour adresse internet : sortilege+*@sortilege.net ce qui donnerait :


utilisateur local             Adresse Email
stephane                      (sortilege+stephane@sortilege.net)
nathalie                      (sortilege+nathalie@sortilege.net)
antoine                       (sortilege+antoine@sortilege.net)

Bien entendu nous ne communiquerions à l'utilisateur que l'adresse sous forme sortilege+* et configurerions sendmail et fetchmail pour faire tout le boulot de maniere transparente.

Preparer notre fichier de configuration sendmail

A ce niveau la cela ne change pas beaucoup. La configuration est en effet identique à ce que nous trouvons avec la solution (dial.oleane.com)

L'unique difference etant au niveau des fichiers genericstable et interneuser qui sont OBLIGATOIRE.

Le fichier genericstable se presentera ainsi :


stephane        sortilege+stephane@sortilege.net
romain  sortilege+romain@sortilege.net
antoine sortilege+antoine@sortilege.net

Le fichier interneuser lui se presentera ainsi :


sortilege+stephane@sortilege.net        stephane
sortilege+romain@sortilege.net  romain
sortilege+antoine@sortilege.net antoine

Voila c'est tout, vous penserez bien entendu à faire vos makemap pour creer les tables.

Configurons fetchmail pour le cas d'un plussed user

C'est fetchmail qui va subir la plus grosse modification. En effet il ne doit recuper qu'une boite (sortilege@sortilege.net) mais doit s'arranger pour passer les courriers aux bons destinataires.

Voyons comment cela va se presenter :



-rw-------   1 root     root          725 Jul  6 23:06 .fetchmailrc

poll pop.sortilege.net proto pop3:
no dns
localdomains dial.oleane.com:
user sortilege with password "PLybK2Pq" is * here

smtp polgara.sortilege.net

Attention de bien verifier que les droits d'utilisations ne soit qu'en Lecture Ecriture pour le proprietaire UNIQUEMENT.

Je ne reviens pas sur la structure du fichier .fetchmailrc puisque nous l'avons abordé juste un peu plus haut.

Ce qui differencie cette fois, c'est l'utilisation de "*" à la place du nom de destinataire. Cela veut dire qu'il doit laisser le programme sendmail se debrouiller. Comme nous disposons des regles de pablo qui permettent de convertir le destinataire cela passera sans trop de probleme.

8.9 Entretient du serveur de Mail.

Cas (dial.oleane.com)

Cas (sortilege.net)

Cas (Plussed User)

Identique au cas dial.oleane.com sauf que .fetchmailrc n'est pas à modifier à chaque ajout d'un utilisateur.

8.10 Automatisons les procedures d'expeditions et receptions.

8.11 Le cas Postfix

Postfix est un programme identique dans la fonctionnalité à sendmail. L'on en parle beaucoup actuellement,ventant sa simplicité et son bon fonctionnement. Malheureusement je n'ai pas encore eut le temps de me plonger dedans. Donc peut etre pour une autre fois.


Next Previous Contents