Gestion du courrier électronique

Le courrier électronique est une manière particulière de transmettre des fichiers. Pour que ces fichiers puissent être lus quelque soit l’OS (Operating System) utilisé ils doivent répondre à certaines normes (RFC 822).

Il existe différents Agents de Transport de courrier, comme Qmail, eXim, Smail ou Vmailer, utilisables sur les systèmes Unix/Linux mais le plus ancien, le plus puissant, mais aussi certainement le plus complexe à configurer est Sendmail .

Si vous n’avez pas suffisamment de cachets d’aspirine à votre disposition, il vaut mieux abandonné la configuration de /etc/sendmail.cf pour vous tourner vers l’utilisation des macros m4 pour configurer Sendmail.

La syntaxe des macros m4, qui peut-être ne paraîtra pas très clair à certains, est d’une limpidité comparée à la syntaxe abscons utilisée dans le fichier sendmail.cf . La description de ce type de configuration pourra s’appliquer pratiquement à toutes les distributions, excepté à SuSE dont les macros m4 ne sont pas utilisables pour configurer Sendmail .

Glossaire des termes utilisés

BAL = Boite aux lettres.

maildir = Format de boite aux lettres utilisant des répertoires contenat un fichier pour chaque message, comme pour xFmail.

mbox = Format de boite aux lettres utilisant un fichier unique par utilisateur, comme avec mail .

SMTP (Simple Mail Transport Protocol) = protocole utilisé pour le courrier sortant.

POP (Post Office Protocol) = protocole utilisé pour le courrier entrant.

MIME (Multipurpose Internet Mail Extensions) = Standard définissant les extensions pour Internet.

MTA (Mail Transport Agent) = Agent de transport du courrier, comme sendmail.

MUA (Mail User Agent) = Agent de gestion pour lire et écrire le courrier, comme xFmail .

MDA (Mail Delivery Agent) = Agent de distribution, comme procmail .

MLM (Mailing List Manager) = Gestionnaire de liste de diffusion, comme Majordomo.

MX (Mail Exchanger) = Type d’enregistrement DNS .

DNS (Domain Name Service) = Base de données IP pour la conversion adresses/noms .

FAI = Fournisseur d’Accès à l’Internet .

RFC (Request For Comment) = Règles définissant divers standards, comme la 822 pour le courrier.

Description

Bien que vous puissiez réaliser et utiliser des interfaces pour les commandes sendmail, il est aussi simple d’utiliser la ligne de commande sous linux/UNIX en tapant:

mailq pour vérifier le courrier en attente

sendmail -q pour envoyer le courrier en attente

fetchmail pour récupérer le courrier depuis le serveur PoP de votre FAI

l’adresse du serveur pop de votre FAI peut ressembler à : pop.mon_fai.fr ou mail.mon_fai.fr .

l’adresse du serveur smtp de votre FAI peut ressembler à : smtp.mon_fai.fr ou mail.mon_fai.fr

Sendmail utilise procmail pour la distribution du courrier sur votre machine et fetchmail pour la récupération des messages qui vous sont adressés. Il faudra donc en plus de la configuration de sendmail, réaliser un fichier fetchmailrc pour la connexion au serveur POP et un fichier procmailrc pour la distribution dans vos BAL utilisateurs.

Sendmail

“loger” vous sous compte “root” pour l’installation et la configuration de sendmail .

Installation

Sendmail est certainement déjà installé sur votre machine, Il se compose de :

/usr/sbin/sendmail

/usr/bin/procmail

/usr/bin/fetchmail

/usr/bin/mailq

/usr/bin/mailstats

Pour le vérifier, utilisez la commande “type” (type sendmail) ou la commande rpm -qa | grep sendmail pour vérifier quel sont les RPM Sendmail installé.

Vérifier également que le préprocesseur m4 est installé, avec la commande : type m4

Et enfin assurez-vous que le package sendmail-cf est présent sur votre système, avec la commande locate sendmail-cf ou tapez rpm -qa | grep sendmail-cf

Si sendmail-cf n’est pas installé, il vous faudra installer le package sendmail-cf-8.x.x.tar.gz ou sendmail-cf-8.x.x.i386.rpm avant de passer à la configuration de sendmail, car le répertoire /usr/lib/sendmail-cf/ contient des fichiers qui seront utilisés par m4 pour la construction du fichier de configuration de sendmail.

Pour installer les packages RPMs s’ils ne le sont pas déjà :

rpm -ivh sendmail-8.x.x.i386.rpm

rpm -ivh sendmail-cf-8.x.x.i386.rpm

rpm -ivh sendmail-doc-8.x.x.i386.rpm

rpm -ivh procmail-3.x.x.i386.rpm

rpm -ivh fetchmail-5.x.x.i386.rpm

