Mes remerciements � tous les citoyens du net qui m'ont aid�, particuli�rement Tony Nugent ( tony@trishul.sci.edu.au), et David Summers ( david@summersoft.fay.ar.us), ainsi que l'�quipe de S.u.S.E GmBH ( http://www.suse.com) qui ont rendu l'installation de Linux tellement plus ais�e, et enfin les auteurs des excellents programmes cit�s plus haut.
Qu'est-ce que qmail et pourquoi devrions-nous l'utiliser ? Voici le "baratin publicitaire" de son auteur, Dan Bernstein :
qmail est un agent de transport du courrier (MTA, Mail Transporter Agent), s�curis�, s�r, efficace et simple. Il est con�u pour remplacer compl�tement le syst�me sendmail-binmail sur les stations UNIX connect�es � Internet.
S�curis� : La s�curit� n'est pas seulement un but � atteindre, c'est une exigence absolue. La distribution du courrier est d'une importance critique pour les utilisateurs : elle ne doit pas �tre interrompue, alors elle doit �tre compl�tement s�curis�e. (C'est la raison pour laquelle j'ai commenc� � �crire qmail : je ne pouvais plus supporter les trous de s�curit� de sendmail et des autres MTAs)
S�r : La philosophie de qmail garantit qu'un message, une fois accept� dans le syst�me, ne sera jamais perdu. De plus, qmail supporte maildir, un nouveau format de bo�te aux lettres utilisateur tr�s solide. Les maildirs, � la diff�rence des fichiers mbox ou des dossiers MH, ne seront pas corrompus si le syst�me plante pendant la distribution. Encore mieux, non seulement un utilisateur peut lire son courrier en s�curit� sur NFS (Network File System), mais en plus un nombre illimit� de clients NFS peuvent lui distribuer du courrier au m�me moment.
Efficace : Sur un Pentium sous BSD/OS, qmail peut facilement supporter 200000 messages locaux par jour -- il s'agit de messages distincts inject�s et distribu�s dans les bo�tes aux lettres dans un test r�el -- ! Malgr� le fait que les livraisons lointaines soient limit�es par la lenteur des DNS (Domain Name Services : serveurs de noms de domaine) et de SMTP (Simple Mail Transfer Protocol : protocole simple de transfert de courrier), qmail d�passe 20 envois simultan�s par d�faut, de sorte qu'il permet de g�rer tr�s rapidement des mailing-lists (C'est la raison pour laquelle j'ai fini qmail : je devais mettre en place une grosse liste de diffusion).
Simple : Qmail est beaucoup plus petit que n'importe quel autre MTA. Voici quelques raisons :
Rempla�ant pour sendmail : qmail supporte le masquerading h�te et utilisateur, la dissimulation compl�te de l'h�te, les domaines virtuels, les null-clients, les commandes de relais, les enregistrements � double rebond, les programmateurs de relance de messages ind�pendants... En r�sum�, qmail n'est pas en reste c�t� modernit� des caract�ristiques. Qmail inclut �galement une fonction de "couverture", c'est-�-dire qu'il se fait passer pour sendmail, afin d'�tre utilis� de mani�re transparente par votre agent utilisateur courrier (MUA, Mail User Agent).
Suivez exactement les instructions du fichier INSTALL.
Remarques :
Prenez le temps de lire compl�tement la documentation, s'il vous
pla�t. Les num�ros suivants se r�f�rent aux �tapes d'installation du
fichier INSTALL
sus-cit�.
INSTALL.ids
.
./qmail-makectl
ne fonctionne pas sur mon
syst�me. J'ai ajout� mon nom de domaine (mickey.n.eunet.de)
manuellement dans /var/qmail/control/me
.
inetd.conf
(Je l'avais mal �crit (exemple :
qmail-smpt), ce qui m'a pris deux jours � trouver :() ).smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
Dan Bernstein a fourni un paquetage pour l'envoi d'e-mail en attente vers un FAI via dial-in. Ce paquetage est disponible sur son site sous le nom de serialmailxxx.
Installez ce paquetage comme d�crit dans la page de manuel (Merci � Rupert Mazzucco ( maz@pap.univie.ac.at), cela marche du tonnerre !
maildir2smtp - transmet un maildir par SMTP
maildir2smtp est con�u pour transf�rer des messages par le biais
d'une connection SLIP ou PPP. Pour mettre cela en place en fin de
d�connexion, cr�ez un nouveau maildir en alias :
# maildirmake ~alias/pppdir chown -R alias ~alias/pppdir
Mettez
:alias-ppp
dans control/virtualdomains et
./pppdir/
dans ~alias/.qmail-ppp-default. N'oubliez pas l'anti-slash dans
pppdir/. Alors dans le script de d�marrage PPP, mettez
maildir2smtp ~alias/pppdir alias-ppp- $IP `hostname`
en rempla�ant $IP avec l'adresse IP distante.
Remarques :
En addition � cela, j'ai �galement remplac� le fichier
/mh-6.8.4/mts/sendmail/smail.c
par le
mh-qmail-smail.c
de Dan Bernstein.
Voici � quoi ressemble mon fichier mh-6.8.4/conf/MH
:
bin /usr/bin/mh
etc /usr/lib/mh
#mail
#mandir /usr/man
#manuals standard
chown /bin/chown
#cp cp
#ln ln
#remove mv -f
cc gcc
ccoptions -traditional -O2 -m486 -D_NFILE='getdtablesize()'
-DSIGEMT=SIGUSR1
curses -lncurses
#ldoptions -s
#ldoptlibs
lex flex
#oldload off
#ranlib on
mts sendmail
#mf off
#bboards off
#bbdelivery off
#bbhome /usr/spool/bboards
pop on
popdir /usr/lib/mh
sharedlib sys5
slflags -fPIC
slibdir /usr/lib
mailgroup mail
signal void
sprintf int
#editor prompter
#debug off
#regtest off
options ATHENA
options BIND
options DPOP
options DUMB
options FCNTL
options MHE
options MHRC
options MIME
options MORE='"/usr/bin/less"'
options OVERHEAD
options POP2
options POPSERVICE='"pop3"'
options RENAME
options RPATHS
options RPOP
options SOCKETS
options SVR4
options SYS5
options SYS5DIR
options TERMINFO
options UNISTD
options VSPRINTF
Remarques :
Dominic Mitchell(hdm@demon.net) a �crit le 13 Juin 1997 :
"Pas tout � fait. Avec cette option, MH converse toujours avec SMTP,
mais juste au travers d'un pipe et non au travers d'un r�seau. Vous
devez n�cessairement avoir dans votre fichier
/.mh_profile
, une ligne qui dit :
postproc:/usr/local/nmh/lib/spost
ou l'endroit quel qu'il soit o� il est conserv� dans votre syst�me. Cela transmettra directement ce message � sendmail de mani�re traditionnelle. Vous utilisez qmail bien entendu, alors sendmail sera en fait le script de couverture de qmail, mais c'est juste ce qu'il faut." Merci Dominic.
Comme qmail distribue le courrier dans le r�pertoire home
(~/Mailbox
), j'ai ajout� cela � mon mtstailor
:
localname: mickey
localdomain: n.eunet.de
mmdfldir:
mmdflfil: Mailbox
uucpldir:
uucplfil:
mmdelim1: \001\001\001\001\n
mmdelim2: \001\001\001\001\n
mmailid: 0
umincproc:
lockldir:
sendmail: /usr/lib/sendmail
Remarques :
/usr/lib/sendmail
est un lien vers le script
de couverture de qmail, dans /var/qmail/bin
.
servers: serveur_de_mail.compagnie.pays
Voici mon fichier .mh_profile
:
Path: Mail
draft-folder: drafts
unseen-sequence: unseen
AliasFile: /home/rdn/.mh_aliases
send: -msgid
comp: -form /home/rdn/.mymh-components
MailDrop: /home/rdn/Mailbox
Remarques :
J'ai d�cid� d'utiliser fetchmail parce que mon syst�me Linux est utilis� par plusieurs personnes diff�rentes (ma famille :-)) et fetchmail transmet le courrier sur le port SMTP, o� qmail le prend en charge.
L'installation se fait sans probl�mes, le d�p�t multiple (Multi-drop) fonctionne avec le fichier .fetchmailrc suivant :
poll PersonalMail.Germany.EU.net
protocol pop3
username myname
password mypassword
# Les deux lignes suivantes s'occupent du multidrop
localdomains mydomain.de
is * here
# T2 des �tats de la FAQ de fetchmail, dont qmail a besoin
forcecr
C'est mon gestionnaire de mail pr�f�r�. Je l'adore.
Il y a un seul probl�me : la plupart des paquetages TCL/TK pr�-compil�s ont l'option security activ�e. Le fichier script .xserverrc.secure, qui �tait fourni avec la S.u.S.E r�sout ce probl�me :
#!/bin/sh
#
# D�placez ce fichier vers ~/.xserverrc, si vous
# ne voulez pas que tout le monde puisse acc�der � votre
# serveur X
#
if [ -x /usr/bin/keygen ]; then
if [ ! -x /usr/bin/hostname -a ! -x /bin/hostname \
-a ! -x /usr/bsd/hostname ];
then
echo "startx: can't get my hostname - exiting"
exit 1
else
host=`hostname`
fi
xauth add $host:0 . `/usr/bin/keygen`
sleep 2
xauth add $host/"unix":0 . `/usr/bin/keygen`
exec X :0 -auth .Xauthority $*
else
exec X :0 $*
fi
La FAQ de qmail donne cette commande :
Dans /.qmail
, ajouter
| preline procmail
La version 3.11pre7 a chang� la variable Boite aux Lettres d�finie par
d�faut. Avant, cela se trouvait dans config.h
; c'est
maintenant dans src/authenticate.c
:
#define MAILSPOOLHOME "/Mailbox" /* regarde l'ent�te / */
/* d�livre � $HOME/Mailbox */
J'ai r�uni quelques trucs, extraits des forums comp.mail.mh
et comp.mail.misc
, dans un fichier
.procmailrc
. Merci � tous !
# UN EXEMPLE DE FICHIER .PROCMAILRC POUR LES DEBUTANTS
# Ecrit par Catherine Hampton <ariel@best.com>
# Version 1.1
# Mis � jour le 25/01/98
#
# D�pos� dans le Domaine Public
#
#
# FIXER LES VARIABLES
# Variables internes
# Ce qui suit a �t� modifi� par rdn le 03/03/1998
# Tout le monde dit que la variable SHELL est essentielle
SHELL=/bin/sh #Shell utilis� pour lancer procmail.
#Soyez s�r que cela pointe vers la
#version de sh de votre syst�me. NE
#LUI SUBSTITUEZ PAS un autre shell
#sauf si vous connaissez bien UNIX
LINEBUF=4096 #N�cessaire pour �viter � Procmail de
#s'�touffer sur des longs champs "destinataires"
#ou sur des instructions concernant la mani�re de
#traiter des e-mails particuliers
PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/mh:/usr/lib/mh:
#Path pour vos programmes -- il vaut mieux
#probablement le laisser ainsi.
VERBOSE=off #Mettez-le � "on" si vous essayez un nouveau
#champ "destinataire" afin que Procmail puisse
#enregistrer litt�ralement chaque �tape.
#NE LE LAISSEZ PAS INDEFINIMENT, sinon cela
#cr�e d'�normes fichiers-journaux (logfiles)
# Programme par d�faut & situation des fichiers
MAILDIR=$HOME/Mail #Vous devriez vous assurer de l'existence de
#cela.
DEFAULT=$HOME/Mailbox #Boite de r�ception par d�faut pour les
#utilisateurs de shell2-5 sur Internet
#Remplacez-la par la valeur correcte de
#votre syst�me.
LOGFILE=$MAILDIR/procmail.log #L'emplacement des fichiers log. Recommand�,
#autrement les erreurs vous seront envoy�es
#par e-mail :/
FORMAIL=/usr/bin/formail #Pratique pour les champs de r�ponse auto-
#matique (autoreply recipes). Si vous n'�tes
#pas sur Internet, modifiez cela avec le
#chemin de votre version de formail.
SENDMAIL=/usr/sbin/sendmail #Pratique pour les champs de r�ponse auto-
#matique (autoreply recipes). Si vous n'�tes
#pas sur Internet, modifiez cela avec le
#chemin de votre version de sendmail.
Procmail est un logiciel excellemment bien document�. Lisez les pages
de manuel afin de trouver des exemples pour cr�er votre fichier
.procmailrc
.
J'inclus cela alors que cela n'a rien � voir avec qmail ou MH. Mais sans une connexion PPP vers un FAI, il n'y a pas de courrier �lectronique du tout. J'ai eu quelques probl�mes pour faire fonctionner ma connexion ISDN. La distribution S.u.S.E propose une configuration pour ISDN, mais je voulais quelque chose de plus simple. Ce qui est pr�sent� ici a �t� adapt� des scripts de Bernhard Hailer (Merci, vraiment, merci !)
Le fichier rc.config
suivant charge les modules n�cessaires pendant
l'initialisation :
#!/bin/bash
# Ceci est adapt� du vieux script de Bernhard Hailer
LOCAL_NUMBER="91311234" # num�ro de t�l�phone local. 091311234
REMOTE_NUMBER="0911123456" # num�ro de t�l�phone du FAI
LOCAL_IP="192.168.0.99" # J'ai une adresse IP dynamique alors ce
REMOTE_IP="195.112.123.11" # sera la passerelle de votre FAI
DEVICE="ippp0"
SYSPATH="/sbin"
ISDNCTRL="$SYSPATH/isdnctrl"
case "$1" in
start)
# turn on isdn
insmod /lib/modules/2.0.33/net/slhc.o
insmod /lib/modules/2.0.33/misc/isdn.o
sleep 1
# load the hisax module
insmod /lib/modules/2.0.33/misc/hisax.o
id=Tel0 type=5 protocol=2 irq=10 io=0x300
echo "starting isdn4linux"
# global
$ISDNCTRL verbose 0
$ISDNCTRL addif $DEVICE # cr�e une nouvelle interface
$ISDNCTRL addphone $DEVICE in $REMOTE_NUMBER
$ISDNCTRL addphone $DEVICE out $REMOTE_NUMBER
$ISDNCTRL eaz $DEVICE $LOCAL_NUMBER
$ISDNCTRL l2_prot $DEVICE hdlc
$ISDNCTRL l3_prot $DEVICE trans
$ISDNCTRL encap $DEVICE syncppp
$ISDNCTRL huptimeout $DEVICE 300
$ISDNCTRL chargehup $DEVICE off
$ISDNCTRL secure $DEVICE on
$SYSPATH/ifconfig $DEVICE $LOCAL_IP pointopoint $REMOTE_IP metric 1
$SYSPATH/route add default $DEVICE
$SYSPATH/ipppd /dev/ippp0 file /etc/ppp/options.ipppd &
$SYSPATH/route del default
;;
stop)
#turn off isdn
rmmod hisax.o
sleep 1
rmmod isdn.o
rmmod slhc.o
echo "Shutting down isdn4linux"
$ISDNCTRL delif ippp0
;;
*)
echo "Usage: $0 (start|stop)"
exit 1
;;
esac
J'utilise le script suivant pour appeler l'ext�rieur, il est nomm� tout simplement isdn on|off.
#!/bin/bash
# Ceci est adapt� du vieux script de Bernhard Hailer
IP_ADDRESS="195.112.123.11"
case "$1" in
on)
echo "Calling ippp0"
/sbin/isdnctrl dial ippp0
# la pause est importante car cela donne � PPP le temps de s'installer
echo "Sleep for 8s for PPP handshake"
sleep 8s
/sbin/route add default ippp0
echo "line open - checking...."
# v�rifie si la n�gociation PPP est r�ussie :
set `ping -qc3 -i1 $IP_ADDRESS 2>/dev/null | grep transmitted`
if [ $4 -gt 0 ];
then
echo "succeeded."
echo "Starting fetchmail daemon"
/usr/bin/fetchmail -d 600 -k -v -a -L /var/log/fetchmail
echo "Flushing mail queue...."
/usr/local/bin/serialmail/maildir2smtp
~alias/pppdir alias-ppp- mail.server.ip.no `hostname`
else
echo "failed!"
/sbin/isdnctrl hangup ippp0
fi
;;
off)
echo -n "Shutting down fetchmail daemon"
/usr/bin/fetchmail --quit
/sbin/isdnctrl hangup ippp0
/sbin/route del default # and delete route
echo "You're off line"
;;
*)
echo -e "\aUsage:"
echo "isdn on"
echo "isdn off"
;;
esac
La portion suivante est le fichier d'options du d�mon ipppd,
/etc/ppp/options.ipppd
:
# Bas� sur :
# Klaus Franken, kfr@suse.de
# Version: 27.08.97 (5.1)
#
# Ce fichier est une copie par YaST du fichier /etc/ppp/ioptions.YaST
# vers le fichier options.<device>
user "myuserid"
# le nom de mon syst�me (only for CHAP !)
# name my_system_name
# accepte les adresses IP transmises par son homologue
# utilis� avec les adresses IP dynamiques
ipcp-accept-local
ipcp-accept-remote
noipdefault
# essaie d'obtenir l'adresse IP de l'interface
# option sp�cifique � ipppd (contrairement � pppd)
# utilis� seulement avec des adresses IP statiques
#useifip
# d�sactive toutes les compressions d'en-t�tes
-vj
-vjccomp
-ac
-pc
-bsdcomp
# parfois, vous pouvez en avoir besoin
#noccp
# unit� de r�ception maximale (mru, max receive unit)
mru 1524
# unit� de transmission maximale (mtu, max transmit unit)
mtu 1500
# Si la machine est un serveur, forcez l'authentification en d�commentant
# l'une des lignes suivantes. Toutefois, si la machine est un client, faire
# cela emp�che la r�ussite de la connexion (message "peer refused to authenticate").
# Alors d�commentez SEULEMENT sur un serveur.
# "+pap" / "+chap" NUR AKTIVIEREN, WENN DIES EIN SERVER IST!!!
#+pap
#+chap
# Si vous avez des probl�mes avec la liaison (pas de r�ponse du premier
# paquet-lcp), essayez de diminuer le d�lai de r�-essai (retry-cycle).
# Fix� par d�faut � 3 secondes, essayez par exemple 2 secondes
# lcp-restart 2
Paquetages requis :
Le net est toujours en perp�tuel mouvement, aussi est-il un peu utopique de donner des sources fiables � 100%. N�anmoins, cela ne mange pas de pain...
L'habituel sermon : "Pas de garanties, pas de remboursements ; utilisez � vos propres risques."
Est-ce que quelq'un a fait fonctionner MH avec Maildi r? Je n'ai pas essay� -- le principe de ne pas bloquer un syst�me qui tourne bien. Si oui, �crivez-moi vos informations pour une inclusion dans la prochaine version de ce document.