Sont présentées ici les installations des programmes implémentant les protocoles SMTP, POP3 puis QMTP. Les installations sans inetd se feront grâce à UCSPI.
Il faut remplacer la ligne de SMTP dans /etc/inetd.conf
par la ligne suivante (désactiver l'ancienne en la préfixant par une dièse):
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env \ tcp-env /var/qmail/bin/qmail-smtpd
root$ kill -HUP pid_de_inetd
Vous lirez avec profit la section
rcpthosts
sur le fichier de contrôle rcpthosts ainsi que
la section
contrôle de relayage sur le contrôle
de relayage.
Récupérer checkpassword sur
pobox.com/~djb/checkpwd.html
, le compiler puis l'installer dans /usr/local/sbin/.
Je signale au passage que pour compiler avec les shadows sous Linux,
vous serez sans doute amené à remplacer SHADOWLIBS=-lshadow par
SHADOWLIBS= -lcrypt dans le Makefile.
Remplacer la ligne POP3 du fichier /etc/inetd.conf
par celle-ci :
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup \ votre.host.name /usr/local/sbin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
root$ kill -HUP pid_de_inetd
/etc/services.
UCSPI signifie Unix Client-Server Program Interface. Un outil UCSPI est un programme qui sait communiquer avec un certain medium de communication (par exple TCP). Il fournit de plus deux descripteurs de fichiers, l'un pour lire et l'autre pour écrire sur le medium. On peut alors lui associer un programme qui lira et écrira sur ces descripteurs sans se soucier du medium. Celà permet de créer à partir d'un programme UNIX quelconque une application client/serveur sur le medium en question. L'avantage est que le programme ainsi enveloppé ne se soucie plus du medium qu'il utilise, c'est désormais le problème de l'enveloppe UCSPI.
Les outils UCSPI sont de deux types : les clients et les serveurs
Je vous conseille fortement la lecture du texte ucspi.txt de Dan Bernstein dont je me suis largement inspiré.
Un exemple est UCSPI-TCP écrit par Dan Bernstein qui est constitué de tcpclient et tcpserver. En gros, on peut dire qu'ils permettent de faire pour un port et un programme particulier ce que fait inetd à la différence qu'ils sont très performants et paramétrables. Voici l'url de UCSPI-TCP : pobox.com/~djb/ucspi-tcp.html.
UCSPI-TCP va se révéler très pratique dans le système qmail. Il permétra de transformer les programmes qmail-smtpd, qmail-qmtpd et qmail-pop3d qui ne connaissent rien à TCP en de véritables serveurs sur certains ports TCP indépendament d'inetd. On gagnera ainsi en configurabilité et surtout en performances pures.
TCPcontrol quand à lui est un contrôleur d'accès écrit par Dan Bernstein destiné à être utilisé avec UCSPI-TCP. C'est ce que l'on appelle un «TCP wrapper». Voir pobox.com/~djb/tcpcontrol.html. Il est à tcpserver ce que tcpd est à inetd. Consultez sa documentation pour en savoir plus. Je n'ai pas utilisé tcpcontrol dans la suite. Vous pouvez lire avec profit la FAQ de qmail qui explique comment s'en servir pour le port SMTP.
Pour ce faire, se procurer UCSPI-TCP sur
pobox.com/~djb/ucspi-tcp.html, compiler et
installer les binaires dans /usr/local/bin/.
Ensuite, il faut préfixer la ligne SMTP de
/etc/inetd.conf par une dièse et relancer le daemon inetd
par un
root$ kill -HUP pid_de_inetd
Puis il faut ajouter les deux lignes suivantes à la section start du script
/etc/rc.d/init.d/qmail :
/usr/local/bin/tcpserver -v -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd \ 2>&1 | /var/qmail/bin/splogger smtpd 3 & echo $! > /var/lock/subsys/qmail-smtpd
kill `cat /var/lock/subsys/qmail-smtpd` rm -f /var/lock/subsys/qmail-smtpd
Il faut se procurer UCSPI-TPC sur
pobox.com/~djb/ucspi-tcp.html
, compiler puis installer les binaires dans /usr/local/bin/.
De même, récupérer checkpassword si besoin sur
pobox.com/~djb/checkpwd.html
, le compiler puis l'installer dans /usr/local/sbin/.
Je signale au passage que pour compiler avec les shadows sous Linux,
vous serez sans doute amené à remplacer SHADOWLIBS=-lshadow par
SHADOWLIBS= -lcrypt dans le Makefile.
Ensuite, commenter la ligne POP3 dans /etc/inetd.conf en
la préfixant par une dièse et réinitialiser inetd par un
root$ kill -HUP pid_de_inetd
/etc/rc.d/init.d/qmail :
/usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-popup votre.host.name \ /usr/local/sbin/checkpassword /var/qmail/bin/qmail-pop3d Maildir & echo $! > /var/lock/subsys/qmail-pop3d
kill `cat /var/lock/subsys/qmail-pop3d` rm -f /var/lock/subsys/qmail-pop3d
/etc/services.
Il ne reste plus qu'à stopper puis relancer qmail.
C'est un nouveau protocole proposé par Dan Bernstein censé
remplacer SMTP, il est associé au port TCP 209.
Laissons à son auteur le soin de le présenter :
The Quick Mail Transfer Protocol (QMTP) is a replacement for the Simple Mail Transfer Protocol (SMTP). QMTP eliminates any need for end-of-line scanning between hosts with the same end-of-line convention. It features automatic pipelining and chunking, 8-bit transmission, prior declaration of the message size, and efficient batching. It is designed to be very easy to implement.
qmail bien sûr le supporte à travers le programme qmail-qmtpd qui se configure exactement comme qmail-smtpd.