qmail-1.03.tar.gz
ucspi-tcp-0.88.tar.gz
checkpassword-0.90.tar.gz
qmailadmin-1.2.0.tar.gz
vpopmail-5.4.0.tar.gz
Et de manière optionnelle:
ezmlm-0.53.tar.gz (sert pour les mailing list)
ezmlm-idx-0.42.tar.gz (sert pour les mailing lists)
autorespond-2.0.2.tar.gz (sert pour l'auto-répondeur)
syncdir-1.0.tar.gz (sert pour l'imap)
courier-imap-2.2.0.tar.bz2 (sert pour l'imap)
daemontools-0.76.tar.gz (sert pour l'imap)
/etc/tcp_smtp_pop
/etc/tcpserver_auto
/var/qmail/rc
/etc/init.d/smtp_perso
/etc/init.d/pop_perso
/usr/lib/courier-imap/etc/imapd
/etc/init.d/imap
/etc/init.d/qmail
Chacun de ces fichiers sera expliqué lorsque nous le rencontrerons ou l'utiliserons.
Notre système se basant sur qmail, il va falloir l'installer. Je ne vais évoquer que le cas où il s'agit de l'installation du premier logiciel d'envoie de mails du système, ou si le(s) précédent(s) ne servai(en)t pas.
Cette procédure ne change pas (ou pas beaucoup) si un serveur de mail était présent auparavant, il n'y aura que quelques etapes supplèmentaires à rajouter. Pour cela je vous renvoie vers la documentation (très exhaustive) fournie avec les sources de qmail.
Occupons nous de décompresser son archive
root@huats:# cd /opt/
root@huats:/opt# tar -zxvf qmail-1.03.tar.gz
Créons le repertoire racine de notre installation qmail.
root@huats:/opt# mkdir /var/qmail
Maintenant il faut être sur que les utilisateurs et les groupes nécessaires pour qmail seront présent lors de l'installation, nous allons donc nous occuper de ça maintenant.
root@huats:/opt# groupadd nofiles
root@huats:/opt# useradd -g nofiles -d /var/qmail/alias alias
root@huats:/opt# useradd -g nofiles -d /var/qmail qmaild
root@huats:/opt# useradd -g nofiles -d /var/qmail qmaill
root@huats:/opt# useradd -g nofiles -d /var/qmail qmailp
root@huats:/opt# groupadd qmail
root@huats:/opt# useradd -g qmail -d /var/qmail qmailq
root@huats:/opt# useradd -g qmail -d /var/qmail qmailr
root@huats:/opt# useradd -g qmail -d /var/qmail qmails
Le moment tant attendu de la compilation et de la création de l'arborescence du repértoire de qmail.
root@huats:/opt# cd qmail-1.03
root@huats:/opt/qmail-1.03# make setup check
La structure même de qmail (sans configuration avant compilation) fait qu'il n'y a presque aucune raison de recompiler son installation , puisque la pluspart de réglages se font post-compilation...Mais bien sur il y a une exception: le nom de domaine...
root@huats:/opt/qmail-1.03# ./config-fast votre.nom.de.domaine
root@huats:/opt/qmail-1.03# cd alias
root@huats:/var/qmail/alias# touch .qmail-postmaster
root@huats:/var/qmail/alias# touch .qmail-mailer-daemon
root@huats:/var/qmail/alias# touch .qmail-root
root@huats:/var/qmail/alias# chmod 644 alias/.qmail*
root@huats:/var/qmail/alias# cd /opt/qmail-1.03
Il y a une grosse différence au niveau du fichier du courrier local entre qmail et binmail (et à son travers sendmail): qmail va le mettre dans le fichier user/Mailbox alors que binmail lui effectue cette tache dans /var/spool/mail/user.
Enfin nous allons copier le fichier de lancement de qmail de manière à pouvoir autoriser son lancement. Si vous n'utilisez pas procmail, il faut faire:
root@huats:/opt/qmail-1.03# cp /var/qmail/boot/home /var/qmail/rc
Si vous utilisez procmail, il faut utiliser un autre fichier, la commande change un peu:
root@huats:/opt/qmail-1.03# cp /var/qmail/boot/proc /var/qmail/rc
Dès lors il ne reste plus qu'a lancer le système:
root@huats:/opt/qmail-1.03# /var/qmail/rc &
Les premières vérifications s'attacheront à voir que tout a bien été lancé...Rechercher dans syslog une ligne similaire à
qmail: status: local 0/10 remote 0/20
Un simple ps doit faire apparaitre les quatre daemons de qmail:
qmail-send, qmail-lspawn, qmail-rspawn et qmail-clean.
De plus un processus splogger qmail doit être présent.
Dès lors que tout est bien lancé, testons le comportement de cette installation.
root@huats:/opt/qmail-1.03# su - chrisImmédiatement vous devriez recevoir le mail dans la boite aux lettres de chris, et avoir une trace de ce mail dans syslog.
chris@huats:$ echo to: chris | /var/qmail/bin/qmail-inject
chris@huats:$ echo to: toto | /var/qmail/bin/qmail-injectVous devriez recevoir immédiatement dans la boite aux lettres de chris (/home/chris/Mailbox pour rappel), une notification comme quoi le mail n'a pas pu etre remis. De plus il doit y avoir dans syslog la trace de deux mails: le premier vers toto qui ne peut pas aboutir et le second vers chris.
chris@huats:$ echo to: docqmail@reponses.net |Si tout fonctionne (ce qui il faut bien l'avouer est nécessaire), au bout d'un temps assez court vous devriez voir apparaître ce message dans la boite aux lettres distante. Pour savoir quand vous pouvez regarder, encore une fois un tour du coté de syslog vous aidera: le temps de pause est celui entre starting delivery et success .
/var/qmail/bin/qmail-inject
chris@huats:$ echo to: POSTMasTER | /var/qmail/bin/qmail-injectLe mail qui vient juste d'être envoyé doit être accessible dans alias/Mailbox.
Les principaux tests viennent donc d'être effectués et réussis :-)
Pour terminer l'installation de qmail, à proprement parlé, je dois avouer que pour plus de transparence, je n'enlève pas sendmail de ma machine, mais par contre je vais remplacer les véritables fichiers de sendmail par ceux de qmail.
root@huats:# mv /usr/lib/sendmail /usr/lib/sendmail.vrai
root@huats:# mv /usr/bin/sendmail /usr/bin/sendmail.vrai
root@huats:# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
root@huats:# ln -s /var/qmail/bin/sendmail /usr/bin/sendmail
Continuons notre installation en essayant s'attacher à combler certains manques de qmail par l'ajout de programmes additionnels.
Pour avoir une meilleure gestion des connexions de notre futur système, il faut installer ucspi-tcp.
Son installation est très simple:
root@huats:# cd /opt/
Et la configuration n'est pas bien compliquée non plus. En fait il va falloir décider quels sont les services accessibles et par qui. Une sage décision est de n'autoriser l'envoie de mail que depuis le réseau local, qui lui est sensé etre sûr et ainsi ne pas agir comme un Open Relay vis à vis de la jungle Internet.
root@huats:/opt# tar -zxvf ucspi-tcp-0.88.tar.gz
root@huats:/opt/ucspi-tcp-0.88# make
root@huats:/opt/ucspi-tcp-0.88# make setup check
C'est le rôle du fichier /etc/tcp_smtp_pop
root@huats:/opt/ucspi-tcp-0.88# cat /etc/tcp_smtp_pop
192.168.:allow,RELAYCLIENT=""
:allow
Ce fichier employé seul, permet de se connecter sur la machine depuis n'importe où, en positionnant si l'on vient du réseau local la varibale RELAYCLIENT. Il interagira avec un autre fichier pour restreindre les destinataires.
A noter que cette manière d'autoriser les connexions est nécessaire si l'on veut pouvoir recevoir des mails. Sinon l'on décide de placer la commande ``deny'' pour toutes les connexions venant hors du réseau local, il refusera aussi les connexions visant à delivrer des mails aux boites aux lettres de la machine (virtuelle ou non).
Il faut également savoir que ce fichier ne sert pas tel quel. Il doit en effet être transformé dans le format cdb pour que tcpserver puisse l'utiliser, ce qui se fait en utilisant la commande tcprules.
Pour plus de commodité (et pour ne plus avoir à me souvenir cette commande) je me sers d'un script personel (tcpserver_auto) qui me transforme automatiquement mon fichier
/etc/tcp_smtp_pop dans le fichier /etc/tcp_smtp_pop.cdb désiré. Pour l'executer, il ne nécite pas de paramètres, il faut être dans le répertoire /etc.
src_docs/tcpserver_auto.tex
root@huats:/opt/ucspi-tcp-0.88# cd /etc
root@huats:/etc# chmod +x tcpserver_auto
root@huats:/etc# /etc/tcpserver_auto
Le systèmes étant prêt pour l'envoie de mail, il faut rajouter quelques éléments pour la reception. Commençons par gérer les mots de passe.
Installons donc checkpassword:
root@huats:/etc# cd /opt
root@huats:/opt# tar -zxvf checkpassword-0.90.tar.gz
root@huats:/opt# cd checkpassword-0.90
root@huats:/opt/checkpassword-0.90# make
root@huats:/opt/checkpassword-0.90# make setup check
On va tester notre installation immédiatement, pour voir si la gestion des mots de passe se fait correctement. le premier test est fait pour ne pas marcher :-) et consiste à donner un mot de passe erroné pour un utilisateur réel du système.
root@huats:/opt#
root@huats:/opt/checkpassword-0.90# cd ..
root@huats:/opt# /var/qmail/bin/qmail-popup blah /bin/checkpassword pwd
+OK <...@...>
user chris
+OK
pass toto
-ERR authorization failed
root@huats:/opt#
Si on refait la même chose avec un utilisateur valide de la machine et son mot de passe associé, alors le nom de son répertoire $home doit être fournit par le serveur.
root@huats:/opt# /var/qmail/bin/qmailpopup blah /bin/checkpassword pwd
+OK <...@...>
user chris
+OK
pass monpassword
/home/chris
root@huats:/opt#
A partir de ce stade on peut dire que le système est prêt envoyer et recevoir des mails. Mais nous allons continuer à installer quelques applications supplémentaires pour faciliter la gestion des domaines virtuels et des utilisateurs du serveur mail en cours d'installation. Pour cela la solution retenue (la plus simple à mon avis), fait intervenir 2 sortes de manipulations: une partie en mode texte (vpopmail) et une autre partie en mode graphique (qmailadmin).
Installons vpopmail: C'est ce qui permet de gérer les domaines, cela permet aussi de gérer les utiliateurs mais de manière bcp plus avancées que ce que l'on veut faire...et puis il y a l'interface graphique qui vient plus tard...
root@huats:/opt# groupadd -g 89 vchkpw
root@huats:/opt# useradd -g vchkpw -u 89 vpopmail
root@huats:/opt# mkdir /home/vpopmail
root@huats:/opt# chown vpopmail.vchkpw /home/vpopmail
root@huats:/opt# tar -zxvf vpopmail-5.4.0.tar.gz
root@huats:/opt# cd vpopmail-5.4.0
root@./configure - -enable-tcpserver-file=/etc/tcp_smtp_pop
- -disable-clear-passwd - -enable-roaming-users
- -enable-relay-clear-minutes=2
Normalement dès lors tout doit pouvoir tout être fait, en se servant uniquement de vpopmail, mais il existe une interface graphique (qmailadmin) qui permet de faire beaucoup de choses de manière propre et facile, alors autant l'utiliser...
Dans la version présentée ici je vous propose de ne pas se servir des possibilitées exotiques ce qui pour ma part va se résumer à ne pas installer le support pour les bases de données (bien qu'il puisse, notament, supporter MySQL, et Oracle), car tout ceci n'est qu'un à coté qui ne va pas (me) servir à gd chose si ce n'est à compliquer la chose et à rendre les opérations plus délicates...et surtout inutile pour un petit nombre d'utilisateurs. Dans le même soucis de simplicité nous n'allons pas, dans un premier temps, offrir la possibilité de gérer de manière efficace les listes de diffusion (grâce à ezmlm), ni celle d'avoir des autorépondeurs (en se servant cette fois de autorespond).
root@huats:/opt# tar -zxvf qmailadmin-1.2.0.tar.gz
root@huats:/opt# cd qmailadmin-1.2.0
root@huats:/opt/qmailadmin-1.2.0#
./configure\
- -enable-autoresponder-bin=n\
- -enable-ezmlmdir=n\
- -enable-cgibindir=/usr/lib/cgi-bin\
- -enable-htmldir=/var/www\
- -with-htmllibdir=/var/www/qmailadmin\
- -enable-modify-quota - -enable-modify-spam
root@huats:/opt/qmailadmin-1.2.0# make
root@huats:/opt/qmailadmin-1.2.0# make install-strip
Si par hasard vous désirez intégrer les options de mailing list ou les robots (pour faire l'autorespondeur), il est très simple de les activer.
Nous allons d'ailleurs nous intéresser à leur installation...
root@huats:/opt/# tar -zxvf autorespond-2.0.2.tar.gz
root@huats:/opt/autorespond-2.0.2# make
root@huats:/opt/autorespond-2.0.2# make install
root@huats:/opt/# tar -zxvf ezmlm-0.53.tar.gz
root@huats:/opt/# cd ezmlm-0.53
root@huats:/opt/ezmlm-0.53/# make
root@huats:/opt/ezmlm-0.53/# make man
root@huats:/opt/ezmlm-0.53/# make setup
Comme souvent, il va falloir tester ce que l'on vient de rejouter à notre système, c'est ce que nous allons faire immédiatement. Mais avant il faut bien veiller à ce que ezmlm-make et qmail-inject soient dans votre $PATH, sinon il faut respectivement rajouter
/usr/local/bin/ezmlm et /var/qmail/bin à ce dernier.
Nous allons effectuer quelques tests en mode utilisateur normal pour etre bien sur que notre installation de ezmlm fonctionne. Mais nous n'allons pas rentrer dans les détails de fonctionnement de la gestion des mailing listes, ce n'est pas l'endroit pour le faire, et je ne peux que vous encourager à fouiller le grand Internet pour trouver votre bonheur...
chris@huats:$ ezmlm-make listetest .qmail-listetest\
chris-listetest nom_du_serveur
chris@huats:$ ezmlm-sub testlist chris@nom_du_serveur
chris@huats:$ echo subject:test | qmail-inject\
chris-listetest@nom_du_serveur
chris@huats:$ ezmlm-list chris-listetest
- -enable-autoresponder-bin=/usr/local/bin/
Pour activer la gestion des autorépondeurs.
- -enable-ezmlmdir=/usr/local/bin/ezmlm/
Pour mettre en place la gestion des mailing lists.
Il ne reste plus qu'à recommencer l'installation de qmailadmin avec la nouvelle ligne pour le configure et suivre les étapes précédentes...
Voici donc les étapes pour avoir un serveur IMAP qui tourne parfaitement avec votre configuration actuelle.
root@huats:/opt# tar -zxvf syncdir-1.0.tar.gz .
Copier le fichier syncdir.c dans le répertoire source de qmail. Ainsi si vous avez suivi les répertoires proposés ici, il s'agit de faire:
root@huats:/opt# cp syncdir-1.0/syncdir.c /opt/qmail-1.03/
Dès lors compilons syncdir pour qu'il fonctionne avec qmail:
root@huats:/opt# cd qmail-1.03
root@huats:/opt/qmail-1.03# ./compile syncdir.c
root@huats:/opt/qmail-1.03# ./makelib libsyncdir.a syncdir.o
root@huats:/opt/qmail-1.03# cd ..
Enfin nous devons nous assurer que qmail utilise bien à chaque chargement cette nouvelle possibilité que nous venons de rajouter. Pour celà il y suffit de changer make-load.sh pour obtenir un résultat similaire (seule la dernière ligne est modifiée) src_docs/make-load.sh.tex
Il vous faudra juste sur votre système, les headers des librairies ssl et gdbm.
Sous debian, un simple apt-get install libssl-dev et libgdbm-dev suffit. Dès lors vous êtes prets.
root@huats:/opt# tar -jxvf courier-imap-2.2.0.tar.bz2 .
root@huats:/opt# cd courier-imap-2.2.0
root@huats:/opt/courier-imap-2.2.0# ./configure\
- -disable-root-check - -without-authpam\
- -without-authpwd - -without-authshadow\
- -without-authuserdb - -without-authpgsql\
- -without-authdaemon - -without-authcustom\
- -with-authvchkpw - -with-ssl - -without-userdb
root@huats:/opt/courier-imap-2.2.0# make
root@huats:/opt/courier-imap-2.2.0# umask 022
root@huats:/opt/courier-imap-2.2.0# make install-strip
root@huats:/opt/courier-imap-2.2.0# make install-configure
Une grande partie de la configuration de courier-imap se fait dans le fichier
/usr/lib/courier-imap/etc/imapd. Le point important est au niveau des méthodes d'authentification (et notament leur ordre), c'est à dire le module authvchkpw dans le champ
AUTHMODULES. Dans mon fichier de config (disponible dans l'archive). La configuration est:
AUTHMODULES="authvchkpw authuserdb authshadow authpwd"
Pour les autres champs, les valeurs initiales sont correctes.
Commençons par installer ces outils:
root@huats:/opt# tar -zxvf daemontools-0.76.tar.gz
root@huats:/opt# cd admin/daemontools-0.76
root@huats:/opt/admin/daemontools-0.76# package/install
Maintenant que les outils sont en place, nous allons nous occuper à mettre en place les répertoires necesaires aux différentes supervision que nous voulons effectuer.
root@huats:/opt# mkdir -p /var/qmail/supervise/imapd/log
root@huats:/opt# mkdir -p /var/log/qmail/imapd
root@huats:/opt# mkdir -p /var/log/qmail/pop3d
root@huats:/opt# mkdir -p /var/log/qmail/smtpd
root@huats:/opt# chown qmaill /var/log/qmail/imapd
root@huats:/opt# chown qmaill /var/log/qmail/pop3d
root@huats:/opt# chown qmaill /var/log/qmail/smtpd
Nous allons maintenant créer les fichiers de lancement de l'IMAP et du fichier de log associé.
root@huats:/opt# cp /opt/qmail/fichiers_config/imapd_run\
/var/qmail/supervise/imapd/run
root@huats:/opt# cp /opt/qmail/fichiers_config/imapd_log_run\
/var/qmail/supervise/imapd/log/run
root@huats:/opt# chmod +x /var/qmail/supervise/imapd/run
root@huats:/opt# chmod +x /var/qmail/supervise/imapd/log/run
Il faut pouvoir passer des variables d'environement pour que l'IMAP puisse fonctionner.
root@huats:/opt# mkdir /var/qmail/supervise/imapd/env
root@huats:/opt# chmod +x envconv.pl
root@huats:/opt# /opt/qmail/fichiers_config/envconv.pl <\
/usr/lib/courier-imap/etc/imapd
root@huats:/opt# ln -s /var/qmail/supervise/imapd /service
Désormais pour faire fonctionner l'IMAP, il suffit de rajouter le fichier de lancement correspondant dans les différents runlevels. Voici mon fichier /etc/init.d/imap. src_docs/imapd.tex
chris@huats:$ cd /opt/qmail-1.03
chris@huats:$ exit
D'ailleurs si vous voulez, et je vous encourage à le faire, vous pouvez faire la même chose avec une adresse mail que je consulte : docqmail@reponses.net...histoire que je sois au courant si des gens utilisent cette petite documentation...
Il ne me reste plus qu'à vous donner une petite notice explicative sur la manière (assez intuitive) de se servir de tout ça. Nous allons traiter de la partie pop/imap, puisque la partie smtp est plutot évidente: envoyez un mail (depuis le réseau local, souvenez-vous) à votre machine sur le port 25 et elle s'occupe de tout... Le plus simple que j'ai trouvé, consiste à faire fait intervenir 2 sortes de manipulations. En mode Texte et en mode Graphique.
root@huats:/opt/qmailadmin-1.0.5/# cd /home/vpopmail/bin/Les instructions à l'écran sont dès lors assez évidentes, puisqu'il ne demande que le mot de passe du postmaster de ce futur domaine (que l'on doit confirmer).
root@huats:/home/vpopmail/bin/# ./vadddomain <nom_du_domaine_à_ajouter>
A l'inverse c'est une opération similaire pour effacer des domaines virtuels, dont la commande est de la forme:
root@huats:/home/vpopmail/bin/# ./vdeldomain <nom_du_domaine_à_supprimer>La suppression se faisant automatiquement...
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html installation_serveur_mail.tex -split=0
The translation was initiated by Christophe Sauthier on 2004-10-30
Christophe Sauthier 2004-10-30