rpm -ivh fetchmailconf-5.x.x.i386.rpm

Après installation, pour pouvoir utiliser sendmail, les démons inetd et sendmail seront lancés au boot de votre système.

Utilisez la commande “ps” pour le vérifier :

serv:/admin $ ps x

383 ? S 0:00 inetd

588 ? S 0:00 sendmail: accepting connections on port 25

serv:/admin $ ps aux

root 383 0.0 0.4 1236 560 ? S 15:37 0:00 inetd

root 588 0.0 0.8 1880 1080 ? S 15:37 0:00 sendmail: accepti

serv:/admin $ ps aux | grep sendmail

root 588 0.0 0.8 1880 1080 ? S 15:37 0:00 sendmail: accepti

Utilisez tksysv ou linuxconf pour lancer sendmail au démarrage du système, ou ajouter manuellement les liens symboliques suivants:

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc0.d/K30sendmail

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc1.d/K30sendmail

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc2.d/S80sendmail

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc3.d/S80sendmail

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc4.d/S80sendmail

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc5.d/S80sendmail

ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc6.d/K30sendmail

Configuration

Je vais décrire ici une configuration de base sur une RedHat .

Nous allons commencer par créer un fichier “sendmailconf.mc” qui servira à construire le fichier /etc/sendmail.cf :

Le nom de ce fichier a peu d’importance, vous pouvez le nommer sendmail.mc, confmail.mc, config.mc … il faut seulement éviter de lui attribuer un nom existant déjà dans le répertoire /usr/lib/sendmail-cf/cf/ où il va être placé.

Mais avant vous devez effectuer quelques vérifications :

Vérifiez le chemin du binaire procmail, à l’aide de la commande “type” ou “which” : which procmail

vous obtiendrez la réponse /usr/bin/procmail que vous utiliserez dans le fichier de config.

Vérifiez que vous avez un fichier /usr/lib/sendmail-cf/ostype/linux.m4, si non créez le :

divert(-1)

#

# /usr/lib/sendmail-cf/ostype/linux.m4

#

divert(0)

VERSIONID(`@(#)linux.m4 8.7 (Berkeley) 5/19/1998′)

define(`PROCMAIL_MAILER_PATH’, `/usr/bin/procmail’)dnl

# define(`LOCAL_MAILER_FLAGS’, `ShPfn’)dnl

# define(`LOCAL_MAILER_ARGS’, `procmail -a $h -d $u’)dnl

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

Vous pouvez également, à titre indicatif, regarder les variables( qui sont des constantes 😉 ) dans le fichier /usr/lib/sendmail-cf/cf/redhat.mc .

Vérifiez que le fichier /etc/nsswitch.conf contient, au moins, ces lignes :

#

# /etc/nsswitch.conf

#

# An example Name Service Switch config file. This file should be

# sorted with the most-used services at the beginning.

#

passwd:

shadow: files

group: files

hosts: files dns

services: files

networks: files

protocols: files

rpc: files

ethers: files

netmasks: files

bootparams: files

netgroup: files

publickey: files

aliases: files

Vérifiez que le fichier /etc/hosts contient ces lignes :

# /etc/hosts

127.0.0.1 localhost localhost.localdomain

Le fichier hosts doit également contenir le nom complet de vos postes du réseau à atteindre.

Vérifiez le fichier /etc/aliases qui doit contenir (au début) ces deux entrées (alias):

#

# @(#)aliases 8.2 (Berkeley) 3/5/94

#

# Aliases in this file will NOT be expanded in the header from

# Mail, but WILL be visible over networks or from /bin/mail.

#

# >>>>>>>>>> The program “newaliases” must be run after

# >> NOTE >> this file is updated for any changes to

# >>>>>>>>>> show through to sendmail.

#

# Basic system aliases — these MUST be present.

MAILER-DAEMON: postmaster

postmaster: root

Vous pouvez rediriger les messages vers un autre poste du réseau en ajoutant, par exemple, de cette ligne ” root: admin@2.linux.fr” .

Pour que les nouvelles modifications du fichier /etc/aliases soient prises en compte, tapez :

# newaliases

Création du fichier /usr/lib/sendmail-cf/cf/sendmailconf.mc :

Comme la description de la configuration de sendmail ne paraîtra pas forcement évidente à tous, et pour éviter de se perdre dans de longues explications, nous allons prendre un exemple d’une machine ayant les paramètres suivants :

Le nom de machine est 1

Le nom de domaine est linux.fr

avec l’adresse IP 192.168.154.1

Le FAI est Worldnet,

les adresses POP et SMTP sont mail.worldnet.fr

L’administrateur est root

avec une adresse email (FAI) linux.worldnet.fr .

/* dans ce qui suit, remplacez les différents paramètres par ceux utilisés sur votre système . */

A l’aide d’un éditeur, créez le fichier /usr/lib/sendmail-cf/cf/sendmailconf.mc :

#

# /usr/lib/sendmail-cf/cf/sendmailconf.mc

#

include(`../m4/cf.m4′)dnl

