<guylhem at oeil.qc.ca>
.<gacquer at neuronnexion.fr>
et Dimitri Ara <dimitri.ara at mail.dotcom.fr>
.Pour envoyer un courrier �lectronique � une personne mentionn�e dans ce document, remplacer le at dans l'adresse �lectronique par un @.
Cette conversion est simple pour un humain, mais pas pour un outil automatique de r�colte d'adresses ; c'est par cons�quent utile pour prot�ger nos g�n�reux contributeurs des courriers non sollicit�s.
Le but de ce document est de r�pondre � quelques-uns des commentaires et des questions qui semblent correspondre aux � questions fr�quemment pos�es � (FAQ) sur les logiciels de courrier �lectronique sous Linux en g�n�ral et aux versions des distributions RedHat et Debian en particulier.
Des nouvelles versions (NDT : en anglais) de ce document seront post�es r�guli�rement sur comp.os.linux.announce, comp.answers et mail.answers. Elles seront �galement ajout�es aux diff�rents sites ftp anonymes qui archivent de tels documents comme par exemple sunsite.unc.edu.
De plus, vous pourrez trouver ce document sur la page du Linux Documentation Project.
Je suis int�ress� par toute r�action, qu'elle soit positive ou n�gative, � propos du contenu de ce document. N'h�sitez pas � me contacter si vous trouvez des erreurs ou de s�rieux oublis.
Je lis mais ne r�ponds pas forc�ment � tous le courrier �lectronique que je re�ois. Les suggestions d'am�liorations seront examin�es et trait�es en fonction de mon temps, du bien fond� de la requ�te et de ma pression art�rielle :-)
Les remarques d�sobligeantes et les courriers incendiaires seront
exp�di�es vers /dev/null
, ce n'est donc pas la peine de vous
casser la t�te.
Les remarques concernant le format actuel de ce document doivent �tre
adress�es au coordinateur des HOWTO : Tim Bynum (<howto at wallybox.cei.net>
).
Le Mail-Administrator HOWTO est sous le copyright de Guylhem Aznar.
Il est distribu� sous les termes de la licence LDP. Pour toutes questions,
veuillez contacter le coordinateur des HOWTO Linux � l'adresse
<linux-howto at sunsite.unc.edu>
.
Bien s�r, je d�nie toute responsabilit� quant au contenu de ce document. L'utilisation des concepts, des exemples et de tout autre contenu de ce document est enti�rement vos propres risques.
Il existe un Mail-User-HOWTO qui aborde le c�t� utilisateur du courrier �lectronique.
Il est maintenu par Eric S. Raymond ; vous pouvez le trouver sur metalab.unc.edu.
Il n'y a rien de sp�cifique � Linux (ce qui n'a pas toujours �t� le cas) dans la configuration et l'utilisation de logiciels de messagerie. De ce fait, vous n'aurez certainement jamais � poster de questions relatives au courrier �lectronique dans le forum de discussion g�n�ral fr.comp.os.linux.configuration.
Ne postez dans la hi�rarchie fr.comp.os.linux que si votre question est vraiment sp�cifique � Linux comme par exemple � Avec quelles options le binaire sendmail de la Debian 1.2 est-il compil� ? � ou � Le smail 5.0 de RedHat plante quand je le lance �.
Laissez-moi le redire.
Il n'y a plus aucune raison pour poster une question sur les courriers �lectroniques dans la hi�rarchie fr.comp.os.linux. Poster dans fr.comp.mail qui est le forum ad�quat. Vous y trouverez des r�ponses � toutes vos questions.
Si vous postez dans fr.comp.os.linux.* pour une question non sp�cifique � Linux, vous �tes au mauvais endroit. Les experts du courrier �lectronique tra�nent sur les forums indiqu�s ci-dessus et ne n'utilisent g�n�ralement pas Linux. Poster dans la hi�rarchie Linux une question non sp�cifique � Linux est une perte de temps pour tout le monde.
En plus de fr.comp.os.mail, il existe d'autres forums anglais plus sp�cifiques. Leur nom sont explicites :
comp.mail.elm Le logiciel de courrier �lectronique elm. comp.mail.mh Le logiciel Rand Message Handling. comp.mail.mime Multipurpose Internet Mail Extensions. comp.mail.misc Groupe g�n�ral sur le courrier �lectronique. comp.mail.multi-media Le courrier �lectronique multim�dia. comp.mail.mush Le Mail User's Shell (MUSH). comp.mail.sendmail L'agent sendmail de BSD. comp.mail.smail L'agent de courrier �lectronique smail. comp.mail.uucp Le courrier �lectronique dans un environnement uucp.
Il existe plusieurs listes de diffusion � propos de sendmail, smail et qmail.
Vous pouvez trouver les adresses dans
/usr/doc/celui_que_vous_avez_choisi
.
De nombreuses autres excellentes informations sont disponibles dans les autres HOWTO Linux et via le Projet de documentation Linux.
En particulier, vous pourriez jeter un oeil � :
Voil� une liste non exhaustive de livre qui peuvent vous aider :
Nous allons maintenant nous int�resser au flux d'informations qui se produit classiquement quand deux personnes communiquent par courrier �lectronique. Supposons qu'Alice, sur sa machine paysdesmerveilles.com veuille envoyer un courrier �lectronique � Bob, sur sa machine dobbs.com. Les deux machines sont connect�es � l'Internet.
Tout d'abord il faut savoir qu'un courrier �lectronique est divis� en deux parties s�par�es par une ligne vide : les ent�tes et le corps. Les ent�tes contiennent la source et la destination du courrier, le sujet, la date d'envoi et d'autres informations utiles. Le corps est le contenu du message. Voici un exemple :
From: "Alice" <[email protected]> Message-Id: <[email protected]> Subject: Avez-vous vu mon lapin blanc ? To: [email protected] (Bob) Date: Thu, 13 Nov 1997 12:04:05 -0500 (EST) Content-Type: text Je suis extr�mement pr�occup�e. J'ai peur qu'il ait chut� dans un trou. -- >>alice>>
La disposition et le sens des ent�tes sont d�finis dans un standard Internet : RFC822.
Voici un diagramme du processus entier (j'en expliquerai ensuite toutes les �tapes et la terminologie) :
+--------+ +--------+ +-------+ compose | | appelle | | | Alice |--------->| MUA |--------->| MTA |:::>::::: +-------+ |appelant| |appelant| :: sur la +--------+ +--------+ :: machine :: appelante ....................................................................... SMTP :: ::::::::::::::::::::::::::::<:::::::::::::::::::::::::::: :: :: +---------+ +-----+ +-------+ :: | | appelle | | distribue � | bo�te | ::::>| MTA |--------->| LDA |===============>| de | sur la |recevant | | | | Bob | machine +---------+ +-----+ +-------+ recevante | | | | +----------------<-------------+ | | | +-----------+ +--------+ | | signaleur | | MUA de |<---------+ | de Bob | | Bob | +-----------+ +--------+ | | | +-----+ | +----->| Bob |<----+ +-----+
Pour envoyer un courrier, Alice se sert d'un programme appel� un agent d'utilisateur de courrier (ou MUA pour Mail User Agent). L'agent d'utilisateur de courrier est ce que l'utilisateur appellerait le � lecteur de courrier � ; il aide � composer le message, g�n�ralement en appelant l'�diteur de votre choix. Apr�s avoir appuy� sur le bouton envoyer, Alice n'interviendra plus dans le processus. Plus tard dans ce HOWTO, nous examinerons les lecteurs de courriers les plus populaires.
L'agent utilisateur de courrier utilis� par Alice confie imm�diatement son message � un programme appel� agent de transport de courrier (ou MTA pour mail transport agent)/. En g�n�ral, ce programme sera sendmail, bien que quelques autres agents de transport deviennent de plus en plus populaire et puissent faire leur apparition dans de futures distributions Linux. Plus loin dans ce HOWTO, nous examinerons �galement le panorama des agents de transport.
Le travail de l'agent de transport est d'envoyer le courrier � l'agent de transport de la machine de Bob. Il trouve la machine de Bob en analysant l'ent�te To et en trouvant dobbs.com � la droite de l'adresse de Bob. Les m�canismes par lesquels s'effectue cette connexion sont un tout autre sujet ; dans le cadre de notre explication, retenez seulement que cette connexion est une mani�re pour l'agent de transport d'Alice d'envoyer des commandes textes � la machine de Bob et recevoir de r�ponses � ces commandes.
Les commandes de l'agent de transport ne vont pas dans un shell. � la place, elles sont dirig�s vers un port de service sur la machine de Bob. Un port de service est une sorte de point de rendez-vous, une endroit fixe o� un serveur �coute les requ�tes entrantes. Les ports de service sont num�rot�s, et l'agent de transport de courrier d'Alice sait qu'il doit parler sur le port 25 de la machine de Bob pour envoyer le courrier.
Sur le port 25, la machine de Bob a son propre agent de transport qui �coute les commandes (probablement un autre sendmail). L'agent de transport d'Alice dialoguera avec celui de Bob en utilisant le protocole Simple Mail Transfer Protocol (ou SMTP). Voici � quoi un dialogue SMTP ressemble. Les lignes envoy�es par la machine d'Alice sont marqu�s par un E:, celle de la machine de Bob par un R:.
E: MAIL FROM:<[email protected]> R: 250 OK E: RCPT TO:<[email protected]> R: 250 OK E: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> E: From: "Alice" <[email protected]> E: Message-Id: <[email protected]> E: Subject: Avez-vous vu mon lapin blanc ? E: To: [email protected] (Bob) E: Date: Thu, 13 Nov 1997 12:04:05 -0500 (EST) E: Content-Type: text E: E: Je suis extr�mement pr�occup�e. J'ai peur qu'il ait chut� dans un trou. E: -- E: >>alice>> E: . R: 250 OK
D'habitude, une commande SMTP est une simple ligne de texte, et il en va de m�me pour la r�ponse. La commande DATA est une exception : apr�s avoir lu la commande DATA, le serveur SMTP accepte toutes les lignes jusqu'� qu'il voit une ligne ne contenant qu'un point. (SMTP est d�fini dans le RFC821.)
Arriv� � ce point, l'agent de transport de courrier de Bob a le message d'Alice. Il va ajouter un ent�te au message qui ressemble � quelque chose de ce genre :
Received: (from [email protected]) by mail.dobbs.com (8.8.5/8.8.5) id MAA18447 for [email protected]; Thu, 13 Nov 1997 12:04:05 -0500
Cela permet de suivre les messages � la trace en cas d'erreur (parfois un message est relay� par plus d'un serveur et contiendra plusieurs ent�tes de ce type). L'agent de transport de Bob enverra le message � un agent de distribution local (ou LDA pour local delivery agent). Sur les syst�mes Linux, l'agent de distribution est souvent un programme appel� procmail, bien qu'il en existe d'autres.
Le travail de l'agent de distribution local est d'ajouter le message � la bo�te aux lettres de Bob. Il est s�par� de l'agent de transport pour que les deux programmes soient plus simples et pour que l'agent de transport puisse se concentrer sur la partie Internet du processus, sans avoir � se pr�occuper des d�tails locaux comme de savoir o� se trouvent les bo�tes aux lettres des utilisateurs.
La bo�te aux lettres de Bob sera normalement un fichier appel�
/usr/spool/mail/bob
ou /var/mail/bob
. Lorsque Bob lit
son courrier, il lance son propre agent d'utilisateur de courrier
qui regarde et �dite ce fichier.
Un autre type de programme joue un r�le important dans la cha�ne de distribution du courrier �lectronique, bien qu'il n'envoie pas ou ne lise pas de courrier. C'est le signaleur de courrier, un programme qui surveille votre bo�te aux lettres et vous signale l'arriv�e de chaque nouveau courrier �lectronique.
Le signaleur de courrier original �tait compos� de deux programme Unix appel�s biff(1) et comstat(8). Biff est une interface utilisateur de comstat qui vous permet d'activer le service comstat. Quand ce service est activ�, l'ent�te des nouveaux courriers est redirig� vers votre terminal d�s qu'ils arrivent. Cette commodit� a �t� d�velopp�e pour les utilisateurs de programmes orient�s lignes sur �crans cathodiques ; ce n'est pas vraiment une bonne id�e dans les environnements d'aujourd'hui.
La plupart des shells int�grent des facilit�es �quivalentes, mais de mani�re moins intrusive (en �mettant un message juste avant l'invite lorsqu'un nouveau message est d�tect�). En g�n�ral, on active cette fonction en d�finissant une variable d'environnement document�e dans la page de manuel du shell. Pour les shells de la famille sh/ksh/bash, regardez les variables MAIL et MAILPATH.
Les syst�mes utilisant X sont livr�s avec l'un des nombreux petits gadgets qui v�rifient p�riodiquement si de nouveaux courriers sont arriv�s, et vous le signale par des messages sonores et visuels. Le plus vieux et le plus utilis� est appel� xbiff ; si notre syst�me Linux a un bureau X pr�configur�, xbiff est probablement dessus. Reportez-vous � la page de manuel xbiff(1) pour plus de d�tails.
Si vous avez lu attentivement, vous avez peut-�tre remarqu� que les �changes d'informations que nous avons d�crit ci-dessus d�pendent du fait que la machine d'Alice peut imm�diatement parler � la machine de Bob. Que se passe-t-il si la machine de Bob est en panne, ou si elle n'est pas connect�e � Internet ?
Si l'agent de transport d'Alice ne peut pas atteindre celui de Bob imm�diatement, il va stocker le message d'Alice dans une file d'attente sur paysdesmerveilles.com. Il essaiera ensuite de renvoyer le message � des intervalles de temps r�guliers, jusqu'� ce qu'un temps d'expiration soit d�pass�. � ce moment, il renverra son message � Alice en l'avertissant du probl�me. Dans la configuration par d�faut de l'agent de transport le plus populaire (sendmail), l'intervalle entre chaque essai de transmission est de 15 minutes et la dur�e d'expiration de 4 jours.
Beaucoup d'utilisateurs de Linux sont connect�s � Internet via un fournisseur d'acc�s Internet (FAI) et ne poss�dent pas leur propre domaine. � la place, ils ont un compte sur une machine de leur FAI. Leurs courriers �lectroniques sont distribu�s dans une bo�te aux lettres sur cette m�me machine. Cependant, g�n�ralement ces utilisateurs veulent lire et r�pondre � leurs courriers en utilisant leur propre machine qui est connect� � leur FAI de mani�re intermittente en utilisant SLIP ou PPP. Linux permet d'utiliser des protocoles de courrier distant qui permettent cela.
Remarquez comme ceci est diff�rent du sc�nario que nous avons discut� dans la premi�re partie. Le courrier �tait plac� dans une file en attendant d'�tre envoy�, alors que dans le cas que nous venons de voir, le courrier est envoy� directement dans une bo�te aux lettres sur un serveur. Le courrier dans une file n'est pas consid�r� comme ayant �t� distribu� et peut expirer tandis que le courrier distribu� dans la bo�te aux lettres du serveur de courrier d'un FAI est consid�r� comme distribu� et peut rester bloqu� sur ce serveur ind�finiment.
Un protocole de courrier distant permet au courrier sur un serveur d'�tre r�cup�r� au travers d'un lien r�seau par un programme client (c'est le contraire d'une distribution normale au cours de laquelle un agent de transport envoie lui-m�me le courrier vers un autre agent de transport). Il existe deux protocoles commun�ment utilis�s de courrier � distance d�finis par les standards Internet : POP3 ( RFC1939) et IMAP ( RFC2060). Tous les FAI permettent d'utiliser POP3 et un nombre croissant permet �galement IMAP (qui est plus puissant).
Voil� � quoi ressemble une session POP3 :
S: <le client se connecte au port de service 110> R: +OK POP3 server ready <[email protected]> S: USER bob R: +OK bob S: PASS redqueen R: +OK bob's maildrop has 2 messages (320 octets) S: STAT R: +OK 2 320 S: LIST R: +OK 2 messages (320 octets) R: 1 120 R: 2 200 R: . S: RETR 1 R: +OK 120 octets R: <le serveur POP3 envoie le message 1> R: . S: DELE 1 R: +OK message 1 deleted S: RETR 2 R: +OK 200 octets R: <le serveur POP3 envoie le message 2> R: . S: DELE 2 R: +OK message 2 deleted S: QUIT R: +OK dewey POP3 server signing off (maildrop empty) S: <le client se d�connecte>
Une session IMAP utilise des commandes et des r�ponses diff�rentes, mais est tr�s similaires.
Pour tirer parti de POP3 ou IMAP vous avez besoin d'un client de courrier � distance pour retirer votre courrier. Certains lecteurs de courrier offrent nativement ce genre de fonctionnalit�s. C'est le cas de Netscape Messenger qui permet d'utiliser POP et IMAP.
Le principal inconv�nient des lecteurs de courrier impl�mentant ce genre de fonctionnalit�s est que vous devez explicitement dire � votre lecteur de retirer votre courrier sur le serveur ; vous ne pourrez pas, par exemple, �tre averti par xbiff(1) comme vous le seriez si le courrier �tait local ou distribu� par un serveur SMTP. De plus, bien s�r, tous les MUA n'impl�mentent pas POP ou IMAP, et vous devrez vous rabattre sur d'autres fonctionnalit�s.
Votre distribution contient probablement un programme appel� fetchmail. Il a �t� �crit sp�cialement pour dialoguer avec des serveurs de courrier distant, r�cup�rer le courrier, et le distribuer dans votre r�pertoire de r�ception de courrier, en dialoguant avec votre serveur SMTP.
Mis � part si vous avez besoin de laisser vos courriers sur le serveur (par exemple parce que vous changez souvent de machine) fetchmail est probablement une solution meilleure que n'importe quelle lecteur de courrier int�grant POP ou IMAP. Fetchmail peut se lancer en arri�re plan et r�cup�rer votre courrier p�riodiquement, et votre xbiff(1) ou tout autre signaleur de courrier marchera comme si tout se passait par SMTP. De plus, fetchmail est beaucoup plus tol�rant que les lecteurs de courrier envers les diff�rents particularismes et non respect des standards des serveurs de messagerie, et il g�re mieux les erreurs.
Voici un diagramme sch�matisant les deux cas (avec et sans fetchmail) :
+--------+ +--------+ +-------+ compose | | appelle | | | Alice |--------->| MUA |--------->| MTA |:::>::::: +-------+ |appelant| |appelant| :: sur la +--------+ +--------+ :: machine :: appelante SMTP :: ::::::::::::::::::::::::::::<:::::::::::::::::::::::::::: :: .::....................................................................... :: :: +---------+ +-----+ +---------+ :: | | appelle | | distribue � |bo�te du | ::::>| MTA |--------->| LDA |============>| serveur |::::>:::: |recevant | | | | de Bob | :: sur le +---------+ +-----+ +---------+ :: serveur de :: courrier POP ou IMAP :: ::::::::::::::::::::::::::::<::::::::::::::::::::::::::::::::::::: :: .::........................................................................ :: :: +-----------+ :: | | :::::::>::::::::::::| fetchmail |:::::::: sur la :: | | :: machine :: +-----------+ :: recevante, :: :: avec fetchmail :: ::::::::::::::::<::::::::::::::::::: :: :: :: :: +---------+ +-----+ +-------+ :: :: | | appelle | | distribue � | Bo�te | :: ::::>| MTA |--------->| LDA |===============>| de | :: |recevant | | | | Bob | :: +---------+ +-----+ +-------+ :: | | :: | | :: +----------------<-------------+ | :: | | :: +-----------+ +--------+ | :: | signaleur | | MUA de |<--------+ :: | de Bob | | Bob | :: +-----------+ +--------+ :: | | .::........................................................................ :: . | | :: sans . | | :: fetchmail . | | :: . | +-----+ | :: +----------+ . +----->| |<----+ :: | MUA | . | Bob | :::::| POP/IMAP |----.--------->| | | de Bob | . +-----+ +----------+ .
Quand le courrier entrant est ajout� � une bo�te aux lettres, il est du ressort de l'agent de transport de courrier d'ajouter des sortes de d�limiteurs qui indiquent o� un courrier s'arr�te et o� le suivant d�bute.
Sous Unix, que pratiquement tous les lecteurs de courrier suivent la m�me convention. Chaque ligne commen�ant par From (attention, il y a un espace apr�s From) d�bute un nouveau courrier. Si un From appara�t dans une ligne de texte, un agent de transport de courrier d'Unix ajoutera g�n�ralement un signe sup�rieur-� au d�but de la ligne (>From ). Apr�s cette ligne (qui continue g�n�ralement par le nom de l'envoyeur et la date de r�ception) on trouve l'ent�te RFC822 du courrier.
Cette convention date d'Unix Version 7, et donc on parle pour ce type de bo�tes aux lettres de bo�tes aux lettres V7 (V7 mailboxes). Sauf quand ce sera indiqu�, tous les programmes mentionn�s dans ce HOWTO utilisent ce format. Il n'est cependant pas universel et des outils attendant et g�n�rant des formats diff�rents peuvent se placer mutuellement dans une situation de confusion catastrophique.
Les quatre autres formats � conna�tre (il faut s'en m�fier !) sont BABYL, MMDF, MH et qmail maildir. De cela, MMDF est le plus simple : il utilise des d�limiteurs (quatre fois le caract�re ASCII 001 suivi par CR-LF). MMDF f�t un des premiers formats de bo�tes � lettres et il est plut�t cru. Un d�riv� est encore utilis� sur les syst�mes SCO.
BABYL est un autre survivant d'un vieux syst�me de courrier du MIT. Il est encore utilis� par le mode lecteur de courrier d'Emacs.
Les formats MH et qmail maildir utilisent, pour stocker chaque message, un fichier s�par�. Les bo�tes aux lettres sont repr�sent�es par des r�pertoires. Faire une recherche dans une telle bo�te aux lettres demandera l'utilisation d'un grep -r (grep r�cursif) afin d'acc�der aux messages contenus dans la bo�te aux lettres.
Les bo�tes aux lettres .mbx de Microsoft Outlook Express peuvent �tre converties au format RFC822 gr�ce � mbx2mbox.
La mise en oeuvre du courrier �lectronique sous Linux ne n�cessite pas de disposer d'un mat�riel particulier.
Vous aurez besoin d'un logiciel de � transport � quelconque pour vous connecter � des syst�mes distants, c'est-�-dire soit TCP/IP, soit UUCP.
Cela signifie que vous aurez besoin d'un modem ou d'une carte Ethernet selon votre configuration.
Dans la plupart de cas, vous pr�f�rerez avoir le modem le plus rapide que vous puissiez utiliser, � savoir un V90 � 57 600 bit par secondes au moment o� j'�cris ce HOWTO. En g�n�ral, vous pr�f�rerez avoir un UART 16550 sur votre carte s�rie ou dans votre modem pour g�rer les vitesses sup�rieurs � 9600 bauds.
Si vous ne comprenez pas cette derni�re phrase, consultez le groupe comp.dcom.modems ou les diverses excellentes FAQ sur les modems et la communication s�rie ainsi que les messages p�riodiques sur USENET.
L'agent de transport de courrier est le programme qui transf�re le courrier de votre syst�me local aux syst�mes distants. Il est tr�s rarement n�cessaire d'avoir � trifouiller ou remplacer votre agent de transport sur les derniers syst�mes Linux, et vous feriez mieux de ne pas chercher � r�parer ce qui n'est pas d�fectueux. N�anmoins, voici un expos� pour vous permettre de comprendre les changements � faire si vous d�cidez que vous avez besoin d'une plus grande s�curit� ou de meilleures performances que votre syst�me ne peut vous en offrir par d�faut.
(Il y a d'autres agents de transport Unix que ceux pr�sent�s ci-dessous, mais vous n'avez pratiquement aucune chance de les rencontrer sur une machine sur laquelle tourne Linux.)
Chacun de ces agents a ses propres fonctionnalit�s, mais le meilleur compromis est qmail. Il est tr�s s�curis� (m�me si vmail l'est encore plus), tr�s rapide (m�me si smail est plus rapide pour les utilisateurs locaux) et facile � configurer. Bien s�r, sentez-vous libre de choisir n'importe lequel d'entre eux. Les informations fournies ici ont pour but de vous aider � bien choisir.
Sendmail peut �tre bien pour de nombreux sites ayant besoin d'options compliqu�es mais je crois que sa configuration est trop difficile pour un d�butant alors qu'il n'est ni tr�s s�curis� ni tr�s rapide. C'est pourquoi il y a seulement une section vraiment d�pass�e sur sendmail dans ce HOWTO.
Si vous savez ce que vous fa�tes, choisissez sendmail (et vous ne devriez pas �tre en train de lire ce HOWTO !) ; sinon, je recommande g�n�ralement qmail.
Voici une description d�taill�e de ces programmes.
BSD sendmail est le grand-p�re des agent de transport d'Internet. Il a enterr� pas mal de ceux qui auraient d� �tre ses successeurs. La plupart des distributions Linux l'utilise maintenant et le pr�installe.
sendmail a depuis tr�s longtemps la r�putation d'�tre un cauchemar pour les
administrateurs --- difficile � comprendre, compliqu� � configurer et plein de
trous de s�curit�. Cependant, avec la stabilisation des technologies et des
standards d'Internet, beaucoup des options et des r�gles configurables de
sendmail qui sont � l'origine de cette r�putation ont cess� de requ�rir des
bidouillages propres � chaque site (l'abandon des couches r�seaux non TCP/IP
comme UUCP y est pour beaucoup). De plus, les versions r�centes de sendmail ont
un syst�me de configuration am�lior� qui permet de s'�pargner la l�gendaire
laideur du fichier de configuration sendmail.cf
. Plus important, sendmail
est maintenant pr�configur� de sorte que nous n'ayez � y toucher que si vous
avez une configuration peu commune (comme par exemple le routage du courrier
sur un r�seau non TCP/IP).
Il y a un site sendmail. Il comporte des r�f�rences � la documentation �tendue de sendmail avec laquelle vous devrez vous battre pour peaufiner votre configuration.
D'autres agents de transport peuvent prendre le nom de sendmail et imiter la s�mantique des options pass�es sur la ligne de commande de sendmail. C'est pratique pour les lecteurs de courrier qui supposent souvent qu'ils parlent avec sendmail.
smail fut la premi�re s�rieuse tentative de remplacer sendmail. Il a un syst�me de configuration plus simple et beaucoup plus compr�hensible que celui de sendmail et est plut�t bien s�curis�. Certaines distributions Linux le pr�installent plut�t que sendmail.
� un moment, l'excellent support pour les sites utilisant TCP/IP et UUCP �tait un argument majeur pour lui, mais d�s lors que UUCP fut de moins en moins utilis�, il en fut de m�me pour smail. De plus, smail est moins efficace que sendmail sur les gros volumes de connexion.
Comme avec sendmail, il est peu probable que vous ayez besoin de trifouiller une configuration de smail pr�install�e.
(Tr�s occasionnellement il se peut que vous trouviez des r�f�rences � smail 2.5. Ce programme est obsol�te depuis longtemps. Ne vous emb�tez pas avec lui.)
Le programme qmail est un agent de transport de courrier compatible avec sendmail �crit sp�cialement dans le but d'�tre tr�s s�curis�. L'auteur a promis une r�compense de 500 dollars pour celui qui trouverait le premier v�ritable trou de s�curit� ; cette r�compense n'a toujours pas �t� demand� depuis mars 1997.
Le programme exim est similaire � smail3 mais avec plus de fonctionnalit�s. Il est particuli�rement efficace pour l'�limination du spam et supporte plusieurs adresses virtuelles (virtual DNS domains) sur la m�me adresse.
Je l'ai essay� sur mon ordinateur, il semble �tre une fusion du syst�me de configuration de smail et de la s�curit� de qmail. De plus il a l'avantage d'�tre sous GPL.
Une section expliquant comment remplacer votre agent de transport de courrier par exim sera bient�t ajout�e.
S�curis�, rapide et facile � utiliser, c'est mon agent de transport de courrier pr�f�r�.
Actuellement, aucune distribution ne pr�installe qmail. Nous allons nous concentrer sur la compilation et l'installation de qmail puisque c'est la seule partie difficile : la configuration est vraiment imm�diate.
Allez sur www.qmail.org pour t�l�charger la derni�re version.
Ensuite, d�compressez le en tapant
mv qmail.tar.gz /usr/local/src
cd /usr/local/src ; tar -zxvf qmail.tar.gz
Si vous trouvez une version bz2 (qui est un nouveau et meilleur format de compression), remplacer tar par
bunzip2 qmail.tar.bz2
tar -xvf qmail.tar
Maintenant entrez dans le r�pertoire qmail pour examiner la configuration par d�faut :
cd qmail; more conf-*
Vous ne devriez avoir � changer aucun param�tre, mais vous pouvez (par exemple) sp�cifier un r�pertoire d'installation alternatif ou de meilleurs options de compilation.
Maintenant lancer
mkdir /var/qmail
pour cr�er le r�pertoire d'installation.
Si nous n'avez pas install� une distribution Debian, vous devrez ajouter plusieurs UID pour l'utilisation de qmail. La grande s�curit� de qmail d�pend de cela.
Le fait que qmail soit divis� en modules tournant chacun sous leur propre UID rend la t�che de mettre hors-service la totalit� de votre syst�me de courrier ou de gagner un acc�s root plus difficile.
Donc, lancer
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails
ou �diter � la main /etc/passwd
et /etc/group
pour ajouter
ces utilisateurs vous-m�me.
Evan E. m'a signal� qu'il avait d� utiliser le param�tre -g GID avec la version officielle de groupadd (Caldera 1.2) car sinon groupadd retournait cette erreur : � A group with that name already exists. � (un groupe de ce nom existe d�j�).
Par exemple, vous pouvez respectivement ajouter
qmail:*:2107:
nofiles:*:2108:
et
alias:*:7790:2108::/var/qmail/alias:/bin/true
qmaild:*:7791:2108::/var/qmail:/bin/true
qmaill:*:7792:2108::/var/qmail:/bin/true
qmailp:*:7793:2108::/var/qmail:/bin/true
qmailq:*:7794:2107::/var/qmail:/bin/true
qmailr:*:7795:2107::/var/qmail:/bin/true
qmails:*:7796:2107::/var/qmail:/bin/true
Maintenant vous pouvez lancer
make setup check
pour tester votre configuration, ensuite
./config
pour configurer qmail.
Attention, votre serveur disposer d'une adresse reconnue (i.e. pouvant �tre
r�solue par une requ�te DNS) ou ./config
sera perturb�.
Si ce n'est pas le cas, vous pouvez donnez le nom de votre serveur directement via :
./config-fast ordinateur.lambda.fr
Maintenant, vous devez installer quelques alias, puisque /etc/alias
n'est pas utilis� pas qmail sauf si vous compilez et installez un paquetage
optionnel.
Voici ma configuration :
File : ".qmail-MAILER-DAEMON"
&postmaster
File : ".qmail-bin"
&root
File : ".qmail-daemon"
&root
File : ".qmail-decode"
&root
File : ".qmail-dumper"
&root
File : ".qmail-games"
&root
File : ".qmail-ingres"
&root
File : ".qmail-mailer-daemon"
&postmaster
File : ".qmail-manager"
&root
File : ".qmail-news"
&root
File : ".qmail-nobody"
&root
File : ".qmail-operator"
&root
File : ".qmail-postmaster"
&root
File : ".qmail-root"
&guylhem
File : ".qmail-system"
&root
File : ".qmail-toor"
&root
File : ".qmail-uucp"
&root
File : ".qmail-uucp-default"
|preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail "($DEFAULT@$HOST)"
Vous devez cr�er chacun de ces fichiers dans ~alias
en
rempla�ant &guylhem dans .qmail-root
par votre propre compte
r�cup�rant le courrier de root.
Attention si vous utilisez UUCP !
Ne faites pas confiance � la FAQ de qmail pour UUCP, utilisez mon
.qmail-uucp-default
� la place sinon vous ne pourrez envoyer aucun
courrier par votre connexion UUCP !
Maintenant vous devez d�cider dans quel format vos utilisateurs recevront leur courrier.
Voici mon avis :
/var/spool/mail/$USER
format, trop
peu s�r.Pour corriger le format par d�faut, lisez chacun des fichiers dans
/var/qmail/boot
et copiez celui que vous pr�f�rez vers
/var/qmail/rc
.
home
ou proc
sont des choix s�rs mais je pr�f�re home
pour des
raisons de s�curit�s.
Dans /var/qmail/control
, �ditez :
Ces trois exemples vous montre la puissance et la facilit� de la configuration de qmail !
Si vous voulez utiliser les noms de domaines virtuels, ajoutez simplement les noms des domaines dans ces fichiers. Tout courrier re�u envoy� � ces noms sera trait� localement.
La diff�rence entre locals et rcpthosts est que rcphosts n'est pas consid�r� comme un alias local, ce qui est utile si vous recevez des courriers �lectroniques envoy�s � une adresse gratuite comme yahoo.com ou lemel.fr alors que vous envoyez �galement des courriers � des utilisateurs de ces services non locaux et que vous ne voulez pas traiter localement un courrier envoy� � [email protected] !
Ici vous pouvez sp�cifier le mode d'envoi par d�faut, par exemple
#:alias-uucp
si vous ne voulez pas envoyer vos mail par UUCP mais par SMTP (c'est la configuration par d�faut) ou
:alias-uucp
si vous voulez les envoyer par UUCP.
Maintenant, qmail est configur�, essayez
sh -cf '/var/qmail/rc &'
pour lancer qmail (�a n'interf�rera pas avec votre agent de transport de courrier), ensuite
echo to: mon-identifiant | /var/qmail/bin/qmail-inject
Vous devriez recevoir ce mail dans le format que vous choisi dans /var/qmail/boot/.
Si le test est concluant, tuez votre ancien agent de transport.
Tout d'abord, arr�tez-le :
$ killall -STOP nom_du_d�mon
Si des processus-fils tournent, forcez-les � se terminer :
$ killall -CONT leur_nom
Puis r�essayez de stopper votre agent de transport de courrier (s'il le faut, r�p�tez ces deux �tapes ad nauseam).
Ensuite, tuez votre agent de transport :
$ killall -TERM nom_du_d�mon
$ killall -CONT nom_du_d�mon
Virez-le. La mani�re de le faire d�pend de votre distribution. Par exemple
rpm -e --nodeps
pour une RedHat, une Caldera ou une SuSE, ou dpkg -r --force-depends
pour une Debian. Lancer ensuite
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Maintenant configurer qmail-smtpd dans /etc/inetd.conf
:
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
Tout ceci doit se trouver sur la m�me ligne.
Si vous utilisez un vielle distribution avec un init non SysV (c'est par exemple le cas des vielles RedHat), ajoutez cela � vos scripts d'initialisation :
sh -cf '/var/qmail/rc &'
Il y a de grandes chances pour que ce soit /etc/rc.local
mais cela
peut varier.
Pour les distribution actuelles avec des init SysV (RedHat, Caldera, SuSE,
Debian), ajoutez ce script dans /etc/init.d/
ou
/etc/rc.d/init.d
:
#!/bin/sh
test -x /var/qmail/rc || exit 0
case "$1" in
start)
echo -n "Starting mta: " # d�marrage de l'agent de transport
sh -cf '/var/qmail/rc &'
echo "qmail."
;;
stop)
echo -n "Stopping mta: " # arr�t de l'agent de transport
killall qmail-lspawn
echo "qmail."
;;
restart)
echo -n "Restarting mta: " # red�marrage de l'agent de transport
killall -HUP qmail-lspawn
killall -ALRM qmail-lspawn
echo "qmail."
;;
*)
echo "Usage: /etc/init.d/qmail {start|stop|restart}"
exit 1
esac
exit 0
#!/bin/sh
#
# qmail ce script shell s'occupe du d�marrage et de l'arr�t de qmail
#
# description : qmail est un agent de transport de courrier, c'est-�-dire
# le programme qui s'occupe de transporter le courrier d'une
# machine � une autre
# nom de processus : qmail
# config: /var/qmail/control/
# source la biblioth�que de function
. /etc/rc.d/init.d/functions
# source la configuration du r�seau
. /etc/sysconfig/network
export PATH=$PATH:/var/qmail/bin
# v�rifie que le r�seau est en place
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/sendmail ] || exit 0
# examine les options de d�marrage du script
case "$1" in
start)
# Lance les d�mons.
echo -n "Starting qmail: " # d�marrarage de qmail
qmail-start '|preline procmail' splogger qmail &
touch /var/lock/subsys/qmail
echo
;;
stop)
# Arr�te les d�mons.
echo -n "Shutting down qmail: " # arr�t de qmail
killproc qmail-lspawn
echo
rm -f /var/lock/subsys/qmail
;;
restart)
$0 stop
$0 start
;;
status)
status qmail
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac
exit 0
Fa�tes des liens symboliques vers chaque /etc/rc.d/rcN.d/, par exemple :
ln -sf /etc/init.d/qmail /etc/rc.d/rc1.d/K19qmail
Si la premi�re lettre est K, vous tuerez qmail quand la machine passera � ce niveau d'ex�cution (1 pour le mode simple ou 6 pour le red�marrage) et si la premi�re lettre est S, vous le d�marrerez (2, 3, 4, 5).
RedHat, Caldera et SuSE utilisent /etc/rc.d
� la place de
/etc
pour un Debian.
Ainsi, sur ces distributions, quand je parle de /etc/rc1.d
comprenez
/etc/rc.d/rc1.d
.
Pas besoin de red�marrez (H�, vous utilisez Linux, pas un de ces petits OS de rigolos !) pour que les modifications prennent effet. Lancez juste
killall inetd
init 1
pour passez en mode mono-utilisateur. Puis tapez
init 2
pour retourner � votre niveau d'ex�cution par d�faut (indiqu� dans /etc/inittab avec le label initdefault).
Vous auriez �galement pu lancer � la main le script qmail mais la � m�thode init � vous permet de constater si le script qmail est bien plac�, c'est-�-dire lanc� apr�s les scripts r�seaux mais avant tout programme qui utilise le courrier pour vous avertir (comme inn par exemple).
Smail 3.1 est de facto un agent de transport de courrier standard pour les sites utilisant uniquement UUCP et pour quelques un de ceux qui utilisent SMTP. Il est facile � configurer, il se compile sans correctif et est assez bien s�curis�.
Installez le binaire smail de votre distribution (je vous recommande cette
m�thode) ou r�cup�rez les sources de smail et compilez le. Si vous compilez
smail, vous aurez besoin d'avoir ce qui suit dans votre
fichier os/linux
pour que sed fabrique des scripts shell qui marchent chez vous.
CASE_NO_NEWLINES=true
Une fois install�es, les fichiers de configurations iront certainement dans le
r�pertoire /etc/smail
(mais cela peut-�tre diff�rent si vous utilisez une
vielle distribution) ; commen�ons par les �diter !
config
# source
smart_path=polux
smart_transport=uux
# destination
hostname=barberouge
domains=linux.lmm.com
visible_name=barberouge.linux.lmm.com
uucp_name=barberouge.linux.lmm.com
# max_message_size=512k
# auth_domains=foo.bar
# more_hostnames=barberouge.polux.freenix.fr
Bon, premi�rement, qui va vous alimenter ? Je suis aliment� par polux via UUCP (i.e., par transport UUX) ; naturellement vous devez changer cela en fonction de votre propre situation. Par exemple, vous pourriez �tre aliment� par bargw.bar.foobar.com via SMTP, dans ce cas vous n'avez pas besoin de fichier de transport et vous pouvez d�finir -transport_file pour indiquer que vous n'en avez pas besoin.
Vous pouvez aussi utiliser postmaster_address = votre_nom, cachez la topologie du r�seau dans les adresses sortantes (si vous �tes un portail) en utilisant bvisible_name, choisir quelles adresses alias peuvent aussi �tre utilis�es pour les courriers que vous recevez gr�ce � more_hostnames.
Voyez la documentation de smail pour plus de d�tails ou les exemples de
/usr/doc/smail/examples
pour voir s'il y en a qui correspondent �
votre cas.
directors
# aliasinclude - d�veloppe les adresses �~:include:filename~� produites
# par les fichiers alias.
# Cette entr�e et la suivante sont � peu pr�s des mod�les standards.
# Il existe peu de raisons d'y apporter des changements significatifs.
# Leur unique raison d'�tre est de reconnaitre et de d�velopper les
# adresses de la forme :
# :include:pathname
# qui peuvent apparaitre dans les fichiers alias, les listes de
# diffusions ou les fichiers forward (produite par toute
# directive dont le pilote (driver) est forwardfile).
aliasinclude:
driver = aliasinclude, # utiliser le pilote destin� � ce cas
# particulier ;
nobody; # lorsque des violations mod�r�es des droits
# se produisent, associer aux adresses
# l'identifiant nobody ;
copysecure, # utiliser les droits du director alias ;
copyowners, # utiliser le propri�taire du director alias.
# forwardinclude - d�veloppe les adresses � :include:filename � produites
# par les fichiers forward
forwardinclude:
driver = forwardinclude, # utiliser le pilote destin� � ce cas
# particulier ;
nobody;
copysecure, # utiliser les droits du director forwarding ;
copyowners, # utiliser le propri�taire du director forwarding.
# aliases - cherche les d�veloppements d'alias stock�s dans une base de donn�e.
# C'est le fichier d'alias standard. Il est utilis� pour r�aliser des op�rations
# courantes, comme faire correspondre root, postmaster, MAILER-DAEMON et uucp aux
# administrateurs du site, cr�er des d�veloppements de petite envergure
# d'alias syst�me, ou d'autres choses de ce genre. Dans la configuration de
# ce site, le fichier alias est utilis� principalement pour des informations
# d'alias et de renvois sp�cifiques � chaque machine.
# Les informations g�n�rales de renvoi de courrier doivent �tre mises dans la
# base de donn�e � forward �.
aliases:
driver=aliasfile, # directeur d'alias g�n�raliste ;
-nobody, # toutes les adresses sont associ�s
# par d�faut � nobody, donc d�finir
# cette option n'est pas utile ;
sender_okay, # ne pas ignorer l'exp�diteur lors des
# d�veloppements d'adresses ;
owner=owner-$user; # les probl�mes sont dirig�s vers
# l'adresse du propri�taire ;
file=/etc/aliases,
modemask=002, # l'acc�s en �criture ne doit pas �tre
# autoris� � tous ;
optional, # continuer normalement si le fichier
# n'existe pas ;
proto=lsearch, # fichier ASCII non tri�.
# forward - cherche des d�veloppements d'adresse selon le contenu de la base
# de donn�es � forwarding �.
# C'est la base des adresses des renvois utilisateurs pour tout un sous-domaine.
# Les informations n�cessaires pour faire suivre le courrier des utilisateurs,
# pr�sents ou pass�s, vers leur machine pr�f�r�e sont conserv�es ici.
# La base forward est exp�di�e vers les autres syst�mes locaux lors de chaque
# modification, afin de maintenir la coh�rence du r�seau.
#forward:
# driver = aliasfile, # Directeur d'alias g�n�raliste ;
# -nobody, # toutes les adresses sont associ�s
# par d�faut � nobody, donc d�finir
# cette option n'est pas utile ;
# owner = real-$user; # les probl�mes sont dirig�s vers
# l'adresse du propri�taire ;
#
# file = /etc/forward,
# modemask = 002,
# proto = dbm, # Utiliser la librairie dbm(3X)
# pour acc�der � la base.
# dotforward - d�veloppe les fichiers .forward des r�pertoires personnels.
# Pour les utilisateurs qui ont une entr�e dans la base � forward �, un fichier
# .forward n'est utilis� que s'il est sur leur machine personnelle, telle
# qu'indiqu�e dans la base forward. Lorsque ce fichier est utilis�, il est trait�
# comme une liste d'adresse indiquants la liste des destinataires auxquels
# doivent �tre envoy�s les courriers re�us par cet utilisateur, au lieu (ou
# en plus) d'�tre stock�s en local.
dotforward:
driver = forwardfile, # le directeur g�n�raliste forwarding ;
owner = postmaster, nobody, sender_okay;
file = ~/.forward, # le fichier .forward du r�pertoire personnel ;
checkowner, # l'utilisateur peut �tre propri�taire de ce fichier ,
owners = root, # ou bien root ;
modemask = 002, # ne doit pas �tre accessible � tous en �criture ;
caution = daemon:root, # ne rien ex�cuter en tant que root ou daemon ;
# faire extr�mement attention aux dossiers personnels potentiellement
# accessibles � distance.
unsecure = "~uucp:/tmp:/usr/tmp:/var/tmp"
# forwardto - d�veloppe le � Forward to � dans les fichiers bo�tes aux lettres utilisateur.
# Cela �mule le m�chanisme de renvoi de courrier des syst�mes V6/V7/System-V qui utilise
# une ligne d'adresses de renvoi au d�but des fichiers boites aux lettres (BAL) utilisateur
# avec comme pr�fixe la cha�ne � Forward to � (avec un blanc apr�s to)
forwardto:
driver = forwardfile,
owner = postmaster, nobody, sender_okay;
file = /var/spool/mail/${lc:user}, # pointe sur la BAL utilisateur ;
forwardto, # autoriser la fonction � Forward to � ;
checkowner, # l'utilisateur peut �tre propri�taire de ce fichier,
owners = root, # ou root ;
modemask = 0002, # sous System V, le groupe mail a la permission d'�criture ;
caution = daemon:root # ne rien ex�cuter sous root ou daemon.
# user - associe un utilisateur sur l'h�te local � la distribution dans sa BAL.
user: driver = user; # reconnait les utilisateurs locaux ;
transport = local # le transport local distribue le courrier
# dans les BAL.
# real_user - reconna�t les utilisateurs pr�fix�s par la cha�ne "real-"
# Tr�s utile pour permettre � une adresse de correspondre explicitement �
# une BAL utilisateur. Par exemple, des erreurs de d�veloppement d'un fichier
#.forward pourraient �tre distribu�es ici, ou des boucles dans le renvoi de courrier entre
# plusieurs machines pourraient �tre r�solues en utilisant une adresse real-nom_d_utilisateur.
# Aussi, les utilisateurs qui souhaitent utiliser le courrier comme moyen de transfert de
# donn�es vers une machine qui n'est pas leur machine personnelle peuvent envoyer un
# courrier � real-nom_d_utilisateur@h�te-distant.
real_user:
driver = user;
transport = local,
prefix = "real-" # par exemple, reconnait real-root.
# lists - d�veloppe les listes de diffusion stock�es dans le r�pertoire list
# Les listes de diffusions peuvent �tre cr�es simplement en cr�ant un fichier
# dans le r�pertoire /etc/smail/lists.
lists: driver = forwardfile,
caution, # marque toutes les adresses avec l'indicateur � caution �,
nobody, # et les associent � l'utilisateur nobody ;
owner = owner-$user; # les sites system V peuvent vouloir utiliser
# o-$user, puisque owner-$user peut �tre
# trop long, la taille limite des noms de
# fichiers �tant de 14 caract�res ;
file = lists/${lc:user} # les listes sont sous $smail_lib_dir.
# owners - d�veloppe les listes de diffusion stock�es dans le r�pertoire des
# propri�taires de listes (r�pertoire � list owner �).
# Les listes de propri�taires de listes de diffusion peuvent �tre simplement cr�es en
# cr�ant un fichier dans le r�pertoire /etc/smail/lists/owner. Ces listes permettent
# de diffuser localement les messages d'erreurs g�n�r�es par une liste de diffusion.
# Pour cr�er une liste des propri�taires d'une liste de diffusion,
# cr�er un fichier portant le nom de la liste dans /etc/smail/lists/owners.
# Cela va cr�er une adresse de courrier owner-nom_de_liste,
# telle qu'utilis�e par le directeur � lists � plus haut.
owners: driver = forwardfile,
caution, # marque toutes les adresses avec l'indicateur � caution �,
nobody, # puis les associent � l'utilisateur nobody ;
owner = postmaster;
prefix = "owner-",
file = lists/owner/${lc:user} # les listes sont sous $smail_lib_dir.
# request - d�veloppe les listes de diffusions stock�es dans le r�pertoire des listes
# de requ�tes. Les listes de diffusion des requ�tes concernant une liste de diffusion
# peuvent �tre cr�es tout simplement en cr�ant un fichier dans le r�pertoire
# /etc/smail/lists/request. Les adresses requ�te sont utilis�es en g�n�ral
# comme adresse standard pour les demandes concernant une liste de diffusion.
# Par exemple, les demandes d'abonnement ou de d�sabonnement pour une liste seront
# en g�n�ral envoy�es � l'adresse � nom_de_liste-request �, qui devra �tre configur�e
# pour faire suivre le courrier � la ou les personnes appropri�es.
request: driver = forwardfile,
caution, # marque toutes les adresses avec l'indicateur � caution �,
nobody, # puis les associent � l'utilisateur nobody ;
owner = postmaster;
suffix = "-request",
file = lists/request/${lc:user} # les listes sont sous $smail_lib_dir.
Vous de devriez pas avoir besoin de changer quoi que ce soit ici, seulement les option destin�es aux listes de diffusions si vous voulez g�rer de telles listes avec smail, ou bien les options de renvoi (forward options) si, par exemple vous voulez interdire les renvois.
fidopaths
.f105.n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s
.n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s
.z2.fidonet.org f105.n324.z2.fidonet.org!%s
.fidonet.org f105.n324.z2.fidonet.org!%s
Cr�ez ce fichier seulement si vous utilisez ifmail et FIDO.
# forces - force l'utilisation d'un chemin de distribution pr�cis
# L'existence de cette base de donn�e est un moyen de coder en dur les chemins d'acc�s de
# diverses machines ou domaines. Utilis� pour cr�er des distorsions temporaires
# des autres bases de donn�es de routage. Pour changer la base, �diter le
# fichier maps/force.path puis faire un � make � dans le sous-r�pertoire maps/
forces:
driver = pathalias, # nom du routeur effectuant les recherches
# dans les bases de chemins ;
method = /etc/smail/maps/table; # les transports sont dans ce fichier ;
file = forcepaths, # fichier contenant l'information sur
# les chemins forc�es ;
proto = lsearch, # utiliser le fichier de chemins tri� ;
optional,
reopen # se fermer lorsqu'il n'est pas utilis�.
uucp_neighbors:
driver=uuname, # utiliser un programme renvoyant les voisins ;
transport=uux;
cmd="/usr/bin/uuname -a", # plus pr�cis�ment, utiliser le programme uuname ;
# domain=uucp # enlever le suffixe �~.uucp~�
# smart_host - un directeur vers une �~machine de relais postal~� partiellement d�finie
# Si l'attribut smart_path du fichier de configuration contient un
# chemin entre l'h�te local et un h�te distant, alors les noms d'h�tes
# qui ne seraient pas reconnus autrement seront r�exp�di�s vers l'h�te distant
# pr�c�demment mentionn� (la machine de relais postal). L'attribut du fichier
# de configuration smart_transport peut �tre utilis� pour indiquer un moyen
# de transport diff�rent vers la machine-relais.
# Si l'attribut smart_path n'est pas sp�cifi�, ce routeur est ignor�.
smart_host:
driver = smarthost, # Pilote con�u pour ce cas sp�cial
transport = uux # Par d�faut, distribuer via UUCP
# path=phreak
# ifmail - pour envoyer des courriers � fidonet et vice versa.
ifmail:
driver=pathalias,
transport=ifmail;
file=fidopaths,
proto=lsearch
Vous ne devez inclure la partie ifmail que si vous utilisez ifmail pour les courriers FIDO.
Il est � noter que vous pouvez aussi changer le mode de transport de
uux (i.e., UUCP) vers, par exemple, smtp, ou m�me
coder en dur les chemins vers
diff�rentes machines ou domaines dans /etc/smail/maps/table
.
C'est utile si vous voulez que des courriers sortants pour votre r�seau local soient distribu�s imm�diatement, puisque il n'auront pas besoin d'�tre rout� vers la connexion UUCP de votre acc�s internet.
transports
# local - distribution du courrier aux utilisateurs locaux
# Indique � smail d'ajouter directement le courrier � la fin des fichiers bo�tes
# aux lettres des utilisateurs dans le r�pertoire /var/spool/mail
#local: driver = appendfile, # ajoute le message � la fin d'un fichier ;
# -return_path, # ajoute le champ � Return-Path: � ;
# local, # utiliser la forme locale de distribution ;
# from, # ajoute la ligne d'enveloppe � From_ � ;
# unix_from_hack; # ins�re > avant From dans le corps du message ;
#
# file = /var/spool/mail/${lc:user}, # utiliser cet emplacement pour Linux ;
# # � noter, le r�pertoire de stockage de
# courrier doit avoir des droits � 1777 ;
# file = ~/mailfile, # utiliser cet emplacement pour une s�curit� accrue ;
# group = mail, # groupe devant �tre propri�taire des fichiers pour le System V ;
# mode = 0660, # sous System V, le groupe mail doit avoir les droits d'acc�s ;
# suffix = "\n", # ajouter d'une ligne suppl�mentaire.
# append_as_user,
# Ceci permet � chaque utilisateur d'avoir un fichier ~/.procmailrc pour contr�ler
# le filtrage du courrier et permettre de sauvegarder les courriers provenant de
# listes de diffusions dans des bo�tes aux lettres s�par�es s'ils le souhaitent.
local: +inet,
-uucp,
driver = pipe, # envoi du message via un tube
return_path, # inclus un champ � Return-Path: � ;
local, # utiliser la forme locale de distribution ;
from, # ajoute la ligne d'enveloppe � From_ � ;
unix_from_hack; # ins�re > avant From dans le corps du message ;
cmd = "/usr/bin/procmail", # utilise procmail pour distribuer le courrier local ;
parent_env, # tire les informations d'environnement de
# l'adresse du parent ;
pipe_as_user, # utilise l'identifiant utilisateur
# associ� avec l'adresse ;
umask = 0022, # droits par d�faut du processus fils ;
# -ignore_status, # il faut faire confiance au code de retour ;
# -ignore_write_errors, # r�essayer lorsqu'un tube est bris�.
# pipe - distribue le courrier � des commandes shells
# Ceci est implicitement utilis� quand smail rencontre des adresses commen�ant
# par le caract�re barre verticale, comme � |/usr/lib/news/recnews talk.bizarre �.
# La barre verticale est enlev�e de l'adresse avant d'�tre transmise au transport.
#pipe: driver = pipe, # envoyer le message � un autre programme
# # via un tube ;
# return_path, local, from, unix_from_hack;
#
# cmd = "/bin/sh -c $user", # envoyer l'adresse au shell Bourne ;
# parent_env, # tire les informations d'environnement de
# l'adresse du parent ;
# pipe_as_user, # utilise l'identifiant utilisateur
# associ� avec l'adresse ;
# umask = 0022, # droits par d�faut du processus fils ;
# -log_output, # ne pas enregistrer stdout/stderr dans les logs ;
# ignore_status, # le code de retour peut �tre faux, l'ignorer ;
# ignore_write_errors, # ignorer les tubes bris�s.
# file - distribue le courrier dans des fichiers
# Utilis� implicitement lorsque smail rencontre des adresses qui commencent
# par un barre de division � / � ou un tilde � ~ �, comme � /usr/info/list_messages �
# ou peut �tre � ~/Mail/inbox �.
#file: driver = appendfile,
# return_path, local, from, unix_from_hack;
#
# file = $user, # le nom du fichier est pris dans l'adresse ;
# append_as_user, # utilise l'identifiant utilisateur
# associ� avec l'adresse ;
# expand_user, # d�veloppe ~ et $ dans l'adresse.
# check_path,
# suffix = "\n",
# mode = 0644
# uux - distribue le courrier au programme rmail sur un site UUCP distant
#
# Il est possible, au cours d'une seule transaction UUCP, de distribuer
# le courrier destin� � 5 adresses �lectroniques.
uux: driver = pipe,
-uucp,
inet,
# uucp, # utilise le format d'adresse de style UUCP ;
from, # fourni une ligne d'enveloppe � From_ � ;
max_addrs = 5, # au plus 5 adresses par appel ;
max_chars = 200; # au plus 200 caract�res pour une adresses ;
# l'option -r �vite une distribution imm�diate, les parenth�ses autour de la variable
# $user emp�che qu'elle soit interpr�t� par uux.
cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)",
# cmd="/usr/bin/uux - $host!rmail $(($user)$)",
ignore_write_errors, # ignore les tubes bris�s.
umask = 0022,
# pipe_as_sender,
# uux_one_addr - distribue le courrier par UUCP � un h�te distant qui ne peut
# accepter qu'une seule adresse � la fois.
#
# Cela est souvent n�cessaire quand on distribue du courrier � un site qui
# tourne sous une version non modifi�e de 4.1BSD.
uux_one_addr:
driver = pipe,
uucp, # utilise le format d'adresse de style UUCP ;
from; # fourni une ligne d'enveloppe � From_ � ;
# l'option -r emp�che une distribution imm�diate.
cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})",
umask = 0022,
pipe_as_sender
queueonly:
driver = pipe; # envoi du message via un tube ;
cmd = "/usr/lib/sendmail -Q -f $sender -bm $user",
# utilise getmail pour les distributions locales ;
user=root, # ex�cute getmail en tant qu'utilisateur � root � ;
group=mail, # ex�cute getmail sous le groupe � mail � ;
parent_env, # tire les informations d'environnement de
# l'adresse du parent ;
-pipe_as_user, # utilise l'identifiant utilisateur
# associ� avec l'adresse ;
umask = 0007, # droits par d�faut du processus fils.
# pour distribuer un message. Le transport SMTP n'est inclus que si le support
# r�seau BSD est pr�sent.
# L'attribut uucp peut �tre positionn� pour le transfert dans une zone uucp.
# L'attribut inet doit �tre positionn� pour les transferts vers l'internet.
# note : c'est loin d'�tre optimal, un logiciel d'arri�re-plan devrait exister
# qui puisse prendre en charge plusieurs messages par connection.
# de plus : il peut �tre n�cessaire de restreindre max_addrs � 100, puisqu'il
# s'agit de la limite inf�rieure qu'une mise en oeuvre de SMTP est tenue de
# prendre en charge.
smtp: driver=tcpsmtp,
inet, # si UUCP_ZONE n'est pas d�fini ;
# uucp, # si UUCP_ZONE est d�fini ;
-max_addrs, -max_chars; # pas de limite sur le nombre d'adresses ;
short_timeout=5m, # la dur�e maximum des op�rations courtes ;
long_timeout=2h, # la dur�e maximum des op�rations SMTP plus longues ;
service=smtp, # se connecter � ce port de service ;
# Pour l'utilisation internet : ne pas commenter les 4 lignes qui suivent
use_bind, # r�soud les enregistrements A multiples et MX ;
defnames, # utiliser la recherche standard de domaines ;
defer_no_connect, # essayer � nouveau si le serveur est tomb� ;
local_mx_okay, # �vite un MX vers l'h�te local.
ifmail:
from,received,max_addrs=5,max_chars=200,
driver=pipe;
pipe_as_sender,
cmd="/usr/local/bin/ifmail -x9 -r$host $((${strip:user})$)"
Vous ne devez inclure la partie ifmail que si vous utilisez ifmail pour les courriers FIDO. � part cela, vous ne devriez pas avoir besoin de modifier quoi que ce soit dans ce fichier qui d�finit les agents de transport (comme UUX, SMTP, etc.) que vous pouvez utiliser comme param�tres dans les autres fichiers de configuration.
Remarquez que j'ai comment� quelques parties comme pipes ou file pour am�liorer la s�curit�.
maps
Il contient les fichiers map
et table
.
Tout d'abord le fichier map
:
#N foo.bar foo2.bar2
#S AT 486/RedHat Linux 1.2.13
#O organization
#C contact
#E administration (email)
#T phone
#P address
#R
#U hosts connected via uucp
#W created/edited by
#
hname polux
hname linux.eu.org
hname = polux
hname = polux.linux.eu.org
Encore une fois, adaptez le fichier � votre situation (je suis aliment�
par polux.linux.eu.org
).
Maintenant le fichier table
:
* uux
Vous pouvez d�finir diff�rents transports pour diff�rents chemins, par exemple smtp pour les machines de votre r�seau local, uux pour le reste du monde ou vice-versa (j'utilise UUCP pour tous les courriers sortants, donc j'utilise * !)
Les fichiers pr�c�dents sont ceux que j'utilise pour mon site ; vous ne devriez pas rencontrer de probl�mes en les utilisant comme bases pour vos propres fichiers.
Les fichiers suivants sont donn�s comme de bons exemples pour configurer smail de diff�rentes mani�res.
#ident "@(#) transports,v 1.2 1990/10/24 05:20:46 tron Exp"
# Voir smail(5) pour une description compl�te du contenu de ce fichier
# local - distribution du courrier aux utilisateurs locaux
#
# Indique � smail d'ajouter directement le courrier � la fin des fichiers bo�tes
# aux lettres des utilisateurs, contenus dans le r�pertoire � /usr/mail �.
local: driver = appendfile, # ajouter le message � la fin du fichier ;
return_path, # ajoute le champ � Return-Path: � ;
local, # utiliser la forme locale de distribution ;
from, # ajoute la ligne d'enveloppe � From_ � ;
unix_from_hack; # ins�re > avant From dans le corps du message ;
file = /usr/mail/${lc:user}, # utiliser cet emplacement pour System V ;
group = mail, # groupe devant �tre propri�taire des fichiers
# pour le System V ;
mode = 0660, # sous System V, le groupe mail doit avoir les
# droits d'acc�s ;
suffix = "\n", # ajouter d'une ligne suppl�mentaire.
append_as_user,
# pipe - distribue le courrier � des commandes shells
#
# Ceci est implicitement utilis� quand smail rencontre des adresses commen�ant
# par le caract�re barre verticale, comme � |/usr/lib/news/recnews talk.bizarre �.
# La barre verticale est enlev�e de l'adresse avant d'�tre transmise au transport.
pipe: driver = pipe, # envoyer le message � un autre programme
# via un tube ;
return_path, local, from, unix_from_hack;
cmd = "/bin/sh -c $user", # envoyer l'adresse au shell Bourne ;
parent_env, # tire les informations d'environnement de
# l'adresse du parent ;
pipe_as_user, # utilise l'identifiant utilisateur
# associ� avec l'adresse ;
umask = 0022, # droits par d�faut du processus fils ;
-log_output, # ne pas enregistrer stdout/stderr ;
ignore_status, # le code de retour n'est pas fiable, l'ignorer ;
ignore_write_errors, # ignorer les tubes bris�s.
# file - distribue le courrier dans des fichiers
#
# Utilis� implicitement lorsque smail rencontre des adresses qui commencent
# par un barre de division � / � ou un tilde � ~ �, comme � /usr/info/list_messages �
# ou peut �tre � ~/Mail/inbox �.
file: driver = appendfile,
return_path, local, from, unix_from_hack;
file = $user, # le nom de fichier est pris dans l'adresse
append_as_user, # utilise l'identifiant utilisateur
# associ� avec l'adresse ;
expand_user, # d�veloppe ~ et $ dans l'adresse.
suffix = "\n",
mode = 0644
# uux - distribue le courrier au programme rmail sur un site UUCP distant
#
# Il est possible, au cours d'une seule transaction UUCP, de distribuer
# le courrier destin� � 5 adresses �lectroniques.
uux: driver = pipe,
uucp, # utilise le format d'adresse de style UUCP ;
from, # fourni une ligne d'enveloppe � From_ � ;
max_addrs = 5, # au plus 5 adresses par appel ;
max_chars = 200; # au plus 200 caract�res pour une adresse ;
# l'option -r �vite une distribution imm�diate, les parenth�ses autour de la variable
# $user emp�che qu'elle soit interpr�t� par uux.
cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)",
umask = 0022,
pipe_as_sender
# uux_one_addr - distribue le courrier par UUCP � un h�te distant qui ne peut
# accepter qu'une seule adresse � la fois.
#
# Cela est souvent n�cessaire quand on distribue du courrier � un site qui
# tourne sous une version non modifi�e de 4.1BSD.
uux_one_addr:
driver = pipe,
uucp, # utilise le format d'adresse de style UUCP ;
from; # fourni une ligne d'enveloppe � From_ � ;
# l'option -r emp�che une distribution imm�diate ;
cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})",
umask = 0022, pipe_as_sender
# demand - distribution vers un programme rmail distant, connexion � la demande
demand: driver = pipe,
uucp, from, max_addrs = 5, max_chars = 200;
# si l'option -r est omise, essaye de contacter le site distant imm�diatement.
cmd = "/usr/bin/uux - -g$grade $host!rmail $(($user)$)",
umask = 0022, pipe_as_sender
# uusmtp - distribution vers un programme rsmtp sur un site UUCP distant
#
# Distribution via un simple protocol de transfert SMTP par lots
# vers la machine distante.
# Ce qui permet d'utiliser des adresses bien plus libres et qui �vite les
# limitations de uux en termes de nombre d'adresses de destination.
uusmtp: driver = pipe,
bsmtp, # envoi des lots de commandes SMTP ;
-max_addrs, # il n'y a pas de limite sur le nombre
-max_chars; # et la taille des adresses de destination ;
# mettre -r pour que la distribution ne soit pas imm�diate ; les adresses de
# destination sont stock�es dans les donn�es envoy�es vers l'entr�e standard de rsmtp.
cmd = "/usr/bin/uux - -r -g$grade $host!rsmtp",
umask = 0022, pipe_as_sender
# demand_uusmtp - distribution vers un programme rsmtp distant, connexion � la demande
demand_uusmtp:
driver = pipe,
bsmtp, -max_addrs, -max_chars;
# si l'option -r est omise, essaye de contacter le site distant imm�diatement.
cmd = "/usr/bin/uux - -g$grade $host!rsmtp",
umask = 0022, pipe_as_sender
# smtp - distribution du courrier en utilisant SMTP sur TCP/IP
#
# Se connecte � un h�te distant via TCP/IP et initie une conversation SMTP pour
# distribuer un message.
# Le transport SMTP n'est inclus que si le support r�seau BSD est pr�sent.
# note : il peut �tre n�cessaire de restreindre max_addrs � 100, puisqu'il
# s'agit de la limite inf�rieure qu'une mise en oeuvre de SMTP est tenue de
# prendre en charge.
smtp: driver = smtp,
-max_addrs,
-max_chars
#ident "@(#) table,v 1.2 1990/10/24 05:20:31 tron Exp"
# Ce fichier indique les transports utilis�s pour distribuer le courrier
# � des h�tes sp�cifiques � partir de bargw.
#host transport
#-------- ---------
curdsgw demand_uusmtp # distribue le courrier via des lots de connexions SMTP ;
oldbsd uux_one_addr # les sites 4.1BSD ne peuvent accepter plus d'une adresse ;
sun demand # appelle � sun � lorsqu'il y a du courrier � envoyer ;
* uux # pour tous les autres, connexion � intervalles r�guliers.
Pour lancer smail en tant que d�mon SMTP, ajoutez une des lignes suivantes dans
votre /etc/inetd.conf
:
smtp stream tcp nowait root /usr/bin/smtpd smtpdou :
smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd
Le courrier sortant sera alors envoy� automatiquement quand vous utiliserez elm.
G�n�ralement les FAI utilisent SMTP. Par cons�quent, vous ne devriez pas avoir de
probl�me pour envoyer votre courrier. Quand vous n'�tes pas connect� �
Internet, lorsque vous envoyez un courrier �lectronique, il est stock� dans
/var/spool/mail/input
. Ensuite, quand vous vous connecterez, runq
sera lanc� et votre courrier envoy�. Cependant, le vrai probl�me est la
r�ception de votre courrier puisque votre FAI doit s'occuper de plusieurs
clients, et non pas uniquement de vous !
G�n�ralement, vous pouvez r�cup�rer votre courrier via le protocole POP (reportez-vous � la section POP plus bas).
Pour les gros sites, sendmail est un choix valable, gr�ce � son � incroyable facilit� d'utilisation � (sentiment tr�s relatif quand on conna�t qmail), mais vous devrez choisir entre sendmail+IDA et sendmail 8.x :
Attention, les linuxiens d�butants et les personnes pr�occup�es par la s�curit� et la simplicit� de configuration devraient plut�t essayer smail ou qmail, qui sont plus faciles � utiliser et plus s�curis�s.
Si votre distribution n'est pas fournie avec un paquetage sendmail pr�t-�-l'emploi (.rpm pour RedHat, Caldera et SuSE, .deb pour Debian) t�l�chargez les sources et lancez :
/usr/local/lib/mail/CF
et concat�nez les fichiers sample.m4
et local.m4
dans
votre_nom_de_machine.m4
.�ditez hostname, aliases et smarthost et placez-y
les informations
correspondant � votre site. Le fichier par d�faut est pr�vu pour un site
utilisant uniquement UUCP (ce qui n'est plus le cas des versions 8.x), qui a
des ent�tes de domaine et qui dialogue avec une machine � de relais postal �
(smarthost). Ensuite lancez make votre_nom_de_machine.cf
et copiez le fichier
cr�� dans /etc/sendmail.cf
.
Si vous utilisez seulement UUCP, vous n'avez besoin de cr�er aucune des
tables mentionn�es dans le fichier README.linux
. Vous n'aurez qu'� utiliser
touch sur les fichiers pour que le Makefile
marche. �ditez ensuite le
fichier .m4, lancez make sendmail.cf
et testez-le.
Si votre site utilise uniquement UUCP et que vous dialoguez avec des sites autres que votre machine-relais, vous devrez ajouter des entr�es uupcpxtable pour chacun d'entre eux (sinon le courrier qui leur sera envoy� passera par la machine-relais) et lancer dbm sur la nouvelle uucpxtable.
Si vous utilisez la distribution binaire de Rich Braum de la version 5.67a,
vous devrez lancer /usr/lib/sendmail -bz
pour que les changements soient
pris en compte.
Vous devriez �galement mettre � jour votre version vers au moins la 5.67b
puisque qu'il y a un m�chant trou de s�curit� dans la version 5.67a et les
pr�c�dentes. Un autre point sympathique est que si vous activez l'option
mail.debug et que vous utilisez syslogd, la liste de vos courriers entrants et
sortants sera enregistr�e. Voyez le fichier /etc/syslogd.conf/
pour
plus de d�tails.
Les sources de sendmail+IDA se trouve sur http://vixen.cso.uiuc.edu ; elles ne n�cessitent aucun correctif pour tourner sous Linux si vous utilisez quelque-chose comme un noyau 1.00.
Si vous utilisez un noyau dont la version est sup�rieur � la 1.1.50, vous allez devoir vous amuser � enlever tous les correctifs sp�cifiques � Linux qui se trouvent dans les sources officielles. (Je vous avais pr�venu que ce sendmail �tait seulement pour les vieux noyaux :-)
Il est extr�mement facile de rep�rer les endroits � corriger : lancez make et quand il vous hurle dessus, allez � la ligne du fichier qu'il vous indique et commentez le code sp�cifique � Linux qui s'y trouve.
Si vous avez opt� pour sendmail+IDA, je vous recommande fortement d'utiliser la version sendmail5.67b+IDA1.5, car tous les correctifs sp�cifiques � Linux sont maintenant dans les sources officielles et plusieurs trous de s�curit� qui �taient dans les anciennes versions que vous auriez r�cup�r�es ou compil�es avant le 1er d�cembre 1993 ont �t� r�par�s.
Maintenant que l'on en est au noyau 2.0 (NDT : et m�me au 2.4 au moment o� j'�cris ces lignes) vous devriez utiliser sendmail 8.x � la place de sendmail+IDA, mais je vous ai d�j� dit que vous devriez choisir sendmail 8.x :-)
sendmail.m4
Sendmail+IDA se configure par l'interm�diaire du fichier sendmail.m4
et non
directement via le fichier sendmail.cf
. Ce qui rend cette fa�on de travailler
int�ressante est que gr�ce � elle, il est simple de mettre en place des
configurations qui seraient extr�mement difficiles (voire totalement impossibles)
� r�aliser avec smail ou avec le sendmail traditionnel.
Le fichier sendmail.m4
qui correspond � la configuration smail que nous
avons d�crite au-dessus ressemble � ceci :
dnl #------------------ EXEMPLE DE FICHIER SENDMAIL.M4 ------------------ dnl # dnl # La cha�ne � dnl � est utilis�e comme en-t�te d'une ligne de commentaires. dnl # (Enfin pas exactement, mais utilisez-la pour cela si vous en avez dnl # besoin :-) dnl # En g�n�ral, il est pr�f�rable d'�viter de remplacer les chemins par dnl # d�faut dans LIBDIR dnl #define(LIBDIR,/usr/local/lib/mail)dnl # dossier contenant tous les dnl # fichiers de support~; define(LOCAL_MAILER_DEF, mailers.linux)dnl # outil de distribution locale~; define(POSTMASTERBOUNCE)dnl # les messages retourn�s sont dnl # envoy�s au �~receveur principal~� dnl # (postmaster)~; define(PSEUDODOMAINS, BITNET UUCP)dnl # ne pas essayer le DNS sur ceux-ci. dnl # dnl #------------------------------------------------------------- dnl # dnl # noms par lesquels nous sommes connus define(PSEUDONYMS, machine.sousdomaine.domaine machine.UUCP) dnl # dnl # notre nom de machine define(HOSTNAME, machine.sousdomaine.domaine) dnl # dnl # notre nom UUCP define(UUCPNAME, machine)dnl dnl # dnl #------------------------------------------------------------- dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # nos voisins UUCP~; define(BANGIMPLIESUUCP)dnl # s'assure que le courrier define(BANGONLYUUCP)dnl # UUCP est correctement trait�~; define(RELAY_HOST, mon_voisin_UUCP)dnl # notre machine-relais~; define(RELAY_MAILER, UUCP-A)dnl # on atteind notre machine- dnl # relais par UUCP dnl # dnl #-------------------------------------------------------------------- dnl # dnl # les diffentes tables dbm dnl # define(ALIASES, LIBDIR/aliases)dnl # les alias syst�me define(DOMAINTABLE, LIBDIR/domaintable)dnl # machines du domaine define(PATHTABLE, LIBDIR/pathtable)dnl # base de donn�es des chemins define(GENERICFROM, LIBDIR/generics)dnl # adresses sources g�n�riques define(MAILERTABLE, LIBDIR/mailertable)dnl # agents de courrier par machine dnl # ou par domaine define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # chemin des machines que l'on dnl # alimente define(UUCPRELAYS, LIBDIR/uucprelays)dnl # chemins rapides dnl # dnl #-------------------------------------------------------------------- dnl # dnl # inclut le �~v�ritable~� code qui fait tout marcher dnl # (fournit avec le code source) dnl # include(Sendmail.mc)dnl # entr�e n�cessaire ! dnl # dnl #------------ FIN DE L'EXEMPLE DE FICHIER SENDMAIL.M4 ------- -------
� la diff�rence de la plupart des distributions Unix, Linux n'est pas fourni avec un agent par d�faut de distribution du courrier local.
La distribution Slackware est l'exception qui confirme la r�gle. Du moins, cette fonctionnalit� est propos� par le script d'installation facile-�-utiliser-mais-de-longue-haleine. C'est procmail qui est utilis�.
Actuellement, deliver ou procmail sont en g�n�ral install�s, avec une configuration par d�faut de sendmail adapt�e � la distribution du courrier local. De sorte qu'aucune difficult� additionnelle ne vient pimenter une configuration d�j� tr�s complexe. Je recommande d'utiliser deliver ou procmail, qui sont tr�s faciles � trouver, et qui peuvent �tre propos�s sous la forme de paquetages optionnels dans quelques distributions Linux.
Dans ce but, vous aurez besoin de d�finir LOCAL_MAILER_DEF dans le fichier sendmail.m4 qui pointe vers un fichier de ce genre :
# -- /usr/local/lib/mail/mailers.linux -- # (agents de distribution locaux pour Linux) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u
Il y aussi une option par d�faut d'utilisation de deliver
incluse dans le fichier Sendmail.mc
qui est import� par le fichier
sendmail.cf
. Pour vous en servir, n'utilisez pas le fichier
mailers.linux mais incluez ce qui suit dans votre fichier
sendmail.m4
:
dnl --- (dans sendmail.m4) --- define(LOCAL_MAILER_DEF, DELIVER)dnl # agent de distribution locale
Malheureusement, Sendmail.mc
consid�re que deliver
est install� dans
/bin
ce qui n'est pas le cas sur une Slackware1.1.1 (il est install�
dans /usr/bin
). Dans ce cas, vous aurez besoin soit de cr�er un lien,
soit de reconstruire deliver � partir des sources pour
qu'il r�side dans
/bin
. � noter que procmail est g�n�ralement meilleur que
deliver, par exemple pour le filtrage du courrier.
La mise en place de comportements sp�ciaux vers certains sites et domaines est
r�alis�e via un certain nombre de tables dbm plut�t que par une modification
directe du fichier sendmail.cf
.
Consultez le num�ro de juillet 1994 du Linux Journal (si vous pouvez encore le trouver :-) et r�f�rez-vous aux docs qui se trouvent dans les sources, ou au chapitre sendmail de la nouvelle version de Networking Administration Guide du Linux Documentation Project qui sera disponible incessamment sous peu.
Quand il n'utilise aucune table dbm optionnelle, sendmail distribue
le courrier via le RELAY_HOST (machine de relais) et le RELAY_MAILER
(agent de relais) d�fini dans le fichier sendmail.m4
utilis� pour
g�n�rer sendmail.cf
. Il est facile de red�finir ce comportement via
des ent�es dans domaintable
ou uucpxtable
.
Un site g�n�rique qui est sur Internet et utilise DNS, ou qui n'utilise qu'UUCP et fait suivre le courrier via UUCP par une machine de relais postal, n'a probablement besoin d'aucune entr�es dans ces tables.
Virtuellement, tous les syst�mes devraient d�finir les macrosi DEFAULT_HOST et PSEUDODYMS , qui d�finissent le nom canonique du site et les alias par lesquels il est connu.
Si vous n'avez qu'une machine de relais et un agent relais de courrier vous n'avez pas besoin de d�finir ces macros puisque cela marche automagiquement. Les machines UUCP n�cessiteront probablement de d�finir UUCPNAME comme leur nom officiel UUCP.
Vous devrez probablement �galement d�finir RELAY_MAILER et RELAY_HOST qui active le routage via une machine de relais postal.
Le type de transport du courrier utilis� doit �tre d�fini dans RELAY_MAILER. Il devrait �tre en g�n�ral UUCP-A pour les sites UUCP sites. Si votre site n'utilise que SMTP et utilise un DNS, vous devrez changer RELAY_MAILER.
Si vous utilisez SLIP, la mani�re la plus simple de configurer votre site est de faire suivre tout votre courrier sortant vers votre fournisseur d'acc�s � Internet. Pour cela, d�finissez les macros ISOLATED_DOMAINS et VALIDATION_DOMAINS pour qu'elles correspondent � votre nom de domaine. D�finissez �galement RELAY_HOST qui doit contenir le nom de la machine de votre fournisseur d'acc�s � Internet, et RELAY_MAILER qui doit contenir TCP. Bien s�r, vous devez obtenir la permission avant d'utiliser une machine en tant que machine de relais principale.
Sendmail 8.7.x de Berkeley a �t� la derni�re version importante avant
Sendmail5. Elle se compilait et se configurait tr�s simplement sous
Linux en tapant : make linux
.
Vous feriez probablement mieux de vous procurer une des diff�rentes distributions binaires sur un site d'archive d�di� � Linux plut�t que des vous battre avec des choses comme Berkeley dbm.
Il existe une bonne distribution de sendmail 8.6.12 de Jason Haar
(<j.haar at lazerjem.demon.co.uk>
) sur
sunsite.unc.edu qui contient
les documentations d'origine et une petite documentation tr�s sympa qui
explique comment utiliser sendmail v8 sur les principales configurations.
L'id�e principale de sendmail v8 est que l'on veut configurer le strict minimum pour que cela marche. Ce qui suit est un exemple qui devrait vous permettre de vous rapprocher de cela.
Exactement comme sendmail+IDA, sendmail v8 utilise m4 pour g�n�rer �
partir d'un fichier de configuration le fichier sendmail.cf
complet
utilis� par sendmail
. Voici le fichier mc que j'utilise pour mon site (ppp
vers Internet pour le courrier sortant et UUCP pour le courrier rentrant).
dnl divert(-1) #--------------------------------------------------------------------- # # Voici le fichier .mc pour une machine linux configur�e comme ceci : # # - connect� via ppp pour le courrier sortant # - connect� via UUCP pour le courrier entrant # - en-t�te avec domaine # - aucun agent de courrier local (utilise deliver � la place) # - sans DNS local et donc n'utilise pas le DNS pour transformer # les adresses des courriers sortants en leurs formes canoniques # - tous les courriers sortants qui ne sont pas locaux passent # par la machine-relais (RELAY_HOST) via SMTP (on utilise ppp # et on laisse notre FAI faire son boulot) # # vds 3/31/95 # #--------------------------------------------------------------------- include(`../m4/cf.m4') VERSIONID(`machine Linux sans DNS transferant son courrier vers la'dnl `machine-relais d'un FAI via slip')dnl Cwmachine.mon.domaine machine.UUCP localhost OSTYPE(linux) FEATURE(nodns)dnl FEATURE(always_add_domain)dnl FEATURE(redirect) FEATURE(nocanonify) dnl MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp)dnl define(`RELAY_HOST', smtp:relai.machine.domaine) define(`SMART_HOST', smtp:relai.machine.domaine) define(`UUCP_RELAY', smtp:relai.machine.domaine) define(`LOCAL_MAILER_PATH', `/bin/deliver') define(`LOCAL_MAILER_ARGS', `deliver $u')
Il y a quelques diff�rences, je suppose, pour les fanatiques d'IDA.
Jusqu'ici j'ai trouv� la suivante :
� la place de runq
, tapez sendmail -q
pour traiter la file
d'attente.
� la diff�rence de la plupart des syst�mes d'exploitation, Linux ne g�re pas le courrier lui-m�me : vous avez besoin d'un programme pour distribuer le courrier local comme par exemple lmail, procmail ou deliver.
Cependant, toutes les distributions r�centes sont � pr�sent fournies avec un agent de distribution local.
La documentation expliquant comment les utiliser pour la distribution locale du courrier est incluse dans la distribution binaire de sendmail5.67b+IDA1.5 (sur sunsite) mentionn� ci-dessus.
Vous ne devriez pas avoir de probl�mes pour compiler, installer et lancer mutt. Les utilisateurs de qmail peuvent r�cup�rer un correctif ou le lancer avec l'option -f pour lire leurs boites aux lettres locales.
Si mutt vous emb�te avec un � unknown terminal error � apr�s une mise � jour de votre distribution, recompilez-le.
Elm se compile, s'installe et se lance sans probl�me sous Linux. Pour plus d'informations, reportez-vous aux sources d'elm et aux instructions d'installation. Elm et filter ont besoin d'�tre en mode 2755 (groupe mail) avec /var/spool/mail en mode 775 (groupe mail).
Les utilisateurs de qmail peuvent r�cup�rer le correctif pour utiliser les fonctionnalit�s bien pratiques de qmail ou lancer elm avec l'option -f pour lire leurs bo�tes aux lettres locales.
Si vous utilisez une distribution binaire, vous aurez besoin de cr�er un
fichier /usr/local/lib/elm/elm.rc
pour passer outre la nom de la machine
et les informations de domaine compil�s en dur :
#---------- /usr/local/lib/elm/elm.rc ------------------ # # nom de machine non qualifi� hostname = machine # # nom du domaine local hostdomain = sous-domaine.domaine # # nom de machine qualifi� hostfullname = machine.sous-domaine.domaine # #--------------------------------------------------------
Une chose dont vous devez �tre conscient est que si vous avez compil� elm pour qu'il soit capable de g�rer le format MIME, vous aurez besoin d'installer metamail dans votre chemin, sinon elm ne sera pas capable de lire le courrier MIME que vous recevrez. metamail est disponible sur http://thumper.bellcore.com et bien s�r via archie.
Dans la cat�gorie � trop beau pour �tre vrai � il existe une distribution, d'Elm-2.4.24 qui sait g�rer PGP. Pour l'essayer, r�cup�rez le fichier ftp://ftp.viewlogic.com/pub/elm-2.4pl24pgp3.tar.gz qui n'est rien d'autre que elm 2.4.24 avec l'ajout de PGP. Il se configure et se compile de la m�me mani�re que la version normale d'elm, ce qui veut dire que vous aurez sans doute � ajouter les correctifs mentionn�s ci-dessus. Pour ce que �a co�te, je l'utilise ici et je l'aime beaucoup. Bien s�r, il doit y avoir des version plus r�centes disponibles comme par exemple elm-ME+.
De temps en temps, elm plante avec un message indiquant qu'il n'arrive pas � allouer un �norme quantit� d'octets de m�moire via malloc(). Pour rem�dier � cela, enlevez les alias g�n�raux de courrier post-g�n�r�s (aliases.dir et aliases.pag). Bien que ce point ne soit pas sp�cifique � Linux, il est per�u comme un bogue g�nant d'elm.
Ce n'est pas un bogue d'elm, c'est une erreur dans le configuration d'elm utilis�e par la personne qui a fait la distribution binaire que vous utilisez.
Elm poss�de, pour les alias, un format am�lior� et incompatible ; ainsi, vous
devrez vous assurer que le chemin utilis� par elm pour ses alias est diff�rent
de celui utilis� par sendmail ou smail. Vu le nombre impressionnant de rapport
de bogues � propos de ce probl�me, il est fort clair qu'au moins une des
distributions majeures ait dans le pass� fait une erreur de configuration sur
ce point. (Ceci m'a �t� signal� par Scot W. Stevenson :
<scot at catzen.gun.de>
.)
Le paquetage metamail actuel � besoin de csh pour quelques-uns de ses scripts. Sans csh (ou tcsh), vous aurez droit � des erreurs des plus int�ressantes...
Si vous n'avez pas mailx, �conomisez vos efforts et r�cup�rez le kit mailx de la Slackware 2.1.0 ou plus, qui a une bonne impl�mentation de mailx5.5. Il se compile sans correctif sous linux si vous avez install� pmake.
Si quelqu'un les utilise encore, je lui recommande fortement de virer les vieux trucs edmail de la SLS 1.00 et de les remplacer par mailx.
Cette section d�crit l'utilisation de POP et d'IMAP pour g�rer le courrier distant.
Parmi les alternatives, on trouve le montage via NFS des zones de stockage du courrier sur les machines clientes (Danger Will Robinson ! Est-ce que tout le monde utilise la m�me m�thode de verrouillage ?) ou bien l'utilisation d'une passerelle courrier-vers-web (une solution assez populaire de nos jours).
Sur les r�seaux de stations de travail, le courrier a toujours �t� un probl�me :
Mais dans ce cas, comment les utilisateurs peuvent-ils lire leur courrier ?
En utilisant rsh avec elm ? :-)
Cela surchargerait notre centre de tri ! Une m�thode serait de rediriger le courrier ou d'utiliser UUCP, SMTP, etc. mais c'est bien trop complexe.
Vinrent ensuite POP et IMAP, tout deux avec des probl�mes de s�curit� au d�but (qui sont maintenant r�gl�s par l'utilisation ssh sur les derni�res versions). Pour les utiliser, un agent de transport de courrier doit parfois �tre install� sur la machine de l'utilisateur (du style qmail, smail ou vmail si par exemple vous utilisez elm, l'utilisation de mozilla vous �vitera cela), cependant cela simplifiera l'envoi et la r�ception de courrier.
Voici le principaux inconv�nients de POP :
Le probl�me du mot de passe peut �tre r�solu en utilisant POP au travers d'un canal chiffr� ou en utilisant les extensions APOP ou RPOP. Le probl�me du lecteur de courrier peut �tre r�solu soit en changeant de lecteur (ne sous-estimez pas l'effort qu'il faut d�ployer pour r��duquer les utilisateurs), soit en utilisant un programme qui rapatrie le courrier via POP (comme par exemple fetchmail) associ� � un agent de distribution local.
IMAP peut �tre pr�f�rable � POP dans diverses situations comme par exemple si
vous permettez les acc�s distants (et sp�cialement pour des utilisateurs se
connectant de machines diff�rentes). Vous
pouvez �galement utiliser POP en restreignant son acc�s � un r�seau local
sur lequel le vol des mots de passe transitant par le r�seau n'est pas �
craindre. Mark Aitchison
nous a signal� qu'une fa�on de faire cela �tait d'utiliser les fichiers
hosts.deny
et hosts.allow
et de lancer votre serveur POP �
partir d'inetd (reportez-vous pour de plus amples d�tails au � Net-3 HOWTO �).
Le choix de laisser (ou non) le courrier sur le serveur a des cons�quences en termes d'espace disque, de facilit� de mise en oeuvre des sauvegardes et de la s�curit�, ainsi que sur la possibilit� pour un utilisateur donn� de se connecter depuis plusieurs machines distinctes. Ainsi la meilleure solution d�pend de votre type d'organisation. Bien s�r, cela ne vous garantira pas que votre courrier ne puisse pas �tre lu, mais personne ne pourra l'effacer ; et si votre courrier est chiffr� avec PGP, cela en fait une tr�s bonne solution.
Voici quelques clients POP qui en valent la peine :
$ popclient -3 -v mail.acme.net -u jean -p "AssezSecret" -k -o JOHN-INET-MAIL
Ceci est fortement d�conseill� sur les machines multi-utilisateurs. En effet,
les autres utilisateurs pourraient voir votre mot de passe en lan�ant par
exemple ps auxw
.
~.fetchmailrc
. Ainsi,
vous n'aurez qu'� lancer fetchmail quand vous voudrez rapatrier votre
courrier.
Voici mon .fetchmailrc :
poll mail.server protocol pop3:
forcecr
password AssezSecret;
L'option forcecr est requise pour utiliser fetchmail avec qmail qui
respecte strictement les RFC.Pour cela, vous devrez utiliser un programme g�rant SMTP comme par exemple qmail, smail, vmail ou mozilla (ce dernier fait tout : lecture du courrier, rapatriement du courrier via POP et envoie du courrier via SMTP).
Reportez-vous � l'une des sections pr�c�dentes pour installer et configurer celui que vous pr�f�rez. Ensuite, quand vous atteindrez la section Tester, essayer d'envoyer un courrier �lectronique sur un compte local de votre passerelle de courrier.
Si votre programme ne fait pas tout lui-m�me, vous pouvez installer elm, pgp, mush, pine, etc. Beaucoup de bons programmes sont disponibles librement et gratuitement pour les plate-formes Linux.
Pour v�rifier si votre serveur POP est bien install� tapez
$ telnet machine 110
Si cela marche, vous obtiendrez quelque chose du genre � OK Pop server (...) starting �. Tapez � quit � !
Pour installer un canal ssh chiffr�, testez d'abord votre serveur de courrier en tapant
$ ssh machine date
Si vous obtenez la date, cela devrait �tre bon. Remarquez que ssh ne vous
demandera pas de mot de passe, en cons�quence, vous devrez cr�er un fichier
.shosts
sur
le serveur de courrier, contenant le nom du client. Pour tester la redirection
de port ssh (que wgpop utilise), tapez
$ ssh -n -f -L 12314:localhost:110 machine sleep 30
puis
$ telnet localhost 12314
Alors vous aurez bon espoir de voir la banni�re de la poste centrale
POP. Si vous n'utilisez pas ssh, n'oubliez pas de commenter
$ssh
dans le script gwpop. Pour v�rifier si procmail tourne essayez
procmail~-v
.
Maintenant vous pouvez �diter le script Perl gwpop pour v�rifier que tout va bien, puis lancez gwpop :
$ gwpop -v votre-nom-d'utilisateur
POP password on mailhost: votre-mot-de-passe-secret
Si les � messages d'erreurs � de gwpop vous parraissent normaux, le courrier sera t�l�charg� depuis votre poste principal et plac� sur votre machine locale � l'endroit que vous aurez indiqu� � gwpop (fa�tes des tests avec quelques courriers �lectroniques).
Vous pouvez aussi utiliser gwpop en tant que d�mon :
$ gwpop -d $HOME/tmp votre-nom-d'utilisateur
Les messages de gwpop seront envoy�s � syslog et gwpop tournera ind�finiment en t�che de fond ; un signal HUP forcera gwpop � aller chercher votre courrier.
Vous pouvez t�l�charger les logiciels pop utilis�s ici sur :
Les personnes suivantes ont aid� � rassembler les informations et les exp�riences qui ont rendu possible l'�criture de ce document :
Steve Robbins, Ian Kluft, Rich Braun, Ian Jackson, Syd Weinstein, Ralf Sauther, Martin White, Matt Welsh, Ralph Sims, Phil Hughes, Scot Stevenson, Neil Parker, Stephane Bortzmayer et sp�cialement merci � Vince Skahan pour sa large contribution.
Eric S. Raymond a revu ce document, a corrig� diff�rentes fautes et a int�gr� la section How Electronic Mail Works de son Mail User's HOWTO.
Hitoshi Hayakawa a v�rifi� la section sur qmail, Jun Morimoto a ajout� plusieurs remarques � propos de popclient et de fetchmail et Takeo Nakano qui � forc� ispell � v�rifier l'orthographe de ce document :-)
Si j'ai oubli� quelqu'un, toutes mes excuses : envoyez-moi un courrier �lectronique.