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: [email protected] » .
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 <[email protected]> .
(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: [email protected]
root: [email protected]
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) < [email protected] > 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: [email protected]
root
:0 Hw
* ^.*[Tt]o: [email protected]
admin
:0 Hw
* ^.*[Ss]ubject: Linux
linux
# *** Rediriger les messages ***
:0 c
* ^.*[Ss]ubject: Request
: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 »
#
echo « Testez maintenant sendmail avec une connexion Internet »
echo « Les réflecteurs de courrier sont : «
echo « <[email protected]> et <[email protected]> «
# 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 [email protected]
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 [email protected]
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 [email protected] 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 <[email protected]>
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 <[email protected]>
Message-Id: <[email protected]>
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 [email protected]
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]
RPFD:<[email protected]>
_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 <[email protected]>
8BITMIME
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 [email protected] 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 <[email protected]>; Mon, 18 Sep 2000 20:00:40 +0200 (MET DST)
> Return-Path: <[email protected]>
> 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 <[email protected]>; Mon, 18 Sep 2000 20:04:15 +0200 (CEST)
> Received: from tux1.linux.fr (IDENT:[email protected] [195.3.18.82])
> by m2.worldnet.net (8.9.3/8.9.3) with ESMTP id UAA26963
> for <[email protected]>; 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: <[email protected]>
> Date: Mon, 18 Sep 2000 19:53:51 +0200 (CEST)
> From: [email protected]
> Sender: root <[email protected]>
> Reply-To: [email protected]
> Subject: Test sendmail
> To: [email protected]
> cc: admin <[email protected]>
> 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) [email protected], vous avez ajouté une ligne » duduche: [email protected] » dans /etc/genericstable .
Alors ! Que va-t-il se passer lorsque vous allez envoyer un message à l’utilisateur « duduche » ?
Sendmail va utiliser l’adresse <[email protected]> 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 :
[email protected] admin
[email protected] 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/
Pas de commentaire