OSTYPE(`linux’)dnl

define(`SMTP_MAILER_FLAGS’, `e9′)dnl

FEATURE(redirect)dnl

FEATURE(nocanonify)dnl

FEATURE(always_add_domain)dnl

FEATURE(local_procmail)dnl

GENERICS_DOMAIN(tux1.linux.fr tux1 localhost)

FEATURE(genericstable)

FEATURE(masquerade_envelope)dnl

FEATURE(relay_entire_domain)dnl

FEATURE(accept_unresolvable_domains)dnl

define(`confCF_VERSION’, `TuxAdmin cf – 05/01/98′)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(`SMART_HOST’, `smtp8:[mail.worldnet.fr]’)dnl

define(`confTO_QUEUEWARN’, `12h’)dnl

MAILER(local)

MAILER(smtp)

Commentaires

include(`../m4/cf.m4′) Cette première ligne est la plus importante car elle contient les entrées fondamentales nécessaires au traitement. du fichier sendmail.cf. Les autres entrées ne seront en fait que des extensions de cette entrée.

OSTYPE(`linux) Pour définir les spécificités de l’OS utilisé (Linux).

Les lignes FEATURE définissent certaines caractéristiques du fonctionnement de sendmail :

(redirect)

Emission automatique d’un message d’indication de redirection “551 User not local; please try <address>”.

(nocanonify)

Pour éviter que sendmail transforme l’adresse du destinataire, l’émetteur doit donc utiliser une adresse canonique pour la destination du type <bidule@linux.fr> .

(always_add_domain)

Pour que toutes les adresses locales, sans domaine spécifié, soient associées au nom de domaine local.

(local_procmail)

Pour utiliser procmail en distribution locale.

(genericstable): Pour utiliser la base de données /etc/genericstable.db

(masquerade_envelope): Pour masquer les adresses email.

Pour définir le champ From de l’enveloppe du message et “masqueradiser” l’enveloppe d’après les entrées contenues dans /etc/genericstable.

(relay_entire_domain)

Pour que sendmail accepte les mails venants d’autres postes du réseau privé du même domaine .

(accept_unresolvable_domains)

Pour pouvoir expédier des messages depuis vos postes Windows vers votre machine Linux si celle-ci n’est pas connectée à votre FAI.

Les lignes define définissent les valeurs des variables utilisées par sendmail :

(`SMTP_MAILER_FLAGS’, `e9′)

e (pour expensive en Anglais) vous rappel que vous n’êtes plus en local et que l’utilisation de smtp est plus chère.

L’option 9 ( `e9′ ) Force la conversion de 8 vers 7 bits du texte contenu dans le corps du message.

(`confCF_VERSION’, `TuxAdmin cf – 05/01/98′).

Informations sur l’auteur, la version et la date de création de ce fichier sendmail.cf .

(`confCON_EXPENSIVE’, `True’).

Oblige la mise en file d’attente des messages considérés “Expensive” (ici, SMTP_MAILER_FLAGS ).

(`confME_TOO’, `True’).

Pour que les messages postés sur une liste de diffusion, à laquelle vous êtes abonné, vous soient aussi envoyés.

(`confCOPY_ERRORS_TO’, `Postmaster’).

Pour envoyer les messages d’erreurs au “Postmaster” (root dans le fichier /etc/aliases).

(`confDEF_CHAR_SET’, `ISO-8859-1′).

Indication pour le destinataire sur le codage du message, (8 bits, ISO-8859-1 pour le standard Franç;;;;;;;;;;;;ais).

(`confMIME_FORMAT_ERRORS’, `True’).

Pour mettre au format MIME les messages d’erreurs renvoyés par exemple pour une adresse du destinaire inexistante.

(`SMART_HOST’, `smtp8:[mail.worldnet.fr]’).

Indique le protocole et le type de serveur utilisés pour la résolution des adresses email (SMTP8 pour envoyer à mail.worldnet.fr des messages codés sur 8 bits).

Et enfin les 2 lignes MAILER pour indiquer les protocoles utilisés pour le transport du courrier.

Ceci est une config minimum, vous pourrez ajoutez d’autres entées comme:

confTO_QUEUEWARN: délai avant que sendmail envoie un message avertissant que des courriers sont dans la file d’attente. Par défaut, ce délai est de 4 heures, pour une machine ne se connectant qu’une ou deux fois par jour, utilisez un délai de 24 heures = define(`confTO_QUEUEWARN’, `24h’)

