Installation Serveur Courrier
Installation Serveur Courrier
Installation Serveur Courrier
Installation d'un serveur de messagerie Postfix 8.1.7 De quels clients relayer le courrier (mynetworks, relay_domains)..................................21 8.1.8 O le client Postfix doit-il dlivrer les mails (relay_domains)........................................22 8.1.9 Quels incidents rapporter au postmaster (notify_classes)................................................22 8.1.10 Adresse rseau proxy/NAT (proxy_interfaces).............................................................23 8.1.11 Mes adresses de rseau (inet_interfaces).......................................................................23 8.2 Contrles des taux de Postfix 24 8.2.1 Introduction......................................................................................................................24 8.2.2 Limites des processus.......................................................................................................25 8.2.3 Simultanit de destination..............................................................................................25 8.2.4 Limites sur les destinataires.............................................................................................26 8.2.5 Toujours remettre plus tard la livraison........................................................................26 8.2.6 Backoff des serveurs inaccessibles..................................................................................27 8.2.7 Ralentir les mauvais clients..............................................................................................28 8.3 Contrle des ressources 29 8.3.1 Introduction......................................................................................................................29 8.3.2 Limites de taille des objets...............................................................................................29 8.3.3 Limites du nombre d'objets..............................................................................................30 8.3.4 Dlais...............................................................................................................................31 8.3.5 Accs exclusifs aux fichiers.............................................................................................31 8.3.6 Rtablissement en cas d'erreur.........................................................................................31 8.4 Manipulation d'adresse 32 8.4.1 Introduction......................................................................................................................32 8.4.2 Rcriture d'adresses au format standard.........................................................................33 8.4.3 Translation canonique d'adresse.......................................................................................34 8.4.4 Masquage d'adresse..........................................................................................................34 8.4.5 Translation d'adresse virtuelle..........................................................................................35 8.4.6 Routage du courrier..........................................................................................................36 8.4.7 Table d'utilisateurs dplacs.............................................................................................36 8.4.8 Base de donnes d'alias....................................................................................................36 8.4.9 Fichiers .forward des utilisateurs.....................................................................................37 8.4.10 Utilisateurs inexistants...................................................................................................37 9 Configuration finale de type basique(hashmap) 38 9.1 Fichier /etc/postfix/main.cf avec tables en hashmap 38 9.1.1 Principe de fonctionnement.............................................................................................38 9.1.2 Contenu du fichier main.cf...............................................................................................39 9.1.3 Explication des paramtres..............................................................................................42 9.2 Fichier /etc/postfix/aliases 45 9.3 Fichier /etc/postfix/virtualdomains 46 9.4 Fichier /etc/postfix/vmailbox (hashmap) 46 9.5 Fichier /etc/postfix/virtual (hashmap) 47 9.6 Script de transfert Qmail -> Postfix. 48 9.6.1 Procdure.........................................................................................................................48 9.6.2 Contenu du script qmail_postfix.sh.................................................................................50 9.7 Paramtrages des droits sur les dossiers de base 52 10 Commandes anti-spam 53 10.0.1 Exiger la commande HELO (EHLO).............................................................................53 10.0.2 Restrictions sur les noms d'htes passs par la commande HELO (EHLO)..................53 10.0.3 Exigez des adresses respectant le format de la RFC 821...............................................55 10.0.4 Restrictions sur les adresses d'expdition......................................................................55 http://extranet.clg.fr/articles.php3?id_article=65 3
Installation d'un serveur de messagerie Postfix 10.0.5 Restriction sur les adresses de destination.....................................................................56 10.0.6 Filtrage d'en-tte.............................................................................................................59 10.0.7 Restrictions gnriques..................................................................................................60 10.1 Fichier /etc/postfix/main.cf avec commandes anti-spam 61 10.2 Contenu du fichier /etc/postfix/access 62 10.3 Contenu du fichier /etc/postfix/ header_checks 62 10.4 Contenu du fichier /etc/postfix/ body_checks 62 10.5 Utilisation de filtres complmentaires 63 10.5.1 Introduction....................................................................................................................63 10.5.2 Installation de Amavis, SpamAssassin et Clamav.........................................................63 10.5.3 Configuration de Amavis (/etc/amavis/amavisd.conf)...................................................64 10.5.4 Configuration de Postfix pour Amavis..........................................................................64 10.5.5 Configuration de l'antivirus Clamav..............................................................................65 11 Comment lire ses messages 65 11.1 Installation d'un serveur POP 65 11.1.1 Installation binaire..........................................................................................................65 11.1.2 Configuration de Courier-pop........................................................................................65 11.1.3 Le fichier /etc/courier/authdaemonrc.............................................................................66 11.1.4 Le fichier /etc/courier/authmodulelist............................................................................67 11.1.5 Le fichier /etc/courier/authmysqlrc................................................................................67 11.1.6 Le fichier /etc/courier/pop3d..........................................................................................67 11.1.7 Format du fichier /etc/courier/userdb.............................................................................68 11.2 Migration des comptes POP 69 11.2.1 Procdure.......................................................................................................................70 11.2.2 Contenu du script qpopper_courier.sh...........................................................................71 11.2.3 Paramtrages des droits sur les dossiers des comptes POP...........................................72 11.2.4 Transfert des botes Qmail Maibox dans les botes Postfix Maildir..............................73 12 Gestion et utilisation au quotidien 73 12.1 Se connecter au serveur de messagerie 73 12.2 Ajouter ou modifiez un domaine gr par le serveur Postfix 73 12.3 Ajouter ou modifier une adresse ayant un compte POP correspondant. 73 12.4 Ajouter ou modifier un alias d'une adresse pointant sur une autre adresse. 74 12.5 Ajouter ou modifier un alias de compte local 74 12.6 Ajouter ou modifier un rseau ou un domaine autoris 74 12.7 Ajouter ou modifier une rgle de filtrage sur les enttes. 74 12.8 Ajouter ou modifier une rgle de filtrage sur le corps du message. 75 12.9 Ajouter ou modifier un compte POP 75 12.10 Modifier le mot de passe d'un compte POP 75 12.11 Gestion des files d'attente Postfix. 76 13 Webographie 76 14 Annexe 78 14.1 Licence 78 14.1.1 GNU Free Documentation License................................................................................78 14.1.2 How to use this License for your documents.................................................................84
http://extranet.clg.fr/articles.php3?id_article=65
1 Licence
L'intgralit de la prsente documentation est soumise la GNU Free Documentation licence (http://www.gnu.org/copyleft/fdl.html#TOC1), ce qui signifie:
que toute personne le droit de copier et d'utiliser librement ce document. que toute personne est autorise diffuser ce document.
que quiconque peut modifier librement ce document, pourvu qu'il en diffuse la version modifie sous la prsente licence. En respectant la licence dcrite en annexe, vous pouvez utiliser les lments contenus dans ce document condition d'en spcifier la provenance des informations (faire un lien hypertexte dans le cas d'un site en ligne, prciser l'URL dans le cas d'un document papier ou lectronique).
2 Crdits
Version: 1.0.0 Auteurs: Marc-Henri PAMISEUX Intgr par:Marc-Henri PAMISEUX Dernire modification: 13/08/2004 Remerciements: Xavier GUIMARD Contacts: Le projet Postfix (http://www.postfix.org) La traduction ralis par Xavier GUIMARD (http://x.guimard.free.fr/) Les complments couverts par Cyril JOVET (http://cjovet.free.fr/) Traduction:Xavier GUIMARD Marc-Henri PAMISEUX
3 Notes de version
3.1 ChangeLog
Le 13/08/2004: Modifications mineures. Ajout d'une ToDo Liste. Le 12/08/2004: Premire publication du document. (Version 1.0.0)
Complter l'installation partir des sources Ajouter une section de tests initiaux des serveurs SMTP et POP. Prvoir une analyse des logs. Complter la mise en place de l'antivirus Ajouter une section de mise en place de SpamAssassin Ajouter une section de configuration de Postfix avec une base de donne. Ajouter une section de configuration de Postfix avec un annuaire Ajouter une section de mise en service d'un webmail, et d'un outil d'administration. 5
http://extranet.clg.fr/articles.php3?id_article=65
Le serveur de messagerie ne doit tre utilis que pour des rseaux biens dfinis (fonction d'anti RELAYING) Le serveur doit tre capable de grer de multiple domaines Le serveur doit tre capable de grer des concurences de nom d'utilisateurs sur deux domaines diffrents. Le serveur doit tre capable de combiner plusieurs systmes d'identification en un seul Le serveur doit tre capable de grer des redirections de messages Le serveur doit tre capable de filtrer les messages non sollicits (fonction anti SPAM) Le serveur peut incorporer un antivirus Le serveur peut tre capable de grer des connexions scurises
http://extranet.clg.fr/articles.php3?id_article=65
Diffusion large. Postfix doit tre adopt par un grand nombre de personnes afin d'avoir un impact significatif sur les performances et la scurit du courrier sur Internet. Par consquent, le logiciel est distribu libre de droits, sans aucun lien. Performance. Postfix est jusqu' trois fois plus rapide que son concurrent le plus proche. Un PC de bureau utilisant Postfix peut recevoir et envoyer un million de messages diffrents par jour. Postfix utilise les techniques des serveurs web pour rduire la charge de cration de processus et utilise d'autres techniques pour rduire les charges sur le systme de fichiers, sans compromettre la fiabilit. Compatibilit. Postfix est conu pour tre compatible avec sendmail afin de rendre aise la migration. Postfix supporte les fichiers /var[/spool]/mail, /etc/aliases, NIS, et ~/.forward. Cependant, Postfix essais galement d'tre facile administrer et en consquence n'utilise pas le fichier sendmail.cf. Sret et robustesse. Postfix est conu pour se comporter rationnellement en cas de stress. Lorsque le systme local manque d'espace disque ou de mmoire, le logiciel Postfix se retire, au lieu d'aggraver la situation. Par conception, aucun programme de Postfix ne continue crotre mesure que le nombre de message crot. Postfix est conu pour rester sous contrle. Flexibilit. Postfix est construit en une douzaine de petits programmes accomplissant chacun seulement une tche spcifique : recevoir un message via SMTP, dlivrer un message via SMTP, rcrire une adresse, etc... Les sites ayant des rgles particulires peuvent remplacer un ou plusieurs petits programmes par des versions alternatives. Et il est ais de dsactiver une fonctionnalit : les firewalls et stations clientes n'ont pas besoin de dlivrer du courrier localement. Scurit. Postfix utilise plusieurs niveaux de dfense pour protger le systme local contre les intrus. Presque tous les dmons de Postfix fonctionnent en cage (chroot) avec peu de privilges. Il n'y a aucun chemin direct entre le rseau et le programme sensible de livraison locale - un intrus doit traverser plusieurs programmes d'abord. Postfix ne fait pas mme confiance aux gestionnaires de ses propres files d'attentes ou au contenu de ses propres messages IPC. Postfix filtre les informations fournies par l'expditeur avant d'exporter via ses variables d'environnement. Dernier point mais pas le moindre, aucun programme de Postfix ne dispose du privilge set-uid.
Transports multiples. Prcdemment, l'auteur a configur des systmes Sendmail qui pouvait relayer entre l'Internet, DECnet, X400 et UUCP. Postfix est conu pour tre assez flexible pour qu'il puisse oprer dans de tels environnements sans recourir aux domaines virtuels ou aux alias. Toutefois, la version initiale de Postfix ne parle que le SMTP et a un support limit pour UUCP.
http://extranet.clg.fr/articles.php3?id_article=65
Domaines virtuels. Dans la plupart des cas, ajouter le support pour un domaine virtuel n'exige qu'un changement dans une table de consultation de Postfix. Les autres serveurs de mail ont gnralement besoin de plusieurs niveaux d'alias ou de redirection pour arriver au mme rsultat. Contrle anti-spam. Postfix peut restreindre les machines qui peuvent tre relayes via le systme Postfix et supporte des restrictions sur les courriers autoriss entrer. Postfix implmente les restrictions habituelles : listes noires, consultations RBL (real-time blackhole list), vrification expditeur/HELO. L'inspection du contenu n'a pas encore t implmente. Consultations de tables. Postfix n'implmente pas encore de langage de rcriture d'adresse. Au lieu de cela, il utilise des tables de consultation. Ces tables peuvent tre des fichiers locaux dbm ou db, ou des tables NIS ou NetInfo. Ajouter un support pour d'autres mcanismes de consultation est relativement facile.
Ce schma montre les composants de Postfix, et les flux circulants entre eux. Les composants du systme Postfix sont prsents dans cette documentation au chapitre anatomie de Postfix.
Les ellipses jaune sont des programmes de courrier. Les rectangles jaune sont des files d'attentes ou des fichiers. Les rectangles bleu sont des tables de consultations. Les programmes inclus dans l'encadr sont sous le contrle du dmon master de Postfix.
http://extranet.clg.fr/articles.php3?id_article=65
Les donnes incluses dans l'encadr sont la proprit du systme de mail Postfix. Les utilitaires en ligne de commande de Postfix. Le dmon principal master de Postfix. Les consultations DNS des dmons serveur SMTP et client SMTP. Les dmons bounce et defer (message rejets ou retards) et les flux des messages rejets. Les rcritures d'adresses et les requtes de rsolution du serveur SMTP et de l'agent local de livraison. Les flux de courrier transfrs par l'agent local de livraison. Les flux de notification au Postmaster propos des erreurs de protocole, violations de politique, etc... Les signaux alertant le dmon pickup et le gestionnaire de files d'attente que du courrier est arriv dans les files d'attente maildrop et incoming, respectivement.
Installation d'un serveur de messagerie Postfix des raisons de confidentialit, ces processus communiquent en utilisant des sockets UNIX ou des FIFO qui rsident dans un rpertoire protg. En dpit de cette intimit, les processus de Postfix ne font pas vraiment confiance aux donnes qu'ils reoivent de cette manire; comme le contenu des fichiers de files d'attente, ils le traitent comme du bavardage. La quantit d'information passe entre les processus est limite. Dans la plupart des cas, la seule information change entre processus est un nom de fichier de file d'attente et une liste de destinataires ou quelques informations de statut. Une fois qu'un courrier est enregistr dans un fichier, il y reste jusqu' ce qu'il soit lu par un programme de livraison de courrier. Postfix prend les prcautions habituelles pour viter la perte d'information : flush et fsync() de toutes les donnes avant d'accuser rception et examen de tous les rsultats d'appels systme pour dtecter les conditions d'erreurs. Ce style de programmation peut paratre nouveau certains, mais je peux vous assurer que c'est une pratique normalise depuis des annes dans beaucoup d'endroits.
http://extranet.clg.fr/articles.php3?id_article=65
10
Installation d'un serveur de messagerie Postfix Postfix essaie d'tre bon voisin sur le rseau. Lorsqu'il dlivre du courrier un site, Postfix n'tablira initialement pas plus de deux connexions simultanes. Au fur et mesure que les livraisons russissent, la simultanit augmente lentement jusqu' une certaine limite configurable (ou jusqu' ce que l'hte ou le rseau n'assimile plus la charge); la simultanit dcrot en cas de congestion. Pour ceux qui sont familiers avec l'implmentation TCP/IP, Postfix implmente son propre algorithme analogue au TCP slow start.
5.4.3 Equitabilit
Indpendamment du contrle d'effet de troupeau, la stratgie de livraison de Postfix est base sur un mcanisme de round-robin. Le gestionnaire de file d'attente trie les destinataires de messages dans la file d'attente active par destination, et utilise un mcanisme de round-robin sur toute la file des destinations. En moyenne, Postfix fera des livraisons simultanes vers le mme domaine seulement lorsqu'il n'y aura pas assez de travail pour occuper tous les canaux de sortie SMTP. Ainsi, quand AOL se met hors-ligne et revient, il ne bloquera pas la livraison vers les autres sites. Lorsque du courrier arrive plus vite que Postfix ne peut le livrer, il favorise le nouveau courrier par rapport au courrier en retard. L'ide est que le nouveau courrier doit tre livr aussi rapidement que possible; le courrier retard peut tre livr pendant que le systme tourne vide.
5.5 Scurit
5.5.1 Introduction
Par dfinition, les logiciels de courrier manipulent des informations issues de sources inconnues. Par consquent, ces logiciels doivent tre crits avec grand soin, mme lorsqu'il fonctionne avec des privilges d'utilisateur et mme lorsqu'il ne communique pas directement avec un rseau. Postfix est un systme complexe. La version initiale est compose de 30,000 lignes de code (aprs suppression des commentaires). Avec un systme aussi complexe, la scurit ne peut dpendre d'un seul mcanisme. Dans le cas contraire, une seule erreur peut suffire compromettre tout le systme. Par consquent, Postfix utilise plusieurs lignes de dfense pour matriser les dommages issus des logiciels et autres erreurs.
http://extranet.clg.fr/articles.php3?id_article=65
11
5.5.3 Cloisonnement
Postfix utilise des processus spars pour isoler l'activit de chacun. En particulier, il n'y a aucun chemin direct entre le rseau et le programme sensible du point de vue de la scurit : l'agent local de livraison. Un intrus doit passer au travers de plusieurs programmes. Certaines parties du systme Postfix utilisent de multiples threads. Toutefois, tous les programmes interagissant avec l'extrieur n'utilisent pas de threads. La sparation des processus fournit un meilleur cloisonnement que de multiples threads avec un espace mmoire partag.
5.5.5 Set-uid
Aucun programme de Postfix n'utilise le dispositif set-uid. L'introduction de ce concept fut une norme erreur commise dans l'histoire d'Unix. Set-uid (et son cousin plus faible, set-gid) causent plus d'ennui qu'ils n'en faut. Chaque fois qu'un nouveau dispositif est ajout au systme UNIX, setuid entrane un problme de scurit : librairies partages, systme de fichiers /proc, support multi langue, pour mentionner seulement quelques exemples. Set-uid empche d'introduire certains dispositifs qui rendent les successeurs d'UNIX tels plan9 attractifs, par exemple, espace de noms du systme de fichier par processus. Initialement, le rpertoire maildrop tait en criture pour tout le monde, de sorte que les processus locaux pouvaient poster du courrier sans l'assistance d'une commande set-uid ou set-gid ou d'un processus dmon de courrier. Ce rpertoire n'tait pas utilis pour le courrier provenant du rseau, et ses fichiers n'taient pas lisibles par les utilisateurs non privilgis. Un rpertoire ouvert en criture ouvre des possibilits d'ennui : un utilisateur local peut crer des liens en durs vers des fichiers courrier d'un autre utilisateur ainsi ils ne partent pas et/ou sont livrs plusieurs fois; un utilisateur local peut remplir le rpertoire maildrop et essayer de faire planter le systme; enfin, un utilisateur local peut crer des liens depuis les fichiers d'un autre utilisateur et essayer de les faire dlivrer par courrier. Cependant, les fichiers de file d'attente ont un format spcifique; moins d'un fichier non Postfix sur 1012 serait reconnu comme un fichier Postfix valide. En raison du potentiel de vulnrabilit, Postfix a abandonn l'ouverture en criture tout le monde du rpertoire maildrop et utilise un petit programme d'aide postdrop disposant d'un set-gid pour soumettre le courrier.
http://extranet.clg.fr/articles.php3?id_article=65
12
5.5.6 Confiance
Comme mentionn prcdemment dans la vue d'ensemble, les programmes Postfix n'accorde pas de confiance au contenu des fichiers en file d'attente ou au messages IPC internes. Les fichiers en file d'attente n'ont pas d'informations enregistres sur disque concernant les destinations sensibles tels les fichiers ou commandes. Au lien de cela, les programmes tel l'agent local de livraison essaient de prendre les dcisions sensibles du point de vue de la scurit sur la base d'information de premire main. Naturellement, les programmes de Postfix n'accordent aucune confiance aux donnes reues depuis le rseau. En particulier, Postfix filtre les donnes issues de l'expditeur avant de les exporter via des variables d'environnement. S'il y a une leon que les gens ont appris des dsastres de scurit sur les sites web, c'est celle-ci : ne jamais laisser aucune donne issue du rseau prs d'un shell. Le filtrage est le mieux qu'on puisse faire.
La mmoire pour les chanes et les buffers est alloue dynamiquement, afin de prvenir les problmes de buffer overrun. Les longues lignes d'un message entrant sont coupes en squences de taille raisonnable et sont reconstruites la livraison. Les diagnostics sont tronqus (en un seul endroit!) avant d'tre passes l'interface syslog (3), afin de prvenir les buffers overruns sur les anciennes plateformes. Cependant, aucune donne n'est tronque avant d'tre passe un appel systme ou une routine. Sur certaines plateformes, le logiciel peut malgr tout avoir des problmes de buffer overrun, suite des vulnrabilits dans le logiciel sous-jacent. Aucune tentative n'est faite pour se protger contre les trop longs arguments en ligne de commande. Les noyaux UNIX imposent leurs propres limites, ce qui devrait suffire pour traiter les programmes emballs ou les utilisateurs malveillants.
Le nombre d'instances en mmoire de chaque type d'objets est limit, pour viter au systme de mail de ployer sous la charge. En cas de problme, le logiciel fait une pause avant d'envoyer une rponse d'erreur au client, avant de se terminer avec une erreur fatale ou avant de tenter de redmarrer un programme ayant chou. Le but est de prvenir les tats d'emballement qui rendent simplement les problmes pires.
6 Anatomie de Postfix
6.1 Rception du courrier
Lorsqu'un message entre dans un systme Postfix, le premier point d'arrt est la file d'attente entrante. Le schma ci-dessus montre les principaux composants impliqus dans le traitement d'un nouveau courrier.
http://extranet.clg.fr/articles.php3?id_article=65
13
Le courrier est dlivr localement. Le programme sendmail de Postfix appelle le programme privilgi postdrop lequel dpose le message dans le rpertoire maildrop dont l'emplacement est spcifi par le paramtre queue_directory. C'est dans ce dossier que le message est examin par le dmon pickup. Ce dmon pratique quelques examens de salubrit afin de protger le reste du systme Postfix. Le courrier arrive par le rseau. Le serveur SMTP de Postfix reoit le message et pratique quelques examens de salubrit afin de protger le reste du systme Postfix. Le serveur SMTP peut tre configur pour effectuer des restrictions UCE (Unsolicited Commercial Email) bases sur des listes noires locales ou obtenues par rseau, des rsolutions DNS, et d'autres informations sur les requtes client. Le courrier est gnr par le systme Postfix. Le serveur Postfix peut gnrer des messages lui-mme afin de renvoyer le courrier non livrable l'expditeur. Les dmons bounce et defer expdie la mauvaise nouvelle. Le courrier est transfr par l'agent local de livraison du courrier, soit en suivant une entre de la base de donnes d'alias (/etc/postfix/aliases), soit en suivant une indication d'un fichier .forward d'un utilisateur. Ceci est indiqu par la flche sans lgende. Le courrier est gnr par le systme Postfix lui-mme afin d'informer le postmaster d'un problme (cette voie est galement indique par la flche sans lgende. Le systme Postfix peut tre configur pour notifier au postmaster les problmes de protocole SMTP, violations de politique anti-spam, etc... Le dmon cleanup effectue l'tape de traitement finale du nouveau courrier. Il ajoute les From: manquants et autres en-ttes de message, rcrit les adresses sous la forme standard [email protected], et ventuellement extrait les adresses de destination des en-ttes de message. Le dmon cleanup insre le rsultat comme un simple fichier dans la file d'attente incoming, et informe le gestionnaire de file d'attente de l'arrive d'un nouveau courrier. Le dmon cleanup peut tre configur pour transformer les adresses sur la base des tables de correspondance canoniques et virtuelles.
http://extranet.clg.fr/articles.php3?id_article=65
14
Sur demande du dmon cleanup, le dmon trivial-rewrite rcrit les adresses sous la forme standard [email protected]. Postfix ne dispose pas de langage de rcriture. En implmenter un demanderait beaucoup d'effort et la plupart des sites n'en ont pas besoin. Toutefois, Postfix utilise des tables de consultation cet effet.
Le gestionnaire de file d'attente est le coeur du systme de courrier Postfix. Il contacte les agents de livraison local, smtp, lmtp, ou pipe, et envoie une requte de livraison avec le chemin du fichier en file d'attente, l'adresse d'expdition du message, l'hte destinataire si la destination est distante et une ou plusieurs adresses de destination. Le gestionnaire de file d'attente entretient une file d'attente spare pour les messages qui ne peuvent tre livrs (deffered), ainsi un grand nombre de messages retards ne ralentissent pas l'accs la file d'attente normale. Le gestionnaire de file d'attente entretient une petite file d'attente active contenant seulement les quelques messages ouverts pour livraison. La file d'attente active agit comme une fentre limite sur les files d'attentes plus grandes entrante ou retarde. La petite file d'attente active vite au gestionnaire de file d'attente de dpasser la mmoire alloue. ventuellement, le gestionnaire de file d'attente traite le courrier des destinataires lists dans la table relocated. Cette table contient les informations concernant les utilisateurs ou les domaines n'existant plus.
http://extranet.clg.fr/articles.php3?id_article=65
15
Sur demande du gestionnaire de file d'attente, le dmon trivial-rewrite rsout les destinations. Par dfaut, il distingue seulement les destinations local et distantes. Les informations de routage additionnelles peuvent tre indiques avec la table optionnelle transport. Sur demande du gestionnaire de file d'attente, les dmons bounce et defer gnrent des rapports de non livraison lorsqu'un courrier ne peut tre livr, soit cause d'une erreur irrmdiable, soit parce que la destination n'est pas joignable pendant une certaine priode. L'agent local de livraison interprte les botes aux lettres de type UNIX, les bases de donnes d'alias de type sendmail et les fichier .forward des utilisateurs de type sendmail. Plusieurs agents locaux de livraison peuvent fonctionner en parallle, mais la livraison parallle au mme utilisateur est gnralement restreinte. Comme l'agent de postage du courrier sendmail, l'agent local de livraison implmente l'interface utilisateur familire de Sendmail. L'agent local de livraison peut utiliser diffrentes formes de livraison du courrier: vous pouvez le configurer pour livrer le courrier dans les fichier bote aux lettres des rpertoires utilisateurs et vous pouvez mme le configurer pour dlguer la livraison une commande externe telle le programme populaire procmail.
L'agent virtuel de livraison est une version dpouille de l'agent de livraison local qui livre seulement dans les botes aux lettres. C'est l'agent de livraison le plus scuris de Postfix, car il n'utilise pas les alias ni les fichiers .forward. Cet agent de livraison peut livrer le courrier de plusieurs domaines, ce qui le rend particulirement appropri l'accueil de nombreux petits domaines sur une seule machine.
Le client SMTP recherche la liste des serveurs de courrier de la destination, les classe dans l'ordre de prfrence et essaie alternativement chaque adresse jusqu' trouver un serveur qui rpond. Sur un systme Postfix charg vous observerez plusieurs clients SMTP fonctionnant en parallle. Le client LMTP utilise un protocole semblable au SMTP. Le client peut se connecter localement ou des serveurs distants tels Cyrus. Toute la gestion des files d'attente est faite par Postfix. L'avantage de cette utilisation est qu'une machine Postfix peut alimenter de multiples serveurs de bote aux lettres par LMTP. Inversement, un serveur de bote aux lettres peut tre aliment par de multiples serveurs par LMTP. Le processus pipe est l'interface de sortie des autres transporteurs de courrier (le programme sendmail est l'interface d'entre). Le systme de courrier Postfix comporte des exemples pour la livraison par le protocole UUCP. l'heure de la rdaction de ces lignes, ce vnrable protocole est encore largement rpandu. Par dfaut, Postfix interprte les adresses de type bang path.
http://extranet.clg.fr/articles.php3?id_article=65
16
6.3 En coulisse
Les sections prcdentes ont donn une vue d'ensemble simplifie de la faon dont le systme Postfix envoie et reoit le courrier. De nombreuses autres oprations se passent en coulisse. Malheureusement, il est difficile de les visualiser sur un affichage en deux dimensions, c'est pourquoi ce document n'a pas d'illustrations.
Le dmon master est le processus surveillant qui garde en oeil sur le bon fonctionnement du systme de courrier. Il est typiquement lanc au dmarrage du systme par la commande postfix, et reste en fonctionnement jusqu' l'arrt du systme. Le dmon master est responsable du dmarrage de tous les autres dmons de Postfix la demande et du redmarrage des dmons termins prmaturment pour diffrents problmes. Le dmon master est galement responsable du respect des limites de nombre de processus dfinis dans le fichier de configuration master.cf. Le dmon bounce ou defer est appel par les autres processus afin de maintenir les fichiers de log de chaque message avec les informations de non livraison. Le dmon trivial-rewrite est appel par les autres processus afin de rcrire les adresses sous la forme [email protected], ou pour rsoudre une destination. Le dmon showq numre le statut de la file d'attente de Postfix. C'est le programme cach derrire la commande mailq. Le dmon flush amliore l'excution de la commande SMTP ETRN, et son quivalent en ligne de commande sendmail -qRdestination, pour les destinations choisie. Le dmon proxymap fournit un service de rsolution en lecture seule pour les processus client de Postfix. Le but est surmonter des restrictions de chroot, et de consolider le nombre de tables ouvertes de consultation en mettant en commun une table ouverte entre des processus multiples. Le dmon spawn coute sur un port TCP, une socket UNIX ou une FIFO et lance les commandes non Postfix la demande, avec la socket ou la FIFO connecte sur les flux standard entre, sortie et erreur. Il n'est actuellement utilis que dans un exemple du systme externe de filtrage du contenu de Postfix.
La commande postfix commande les oprations du systme de courrier. C'est l'interface pour dmarrer et arrter le systme de courrier et pour quelques autres oprations administratives. Cette commande est rserve au super-utilisateur. La commande postalias maintient les bases de donnes d'alias. C'est le programme cach derrire la commande newaliases. La commande postcat montre le contenu des fichiers de file d'attente de Postfix. C'est un utilitaire limit et primaire. Ce programme est typiquement superviser par quelque chose de plus puissant qui peut aussi diter les files d'attente.
http://extranet.clg.fr/articles.php3?id_article=65
17
La commande postconf montre les paramtres du fichier main.cf de Postfix : valeurs actuelles, valeurs par dfaut ou paramtres n'ayant pas de valeur par dfaut. C'est un utilitaire limit et primaire. Ce programme est typiquement superviser par quelque chose de plus puissant qui ne se limite pas l'dition du fichier main.cf. La commande postdrop est l'utilitaire d'expdition utilis par la commande sendmail afin de dposer le courrier dans le rpertoire de file d'attente maildrop. La commande postkick ouvre quelques canaux de communication utilisables, par exemple dans des scripts shell. La commande postlock permet de verrouiller une bote aux lettres Postfix, par exemple dans des scripts shell. La commande postlog fournit une connexion compatible Postfix pour les scripts shell. La commande postmap maintient les tables de consultation telles les tables canonical, virtual et autres. C'est une cousine de la commande UNIX makemap. La commande postqueue est l'utilitaire lanc par la commande sendmail afin de vider ou lister les courriers en file d'attente. La commande postsuper maintient la file d'attente de Postfix. Elle supprime les vieux fichiers temporaires et dplace les fichiers de file d'attente dans les bons rpertoires aprs une modification dans la profondeur de hachage des rpertoires de file d'attente. Cette commande est lance au dmarrage de systme de courrier.
7 Installation
7.1 Installation partir des sources 7.2 Installation partir de paquetages pr-compils
7.2.1 Debian :
Installation a partir du programme apt :
# apt-get install postfix
Faire OK sur l'cran Postfix Configuration. Choisissez Site Internet dans le stypes de configuration. Remplissez les diffrents crans de configuration selon ce qui vous est propos... Arrter postfix :
/etc/init.d/postfix stop
http://extranet.clg.fr/articles.php3?id_article=65
18
8 Configuration
8.1 Configuration de base
8.1.1 Introduction
Postfix a plusieurs centaines de paramtres de configuration qui sont contrls par l'intermdiaire du fichier main.cf. Heureusement, ils ont des valeurs par dfaut. Dans la plupart des cas, vous devez configurer seulement des deux ou trois paramtres avant de pouvoir employer le systme de courrier de Postfix:
Quel domaine afficher dans le courrier sortant (myorigin) De quels domaines recevoir le courrier (mydestination) De quels clients relayer le courrier (mynetworks)
Les valeurs par dfaut pour beaucoup d'autres paramtres de configuration sont drives juste de ces derniers. Le prochain paramtre intressant commande la quantit de courrier envoye au postmaster local:
Soyez sr de placer le suivant correctement si vous tes derrire un proxy ou un traducteur d'adresses rseau, et vous utilisez serveur de MX backup pour un autre domaine:
Si vous changez des paramtres d'un systme Postfix actif, n'oubliez pas de lancer la commande postfix reload de Postfix. Si vous utilisez Postfix sur une interface rseau virtuelle, ou si d'autres serveurs de mail fonctionnent sur votre machine sur des interfaces virtuelles, vous devrez regarder les paramtres cidessous :
Mon nom de machine (myhostname) Mon nom de domaine (mydomain) Mes rseaux (mynetwork) Mes adresses de rseau (inet_interface)
Installation d'un serveur de messagerie Postfix myorigin = $myhostname (dfaut) myorigin = $mydomain (probablement souhaitable)
Installation d'un serveur de messagerie Postfix mydestination = $myhostname localhost.$mydomain www.$mydomain ftp.$mydomain Attention: afin d'viter des boucles de distribution du courrier, vous devez numrer tous les noms d'htes de la machine, incluant $myhostname, et localhost.$mydomain.
Installation d'un serveur de messagerie Postfix mydestination. Pour que Postfix transfre le courrier vers d'autres machines et/ou domaines que ceux grs par vos services, il faut tout simplement spcifier le paramtre relay_domains vide.
Installation d'un serveur de messagerie Postfix Envoie les doubles rebonds au postmaster. delay Informe le postmaster du courrier retard. Dans ce cas, le postmaster reoit les en-ttes de message seulement. policy Informe le postmaster des demandes clients qui ont t rejetes en raison de la politique de restriction (anti-spam). Le postmaster reoit une transcription de la session SMTP entire. protocol Informe le postmaster des erreurs de protocole (ct client ou serveur) ou des tentatives d'un client d'excuter des commandes non implmentes. Le postmaster reoit une transcription de la session SMTP entire. resource Informe le postmaster des courriers non dlivrs en raison d'un problme de ressource (par exemple, la file d'attente crivant les erreurs). software Informe le postmaster des courriers non dlivrs en raison de problmes logiciels.
Installation d'un serveur de messagerie Postfix reoit le courrier pour la machine elle-mme : le serveur de mail non-virtuel ne devrait jamais couter sur les interfaces virtuelles ou vous risquez une boucle de mail. Exemples: Dfaut: inet_interfaces = all Machine utilisant des serveurs virtuels : inet_interfaces = virtual.host.tld (domaine virtuel) inet_interfaces = $myhostname localhost.$mydomain (serveur non-virtuel) Note: vous devez arrter et redmarrer Postfix lorsque ces paramtres changent.
Installation d'un serveur de messagerie Postfix queue_run_delay maximal_queue_lifetime minimal_backoff_time maximal_backoff_time qmgr_message_recipient_limit Ralentir les mauvais clients smtpd_error_sleep_time smtpd_soft_error_limit smtpd_hard_error_limit
Installation d'un serveur de messagerie Postfix pour des canaux spcifiques de livraison (local, smtp, uucp etc.). Le fichier main.cf recommande ce qui suit: local_destination_concurrency_limit = 2 default_destination_concurrency_limit = 20 Le paramtre local_destination_concurrency_limit indique combien de messages peuvent tre dlivrs simultanment au mme destinataire local. La limite recommande est basse parce que la livraison la mme bote aux lettres doit se produire squentiellement, ainsi le paralllisme massif n'est pas utile. Une autre bonne raison de limiter la simultanit de la livraison au mme destinataire: si le destinataire a une commande shell lourde dans son fichier .forward, ou si le destinataire est un directeur de liste de diffusion, vous ne souhaiterez pas lancer trop d'instances en mme temps. Une limite de simultanit de destination de 20 pour la livraison smtp semble assez pour charger sensiblement un systme sans le mettre genoux. Faites attention en changeant cette valeur en un nombre beaucoup plus grand.
Installation d'un serveur de messagerie Postfix temps. Le client peut dclencher la livraison en lanant une commande ETRN sur le port SMTP. Les exemples suivants montrent comment configurer un tel client: /etc/postfix/main.cf: defer_transports = hold Vous pouvez indiquer tout nombre de transports ici. L'exemple en montre seulement un. /etc/postfix/transport: customer.com hold:[gateway.customer.com ] customer.com hold:[gateway.customer.com ] Les [] sont ncessaire pour viter les consultations DNS MX, qui pourraient pointer sur votre machine locale. La deuxime entre est ncessaire seulement si vous souhaitez transmettre par relais le courrier pour des sous domaines du client. /etc/postfix/master.cf:
hold unix n smtp
Ceci est seulement l'entre de master.cf pour le smtp rgulier, avec le premier champ chang en hold.
Si l'agent de la livraison bloque le message, le gestionnaire de files d'attente donne au fichier en attente un timbre de temps dans le futur, ainsi il ne sera pas regard pendant un moment. Par dfaut, le dlai attendre vaut le temps pass depuis que le message est arriv. Ceci a comme consquence le comportement appel exponential backoff. Si l'agent de la livraison bloque la destination (par exemple un utilisateur local, ou un hte distant), le gestionnaire de files d'attente avance non seulement le timbre de temps du fichier de file d'attente, mais met galement la partie de rception sur une liste de destination "mortes" de sorte qu'il soit ignor pour un certain laps de temps.
Comme vous vous en doutez, ce processus entier est rgi par un ensemble de petits paramtres : queue_run_delay (dfaut: 1000 secondes) Frquence laquelle le gestionnaire de files d'attente balaye la file d'attente du courrier report. maximal_queue_lifetime (dfaut: 5 jours) Combien de temps un message reste dans la file d'attente avant qu'il soit considr comme non livrable. minimal_backoff_time (dfaut: 1000 secondes) http://extranet.clg.fr/articles.php3?id_article=65 27
Installation d'un serveur de messagerie Postfix Quantit de temps minimale pendant laquelle un message ne sera pas regard, et quantit de temps minimale de maintien en destination "morte". maximal_backoff_time (dfaut: 4000 secondes) Quantit de temps maximale pendant laquelle un message ne sera pas regard aprs un chec de la livraison. qmgr_message_recipient_limit (dfaut: 20000) Taille de beaucoup de structures de donnes en mmoire du gestionnaire de files d'attente. Entre autres, ce paramtre limite la taille de la liste de "morts" en mmoire. Les destinations qui agrandiraient la liste au del ne sont pas ajoutes.
http://extranet.clg.fr/articles.php3?id_article=65
28
Installation d'un serveur de messagerie Postfix lignes longues sont reconstruites la livraison. header_size_limit (dfaut: 102400 octets) Taille maximale d'un en-tte de message multi ligne. Le texte d'en-tte dpassant $header_size_limit est renvoy dans le corps du message. Cette limite est exploite par le dmon de rcriture des en-ttes clean-up. header_address_token_limit (dfaut: 10240 tokens) Limite l'emploi de la mmoire et de la CPU que Postfix utilisera pour rcrire les adresses dans les en-ttes de messages. Cette limite est exprime en nombre d'instances. Au del, les instances sont ignores. Cette limite est exploite par le dmon de rcriture des en-ttes clean-up. extract_recipient_limit (dfaut: 10240 destinataires) Nombre maximal de destinataires que Postfix extraira des en-ttes de message avant qu'il ne le transmette. Ceci limite les dommages qu'un programme s'emballant peut faire avec la commande "sendmail -t". Les paramtres suivants limitent l'utilisation du systme de stockage de fichiers: message_size_limit (dfaut: 10240000 octets) Taille maximale d'un fichier de file d'attente de Postfix, y compris l'enveloppe d'information (expditeur, destinataire, etc.). queue_minfree (dfaut: aucune restriction) Nombre d'octets d'espace libre ncessaires dans le systme de fichiers de file d'attente. Le serveur SMTP dcline les demandes de distribution de courrier quand l'espace libre est insuffisant (le courrier est accept une fois l'espace de nouveau disponible). Il n'y a aucune limite de dfaut; cependant, une bonne ide est d'avoir au moins plusieurs fois $message_size_limit de sorte que le systme de courrier ne se coince pas sur un simple grand message. bounce_size_limit (dfaut: 50000 octets) Volume de messages non dlivrs envoy de nouveau l'expditeur.
http://extranet.clg.fr/articles.php3?id_article=65
30
Installation d'un serveur de messagerie Postfix duplicate_filter_limit (dfaut: 1000) Nombre d'adresses de destination que l'agent local de livraison et le dmon clean-up enregistrent en fournissant un message. Une adresse de destination est ignore quand on la trouve dans la liste enregistre.
8.3.4 Dlais
Les commandes externes ont un temps fini pour accomplir leur tche. Ces commandes sont lances par l'agent local de livraison quand il trouve une destination "|commande" dans une base de donnes d'alias, un fichier :include: ou un fichier .forward. L'agent pipe met en application une alternative pour envoyer le courrier dans des commandes externes. command_time_limit (dfaut: 1000 secondes) Temps au bout duquel l'agent local de livraison interrompra une commande externe. service_name_time_limit (dfaut: $command_time_limit) Dlai de livraison aux commandes externes par l'intermdiaire de l'agent pipe. Substituez le nom du service service_name (le premier champ dans le fichier master.cf).
Verrous internes, implments dans les primitives systme fcntl() ou flock(). Verrous externes, mis en application par des fichiers appels fichier.lock.
Selon le systme hte, Postfix emploie une mthode ou les deux. Les paramtres de configuration suivants contrlent comment Postfix traite les verrous de fichier: deliver_lock_attempts (dfaut: 5) Nombre d'essais de verrouillage de fichier avant de renvoyer. deliver_lock_delay (dfaut: 1 seconde) Temps d'attente entre les tentatives de verrouillage d'un fichier. stale_lock_time (dfaut: 500) Age minimum d'un fichier de verrouillage externe avant qu'il ne soit enlev de force.
Installation d'un serveur de messagerie Postfix tentative choue est enregistre dans les logs; esprant que quelqu'un notera le problme et le rglera. Quelques stratgies de rtablissement ont t mises en application trs tt pendant le dveloppement de Postfix, et n'ont pas encore t rendues configurables. Ce qui suit est le commencement d'une liste croissante de paramtres de commande de rtablissement: fork_attempts (dfaut: 5 fois) Nombre de tentatives de cration d'un nouveau processus. fork_delay (dfaut: 1 seconde) Dlai entre les tentatives de cration d'un nouveau processus. transport_retry_time (dfaut: 60 secondes) Dlai qu'attend le gestionnaire de files d'attente avant de contacter un service de livraison de Postfix apparemment mort.
http://extranet.clg.fr/articles.php3?id_article=65
32
Installation d'un serveur de messagerie Postfix transport_maps Table d'utilisateurs dplacs relocated_maps Livraison locale: Base de donnes d'alias alias_maps alias_database Fichiers .forward des utilisateurs .forward Utilisateurs inexistants local_recipient_maps luser_relay
Installation d'un serveur de messagerie Postfix crez une entre dans la table virtuelle qui roriente user@$myorigin vers user@$myhostname. Rewrite user@host to user@host.$mydomain Ce dispositif est contrl par le paramtre boolen append_dot_mydomain (dfaut: oui). Le but est d'obtenir un traitement conforme des diffrentes formes du mme hte. Certains contesteront cette rcriture de host vers host.$mydomain. C'est pourquoi il peut tre arrt. D'autres apprcient la convenance de faire apposer le domaine automatiquement. Rewrite user@site. to user@site (sans point de remorquage).
Installation d'un serveur de messagerie Postfix remplace any.thing.foo.example.com par foo.example.com, mais remplace any.thing.else.example.com par example.com. Un domaine prfix par ! signifie qu'il ne faut pas le remplacer ni ses sous-domaines. Ainsi, masquerade_domains = !foo.example.com example.com ne change pas any.thing.foo.example.com et foo.example.com, mais modifie any.thing.else.example.com par example.com. Le paramtre de configuration masquerade_exceptions indique quels noms d'utilisateur ne doivent pas tre soumis au masquage. Indiquez un ou plusieurs noms d'utilisateur spars par des espaces ou des virgules. Par exemple, masquerade_exceptions = root Par dfaut, Postfix ne fait aucune exception. Point subtile: par dfaut, le masquage d'adresse est applique seulement aux en-ttes de message, aux enveloppes d'adresses d'expditeur, mais pas aux destinataires. Ceci vous permet d'employer le masquage d'adresse sur une passerelle de courrier, tout en pouvant toujours expdier le courrier de l'extrieur aux utilisateurs sur diffrentes machines. Afin de soumettre aussi les adresses de destinataire d'enveloppe au masquage, indiquez (seulement disponible avec des versions de Postfix postrieures 20010802): masquerade_classes = envelope_sender, envelope_recipient, header_sender, header_recipient Si vous faites ceci, Postfix ne pourra plus envoyer le courrier diffrentes machines.
http://extranet.clg.fr/articles.php3?id_article=65
35
aucun smtp $default_transport La table de routage optionnelle transport remplace la mthode de livraison par dfaut (cette table est employe par le dmon de rcriture et de rsolution d'adresse). La table de routage peut tre employe pour envoyer le courrier de sites spcifiques par UUCP, ou pour envoyer le courrier un systme de courrier dfaillant qui n'accepterait qu'une connexion smtp la fois (oui, de tels systmes existent et il faut payer pour s'en servir). Les consultations de table la table de routage sont neutralises par dfaut. Pour les activer, diter le paramtre transport_maps dans le fichier main.cf et indiquer une ou plusieurs tables de correspondances, spares par des espaces ou des virgules. Par exemple: transport_maps = hash:/etc/postfix/transport
http://extranet.clg.fr/articles.php3?id_article=65
36
Installation d'un serveur de messagerie Postfix alias_maps = hash:/etc/aliases alias_maps = dbm:/etc/aliases, nis:mail.aliases Le chemin du fichier de la base de donnes d'alias est contrl par le paramtre de configuration alias_database. La valeur dpend du systme hte. Habituellement elle est l'une de celles-ci: alias_database = hash:/etc/aliases (4.4bsd, LINUX) alias_database = dbm:/etc/aliases (4.3bsd, SYSV<4) alias_database = dbm:/etc/mail/aliases (SYSV4) Pour des raisons de scurit, les livraisons vers une commande ou un fichier sont excutes avec les droits du propritaire de la base de donnes d'alias. Un UID par dfaut, default_privs, est employ pour les livraisons vers une commande/un fichier pour les alias appartenant root.
(i.e. vide) dans le fichier main.cf, sinon le serveur SMTP de Postfix rejettera le courrier des comptes non-UNIX avec la mention "User unknown in local recipient table". luser_relay indique une adresse. Il est soumis aux expansions $name. Les exemples les plus utiliss sont: [email protected] Le nom d'utilisateur seul, sans extension d'adresse, est prfix @other.host. Par exemple, le courrier destin username+foo est envoy [email protected]. [email protected] L'adresse originale entire, y compris l'extension d'adresse, est prfix @other.host. Par exemple, le courrier pour username+foo est envoy [email protected]. sysadmin+$user
http://extranet.clg.fr/articles.php3?id_article=65
37
Installation d'un serveur de messagerie Postfix Le nom d'utilisateur seul, sans extension d'adresse, est ajout sysadmin. Par exemple, le courrier pour username+foo est envoy sysadmin+username. sysadmin+$mailbox L'adresse originale entire, y compris l'extension d'adresse, est ajoute sysadmin. Par exemple, le courrier pour username+foo est envoy sysadmin+username+foo.
r-crire une adresse dans une forme standard rsoudre une adresse par trois mthodes distinctes: transport, nexthop, recipient. vrifier la validit d'une adresse smtp(8) lmtp(8) local(8) virtual(8) pipe(8) error(8)
Le prsent cas qui nous interesse est le fonctionnement de virtual(8). Cet agent de livraison ne sait que dlivrer les messages. Les autres fonctionalites telles que le renvoi de messages (mail forwarding), les fonctions de rpondeur (out of office notification), etc doivent tre configures par le mcanisme des tables des virtual_alias, ou par tout autre mcanisme similaire de recherche. http://extranet.clg.fr/articles.php3?id_article=65 38
C'est l'agent virtual(8) qui vient lire l'emplacement de la boite au lettre du destinataire. Cet emplacement est dtermin par les paramtres virtual_mailbox_base et virtual_mailbox_maps. La table virtual_mailbox_maps est indexe par l'adresse complte du destinataire. Le chemin de la bote aux lettres est le fruit d'une concatnation entre le prfixe impos par virtual_mailbox_base et le rsultat de la recherche dans la table virtual_mailbox_maps. Selon si le rsultat de la recherche dans la table virtual_mailbox_maps se termine ou non par un slash ( / ) il s'agit d'un emplacement de type maildir ou mailbox. Le propritaire de la boite aux lettres est control par les tables indiques pour virtual_uid_maps, et virtual_gid_maps, qui elles aussi sont indexes par l'adresse complte du destinataire. Le paramtre virtual_minimum_uid indique l'identifiant minimum d'un propritaire de boite aux lettres. L'ordre de recherche dans les tables est ralis de la manire suivante :
recherche d'une adresse tendue ([email protected]) Ce type d'adresse tendue mane en ralit d'une astuce permettant de trier automatiquement le courrier entrant par le biais de logiciels comme procmail. Je ne sais pas si elle est vraiment d'usage, ni utile dans notre cas de serveur de mails. recherche de l'adresse standard ([email protected]) recherche du nom du domaine (@domaine.tld)
Accessoirement, le contenu d'une table peut tre reprsent par des expression rgulires. Si tel est le cas, la cl de recherche ne peut-tre qu'une adresse standard, car c'est cette dernire qui est donne en pature l'expression rgulire.
Installation d'un serveur de messagerie Postfix notify_classes = resource,software # On accepte de relayer les mails vers des adresses extrieures relay_domains = ########################################### # Donnes variantes ########################################### mail_owner = postfix default_privs = vmail queue_directory = /home/vmail/spool/postfix home_mailbox = Maildir/ # Dossier des mailbox des users locaux. mail_spool_directory = /var/spool/mail unknown_client_reject_code = 450 unknown_address_reject_code = 550 debug_peer_level = 1 mynetworks_style = host mydomain_fallback = domaine.tld enable_server_options = yes smtpd_banner = ESMTP $mail_name setgid_group = postdrop biff = no ########################################## # Gestion des adresses ########################################## best_mx_transport = virtual append_dot_mydomain = yes alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases virtual_mailbox_base = /home/vmail/inbox virtual_mailbox_domains = /etc/postfix/virtualdomains virtual_minimum_uid = 100 virtual_uid_maps = static:105 virtual_gid_maps = static:65534 virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_alias_maps = hash:/etc/postfix/virtual virtual_alias_domains = $virtual_alias_maps local_recipient_maps = ########################################### # Simultanit de destination ########################################### http://extranet.clg.fr/articles.php3?id_article=65 40
Installation d'un serveur de messagerie Postfix initial_destination_concurrency = 2 local_destination_concurrency_limit = 2 default_destination_concurrency_limit = 10 ########################################### # Limites sur les destinataires ########################################### default_destination_recipient_limit = 50 ########################################### # Backoff des serveurs inaccessibles ########################################## queue_run_delay = 300s maximal_queue_lifetime = 1d bounce_queue_lifetime = 1d minimal_backoff_time = 900s maximal_backoff_time = 1800s qmgr_message_recipient_limit = 20000 ########################################### # Ralentir les mauvais clients ########################################## smtpd_error_sleep_time = 5s smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 20 ########################################## # Limites de taille des objets ########################################## line_length_limit = 2048 header_size_limit = 102400 header_address_token_limit = 10240 extract_recipient_limit = 10240 message_size_limit = 20480000 mailbox_size_limit = 0 queue_minfree = 30720000 bounce_size_limit = 50000 command_time_limit = 900s ########################################## # Destinataire des messages d'erreur ########################################## 2bounce_notice_recipient = postmaster address_verify_sender = postmaster bounce_notice_recipient = postmaster delay_notice_recipient = postmaster error_notice_recipient = postmaster
http://extranet.clg.fr/articles.php3?id_article=65
41
Installation d'un serveur de messagerie Postfix maildir, alors vous devez crer manuellement toute l'arborescence du dossier indiqu dans mail_spool_directory. Postfix ne le fera pas pour vous. Exemples: mail_spool_directory = /var/mail mail_spool_directory = /var/spool/mail virtual_mailbox_domains (valeur par dfaut: $virtual_mailbox_maps) Ce paramtre indique la liste des domaines grs par Postfix; Les messages reus sont restitus par l'intermdiaire de la mthode choisie dans $virtual_transport. Par dfaut, il s'agit de l'agent de livraison virtual(8) de Postfix qui s'occupe de cette tche. Le serveur SMTP valide les adresses de destinations par l'intermdiaire des lments spcifis dans $virtual_mailbox_maps et rejette les messages qui n'ont pas de destinataires dans cette liste. Consultez le fichier ADDRESS_CLASS_README qui explique le fonctionnement de la classes de gestion des boites aux lettres des domaines virtuels. Ce paramtre attends la mme syntaxe que le paramtre de configuration mydestination; Indiquez ici une liste de machines ou de nom de domaines, un modle /file/name ou type:table, le tout spars soit par un espace soit par une virgule. Il faut savoir qu'un modle file/name est remplac par son contenu, et qu'une table de recherche type:table est assortie lorsqu'un nom correspond une cl de recherche (le rsultat de la recherche est ignor). Il est possible de tronquer les longues lignes en commenant la ligne suivante par un espace. Cette fonctionalit n'est possible qu'a partir de la version 2.0 de Postfix. Le paramtre par dfaut garde une compatibilit descendante avec Postfix 1.1. virtual_mailbox_base (valeur par dfaut: vide) Ce paramtre indique un prfixe que l'agent de livraison rajoute au dbut de tous les chemins rsultant d'une recherche dans la table $virtual_mailbox_maps. Il s'agit ici d'une mesure de scurit afin d'viter une pollution du systme de fichier avec des boites aux lettres, cause d'une erreur de configuration des maps. Il reste toutefois possible d'indiquer / comme paramtre ce qui est bien entendu trs dconseill. Exemples: virtual_mailbox_base = /var/mail virtual_mailbox_base = /home/vmail virtual_mailbox_maps (valeur par dfaut: vide) Ce paramtre indique la table de recherche optionnelle qui contient toutes les adresses emails valide des domaines indiqus dans $virtual_mailbox_domains. Dans la table de recherche, ne rien indiquer sur la zone situe gauche de @domain.tld permet d'indiquer la destination des messages envoys n'importe quel utilisateur d'un domaine donn et qui n'aurait pas d'entre [email protected] explicite. L'agent de livraison virtual(8) utilise cette table pour rechercher les botes aux lettres ou les dossiers de stockage (maildir) d'un destinataire donn. Lorsque le rsultat de la recherche se http://extranet.clg.fr/articles.php3?id_article=65 43
Installation d'un serveur de messagerie Postfix termine par un slash (/), alors la livraison est ralise dans le style dossier de stokage (maildir), sinon, le chemin est considr comme pointant vers un fichier de bote aux lettres (mailbox). Notez que la valeur du paramtre pass $virtual_mailbox_base est systmatiquement ajout comme prfixe ce chemin de destination. Lorsque l'adresse de destination contient une extension d'adresse locale (dfinie par l'usage, pas par une RFC) du type [email protected], l'agent de livraison virtual(8) recherche d'abord l'adresse complte ([email protected]), et lorsque la recherche choue, il recherche l'adresse non tendue du type [email protected]. Dans tous les cas le message doit tre livr [email protected], mais l'entte du message contiendra [email protected]. Note 1: Pour des raisons de scurit, l'agent de livraison virtual(8) desactive la substitution par expressions rgulires de $1, etc dans les tables de recherche des expressions rgulires, puisque cela pourait ouvrir un trou de scurit. Note 2: Pour des raisons de scurit, l'agent de livraison virtual(8) desactive la recherche dans les tables travers le serveur proxymap(8) puisque cela pourait ouvrir un trou de scurit. virtual_minimum_uid (valeur par dfaut: 100) Ce paramtre indique la valeur minimale d'un UID qui est accept par l'agent de livraison virtual(8) au rsultat d'une recherche dans la table $virtual_uid_maps. Toute valeur rsultant de cette recherche qui est infrieure ce paramtre est rejette, ce qui a pour consquence de reporter la livraison du message. virtual_uid_maps (valeur par dfaut: vide) Ce paramtre permet de spcifier l'emplacement de la table de correspondance entre un UID (User Identifier) et une adresse de destination. L'agent de livraison virtual(8) utilise cette table afin de dterminer sous quel UID il doit crire le message dans la bote aux lettre de destination. Dans la table de recherche, ne rien indiquer sur la zone situe gauche de @domain.tld permet d'indiquer la destination des messages envoys n'importe quel utilisateur d'un domaine donn et qui n'aurait pas d'entre [email protected] explicite. Lorsque l'adresse de destination contient une extension d'adresse locale (dfinie par l'usage, pas par une RFC) du type [email protected], l'agent de livraison virtual(8) recherche d'abord l'adresse complte ([email protected]), et lorsque la recherche choue, il recherche l'adresse non tendue du type [email protected]. Note 1: Pour des raisons de scurit, l'agent de livraison virtual(8) desactive la substitution par expressions rgulires de $1, etc dans les tables de recherche des expressions rgulires, puisque cela pourait ouvrir un trou de scurit. Note 2: Pour des raisons de scurit, l'agent de livraison virtual(8) desactive la recherche dans les tables travers le serveur proxymap(8) puisque cela pourait ouvrir un trou de scurit. virtual_gid_maps (default: empty)
http://extranet.clg.fr/articles.php3?id_article=65
44
Installation d'un serveur de messagerie Postfix Ce paramtre permet de spcifier l'emplacement de la table de correspondance entre un GID (Group Identifier) et une adresse de destination. L'agent de livraison virtual(8) utilise cette table afin de dterminer sous quel GID il doit crire le message dans la bote aux lettre de destination. Lorsque l'adresse de destination contient une extension d'adresse locale (dfinie par l'usage, pas par une RFC) du type [email protected], l'agent de livraison virtual(8) recherche d'abord l'adresse complte ([email protected]), et lorsque la recherche choue, il recherche l'adresse non tendue du type [email protected]. Note 1: Pour des raisons de scurit, l'agent de livraison virtual(8) desactive la substitution par expressions rgulires de $1, etc dans les tables de recherche des expressions rgulires, puisque cela pourait ouvrir un trou de scurit. Note 2: Pour des raisons de scurit, l'agent de livraison virtual(8) desactive la recherche dans les tables travers le serveur proxymap(8) puisque cela pourait ouvrir un trou de scurit. virtual_alias_maps (valeur par dfaut: $virtual_maps) Ce paramtre permet de spcifier l'emplacement de la table de correspondance entre une adresse de messagerie et une redirection vers une ou plusieurs autres adresses de messagerie. Le format de cette table et ses fonctionalites sont dfinis dans la page du manuel de virtual(5). Cette fonctionalit n'est possible qu'a partir de la version 2.0 de Postfix. Le paramtre par dfaut garde une compatibilit descendante avec Postfix 1.1. Si vous utilisez cette fonctionalit avec un fichier index, executez la commande postmap / etc/postfix/virtual aprs toute modification sur ce fichier. Exemples: virtual_alias_maps = dbm:/etc/postfix/virtual virtual_alias_maps = hash:/etc/postfix/virtual virtual_maps (valeur par dfaut: empty) Ce paramtre permet de spcifier l'emplacement de la table de recherche pour : noms des domaines pour lesquels toutes les adresses sont rediriges vers des adresses soit locales soit situes sur un domaine distant (alias de domaine).
Liste des adresses qui sont rediriges vers des adresses soit locales soit situes sur un domaine distant (alias d'utilisateur).
Cette fonctionalit est possible avant la version 2.0 de Postfix. Depuis la version 2.1 de Postfix, ce paramtre a t remplac par deux contrles distinct : virtual_alias_domains et virtual_alias_maps.
Installation d'un serveur de messagerie Postfix voir mme vers une autre adresse de messagerie. Voici un exemple de contenu de ce fichier : # /etc/aliases postmaster: [email protected] root: postmaster mailer-daemon: postmaster nobody: postmaster hostmaster: postmaster usenet: postmaster news: postmaster webmaster: postmaster www: postmaster ftp: postmaster abuse: postmaster noc: postmaster security: postmaster postfix: postmaster Il est important de noter qu' chaque fois que vous faites une modification dans ce fichier, il faut gnrer sa hashmap. Cela est possible par le biais de la commande: # postalias /etc/postfix/aliases Eventuellement, rechargez la configuration de Postfix par la commande: # /etc/init.d/postfix reload
Installation d'un serveur de messagerie Postfix Voici un exemple de contenu de ce fichier : [email protected] exemple.com/user1 [email protected] exemple.com/user1 [email protected] exemple.com/user2/ [email protected] exemple.com/user1 [email protected] domaine.tld/user1 [email protected] domaine.tld/user1 [email protected] exemple.com/user2/ [email protected] exemple.com/user1 [email protected] test.org/user1/ @test.org domaine.tld/user1 La premire ligne signifie que tous les messages destination de [email protected] seront plas dans ${virtual_mailbox_base}/exemple.com/user1. Comme le chemin ne se termine pas par un slash / , il s'agit d'un fichier mailbox. La seconde ligne indique que tous les messages destination de [email protected] seront plas dans ${virtual_mailbox_base}/exemple.com/user1. Il est donc possible d'avoir plusieurs adresses sur une mme bote. La troisime ligne signifie que tous les messages destination de [email protected] seront plas dans ${virtual_mailbox_base}/exemple.com/user2/. Comme le chemin se termine par un slash / , il s'agit d'un dossier maildir. La quatrime ligne signifie que tous les messages destination de [email protected] seront plas dans ${virtual_mailbox_base}/exemple.com/user1. Comme pour la ligne deux, il est possible d'avoir plusieurs adresses, et ce sur des domaines diffrents, sur une mme bote. La cinquime ligne n'ajoute pas grand chose sinon qu'elle nous informe que user1 n'est pas un nom d'utilisateur, mais de bote aux lettres. La dernire ligne nous indique que tous les mails destination du domaine test.org seront expdis dans la bote de ${virtual_mailbox_base}/domaine.tld/user1, l'exeption des messages destination de [email protected] qui seront plas dans le dossier mailbox ${virtual_mailbox_base}/test.org/user1/.
Attention, pour que vos modifications sur ce fichier soient prises en compte, il est ncessaire d'executez la commande postmap /etc/postfix/vmailbox aprs toute modification. Il est aussi important de noter que les adresses figurant comme index de la hashmap (1er colonne) ne doivent en aucun cas figurer dans le fichier /etc/postfix/virtual. Ces deux fichiers n'ont pas le mme rle.
Installation d'un serveur de messagerie Postfix [email protected] [email protected] [email protected] [email protected] [email protected] La premire ligne signifie que tous les messages destination de [email protected] seront r-expdis vers l'adresse [email protected]. Comme [email protected] est heberg sur le mme serveur, les messages seront plas dans ${virtual_mailbox_base}/exemple.com/user1 (cf : /etc/postfix/vmailbox). La seconde ligne signifie que tous les messages destination de [email protected] seront r-expdis vers l'adresse interne [email protected] ainsi que vers l'adresse interne [email protected]. La dernire ligne signifie que tous les messages destination de [email protected] seront r-expdis vers l'adresse externe [email protected] ainsi que vers l'adresse interne [email protected].
Attention, pour que vos modifications sur ce fichier soient prises en compte, il est ncessaire d'executez la commande postmap /etc/postfix/virtual aprs toute modification. Il est aussi important de noter que les adresses figurant comme index de la hashmap (1er colonne) ne doivent en aucun cas figurer dans le fichier /etc/postfix/vmailbox. Ces deux fichiers n'ont pas le mme rle.
Installation d'un serveur de messagerie Postfix /var/qmail/postfix_config/domainsref puis d'purer ce fichier des domaines multiples. Nous avons ainsi une table de correspondance entre le nom du domaine rfrentiel et l'alias qui lui a t attribu dans virtualdomains. Ajoutez pour chaque ligne le dossier de base de stockage pour ce domaine, et la table sera parfaite. Voici un exemple du fichier final : exemple.com:exemple:/home/mail/exemple domaine.tld:domaine:/home/mail/mydom test.org:test:/home/mail/testmail Pour cela :
Se connecter sur le serveur Qmail Placez vous dans le dossier /var/qmail (cd /var/qmail) Crez un dossier nomm postfix_config (mkdir postfix_config) Placez vous dans ce dossier (cd postfix_config) Copiez le fichier /var/qmail/control/virtualdomains dans notre dossier de configuration, sous le nom de domainsref (cp /var/qmail/control/virtualdomains domainsref) Editez ce fichier, puis ne garder qu'un seul nom de domaine par alias. Ce nom de domaine servira de rfrentiel pour les botes aux lettres. Ajoutez en fin de ligne l'emplacement physique de stockage des mails pour ce domaine (vi domainsref). Enregistrez vos changement et quittez votre editeur (:wq!) Editez un nouveau fichier nomm qmail_postfix.sh (vi qmail_postfix.sh) Copiez le contenu du script ci-aprs dans ce fichier Enregistrez vos changement et quittez votre editeur (:wq!) Affectez les droits d'execution du ce fichier (chmod u+x qmail_postfix.sh) Executez le script (./qmail_postfix.sh) Vous allez rcuprer trois fichiers nomms virtual, virtualdomains, et vmailbox qu'il faut copier sur votre serveur Postfix, dans /etc/postfix. Se connecter sur le serveur Postfix Placez vous dans le dossier /etc/postfix Vrifiez que la copie des trois fichiers s'est bien droule
http://extranet.clg.fr/articles.php3?id_article=65
49
Executez les commandes suivantes : postmap /etc/postfix/virtual postmap /etc/postfix/vmailbox postalias /etc/postfix/aliases Rsoudre la main les ventuelles erreurs de duplicate entry !
http://extranet.clg.fr/articles.php3?id_article=65
50
http://extranet.clg.fr/articles.php3?id_article=65
51
Ce petit script en ligne de commande juste l'intrt de crer la structure de base. Mais il soulve un point interessant : Lorsque nous ajoutons un domaine dans le fichier /etc/postfix/virtualdomains, non seulement, il faut relancer Postfix, mais il faut aussi crer le dossier /home/vmail/inbox/MonDomaine. Qu'en est il des possibilits d'automatisation ?
http://extranet.clg.fr/articles.php3?id_article=65
52
10 Commandes anti-spam
Avec Postfix il est possible de limiter la livraison du courrier non sollicit (SPAM) par le biais de nombreux paramtres. Par dfaut, le serveur SMTP de Postfix n'accepte que le courrier provenant du rseau local, du domaine local, ou des domaines hbergs par Postfix. Ainsi votre systme ne risque pas tre employ comme relais de courrier pour expdier le courrier vers et par des inconnus. Ce document dcrit comment vous pouvez installer quelques politiques plus dtailles d'anti-spam qui empchent la livraison du courrier non dsir. Il est par exemple possible de vrifier qu'une commande EHLO soit bien communique et que l'adresse de l'hte soit valide, mais aussi de vrifier que l'adresse de l'metteur existe bien, ou encore d'ajouter un mecanisme de listes noires mises jour en temps rel (RBL real-time blackhole list). Sauf indication contraire, tous les paramtres dcrits ici sont dans le fichier main.cf. Si vous changez des paramtres d'un systme Postfix actif, n'oubliez pas de lancer la commande postfix reload de Postfix.
10.0.2 Restrictions sur les noms d'htes passs par la commande HELO (EHLO)
Le paramtre smtpd_helo_restrictions limite les noms d'htes que les clients peuvent envoyer avec la commande HELO (EHLO). Quelques logiciels de spam peuvent tre arrt en tant restrictif ici. Par dfaut, cette restriction est applique quand le client envoie la commande RCPT TO. Pour voir appliquer cette restriction ds que possible, renseignez la directive smtpd_delay_reject = no dans le fichier de configuration main.cf de Postfix. Ceci peut causer des rsultats inattendus avec des logiciels clients mal implments. Dfaut:
http://extranet.clg.fr/articles.php3?id_article=65
53
Installation d'un serveur de messagerie Postfix smtpd_helo_restrictions = Par dfaut, le serveur SMTP de Postfix accepte n'importe quoi dans la commande HELO (EHLO). Sur Internet, de nombreux logiciels sont mal configurs. Syntaxe: Indiquez une liste de zro restrictions ou plus, spare par des espaces ou des virgules. Les restrictions sont appliques dans l'ordre indiqu; la premire restriction qui correspond est applique. En plus des restrictions spcifiques aux paramtres de la commande HELO (EHLO), vous pouvez galement indiquer des restrictions bases sur le nom d'hte ou l'adresse du client, les adresses d'expdition ou de destination.Les restrictions sur les adresses de destination ou d'expdition prennent effet seulement si smtpd_delay_reject = yes, de sorte que toutes les restrictions soient values aprs la commande RCPT TO Exemple: smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname Restrictions: reject_invalid_hostname Rejette la demande quand le paramtre de la commande HELO ou EHLO a une mauvaise syntaxe de nom d'hte. Le paramtre invalid_hostname_reject_code indique le code de rponse aux demandes rejetes (dfaut: 501). reject_unknown_hostname Rejette la requte quand le nom d'hte annonc dans la commande HELO (EHLO) ne correspondant aucun enregistrement DNS de type A ou MX. Le paramtre unknown_hostname_reject_code indique le code de rponse renvoy (dfaut: 450). reject_non_fqdn_hostname Rejette la requte quand le nom d'hte annonc dans la commande HELO (EHLO) n'a pas la forme d'un domaine, tel que dcrit dans la RFC. Le paramtre non_fqdn_reject_code indique le code de rponse renvoy (dfaut: 504). check_helo_access maptype:mapname Recherche dans la base de donnes d'accs passe en paramtre le nom d'hte pass par la commande HELO ou les domaines parent. permit defer reject warn_if_reject reject_unauth_pipelining Voir les restrictions gnriques. http://extranet.clg.fr/articles.php3?id_article=65 54
Installation d'un serveur de messagerie Postfix Restrictions: reject_unknown_sender_domain Rejette la demande quand l'adresse de courrier d'expditeur ne correspond aucun enregistrement DNS de type A ou MX. Le paramtre unknown_address_reject_code indique le code de rponse renvoy pour des demandes rejetes (dfaut: 450). La rponse est toujours 450 en cas d'erreur temporaire de DNS. reject_rhsbl_sender domain.tld Rejette la requte lorsque le domaine de l'adresse d'expdition correspond un enregistrement de type A dans le domaine domain.tld. La paramtre maps_rbl_reject_code indique le code de retour pour les requtes rejetes (dfaut: 554), la paramtre default_rbl_reply indique la rponse par dfaut du serveur, et le paramtre rbl_reply_maps indique la table contenant les rponses indexe par domaine RBL. check_sender_access: maptype:mapname Recherche dans la base de donnes d'accs passe en paramtre l'adresse de courrier de l'expditeur, le domaine parent, ou expediteur@. reject_non_fqdn_sender Rejette la demande quand l'adresse passe la commande MAIL FROM n'a pas la forme d'un domaine rel. Le paramtre non_fqdn_reject_code indique le code de rponse aux demandes rejetes (dfaut: 504). reject_sender_login_mismatch Rejette la demande quand le paramtre $smtpd_sender_owner_maps indique un propritaire pour l'adresse passe avec MAIL FROM, mais que le client n'est pas connect (SASL) en tant que propritaire de cette adresse; ou quand le client (SASL) est connect, mais le login n'est pas propritaire de cette adresse selon $smtpd_sender_login_maps. Permit defer reject warn_if_reject reject_unauth_pipelining Voir les restrictions gnriques
des clients trangers dont la destination correspond un domaine numr dans $relay_domains ou a un sous-domaine de ces derniers, l'exception des adresses qui contenant une route spcifie d'expditeurs (user@elsewhere@domain).
En plus, le serveur SMTP de Postfix accepte par dfaut les courriers dont Postfix est la destination finale:
dont la destination correspond une adresse IP numre dans $inet_interfaces, dont la destination correspond un domaine numr dans $mydestination, dont la destination correspond un domaine numr dans $virtual_alias_domains. dont la destination correspond un domaine numr dans $virtual_mailbox_domains.
syntaxe: Indiquez une liste de zro restrictions ou plus, spare par des espaces ou des virgules. Les restrictions sont appliques dans l'ordre indiqu; la premire restriction correspondant est applique. En plus des restrictions qui sont spcifiques aux adresses de destination, vous pouvez galement indiquer des restrictions bases sur les adresses d'expdition, sur l'information passe avec la commande HELO/EHLO, et sur le nom d'hte ou l'adresse rseau du client. Exemple: smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination Note: vous devez spcifier au moins une de ces restrictions: reject, defer, defer_if_permit ou reject_unauth_destination, sinon Postfix refusera de recevoir du courrier. Restrictions: permit_auth_destination Autorise la requte si l'une des conditions ci-dessous est ralise:
l'adresse de destination correspond un domaine numr dans $relay_domains ou a un sous-domaine de ces derniers, et l'adresse ne contient pas de route spcifique d'expditeur (user@elsewhere@domain), Postfix est la destination finale de ce courrier: toute destination correspondant $mydestination, $inet_interfaces $virtual_alias_domains ou $virtual_mailbox_domains.
reject_unauth_destination Ignore le nom d'hte du client. Autorise la requte si l'une des conditions ci-dessous est ralise:
l'adresse de destination correspond un domaine numr dans $relay_domains ou a un sous-domaine de ces derniers, et l'adresse ne contient pas de route spcifique d'expditeur (user@elsewhere@domain), Postfix est la destination finale de ce courrier: toute destination correspondant $mydestination, $inet_interfaces, $virtual_alias_domains ou 57
http://extranet.clg.fr/articles.php3?id_article=65
Installation d'un serveur de messagerie Postfix $virtual_mailbox_domains. Le paramtre relay_domains_reject_codeindique le code de rponse pour les requtes rejetes (dfaut: 554). permit_mx_backup Autorise la requte lorsque le systme de mail local est l'hte MX de la destination Ceci inclus le cas ou le systme est la destination finale. Toutefois, le serveur SMTP ne transfre pas les courriers dont l'adresse contient une route spcifique d'expditeur (exemple: user@elsewhere@domain), Vous pouvez utiliser les alternatives:
permit_mx_backup_networks, paramtre qui impose que le champ MX primaire correspond un rseau de Postfix. Paramtres de configuration appropris: permit_mx_backup_networks, $mydestination, $inet_interfaces.
check_recipient_access maptype:mapname Recherche dans la base de donnes d'accs passe en paramtre l'adresse de courrier de l'expditeur, le domaine parent, ou expediteur@. check_recipient_maps Rejette la requte si l'adresse de destination ne correspond pas l'une des tables suivantes: Adresse de destination $mydestination ou $inet_interfaces $virtual_alias_domains $virtual_mailbox_domains $relay_domains Table de correspondance $local_recipient_maps $virtual_alias_maps $virtual_mailbox_maps $relay_recipient_maps
Note 1: une valeur nulle $local_recipient_maps ou $relay_recipient_maps signifie qu'aucune adresse ne correspond. Note 2: Postfix applique une restriction implicite check_recipient_maps la fin de toutes les restrictions sur la destination. reject_unknown_recipient_domain Rejette la requte si l'adresse du destinataire n'a pas d'enregistrement DNS de type A ou MX. Le paramtre unknown_address_reject_code indique le code renvoy pour des demandes rejetes (dfaut: 450). Le code de rponse est toujours 450 en cas d'erreur temporaire de DNS. reject_rhsbl_recipient domain.tld
http://extranet.clg.fr/articles.php3?id_article=65
58
Installation d'un serveur de messagerie Postfix Rejette la requte lorsque le domaine de l'adresse de destination correspond un enregistrement de type A dans le domaine domain.tld. La paramtre maps_rbl_reject_code indique le code de retour pour les requtes rejetes (dfaut: 554), la paramtre default_rbl_reply indique la rponse par dfaut du serveur, et le paramtre rbl_reply_maps indique la table contenant les rponses indexe par domaine RBL. reject_non_fqdn_recipient Rejette la requte lorsque l'adresse passe par la commande RCPT TO n'a pas la forme d'un domaine qualifi. le paramtre non_fqdn_reject_code indique le code renvoy pour des demandes rejetes (dfaut: 504). permit defer reject warn_if_reject reject_unauth_pipelining Voir les restrictions gnriques.
Installation d'un serveur de messagerie Postfix HOLD HOLD texte... Place le message dans la file d'attente hold. les courriers dans cette file d'attente peuvent tre examins avec la commande postcat et peuvent tre dtruits ou sortits de la file d'attente avec la commande postsuper. Le texte optionnel est enregistr dans les logs avec le texte qui correspondait l'expression. DISCARD DISCARD texte... Annonce une livraison russie et supprime silencieusement le message. Le texte optionnel est enregistr dans les logs avec le texte qui correspondait l'expression. FILTER transport:relais Aprs que le message soit mis en file d'attente, envoie le message vers un filtre. Ceci impose diffrents serveurs cleanup avant et aprs le filtre avec consigne de ne pas examiner les enttes/corps de message dans le second server cleanup. Pour plus de dtail, consultez le fichier FILTER_README. Ce dispositif se substitue la directive content_filter du fichier main.cf Une expression d'en-tte avec une correspondance OK ne sert rien. Une rgle terminant par OK affecte seulement l'en-tte examin. L'en-tte suivant peut renvoyer une directive REJECT, causant malgr tout le rejet du courrier. Exemples (main.cf): header_checks = regexp:/etc/postfix/header_checks header_checks = pcre:/etc/postfix/header_checks Exemple (header_checks): /^to:.*friend@public\.com/ REJECT
Installation d'un serveur de messagerie Postfix explicite la politique par dfaut. Le paramtre de configuration reject_code indique le code de rponde pour les requtes rejetes (dfaut: 554) warn_if_reject Change le comportement de la restriction suivante, ainsi elle enregistre un avertissement au lieu de rejeter la requte (regardez dans les journaux des enregistrements qui contiennent "reject_warning"). Ceci est pratique pour tester une nouvelle restriction dans un environnement rel sans prendre le risque de perdre du courrier. reject_unauth_pipelining Rejette la requte lorsque le client envoie une commande SMTP sans savoir si Postfix la supporte actuellement. Ceci arrte les courriers des logiciels qui utilisent mal les commandes SMTP pour acclrer l'envoi du courrier.
http://extranet.clg.fr/articles.php3?id_article=65
61
Comme toutes les HashMap de Postfix, ds que vous modifiez le fichier, il faut le re-gnrer par la commande postmap /etc/postfix/access , et ventuellement recharger la configuration de postfix par la commande /etc/init.d/postfix reload
Il est inutile de re-gnrer les hashmap, puisque ce n'en est pas une. Par contre, il peut tre utile de les tester par la commande postmap -q "Chaine a tester" regexp:/etc/postfix/header_checks
http://extranet.clg.fr/articles.php3?id_article=65
62
Il est inutile de re-gnrer les hashmap, puisque ce n'en est pas une. Par contre, il peut tre utile de les tester par la commande postmap -q "Chaine a tester" regexp:/etc/postfix/body_checks
10.5.1 Introduction
L'ide de base est de faire reevoir un email par Postfix. Ce dernier effectue les traitements de base que nous avons vu prcedement, puis transfert le message un filtre. Ce filtre traite le message selon des critres qu'on lui a indiqu en configuration, puis le renvoi au serveur SMTP Postfix. Postfix reprends le message et le dlivre dans la bote aux lettres du destinataire. Cette technique est ralisable par le biais d'un logiciel nomm Amavis. AMaViS signifie a mail virus scanner . En fait ce n'est pas un logiciel d'antivirus, mais une technique (connecteur) permettant d'envoyer un email vers un logiciel d'antivirus. Par extension, il est possible d'envoyer l'email vers autre chose qu'un antivirus, et mme de chainer les filtres complmentaires. Le cheminement d'un message sur notre serveur est le suivant : Arrive du mail sur le port 25
Postfix traite le mail et le renvoie au filtre "amavis" via le port 10024 Amavis traite le mail (plugins : Spamassassin et Clamav) puis le renvoie vers Postfix sur le port 10025 Postfix reprends le mail et le dlivre dans la bote de l'utilisateur final.
http://extranet.clg.fr/articles.php3?id_article=65
63
Vrifiez aussi que la section suivante n'est pas commente. Eventuellement, supprimez toutes les entres des autres antivirus qui ne sont pas installs sur votre serveur SMTP.
@av_scanners = ( [ .... ] ### http://clamav.elektrapro.com/ ['Clam Antivirus-clamd', \&ask_daemon, ["CONTSCAN {}\n", '/var/run/clamav/clamd.ctl'], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], [ .... ] @av_scanners_backup = ( [ .... ] ### http://clamav.elektrapro.com/ ['Clam Antivirus - clamscan', 'clamscan', '--stdout --disable-summary -r {}', [0], [1], qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
http://extranet.clg.fr/articles.php3?id_article=65
64
authdaemonrc: Ce fichier configure authdaemond, le processus d'identification. authmodulelist: Ce fichier est le fichier de configuration des mthodes d'identification. authmysqlrc: Ce fichier est le fichier de configuration des mthodes d'identification en utilisant Mysql comme format de base de donnes.
pop3d: Courier POP3 daemon configuration. Courier-pop doit tre configur pour permettre aux utilisateurs de lire leurs messages en utilisant le
http://extranet.clg.fr/articles.php3?id_article=65
65
Installation d'un serveur de messagerie Postfix protocole POP3. Cela signifie que Courier-pop est mme d'tablir la relation entre un utilisateur et une boite aux lettres. Or les botes aux lettres sont gres par Postfix par le biais du fichier / etc/postfix/vmailbox qui dfinit la relation entre une adresse email et un emplacement de stockage. Il n'y a aucune notion d'utilisateur dans ce fichier au sens o Courier-pop l'entend, savoir un compte utilisateur, une home, un mot de passe, etc. Sous Courier-pop, la mthode basique consiste crer un compte sur le serveur pour chaque utilisateur. Cette solution ne nous interesse pas, car elle implique de nombreuses consquences quant la scurit du systme, d'autant qu'il faudra malgr tout renseigner un fichier rfrentiel propre Courier-pop. Par contre, il est possible d'utiliser uniquement ce fichier rfrentiel comme source d'identification et qui contient aussi la liste des comptes POP et l'emplacement de stockage des messages. Ce fichier est nomm /etc/courier/userdb.
Installation d'un serveur de messagerie Postfix paramtre. Par exemple: version=authdaemond.plain. La valeur utilise dans ma configuration est daemons="". authdaemonvar authdaemonvar est un paramtre qui n'est pas utilis directement par authdaemond. Cependant il est ncessaire pour de nombreux scripts de configuration et de compilation, alors ne touchez pas ce paramtre ! La valeur utilise dans ma configuration est authdaemonvar=/var/run/courier/authdaemon.
Installation d'un serveur de messagerie Postfix les modules des processus d'identification. Pour plus d'information sur ces programmes, je vous renvoi vers les manuels courierpop3d(8), couriertcpd(8) et pop3d(8). Le contenu de ce fichier dans ma configuration est:
PIDFILE=/var/run/courier/pop3d.pid MAXDAEMONS=40 MAXPERIP=4 AUTHMODULES="authdaemon" AUTHMODULES_ORIG="authdaemon" DEBUG_LOGIN=0 POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1" POP3AUTH_ORIG="LOGIN CRAM-MD5 CRAM-SHA1" POP3AUTH_TLS="" POP3AUTH_TLS_ORIG="LOGIN PLAIN" PORT=110 ADDRESS=0 TCPDOPTS="-nodnslookup -noidentlookup" POP3DSTART=YES MAILDIRPATH=Maildir
http://extranet.clg.fr/articles.php3?id_article=65
68
nompop est le nom du compte POP. nompop ne DOIT contenir que des caractres en minuscules. Si Courier-pop est configur pour interprter les majuscules et les minuscules des comptes pop de manire identique, nompop est alors suivi par exactement un seul caractre de tabulation, puis par une liste de paires champs/valeurs spares par la barre verticale (pipe).
Champs est le nom d'un champs et valeur sa valeur... Les champs et leurs valeurs ne peuvent par contenirs les caractres / (slashes) ni de caractres de contrle. Les champs peuvent tre indiqu dans n'importe quel ordre. Notes que tous les champs dfinis dans la liste ci-aprs ne sont pas utiliss par toutes les applications pouvant lire le fichier /etc/courier/userdb.dat. Voici la liste des champs actuellement dfinis :
uid Sa valeur reprsente l'identifiant numrique unique d'un utilisateur dfini sur le systme d'exploitation et rattach ce compte. gid - Sa valeur reprsente l'identifiant numrique unique d'un groupe dfini sur le systme d'exploitation et rattach ce compte. home Sa valeur reprsente le rpertoire de base de ce compte. shell Sa valeur reprsente le shell par dfaut utiliser avec ce compte. systempw Sa valeur reprsente le mot de passe de ce compte. Voir aussi la commande userdbpw(8) pour les dtails concernant la configuration de ce champs. pop3pw, esmtppw, imappw... - Leurs valeurs reprsentent des mots de passes distinct utiliss uniquement pour identifier les connexions en utilisant un service spcifique, comme POP3, IMAP, ou tout autre chose. Si aucun de ces champs n'est dfini, systempw est toujours utilis. Cela permet de restrindre l'accs d'un compte a certains services, comme le POP3, mme si d'autres services sont aussi fonctionnels sur le serveur. mail - Sa valeur reprsente l'emplacement de stockage du type Maildir de la bote aux lettres de ce compte. Il s'agit d'un champs optionel qui est d'ordinaire utilis lorsque le fichier userdb fournit des alias pour d'autres comptes mail. quota Sa valeur reprsente le quota d'une bote aux lettres de type Maildir pour un compte donn. Ceci n'a aucun rapport avec les quotas dfinis par le systme de fichiers. Courier possde son propre systme de gestion de quotas sur les botes aux lettres de type Maildir, ce qui ncessite en outre une configuration et une installation supplmentaire. Voir le manuel de maildirquota(7) pour de plus amples informations.
Attention: Aprs toutes modification dans le fichier /etc/courier/userdb ou dans l'un des fichiers du rpertoire /etc/courier/userdb, il est ncessaire d'executer la commande makeuserdb pour gnrer la base binaire /etc/courier/userdb.dat.
Installation d'un serveur de messagerie Postfix domaine sous Qmail vers un serveur de courier multi-domaine sous Postfix. C'est ici chose faite. Sauf que notre serveur Qmail encore en service utilise Qpopper version 3.0, un autre serveur POP3, et que sa mthode d'identification est base sur des comptes systmes rels. Il nous faut donc migrer les fichiers /etc/passwd et /etc/shadow vers un fichier ou un dossier /etc/courier/userdb. Notre choix se porte sur un dossier userdb contenant autant de fichier qu'il y a de domaines. La gestion des comptes POP par domaine est ainsi plus aise.
11.2.1 Procdure
Nous allons crer un script permettant de rcuprer les informations contenues dans les fichiers /etc/passwd et /etc/shadow de notre serveur Qmail, et de les transformer au format userdb. Comme pour la migration Qmail vers Postfix, nous allons avoir besoin du fichier /var/qmail/postfix_config/domainsref que vous avez gnr au moment de la migration des adresses de messagerie. Le script gnre un dossier /var/qmail/postfix_config/userdb contenant des fichiers au format userdb et nomms par domaine. Toutefois, il existe un fichier appell null qui contient la liste des comptes problmatiques ou des comptes qui n'ont pas lieu d'tre car il ne s'agit que de redirection. Pour cela :
Se connecter sur le serveur Qmail Placez vous dans le dossier /var/qmail (cd /var/qmail) Crez un dossier nomm postfix_config si ce n'est dj fait (mkdir postfix_config) Placez vous dans ce dossier (cd postfix_config) Editez un nouveau fichier nomm qpopper_courier.sh (vi qpopper_courier.sh) Copiez le contenu du script ci-aprs dans ce fichier Enregistrez vos changement et quittez votre editeur (:wq!) Affectez les droits d'execution du ce fichier (chmod u+x qpopper_courier.sh) Executez le script (./qpopper_courier .sh) Vous allez rcuprer un dossier nomm userdb qu'il faut copier sur votre nouveau serveur de messagerie, dans /etc/courier. Se connecter sur le nouveau serveur de messagerie. Placez vous dans le dossier /etc/courier Vrifiez que la copie du dossier userdb s'est bien droule Dplacez le fichier /etc/courier/userdb/null dans /etc/courier
http://extranet.clg.fr/articles.php3?id_article=65
70
Rsoudre la main les ventuelles erreurs de comptes qui sont prsents dans le fichier nomm /etc/courier/null. Executez la commande makeuserdb pour gnrer le fichier userdb.dat Gnerer les dossier de stockage des comptes.
else
http://extranet.clg.fr/articles.php3?id_article=65
71
# Get Domain Name Referential for current user if [ -f ${REPBASE}/domainsref ] then Vdomain=`cat ${REPBASE}/domainsref | grep :${DOMALIAS}: | awk -F: '{print $1}'` if [ -z "${Vdomain}" ] then Vdomain=null fi echo " Error: ${REPBASE}/domainsref not found. "
else fi
# Get current user's home Vhome=`cat /etc/passwd | grep ^${Vlogin}: | awk -F: '{print $6}'` # We need to convert Qpopper home to Courier home if [ -f ${REPBASE}/domainsref ] then unset HOMEDIR HOMEDIR=`cat ${REPBASE}/domainsref | grep :${DOMALIAS}: | awk -F: '{print $3}'` if [ -z "${HOMEDIR}" ] then HOMEDIR=null fi Vhome=`echo ${Vhome} | sed -e '1,$s,'${HOMEDIR}','${CHOMEBASE}'/'${Vdomain}',g'` else echo Error: ${REPBASE}/domainsref not found. fi # Build userdb echo -e "${Vlogin}\tuid=${CUID}|gid=${CGID}|home=${Vhome}|mail=${Vhome}/ Maildir|shell=${CSHELL}|quota=${CQUOTA}|systempw=${Vpass}" >> ${REPBASE}/ userdb/${Vdomain} done
11.2.3 Paramtrages des droits sur les dossiers des comptes POP
Nous l'avons vu, les mails seront dlivrs dans le dossier /home/vmail/inbox. Il nous faut non seulement crer ce dossier (mkdir /home/vmail/inbox) mais aussi lui affecter les droits d'criture l'utilisateur qui crira dans ce dossier, savoir vmail (Cf : default_privs et virtual_uid_maps de postfix). Dans notre cas, l'UID de l'utilisateur vmail correspond l'uid indiqu statiquement dans le fichier de configuration main.cf de postfix a la section virtual_uid_maps, ainsi que dans les fichiers du dossier /etc/courier/userdb. Il nous faut donc crer la structure des dossiers de chaque compte. Pour cela, j'ai fait un petit script en ligne de commande :
# cd /etc/courier/userdb # for Vdomain in `ls -1` > do > for Vhome in `cat ${Vdomain} | awk -F"|" '{print $3}' | sed -e '1,$s,home=,,g'` > do > mkdir -mode 700 -parent ${Vhome} > maildirmake ${Vhome}/Maildir > done
http://extranet.clg.fr/articles.php3?id_article=65
72
11.2.4 Transfert des botes Qmail Maibox dans les botes Postfix Maildir.
Il nous faut convertir les botes aux lettres de type Mailbox issues de Qpopper au format Maildir. Pour cela, tlchargez l'outil de Philip Mak sur: http://perfectmaildir.home-dn.net/perfect_maildir/perfect_maildir.pl et copier le dans le dossier /usr/bin de votre serveur Postfix-Courier. Changer les droits de ce fichier par la commande chmod 755 /usr/bin/perfect_maildir.pl. La syntaxe de ce programme crit en Perl est la suivante : perfect_maildir.pl ${HOME}/Maildir < ${OLDHOME}/Mailbox Il nous faut donc crer encore un petit script pour transfrer tous les messages. Je vous laisse imaginer le votre. Commenons par copier l'intgralit des botes Qmail sur notre nouveau serveur. Il suffit en effet de simplement recopier de manire rcursive tous les dossiers de /home/mail sur le nouveau serveur car ce dossier n'existe pas dans l'arborescence de notre nouveau serveur.
Editez le fichier /etc/postfix/virtualdomains avec un editeur de texte (vi) Ajoutez ou retirez le domaine voulu en le sparant des autres par une virgule. Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload
Editez le fichier /etc/postfix/vmailbox avec un editeur de texte (vi) Indiquez en premire colonne l'adresse de messagerie Indiquez dans la seconde colonne l'emplacement relatif du dossier de stockage (mondomaine.tld/compte_pop/Maildir/) Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-gnrez la hashmap par la commande postmap /etc/postfix/vmailbox Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload 73
http://extranet.clg.fr/articles.php3?id_article=65
12.4 Ajouter ou modifier un alias d'une adresse pointant sur une autre adresse.
Les alias sont des adresses de messagerie capable d'expdier leurs messages vers une ou plusieurs adresses. Les adresses de destination peuvent tre locales (donc gres par le serveur) comme distante (donc gres par un autre serveur SMTP). Dans tous les cas, il ne faut jamais qu'une mme adresse de messagerie soit utilise comme index (1er colonne) dans le fichier / etc/postfix/virtual ET dans le fichier des botes aux lettres /etc/postfix/vmailbox.
Editez le fichier /etc/postfix/virtual avec un editeur de texte (vi) Indiquez en premire colonne l'adresse de messagerie Indiquez dans la seconde colonne l'adresse de destination Indiquez dans la troisime et toutes les colonnes suivantes les adresses de destinations (un alias peut pointer sur plusieurs botes aux lettres) Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-gnrez la hashmap par la commande postmap /etc/postfix/virtual Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload
Editez le fichier /etc/postfix/aliases avec un editeur de texte (vi) Indiquez en premire colonne le nom de l'alias Indiquez dans la seconde colonne le nom du compte local destinataire, ou bien une adresse de messagerie de destination Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-gnrez la hashmap par la commande postalias /etc/postfix/aliases Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload
Editez le fichier /etc/postfix/access avec un editeur de texte (vi) Indiquez en premire colonne le nom du domaine, une adresse de messagerie ou une adresse IP. Indiquez dans la seconde colonne la valeur a retourner (OK ou REJECT) Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-gnrez la hashmap par la commande postmap /etc/postfix/access Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload
Editez le fichier /etc/postfix/header_checks avec un editeur de texte (vi) Sur la premire colonne, ajoutez une chaine de recherche encadre par deux slashes (/). La chane rechercher est une expression rgulire, similaire la syntaxe sed de recherche. Le 74
http://extranet.clg.fr/articles.php3?id_article=65
Installation d'un serveur de messagerie Postfix dbut d'une ligne est caractris par le chapeau (^). La fin d'une ligne par le dollard ($). N'importe quel nombre et type de caractre est reprsent par le point suivi d'un astrisque (.*). Pour rechercher un point (.) ou un astrisque (*) ou un slashes (/) ou n'importe quel caractre de contrle, le prfixer par un anti-slash (\).
La deuxime colonne est en gnral REJECT , bien que l'on puisse indiquer IGNORE , REJECT Motif , OK , WARN . Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload
Editez le fichier /etc/postfix/body_checks avec un editeur de texte (vi) Ce fichier a rigoureusement la mme syntaxe que le header_checks indiqu dans le chapitre prcdent. Sauvegardez vos modifications et quittez l'diteur de texte (:wq!) Re-chargez la configuration de postfix par la commande /etc/init.d/postfix reload
Se placer dans le dossier /etc/courier Il est possible de faire les modifications avec un editeur de texte dans les fichiers nomms par leur nom de domaine, et plas dans le dossier /etc/courier/userdb. Toutefois, il existe aussi la commande userdb qui permet de faire cela. Utilisez la commande userdb show -f userdb/nomdedomaine compte_pop pour visualiser un compte. Utilisez la commande userdb -f userdb/nomdedomaine compte_pop del pour supprimer un compte. Utilisez la commande userdb -f userdb/nomdedomaine compte_pop add pour ajouter un compte. Utilisez la commande userdb -f userdb/nomdedomaine compte_pop set propriete=valeur pour modifier une proprit d'un compte. La liste des proprits possibles est dfinie dans le paragraphe relatif au Format du fichier /etc/courier/userdb. Aprs toute modification, utilisez la commande makeuserdb
Se placer dans le dossier /etc/courier Comme pour modifier une proprit d'un compte POP, il faut utiliser la commane userdb, mais aussi la commande userdbpw. Ainsi pour modifier ou dfinir le mot de passe d'un utilisateur, on utilise la commande userdbpw | userdb -f userdb/domaine compte_pop set systempw Saisir le mot de passe et le confirmer. Aprs toute modification, utilisez la commande makeuserdb 75
http://extranet.clg.fr/articles.php3?id_article=65
Pour visualiser le contenu des files d'attente, utilisez la commande mailq . Pour forcer la remise d'un message de la file d'attente, utilisez la commande postsuper -r ID , avec ID tant l'identifiant de file affich par la commande mailq . Pour forcer la livraison des messages de la file d'attente, utilisez la commande postfix flush ou encore la commande postqueue -f Pour forcer la remise de tous les message de la file d'attente, utilisez la commande postsuper -r ALL Pour supprimer un message de la file d'attente, utilisez la commande postsuper -d ID , avec ID tant l'identifiant de file affich par la commande mailq . Pour supprimer tous les messages de la file d'attente, utilisez la commande postsuper -d ALL . Pour mettre en quarantaine un message de la file d'attente, utilisez la commande postsuper -h ID , avec ID tant l'identifiant de file affich par la commande mailq . Pour mettre en quarantaine tous les messages de la file d'attente, utilisez la commande postsuper -h ALL . Pour desactiver la mise en quarantaine d'un message, utilisez la commande postsuper -H ID , avec ID tant l'identifiant de file affich par la commande mailq . Pour desactiver la mise en quarantaine des tous les messages, utilisez la commande postsuper -H ALL . Pour rparer les files d'attente aprs un crash du systme, utilisez la commande postsuper -s . Pour supprimer les fichiers temporaires crs la suite d'un crash du systme, utilisez la commande postsuper -p .
13 Webographie
http://www.postfix.org/: Postfix HomePage. http://x.guimard.free.fr/postfix/: La traduction officielle en franais de Xavier GUIMARD http://cjovet.free.fr/cours/postfix.htm: La documentation de Postfix de Cyril JOVET. http://www.linux-france.org/article/mail/postfix-jaco/: Poster et recevoir du courrier avec Postfix http://people.via.ecp.fr/~alexis/formation-linux/serveur-mail2.html: Monter un serveur de mail avec Debian GNU/Linux http://perfectmaildir.home-dn.net/: Programme Perl permettant de migrer les boites au format Mailbox vers le format Maildir/. http://www.sinasina.com/linux/reseaux/relais_smtp.php: Mise en place d'un relais SMTP en utilisant Posstfix. http://www.courier-mta.org/: Le site officiel de Courier Mail Server.
http://extranet.clg.fr/articles.php3?id_article=65
76
Installation d'un serveur de messagerie Postfix http://marc.boget.free.fr/stage-html2/Memoire%20de%20stage-8_2_9.html: Aide la configuration de Courier. http://www.alcove-labs.org/en/documents/install_mail/: Guide pour installer un serveur de mails multidomaine utilisant un annuaire LDAP. http://da.andaka.org/Doku/courier-vmaildir.html: HOWTO: Virtual Domains with the Courier Mail Suite. http://www.topology.org/linux/postfixloop.html: notes on postfix configuration mail for host.domain.net loops back to myself http://reseau.univ-aix.fr/doctech/spam.html: Lutte contre les envois massifs de courrier (SPAM) avec Postfix. http://www.e-glop.net/howtos/antivirus-mail.xhtml: Mettre en place un anti-virus sur son serveur de mail. http://www.miscmag.com/articles/index.php3?page=113: Scuriser un serveur Postfix. http://mirabellug.org/docs/postfixfetchmail/x110.html: Configuration de Postfix et Fetchmail.
http://extranet.clg.fr/articles.php3?id_article=65
77
14 Annexe
14.1 Licence
Le prsent document est soumi la GNU Free Documentation license. Il n'existe pas aujourd'hui de traduction franaise de la licence GNU GPL ni GNU FDL dont on puisse affirmer qu'elle ne contienne pas de contre-sens. Malgr les risques d'incomprhension lis une licence en langue anglaise, on estime prfrable de s'y rfrer exclusivement. Pour trouver une traduction officielle, il est conseill de consulter la page http://www.gnu.org/licenses/translations.html#FDL. Cette licence est donc donne ici dans son intgralit et en version initiale, copie conforme du site http://www.gnu.org/copyleft/fdl.html#TOC1. Toutefois, il existe pour la version 1.1 deux traductions mentionnes par la Free Software Fundation, mais qui n'ont rien d'officielles :
http://cesarx.free.fr/gfdlf.html http://www.idealx.org/dossier/oss/gfdl.fr.html
D'une manire plus gnrale, les traductions franaises officielles sont disponibles sur le site de l'association FSF France l'adresse http://fsffrance.org/.
0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or http://extranet.clg.fr/articles.php3?id_article=65 78
Installation d'un serveur de messagerie Postfix distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or BackCover Texts, in the notice that says that the Document is released under this License. A FrontCover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standardconforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", http://extranet.clg.fr/articles.php3?id_article=65 79
Installation d'un serveur de messagerie Postfix "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS http://extranet.clg.fr/articles.php3?id_article=65 80
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate http://extranet.clg.fr/articles.php3?id_article=65 81
Installation d'un serveur de messagerie Postfix some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
http://extranet.clg.fr/articles.php3?id_article=65
82
Installation d'un serveur de messagerie Postfix 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS licence The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a http://extranet.clg.fr/articles.php3?id_article=65 83
Installation d'un serveur de messagerie Postfix draft) by the Free Software Foundation.
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
http://extranet.clg.fr/articles.php3?id_article=65
84