PROCMAIL_MAILER_PATH: Peut définir le chemin de Procmail = define(‘PROCMAIL_MAILER_PATH’,’/usr/bin/procmail’)

QUEUE_DIR: Définit le répertoire de la file d’attente = define(‘QUEUE_DIR’,’/var/mqueue’)

LIRE le fichier /usr/doc/sendmail/README.cf

Pour construire le fichier sendmail.cf , utilisez la commande :

m4 /usr/lib/sendmail-cf/cf/sendmailconf.mc > /etc/sendmail.cf

Vous pouvez éventuellement vérifier et traduire le fichier /usr/lib/sendmail.hf qui contient les messages envoyés par sendmail .

Création du fichier /etc/genericstable:

#

# /etc/genericstable

# |||||||||||

# ||| NOTE >>> Après modification, utiliser la commande

# ||||||||||| sendmail -bi -oA /etc/genericstable

# pour créer la nouvelle table .

admin: g.durand@worldnet.fr

root: linux@worldnet.fr

Utilisez la touche de tabulation pour sépararer le nom du compte utilisateur “admin:” de son adresse email(FAI)

Ce fichier genericstable a pour rôle de permettre la conversion du nom des comptes utilisateurs vers leur adressesse email internet.

Puis contruire la table avec la commande : sendmail -bi -oA/etc/genericstable

Et enfin relancez sendmail avec les commandes :

kill `head -1 /var/run/sendmail.pid`

sendmail -bd –os

ATTENTION! N’utilisez pas la commande cat : kill `cat /var/run/sendmail.pid` , car le fichier /var/run/sendmail.pid ne contient pas uniquement le numéro du pid mais également une seconde ligne appelant sendmail .

Configuration de fetchmail

Pour créer et configuer le fichier fetchmailrc vous pouvez utiliser “fetchmailconf”, en tapant dans un xterm: fetchmailconf

Ou avec un simple éditeur créez le fichier $HOME/.fetchmailrc :

poll mail.worldnet.fr protocol POP3 username linux with password tuxpwd is root here

Pour le compte “root” ayant une adresse email (FAI) < linux@worldnet.fr > avec le mot de passe “tuxpwd”

Ou pour plusieurs comptes utilisateurs, sous cette forme:

poll mail.worldnet.fr proto pop3 :

user linux has pass tuxpwd is root here

fetchall

poll mail.worldnet.fr proto pop3 :

user g.durand has pass dudupwd is admin here

fetchall

Pour les différentes syntaxes possibles, consulter la page de manuel : man fetchmail

tapez la commande : chmod 710 ~/.fetchmailrc pour le rendre exécutable et accessible uniquement par son propriétaire.

Configuration de procmail:

Vous pouvez utiliser un fichier $HOME/.procmailrc et .forward pour chaque utilisateur :

le fichier $HOME/.forward contiendra cette ligne : | IFS=’ ‘ && exec /usr/bin/procmail || exit 510

510 est l’ id utilisateur contenu dans /etc/passwd .

Mais attention, le fichier .forward est également utilisé pour le filtrage par Exim .

Personnellement j’utilise un fichier /etc/procmailrc , ce qui permet à l’administrateur de contrôler plus facilement la distribution locale des messages :

# /etc/procmailrc

#

SHELL=/bin/sh

PATH=/bin:/usr/bin:/usr/sbin

MAILDIR=/var/spool/mail

LOGFILE=$MAILDIR/.pmlog

LOG=”— Logging ${LOGFILE} for ${LOGNAME}, “

DEFAULT=$MAILDIR/NEW

VERBOSE=yes

# *** Sauvegarde des messages Autoreply dans la BAL reply ***

:0

*^Subject:.*[Aa]utoreply [Mm]essage

reply

:0 B

*.*[Aa]utoreply [Mm]essage

reply

# *** Destruction des messages ***

:0

* ^From:.*spam.net

/dev/null

# *** Sauvegarde des messages utilisateurs ***

:0 Hw

* ^.*[Tt]o: linux@worldnet.fr

root

:0 Hw

* ^.*[Tt]o: g.durand@worldnet.fr

admin

:0 Hw

* ^.*[Ss]ubject: Linux

linux

# *** Rediriger les messages ***

:0 c

* ^.*[Ss]ubject: Request

! majordomo@tux1.linux.fr

:0 A

listes

# *** Sauvegarde des messages system ***

:0:

*^From.*root

root

:0:

*^FROM_MAILER

root

:0

*Cron

root

### Ceux-ci ne correspondent à aucun filtre : ###

# *** sauvegarde dans la BAL Autres ***

:0 Hw

Autres

Vous pouvez utilisez des caractères générique, ( comme * ) ” * ^.*[Tt]o: *g.durand* ” : Pour connaitre la syntaxe utilisable dans procmailrc, consultez les pages de manuel man procmail et man procmailrc

Nous aborderons plus en détail le fitrage de procmail avec l’installation d’une liste de diffusion, mais voici une brève description de procmailrc :

Les 2 premières lignes indiquent le chemin du shell utilisé et ceux des exécutables (facultatif).

MAILDIR= indique le chemin des BAL utilisateurs (indispensable)

DEFAULT= nom de la BAL par défaut (facultatif)

LOGFILE= indique le nom et le chemin du fichier Log (utile)

Pour que dans votre fier Log, à chaque nouvelles opérations, la première ligne contienne le nom du fichier log et le nom de l’utilisateur, utilisez cette ligne :

LOG=”— Logging ${LOGFILE} for ${LOGNAME}, ” (facultatif)

Et pour que procmail soit plus “causant” : VERBOSE=yes (facultatif)

Les champs From, To, Cc …etc, pourraient très bien être écris sans majuscule par certains MUA, pour y remédier vous pouvez utiliser cette forme [Ff]rom, [Tt]o …etc .

La dernière ligne de chaque filtre est le nom de la BAL, comme /var/spool/mail/root .

Réalisation d’un script pour configurer sendmail

Lorsque vous changer de nom de machine, de nom de domaine ou de FAI, vous devez modifier vos fichiers de configuration système et pour créer un nouveau fichier sendmail.cf il faut également modifier sendmailconf.mc et recommencer les opérations citées plus haut.

Pour la configuration de sendmail, vous pouvez regrouper les diverses commandes dans un script :

#!/bin/sh

#

# /usr/local/bin/sendmail.setup

#

# Reconstruire /etc/sendmail.cf

echo “Sauvegarde de sendmail.cf en sendmail.cf.old “

cp /etc/sendmail.cf /etc/sendmail.cf-old

echo “Création de /etc/sendmail.cf : “

cd /usr/lib/sendmail-cf/cf

m4 sendmailconf.mc > /tmp/sendmail.tmp

echo “Droits sur sendmail.cf”

cp -f /tmp/sendmail.tmp /etc/sendmail.cf

cd /etc

chmod 600 sendmail.cf

cd /

ls -l /etc/sendmail.cf

# générer la table /etc/genericstable.db

echo “Création de /etc/genericstable.db : “

sendmail -bi -oA/etc/genericstable

ls -l /etc/genericstable.db

# recharger le démon sendmail

echo “Relancer sendmail “

kill `head -1 /var/run/sendmail.pid`

sendmail -bd -os

ps aux | grep sendmail

# Tester sendmail en local

echo “Subject: Test de sendmail en local” > $HOME/mail-test.msg

echo ” ” >> $HOME/mail-test.msg

echo “Coucou ! ” >> $HOME/mail-test.msg

echo ” Message de test de sendmail en local !” >> $HOME/mail-test.msg

echo “Envoi du message de test en Local”

sendmail -v root < $HOME/mail-test.msg

echo “Affichage du message de test reç;;;;u”

mail

#

echo “Testez maintenant sendmail avec une connexion Internet”

echo “Les réflecteurs de courrier sont : “

echo “<echo@cnam.fr> et <echo@univ-rennes1.fr> “

# FIN

Avant de lancer ce script, vous devez avoir configuré les fichiers comme indiqués plus haut.

Tester la configuration de sendmail

tux1:/root $ sendmail -d0.1 -bt < /dev/null

Version 8.9.3

Compiled with: LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND NETINET

NETUNIX NEWDB NIS QUEUE SCANF SMTP USERDB

============ SYSTEM IDENTITY (after readcf) ============

(short domain name) $w = tux1

(canonical domain name) $j = tux1.linux.fr

(subdomain name) $m = linux.fr

(node name) $k = tux1.linux.fr

========================================================

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Enter <ruleset> <address>

> tux1:/root $

tux1:/root $

Si la réponse de sendmail contient votre nom de machine et de domaine (correcte) alors on peut supposer que sendmail est correctement configuré.

Essayons de voir comment est effectué le traitement des adresses (champs de l’entête du message) pour un utilisateur (ici, root) et si ce message sera correctement distribué en local dans vos BAL utilisateurs :

tux1:/root $ sendmail -bt -C /etc/sendmail.cf

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Enter <ruleset> <address>

> 3,0 root

rewrite: ruleset 3 input: root

rewrite: ruleset 96 input: root

rewrite: ruleset 96 returns: root

rewrite: ruleset 3 returns: root

rewrite: ruleset 0 input: root

rewrite: ruleset 199 input: root

rewrite: ruleset 199 returns: root

rewrite: ruleset 98 input: root

rewrite: ruleset 98 returns: root

rewrite: ruleset 198 input: root

rewrite: ruleset 198 returns: $# local $: root

rewrite: ruleset 0 returns: $# local $: root

> 3,0 linux@worldnet.fr

rewrite: ruleset 3 input: linux @ worldnet . fr

rewrite: ruleset 96 input: linux < @ worldnet . fr >

rewrite: ruleset 96 returns: linux < @ worldnet . fr >

rewrite: ruleset 3 returns: linux < @ worldnet . fr >

rewrite: ruleset 0 input: linux < @ worldnet . fr >

rewrite: ruleset 199 input: linux < @ worldnet . fr >

rewrite: ruleset 199 returns: linux < @ worldnet . fr >

rewrite: ruleset 98 input: linux < @ worldnet . fr >

rewrite: ruleset 97 input: root

rewrite: ruleset 3 input: root

rewrite: ruleset 96 input: root

rewrite: ruleset 96 returns: root

rewrite: ruleset 3 returns: root

rewrite: ruleset 0 input: root

rewrite: ruleset 199 input: root

rewrite: ruleset 199 returns: root

rewrite: ruleset 98 input: root

rewrite: ruleset 98 returns: root

rewrite: ruleset 198 input: root

rewrite: ruleset 198 returns: $# local $: root

rewrite: ruleset 0 returns: $# local $: root

rewrite: ruleset 97 returns: $# local $: root

rewrite: ruleset 98 returns: $# local $: root

rewrite: ruleset 0 returns: $# local $: root

> 3,0 root@linux.fr

rewrite: ruleset 3 input: root @ linux . fr

rewrite: ruleset 96 input: root < @ linux . fr >

rewrite: ruleset 96 returns: root < @ linux . fr >

rewrite: ruleset 3 returns: root < @ linux . fr >

rewrite: ruleset 0 input: root < @ linux . fr >

rewrite: ruleset 199 input: root < @ linux . fr >

rewrite: ruleset 199 returns: root < @ linux . fr >

rewrite: ruleset 98 input: root < @ linux . fr >

rewrite: ruleset 98 returns: root < @ linux . fr >

rewrite: ruleset 198 input: root < @ linux . fr >

rewrite: ruleset 95 input: < smtp8 : [ mail . worldnet . fr ] > root < @ linux . fr >

rewrite: ruleset 95 returns: $# smtp8 $@ [ mail . worldnet . fr ] $: root < @ linux . fr >

rewrite: ruleset 198 returns: $# smtp8 $@ [ mail . worldnet . fr ] $: root < @ linux . fr >

rewrite: ruleset 0 returns: $# smtp8 $@ [ mail . worldnet . fr ] $: root < @ linux . fr >

>

Essayez de voir les différences prises en compte par sendmail suivant les diverses formes d’adresse que vous saisissez .

N’oubliez pas d’indiquer le “ruleset” 3,0 en début de ligne .

Essayez avec une adresse email (FAI) d’un utilisateur n’ayant pas de compte sur votre machine, et vous n’obtiendrez pas de distribution locale .

Maintenant nous allons tester cela en envoyant un message en local :

Créez un fichier test à l’aide d’un éditeur, ou en entrant ces commandes :

echo “Subject: test sendmail” > test.mail

lmiche:/root $ echo ” ” >> test.mail

lmiche:/root $ echo “Message de test ” >> test.mail

puis envoyez le message de test à root avec cette commande :

sendmail -v root < test.mail tux1:/root $ sendmail -v root < test.mail

root… aliased to admin

admin… Connecting to local…

admin… Sent

You have new mail in /var/spool/mail/root

tux1:/root $

La première ligne indique seulement que j’ai un alias, admin (compte utilisateur) qui à le droit de récupérer les messages destinés à root, dans le fichier /etc/aliases sous cette forme root: admin

maintenant, vous pouvez lire ce message en tapant simplement :

mail tux1:/root $ mail

Mail version 8.1 6/6/93. Type ? for help.

“/var/spool/mail/root”: 1 message 1 new

N 1 lmsoft@worldnet.fr Mon Sep 18 19:10 13/366 “test sendmail”

& 1

Message 1:

From root Mon Sep 18 19:10:17 2000

Date: Mon, 18 Sep 2000 19:10:17 +0200

From: root <linux@worldnet.fr>

Subject: test sendmail

Message de test

& x

tux1:/root $

Ou éditez ce message de la mbox /var/spool/mail/root, pour regarder les différents champs de l’en-tête :

From root Mon Sep 18 19:10:17 2000

Return-Path: <root>

Received: (from root@localhost)

by tux1.linux.fr (8.9.3/8.9.3/TuxAdmin cf – 05/01/98) id TAA01396

for root; Mon, 18 Sep 2000 19:10:17 +0200

Date: Mon, 18 Sep 2000 19:10:17 +0200

From: root <linux@worldnet.fr>

Message-Id: <200009181710.TAA01396@tux1.linux.fr>

Subject: test sendmail

Message de test

Notez que le champ From (sans les 2 points) de l’enveloppe indique le nom de l’utilisateur local, alors que pour le champ From: de l’en-tête sendmail a complété avec l’adresse correspondante indiquée dans /etc/genericstable .

Vous pouvez essayez en envoyant le message de test à un autre compte utilisateur .

Nous allons maintenant essayer sendmail avec le serveur POP de votre FAI :

Lancez votre MUA, Il faut que celui-ci dépose le courrier dans la file d’attente

Ecrivez votre message à destination de echo@cnam.fr

Envoyez ce message, qui se met en attente dans /var/spool/mqueue/

Allez dans /var/spool/mqueue/ , vous trouverez 2 fichiers,

l’un commence par df et contient le corps du message,

l’autre par qf et contient l’entête du message et se termine par un point :

$rESMTP

$stux1.linux.fr

$_IDENT:root@localhost [127.0.0.1]

S<root@tux1.linux.fr>

RPFD:<echo@cnam.fr>

_Connectez vous à Internet avec votre numéroteur ou un script de connexion,

puis tapez les commandes mailq et sendmail -q :

tux1:/root $ mailq

Mail Queue (1 request)

–Q-ID– –Size– —–Q-Time—– ————Sender/Recipient————

TAA01539 82 Mon Sep 18 19:53 <root@tux1.linux.fr>

8BITMIME

<echo@cnam.fr>

tux1:/root $ sendmail -q

tux1:/root $

Attendez quelques secondes (10 au moins), puis tapez fetchmail :

tux1:/root $ fetchmail

1 message for linux at mail.worldnet.fr (5573 octets).

reading message 1 of 1 (5573 octets) ….. flushed

tux1:/root $

Déconnectez vous de l’internet

et éditez ce nouveau message ou affichez son contenu avec votre MUA :

—— Le serveur echo du domaine cnam.fr

—— a recu votre message le lun 18 sep 20:00:41 MET DST 2000

—— Ci-dessous les en-tetes et le corps de votre message

> From linux@worldnet.fr Mon Sep 18 20:00:40 2000

> Received: from nemesis.worldnet.net (nemesis.worldnet.net [195.3.3.18])

> by fermi.cnam.fr (8.8.8/jpm-301097) with ESMTP id UAA06005

> for <echo@cnam.fr>; Mon, 18 Sep 2000 20:00:40 +0200 (MET DST)

> Return-Path: <linux@worldnet.fr>

> Received: from m2.worldnet.net (m2.worldnet.net [195.3.3.6])

> by nemesis.worldnet.net (8.9.3/8.9.3) with ESMTP id UAA65498

> for <echo@cnam.fr>; Mon, 18 Sep 2000 20:04:15 +0200 (CEST)

> Received: from tux1.linux.fr (IDENT:root@wn18-082.paris.worldnet.fr [195.3.18.82])

> by m2.worldnet.net (8.9.3/8.9.3) with ESMTP id UAA26963

> for <echo@cnam.fr>; Mon, 18 Sep 2000 20:00:39 +0200 (CEST)

> Received: from tux1.linux.fr (IDENT:root@localhost [127.0.0.1])

> by tux1.linux.fr (8.9.3/8.9.3/TuxAdmin cf – 05/01/98) with ESMTP id TAA01539;

> Mon, 18 Sep 2000 19:53:54 +0200

> Message-Id: <200009181753.TAA01539@tux1.linux.fr>

> Date: Mon, 18 Sep 2000 19:53:51 +0200 (CEST)

> From: linux@worldnet.fr

> Sender: root <linux@worldnet.fr>

> Reply-To: linux@worldnet.fr

> Subject: Test sendmail

> To: echo@cnam.fr

> cc: admin <admin@tux1.linux.fr>

> MIME-Version: 1.0

> Content-Type: TEXT/plain; charset=iso-8859-1

> Content-Transfer-Encoding: 8BIT

Notez que cette fois le champ From de l’enveloppe a bien été remplacé par l’adresse indiquée dans /etc/genericstable .

Sendmail fonctionne, il ne reste plus qu’à l’utiliser .

Vous pouvez encore modifier la configuration de sendmail, pour que le courrier local ne soit pas expédié sur internet avant d’être récupéré et distribué dans la BAL de l’utilisateur:

Supposons que vous ayez un compte utilisateur “duduche” et que cet utilisateur possède une adresse email (FAI) bidule@worldnet.fr, vous avez ajouté une ligne ” duduche: bidule@worldnet.fr ” dans /etc/genericstable .

Alors ! Que va-t-il se passer lorsque vous allez envoyer un message à l’utilisateur “duduche” ?

Sendmail va utiliser l’adresse <bidule@worldnet.fr> et ce message sera expédié à mail.worldnet.fr par SMTP (expensive) et procmail ne pourra le déposer dans la BAL correspondante à “duduche” que lorsque fetchmail aura rapatrié ce message depuis le serveur POP de votre FAI !

Voici une solution pour éviter ce transite par Internet, mais ATTENTION vous ne pourrez plus tester l’acheminement et le bon fonctionnement des BAL de votre FAI avec ces adresses .

Editez /usr/lib/sendmail-cf/cf/sendmailconf.mc et ajoutez ces lignes à la fin du fichier:

Kreverstable hash -o /etc/mail/reverstable

LOCAL_RULE_0

R$+ < @ $+ > $* $: < $(reverstable $1 @ $2 $: $) > $1 < @ $2 > $3

R< $+ > $+ < @ $+ >$* $@ $>97 $1

R<> $+ < @ $+ > $* $: $1 < @ $2 > $3

Cette astuce a été publiée par Denis Braussen sur le site de Linux France à l’adresse :

www.linux-france.org/article/connex/UUCP/denis-uucp/denis-uucp-7.html

Je ne pourrais pas vous expliquer pourquoi, mais cela fonctionne avec la version 8.9.3 de sendmail .

Vous trouverez ce fichier sendmailconf.mc complet et correctement écrit avec les tabulations .

Maintenant il reste à créer le fichier /etc/mail/reverstable :

g.durand@worldnet.fr admin

linux@worldnet.fr root

Ce fichier a le rôle inverse de genericstable, c’est à dire, convertir l’adresse email internet d’un compte utilisateur local vers le nom utilisateur (compte Linux).

Pour générer la base de données(reverstable.db) au format dbm, tapez :

makemap hash /etc/mail/reverstable < /etc/mail/reverstable

Et pour finir, il faut reconstruire le fichier de configuration et relancer sendmail, en tapant les commandes :

m4 /usr/lib/sendmail-cf/cf/sendmailconf.mc > /etc/sendmail.cf

kill `head -1 /var/run/sendmail.pid`

sendmail -bd -os

Ou utiliser votre script de configuration.

Les docs

Linux France : www.linux-france.org , un site de référence pour la configuration de Linux.

La documentation sur la Messagerie :www.linux-france.org/article/mail

La doc sur Sendmail www.linux-france.org/article/mail/sendmail/

Si vous utilisez une distribution Mandrake, vous trouverez un excellent document sur la configuration de sendmail à l’adresse : funix.free.fr/informatique/linux/

Le site de sendmail www.sendmail.org

La Doc sur Qmail www.linux-france.org/article/mail/qmail/

Le site de Qmail cr.yp.to/qmail.html , ftp://summersoft.fay.ar.us/pub/qmail/qmail-1.03/linux/

La Doc sur UUCP www.linux-france.org/article/connex/UUCP/denis-uucp/

Les HOWTOs : Mail-HOWTO UUCP-HOWTO Offline-Mailing-HOWTO

Les mini-HOWTOs : Sendmail+UUCP Sendmail-Address-Rewrite

Sont disponibles aux adresses : www.freenix.fr/unix/linux/HOWTO/ , ftp.lip6.fr/pub/linux/french/docs/HOWTO/

Les sources

La plupart des applications et utilitaires sont disponible sur les sites FTP de distribution Linux :

ftp.linux.tucows.com/pub/distributions/

ftp://sunsite.unc.edu/pub/Linux/distributions/

ftp.lip6.fr/pub/

ftp://fr.rpmfind.net/linux/contrib/libc6/i386/

Les agents de gestion et de distribution du courrier

ftp://sunsite.unc.edu/pub/Linux/system/mail/mua/

ftp://sunsite.unc.edu/pub/Linux/system/mail/mta/

Xfmail (MUA): Burka.NetVision.net.il/xfmail/xfmail.html , ftp://Burka.NetVision.net.il/pub/xfmail/

Tkrat (MUA): www.dtek.chalmers.se/~maf/ratatosk/ , ftp.md.chalmers.se/pub/tkrat/

Postilion (MUA): www.postilion.orgftp.falsehope.com/pub/postilion/

Balsa (MUA): www.balsa.net

M (MUA): mahogany.sourceforge.net , www.phy.hw.ac.uk/~karsten/M/

Pygmy (MUA): www.cs.uit.no/~kjetilja/Pygmy/

deliver (MDA): deliver.sourceforge.net

procmail (MDA): www.procmail.org , ftp.procmail.org/pub/procmail/

sendmail (MTA): www.sendmail.org

smail (MTA): ftp.planix.com/pub/Smail/

qmail (MTA): cr.yp.to/qmail.html

eXim (MTA): www.exim.org , ftp.exim.org/pub/exim/

5.00 avg. rating (90% score) - 1 vote