Retourner en haut de la page Aller au bas de la page
Logo de mon site
Logo de mon site

Yasser Arafat

Item 1 Description

Yasser Arafat

Hugo Chávez

Item 1 Description

Hugo Chávez

Mikhaïl Gorbatchev

Item 1 Description

Mikhail Sergueievitch Gorbatchev

L'Abbé Pierre

Item 1 Description

Abbe Pierre

Salvadore Allende

Item 1 Description

Salvadore Allende

Angela Yvonne Davis

Item 1 Description

Angela Yvonne Davis

Jean Moulin

Item 1 Description

Jean Moulin

Nelson Mandela

Item 1 Description

Nelson Mandela

Martin Luther King

Item 1 Description

Martin Luther King

Gamal Abdel Nasser

Item 1 Description

Gamal Abdel Nasser

Richard Stallman

Item 1 Description

Richard Stallman

Simone Veil

Item 1 Description

Simone Veil

Hand Shake

Item 1 Description

Hand Shake

Wangari Muta Maathai

Item 1 Description

Wangari Muta Maathai

Michel Colucci

Item 1 Description

Coluche

Mère Teresa

Item 1 Description

Mère Térésa

Charles de Gaulle

Item 1 Description

Charles de Gaulle

Che Guevara

Item 1 Description

Ernesto Rafael Guevara

Mohandas Gandhi

Item 1 Description

Mohandas Karamchand Gandhi

Lech Walesa

Item 1 Description

Lech Walesa

Linus Benedict Torvalds

Item 1 Description

Linus Benedict Torvalds

Sous-commandant Marcos

Item 1 Description

Sous commandant Insurge Marcos

Ahmed Shah Massoud

Item 1 Description

Ahmed Shah Massoud

Luxpopuli / Internet / Postfix + Cyrus IMAP + SSL + LDAP / Postfix : le fichier main.cf





Right menu

OBLIGATOIRE

Un professeur témoigne

La brigade canine dans un collège du Gers.
Réaction d'une internaute Québécoise:
«quand on est rendu à accepter que (...) les autorité mettent leurs sales pattes dans les culottes de vos enfants (...) il est temps (...) de vous réveiller.»
OBLIGATOIRE

Les mensonges de R. Dati

La note de recadrage statistique du sociologue L. Mucchielli recadre également les mensonges de la propagande sécuritaire dont on nous rabat les oreilles depuis déjà trop longtemps et dont les mineurs de France sont à présents la cible.
Le rapport de L. Mucchielli
OBLIGATOIRE

L'aveu de Jean-Marc Sylvestre

«Le système financier s'effondre aujourd'hui comme un jeu de carte... parce que... il a été géré d'une part.... par les États-Unis sans règle... et il a été d'autre part géré... par une bande de voyous... qui se sont gouinfrés... au détriment des autres.»
VOIR LES VIDÉOS

OBLIGATOIRE

prev prev prev prev


Postfix : le fichier main.cf

Date de publication: le dimanche 13 mai 2007 Ă  17h16
Dernière modification: par Pascal BOYER le mercredi 26 septembre 2007 à 09h27
« Article précédent: Cyrus IMAP : authentification LDAP
» Article suivant: Postfix : authentification SASL

Remerciements

Pour réaliser cet article qui présente la configuration "détaillée" de Postfix sous Debian/Sid, j’ai eu recours à la lecture du livre Postfix - La réfrence, ed. O’REILLY , aux informations du site de Xavier Guimard ainsi qu’à celles que j’ai trouvées dans la multitude de documents que j’ai lus sur internet.

Mon ambition n’était pas de réinventer la roue mais de faire une documentation aussi claire que possible en ne perdant pas de vue qu’un débutant doit obtenir, in fine, un serveur de mail tout à fait opérationnel.

Ainsi donc, je n’ai eu aucun scrupule à faire du copier/coller de certains sites et passages du livre d’O’REILLY chaque fois que leurs indications me semblaient parfaitement claires et bien expliquées. Et c’est pourquoi, dans le fichier de configuration de Postfix ( main.cf ) les références aux pages du livre sont inscrites entre parenthèses.

Si d’aventure vous reconnaissiez des informations issues de vos documents et que vous souhaitiez que ceci soit clairement spécifié dans cet article, je n’y suis absolument pas opposé et vous pouvez m’envoyer un mail à cette adresse .

Avant propos

Je rappelle que lors de l’installation de Cyrus-IMAP un package postfix est également requis donc installé (voir ici ).

Il n’y a pas d’article sur la fin de l’installation de Postfix pour la simple raison que l’installation de ces 3 packages:

dpkg -l '*postfix*'

Souhait=inconnU/Installé/suppRimé/Purgé/H= garder
| tat=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H= garder/besoin Réinstallation/X=les deux (état,Err: majuscule=mauvais)
||/ Nom                  Version       Description
+++-====================-==========-============================
ii  postfix-doc          2.1.5-4       Postfix documentation
ii  postfix-ldap         2.1.5-4       LDAP map support for Postfix
ii  postfix-tls          2.1.5-4       TLS and SASL support for Postfix

...ne pose aucune difficulté. Aucune question n’est posée à l’utilisateur.

Il suffit de lancer la commande suivante pour les installer:

apt-get install postfix-doc postfix-ldap postfix-tls

apt-get install postfix-tls

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Le paquet postfix-tls est un paquet virtuel fourni par :
  postfix 2.4.0-2
Vous devez explicitement sélectionner un paquet à installer.
E: Aucun paquet ne correspond au paquet postfix-tls

Donc, pour les versions récentes, votre système doit posséder au final les packages suivants:

dpkg -l '*postfix*'

Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                                    Version                                Description
+++-====================-==========-============================
ii  postfix                                2.4.0-2                                A high-performance mail transport agent
ii  postfix-doc                            2.4.0-2                                Postfix documentation
ii  postfix-ldap                           2.4.0-2                                LDAP map support for Postfix

Remarquons tout de mĂŞme deux choses:

1°/ La fin du paramétrage de postfix (2.1.5-4) et la création de l’utilisateur postfix :

Adding group `postfix' (105)...
Fait.
Ajout de l'utilisateur systme postfix...
Adding new user `postfix' (105) with group `postfix'.
Pas de création de répertoire personnel.

Cet utilisateur postfix appartient Ă  ces groupes:

id postfix

uid=105(postfix) gid=105(postfix) groupes=105(postfix)

Mais pour des raisons d’accès à la base de données /ets/ sasldb2 on ajoute l’utilisateur postfix au groupe mail:

addgroup postfix mail

Ajout de l'utilisateur postfix au groupe mail...
Fait.

2°/ Lors de l’installation du package postfix-ldap on lit ceci:

Adding ldap map entry to /etc/postfix/dynamicmaps.cf

Conventions d’écritures

  • (p42-45) fait rĂ©fĂ©rence aux pages 42 Ă  45 du livre Postfix - La rĂ©frence, ed. O’REILLY
  • $mynetworks reprĂ©sente une variable dont la valeur est celle de l’attribut mynetworks
  • myorigin peut prendre la valeur " $mydomain " signifie que myorigin = $mydomain est une possibilitĂ©
  • # mynetworks_style = host indique une règle commentĂ©e (# en dĂ©but de ligne) donc non efficiente
  • BAL, BĂ L et BL sont les acronymes de BoĂ®te Ă /aux Lettres.
  • La couleur orange est conservĂ©e pour signifier les règles qui peuvent ĂŞtre initiĂ©es si uniquement le serveur imapd et maintenant smtpd tournent. Ceci constituant un fonctionnement basic du serveur de mails.
  • En couleur verte sont indiquĂ©es les règles relatives Ă  la mise en oeuvre du protocole SSL/TLS pour Postfix.

Considérations générales sur Postfix

  • Postfix est Ă©crit et maintenu par Wietse VENEMA .
  • Postfix est sous licence GPL depuis dĂ©cembre 1998 et IBM Research, qui a sponsorisĂ© la version initiale de Postfix, contribue encore Ă  son dĂ©veloppement.
  • Postfix est un MTA ( M ail T ransfert A gent/Agent de Tranfert de Mail).
  • Postfix implĂ©mente le protcole SMTP ( S imple M ail T ransfert P rotocole) mais pas POP/IMAP.
  • Postfix est compatible Sendmail.

1/ Les atouts de Postfix

  • FiabilitĂ© conservĂ©e en situation difficile: ressources mĂ©moire/disque faibles par exemple.
  • Postfix prend toujours toutes les mesures nĂ©cessaires pour maintenir un fonctionnement fiable et stable.
  • Le concept sĂ©curitaire de privilège minimum est omniprĂ©sent dans Postfix. Ce qui veut dire que les processus s’excutent avec le minimum de privilèges.
  • Postfix prend garde de ne pas submerger, par sa vitesse, les autres sytèmes.
  • Postfix (contrairement Ă  Sendmail) repose sur une architecture entièrement modulaire, ce qui constitue la base essentielle de sa sĂ©curitĂ©.
  • La modularitĂ© de Postfix le rend particulièrement simple Ă  configurer mĂŞme s’il contient tout de mĂŞme environ 300 paramètres de configuration (ouille... ça fait peur!!!).
  • La facilitĂ© de configuration de Postfix vient en grande partie du fait que lors de sa conception, W. VENEMA s’est attachĂ© Ă  ne pas trop s’éloigner du sens commun des humains.
  • Postfix Ă©tant compatible avec Sendmail, il peut aisĂ©ment le remplacer.
  • Postfix reconnait les conventions /etc/aliases et .forward
  • Postfix contient un exĂ©cutable sendmail reconnaissant quasiment les mĂŞmes paramètres en ligne de commande que la version sendmail de Sendmail.
  • Cependant, toutes les fonctionnalitĂ©s de courrier ne sont pas forcĂ©ment implĂ©mentĂ©es de la mĂŞme manière dans Postfix.
  • Postfix permet de configurer des règles de restriction pour la lutte contre le SPAM.

2/ Notions sur le fonctionnement de Postfix (p19)

Comme déjà indiqué ci-dessus, Postfix est basé sur une architecture entièrement modulaire. Ceci implique que chaque tâche est effectuée par un processus spécifique. La plupart de ces programmes sont des démons .

Le premier démon à être lancé est le démon master qui lancera tous les autres démons. Ces autres démons s’exécutent puis se terminent.

A l’inverse, le démon master reste en permanence en mémoire.

Postfix intègre un serveur smtpd ET un client smtp car Postfix sera tantôt serveur tantôt client.

3/ Notions de sécurité sur Postfix (p6-7)

La plupart des processus de Postfix sont lancés par le démon principal master digne de confiance.

Ces processus ne s’exécutent pas en tant que processus fils d’un processus de l’utilisateur et sont donc immunisés contre les problèmes de sécurité liés à l’héritage et aux communications père-fils.

  • Les attaques qui utilisent les signaux, la mĂ©moire partagĂ©e, les fichiers ouverts et autres types de communication inter-processus n’ont aucun effet sur Postfix.
  • Les attaques par dĂ©bordement de tampon n’ont pas non plus de grands effets sur Postfix dans la mesure ou les processus s’exĂ©cutent avec le moins de droits possible et que Postfix utilise des tailles alĂ©atoires de tampon.
  • Il est possible de "chrooter" l’exĂ©cution des processus de Postfix rĂ©duisant ainsi la portĂ©e d’une compromission de ses processus.
  • Postfix, de par sa conception, ne permet pas aux processus de grossir de façon incontrĂ´lĂ©e. Les attaques par DOS sont donc peu nuisibles.

4/ Respect des standards (p13)

Postfix respecte, entre autres, les standards suivants:

  • RFC 2821: Description du protocole SMTP.
  • RFC 1869: Description des fonctionnalitĂ©s Ă©tendues de SMTP qui devient alors ESMTP. (p17)
  • RFC 2822: Description du format des emails.

5/ Quelques commandes d'administration de Postfix: (p45)

Détecter les problèmes de configurations:

postfix check

Afficher les valeurs par défaut des règles de Postfix:

postconf -d

Afficher les valeurs modifiées (qui ne sont plus celles par défaut) des règles:

postconf -n

Afficher les types de tables de recherche supportées:

postconf -m

Afficher la valeur d’une règle:

postconf -h < nom de la règle >

Forcer Postfix Ă  vider la file deferred :

postfix flush (quiv. Sendmail: sendmail -q)

Ce qu’il faut savoir

Une adresse mail de la forme roger@www.mondomaine.net (conforme au RFC 2822) est composée de trois parties:

  • 1ère partie: la partie locale : roger
  • 2ème partie: la partie hĂ´te : www (cette partie est très souvent omise)
  • 3ème partie: la composante domaine : mondomaine.net

6/ DEFINITION: adresse d’enveloppe/en-tête de messages:

6.1/ Les en-tĂŞtes de messages: http://www.arobase.org/ecole/entetes-detail.htm

From:

 

Organization:

 

To:

 

Reply-To:

 

Subject:

 

Cc:

( C arbon C opy)

Bcc:

( B lind C arbon C opy) même chose que "Cc:" sauf qu’ici le destinataire principal n’a pas connaissance de la liste des personnes qui reçoivent la copie du courrier.

Priority:

Niveau de priorité du courrier (5 niveaux possibles).

Disposition-Notification-To:

Adresse définie pour la réception de la confirmation de lecture. La présence de ce champ active de ce fait la confirmation de lecture.

X-Mailer:

Logiciel utilisé par l’expéditeur

MIME-Version:

1.0 signifie que le message utilise le protocole MIME et précise la version utilisée.

Content-Type:

Type de contenu MIME présent dans le message (texte simple, texte enrichi, HTML, images, sons, etc...) et jeu de caractères utilisés.

Content-Transfer-Encoding:

Codage utilisé. Valeurs possibles: 7bit (par dfaut), 8bit (binaire mais avec des lignes de taille maxi 998 octets), binary, base64, quoted-printable.

6.2/ Les adresses d’enveloppes: http://www.arobase.org/ecole/entetes-detail.htm

Received from...

Trace ajoutée par un serveur SMTP ayant relayé le courriel. Chaque serveur SMTP rencontré laisse sa ligne Received . La dernière ligne Received correspond au premier serveur ayant relayé le mail.

Message-ID:

Numéro d’identification unique du message.

Return-path:

Adresse de retour en cas d’erreur.

Date:

Date et heure d’envoi. Le dernier chiffre (+0100) correspond au fuseau horaire de l’émetteur: +0100 signifie GMT+1, -0500 signifie GMT-5.

6.3/ Compte virtuel (p156)

Un compte virtuel est un compte mail (une BL) qui ne correspond Ă  aucun compte UNIX sur le serveur Postfix.

I - Configuration de postfix

J’ai cherché à regrouper les règles par catégorie de fonctionnalités.

I.1/ Règles générales:

La règle smtpd_banner (p219) définit le message d’accueil du serveur Postfix:

Exemple de message d’accueil:

La règle mydomain (p41) renseigne le nom de domaine auquel appartient la machine sur laquelle s’exécute Postfix.

$mydomain sera ajoutée à tout champ TO: (champ du destinataire du mail) qui ne comporte que la partie hôte ou que la partie locale.

Par défaut c’est l’agent local de livraison qui recherche les destinataires dans /etc/ passwd et /etc/ aliases . Le serveur SMTP valide les adresses de destination avec $local_recipient_maps et rejette les destinataires inconnus.

La règle myorigin (p42) renseigne la partie réseau de l’adresse d’enveloppe ou d’en-tête des mails qui seront envoyés par Postfix.

Quand myorigin ne vaut pas $mydomain alors elle est de la forme < nom de machine >.< nom de domaine > (www.mondomaine.fr par exemple).

  • ConsidĂ©ration sur mydomain et myorigin : (p53)

Cependant, si tel est votre souhait, initialisez à "no" les deux règles ci-dessous pour inhiber la réécriture des adresses.

La règle append_at_myorigin (p53,202) initialise ou non (yes/no) la réécriture des adresses en ajoutant à ces adresses:

  • en provenance locale:

. $myorigin Ă  toute adresse qui ne contiendrait pas de composantes "hĂ´te" ET "domaine".

  • en provenance extĂ©rieure:

La règle append_dot_mydomain (p53) initialise ou non la réécriture des adresses en ajoutant à ces adresses:

  • en provenance locale:

. $mydomain aux adresses qui ne contiendraient pas de composante "domaine".

  • en provenance de l’extrieur:

la valeur "@$remote_header_rewrite_domain".

I.2/ Masquage des noms d’hôtes (p54-55,212)

La règle masquerade_domains (p54-55) définit les règles de supression des noms d’hôtes et/ou de sous-domaines dans les adresses d’enveloppe et les en-têtes de message de l’expéditeur (et non du destinataire!!!).

Ici, seuls les mails en provenance du sous-domaine arte.television.fr ne seront pas réduits à @television.fr

Dans le présent fichier, masquerade_domains est redondant à mydomain puisque je n’ai pas de sous-réseaux.

La règle masquerade_classes (p55) permet de masquer les adresses d’enveloppe et d’en-tête également des destinataires.

masquerade_classes accepte la liste suivante: envelope_recipient , envelope_sender , header_recipient , header_sender .

I.3/ Contrôle d’accès pour le relayage (p43)

mynetworks = 127.0.0.0/8 est la valeur par défaut et ne permet pas à Postfix d’être un relais ouvert.

Telle qu’est définie, ci-dessous, la règle, seule ma machine pourra envoyer des mails vers l’extérieur.

Voir "IX - DIRECTIVES RELATIVES A L’AUTHENTIFICATION SASL AU SERVEUR SMTP".

La règle mynetworks_style (p43) ne sert à autoriser l’utilisation du serveur Postfix pour relayer du courrier que pour des hôtes appartenant au réseau de Postfix ou sous-réseaux locaux.

Valeurs possibles:

  • class: relayage autorisĂ© pour tous les hĂ´tes de la mĂŞme classe de rĂ©seau que celui de Postfix. Souvent trop permissif ! Risque de fonctionnement en relais ouvert
  • subnet: relayage autorisĂ© pour tous les hĂ´tes du mĂŞme rĂ©seau que celui de Postfix. Risque de fonctionnement en relais ouvert
  • host: relayage autorisĂ© uniquement Ă  la machine qui hĂ©berge Postfix.

La règle relay_domains (p24,106) indique les domaines et sous-domaines vers lesquels Postfix va relayer (faire suivre) le courrier.

Valeur par défaut:

ou, si je souhaite une règle générale:

ainsi, tout mail à destination de AOL sera relayé par le serveur smtpd de Free.

postqueue -f [nom de domaine]

postfix flush

sendmail -q

II - Les tables de recherche

  • Les clefs, appelĂ©es LHS pour L eft H and S ide, constituent la colonne gauche des tables de recherche. Les clefs sont insensibles Ă  la casse.
  • Les valeurs, appelĂ©es RHS pour R ight H and S ide, constituent la colonne droite des tables de recherche.

III - Fichiers d’alias - uniquement pour distribution locale !!!

Les fichiers d’alias (ou tables d’alias ou base de données d’alias) sont des tables de recherche particulières car ils ont un format compatible avec Sendmail (p38). Donc des tables d’alias créées avec Sendmail continueront à fonctionner après une migration vers Postfix (p38).

III.1/ RĂ´le des alias

Un alias est un "raccourci" (e.g: roger pour roger@mondomaine.net ) qui sera utilisé, par exemple, dans le champ TO: (champ où l’on indique le destinataire de nos mails). L’alias remplace donc, s’il est correctement défini, l’adresse mail.

C’est l’agent de distribution local qui se sert de cette table de recherche.

Avec la table des alias on peut également créer autant de nom de BL qu'on le souhaite qui toutes pointeront vers une seule, vraiment existante. En effet, il est possible de demander à ce qu’on nous écrive à l’adresse yoyo@linuxorable.fr puisque, si notre table d’alias est bien faite, il y sera incrit ceci:

III.2/ Exemple de table d’alias (p39)

III.3/ Extension des tables d’alias:

III.4/ Format des tables d’alias:

Tout comme pour les tables de recherche, les fichiers/table/base de données d’alias sont construits à partir d’un fichier texte. Mais le format des tables/fichiers/base de données d’alias est différent de celui des tables de recherche. Donc on ne peut pas utiliser la commande postmap pour les construire.

  • Les clefs , appelĂ©es LHS (pour L eft H and S ide), constituent la colonne gauche des tables d’alias.
    • Les clefs sont insensibles Ă  la casse.
    • Les clefs d’alias doivent ĂŞtre des adresses locales (au sens "partie locale" d’une adresse mail) et rien d’autre !!! (p40)
  • Les valeurs , appelĂ©es RHS (pour R ight H and S ide), constituent la colonne droite des tables d’alias. Les valeurs peuvent ĂŞtre de 4 natures diffĂ©rentes: (p40)
    • a/ une adresse locale ou de type RFC 2822
    • b/ le chemin complet d’accès Ă  un fichier qui fera office de boĂ®te Ă  lettres locale (format mbox uniquement ???).
    • c/ une commande: eg: |/usr/bin/autoreply <== notez le symbole pipe "|"
    • d/ :include: pour inclure un fichier contenant une liste de cibles suplĂ©mentaires. eg: [:include:/chemin/de/mon/fichier

III.5/ Les commandes de construction:

On utilise soit la commande:

postalias /chemin/du/fichier/aliases

soit la commande de compatibilité Sendmail:

newaliases

La règle alias_maps (p38-39,83-84,118,201) définit le type (hash, NIS, LDAP, etc...) et l’emplacement du fichier texte dont se servira la commande postalias ou newalises pour re/construire le(s) fichier(s) de base de données (.db) d’alias utilisés par l’agent de distribution local .

La règle alias_database (p39,118) définit l’emplacement des fichiers texte dont se servira la commande newaliases pour construire les fichiers base de données d’alias, c’est à dire uniquement les fichiers qui doivent être indexés par la commande newaliases.

La règle default_privs (p40,84) définit les privilèges de Postfix lors de la distribution en local à un alias.

En effet, si un alias pointe vers une BL locale alors Postfix utilise, pour délivrer le courrier, l’identité du propriétaire du fichier base de données d’alias sauf !!! si c’est root qui en est le propriétaire. Auquel cas Postfix utilisera l’identité du compte défini par default_privs .

La règle allow_mail_to_commands (p40-41) définit dans quel cadre Postfix doit délivrer le courrier à une commande.

Par défaut, cette règle autorise la livraison de mails à une commande à partir des tables d’alias et des fichiers .forward mais pas à partir des fichiers inclus (pour raison de sécurité).

Pour tout autoriser, initialiser cette règle à "alias, forward, include".

La règle allow_mail_to_files (p40-41,201) définit dans quel cadre Postfix doit délivrer le courrier à un fichier.

  • La configuration par dĂ©faut des deux règles ci-dessus correspond au comportement par dĂ©faut de Sendmail.

IV - Réécriture et/ou redirection d’adresses

La règle canonical_classes définit les adresses qui seront affectées par la directive canonical_maps . Par défaut cette règle vaut: envelope_sender , envelope_recipient , header_sender , header_recipient et la réécriture canonical_maps est appliquée aux adresses d’expéditeur et de destination de l’enveloppe, et aux adresses d’expéditeur et de destination des en-têtes.

Cette règle est implémentée à partir de la version 2.2.x de Postfix.

La règle sender_canonical_maps (p54) définit la réécriture des adresses d’EXPEDITION (champ FROM: du mail que je vais envoyer) de l’enveloppe et de l’en-tête.

Cette règle peut être utilisée conjointement à la directive canonical_maps mais sera lue avant cette dernière qui sera quand même lue et appliquée! Donc attention aux règles qui s’annulent les unes les autres.

La règle recipient_canonical_maps (p54) définit la réécriture des adresses de RECEPTION (champ TO: du mail que je reçois) de l’enveloppe et de l’en-tête.

Cette règle peut être utilisée conjointement à la directive canonical_maps mais sera lue avant cette dernière qui sera quand même lue et appliquée! Donc attention aux règles qui s’annulent les unes les autres.

Avec cette règle je peux, pour un mail entrant, effectuer une redirection du mail vers N’IMPORTE QUELLE adresse.

La règle canonical_maps (p34,36,39,53,91,93,203) définit quel fichier texte sera utilisé pour construire la table de recherche au format ".db"

V - Directives relatives à la gestion des files d’attente

V.1/ Paramètres généraux:

Le gestionnaire de file d’attente qmgr de Postfix déplace les messages de la file active dans la file deferred chaque fois qu’un seveur SMTP distant reste inaccessible pendant plus de 30s (p60).

La règle queue_directory (p50,59,215) déinit l’emplacement du répertoire racine de la file d’attente de Postfix.

Valeur par défaut:

La règle qmgr_message_active_limit (p215) définit le nombre maximum de messages pouvant être présents dans la file "active".

Valeur par défaut:

La règle qmgr_message_recipient_minimum (p215) définit le nombre minimal de destinataires en mémoire pour chaque message.

Cette règle prend la priorité sur toute limite de destinataire en mémoire (c’est à dire sur qmgr_message_recipient_limit global et sur transport_recipient_limit ) si nécessaire.

La règle queue_file_attribute_count_limit définit le nombre maximum d’attribut (name=value) qui peuvent être stockés dans un fichier de la file d’attente de Postfix. Cette limite est utilisée par le serveur cleanup .

Valeur par défaut:

La règle queue_minfree (p59) définit l’espace libre (en octet) minimum nécessaire (sur le système de fichiers utilisé) pour recevoir le courrier.

Par défaut, le serveur SMTP (Postfix 2.1 et plus) rejette les commandes MAIL FROM lorsque la quantité d’espace libre est inférieure à 1.5 x $message_size_limit .

Valeur par défaut: 0

La règle queue_run_delai (p61,215) définit le délai (en seconde) entre deux LECTURES de la file deferred par qmgr .

Valeur par défaut: 1000s

V.2/ Les messages différés (p60)

Valeur par défaut: 1000s

Valeur par défaut: 4000s

Valeur par défaut: 5d.

VI - Directives relatives à l’envoi des messages

La règle smtpd_sender_login_maps (p159) définit la table de correspondances entre un nom de login SASL et une adresse d’expéditeur (MAIL FROM).

La table sera de la forme:

VII - Directives relatives à la réception des messages

VII.1/ Règles générales

La règle message_size_limit (p52,212) définit la taille maximale autorisée des mails (entrant et sortant).

Valeur par défaut: 10240000 (10Mo)

Par défaut, cette valeur vaut 1000

VII.2/ Gestion des erreurs des clients (p52)

Les erreurs répétées d’un client peuvent signifier une attaque ou tout simplement un client mal configuré.

Une attaque peut être, par exemple, l’envoi de commandes erronées afin de "planter" le serveur Postfix. Pour se prémunir de ce genre de comportements "douteux" (mais qui ne sont peut-être que le résultat d’un client mal configuré) Postfix dispose des 3 règles suivantes:

Valeur par défaut: 1s

La règle smtpd_soft_error_limit (p52,221) définit le nombre d’erreurs (en provenance d’un même client) au delà duquel le délai entre le traitement de deux commandes erronées augmentera à chaque fois.

Comme par défaut cette règle est initialisée à 10, cela veut dire, que jusqu’à la 10ème erreur, entre le traitement de chaque commande erronée, il ne s’écoulait qu’1 seconde. Mais ensuite, le délai entre le traitement de la 11ème et de la 12ème erreur sera de 10x1+1=11 secondes. Entre le traitement de la 12ème et de la 13ème commande erronée il s’écoulera 11+1=12 secondes. Et ainsi de suite...

La règle smtpd_hard_error_limit (p52) définit le nombre maximum de commandes erronées (en provenance d’un même client) au delà duquel Postfix rompt la connexion.

Valeur par défaut: 20

Pour les trois valeurs définies ci-dessus, le comportement sera le suivant:

  • De la 1ère la 5ème erreur, entre chacune de ces erreurs, il s’écoule 5 secondes
  • Entre la 5ème et la 6ème erreur il s’écoule 5x5+5=30 secondes
  • Entre la 6ème et la 7ème erreur il s’écoule 30+5=35 secondes
  • Entre la 7ème et la 8ème erreur il s’écoule 35+5=40 secondes
  • Entre la 8ème et la 9ème erreur il s’écoule 40+5=45 secondes
  • Entre la 9ème et la 10ème erreur il s’écoule 45+5=50 secondes
  • Si la prochaine commande est erronĂ©e, alors Postfix ferme la connexion. Et ce traitement sera appliquĂ© chaque fois que le client essaiera de se connecter en envoyant des commandes erronĂ©es.

VII.3/ Agents de distribution locale (MDA): (LOCAL/LMTP/Cyrus-IMAP/Procmail)

VII.3.1/ L’agent de distribution locale local :

Pour que l’agent local fonctionne il n’y a rien à faire !!!

VII.3.2/ L’agent de distribution locale Procmail:

Procmail est un agent externe (à Postfix) de distribution locale de mails. Procmail constitue en fait la commande que l’agent local utilisera pour délivrer le courrier. La commande est lancée avec les privilèges ID utilisateur et ID du groupe primaire du destinataire.

EXCEPTION: les livraisons pour root sont excutées avec les privilèges définis par la règle: $default_privs .

La règle mailbox_command (p211) permet de définir un agent externe de distribution locale des mails pour distribuer le courrier aux comptes locaux.

Valeur par dfaut: vide

VII.3.3/ L’agent de distribution Cyrus-IMAP:

Postfix intègre un client nommé lmtp qui parle un protocole du même nom, LMTP, et qui est optimisé pour livrer le courrier aux serveurs de BL tels Cyrus-IMAP.

En clair , l’agent de transport local qui est en service, lit la base /etc/aliases (dans notre cas ce sera /etc/postfix/aliases - voir III.5/ alias_maps: ) puis passe le mail à l’agent optionnel (ici ce sera Cyrus-IMAP).

Les deux valeurs ci-dessous (de mailbox_transport ) sont identiques mais la première impose de redéfinir les droits sur le répertoire /var/run/cyrus/socket car j’obtiens les messages suivants ( /var/log/mail.info ) lors de la réception de mes mails:

postfix/lmtp[31145]: 98A9247E4F: to=pascal@linuxorable.net, relay=none, delay=3116, status=deferred (connect to
 /var/run/cyrus/socket/lmtp[/var/run/cyrus/socket/lmtp]: Permission denied)

...donc, ci-dessous, j’utilise la deuxième valeur.

Valeur par défaut: vide

VIII - Directives relatives Ă  la distribution des messages

VIII.1/ Format des BĂ L

VIII.2/ Format mbox/maildir (p81-83)

  • Format mbox : il suffit de ne pas mettre de "/" Ă  la fin du chemin passĂ© en valeur Ă  la règle home_mailbox .
  • Format maildir : il suffit de mettre un "/" Ă  la fin du chemin passĂ© en valeur Ă  la règle home_mailbox .

VIII.3/ Emplacement des BAL

Par défaut, et sous Debian, c’est dans /var/mail/ que se trouvent les fichiers (format mbox ) au nom de chaque login des utilisateurs (compte UNIX) créé sur le système.

VIII.4/ Règles

La règle mail_spool_directory (p84,211) définit l’emplacement des BL pour la réception des messages.

Valeur par défaut: /var/mail

Valeur par défaut:

IX - Directives relatives à l’authentification SASL au serveur smtp

IX.1/ Authentification auprès du serveur smtpd de Postfix

La règle smtpd_sasl_auth_enable (p159,164) définit si oui ou non (yes/no) le protocole SASL sera utilisé.

IX.1.1/ Authentification par mot de passe UNIX (p157) et site x.guimard

IX.1.1.1/ Le fichier smtpd.conf (p157)

Il faut créer le fichier /usr/lib/sasl2/smtpd.conf et y mettre ceci:

pwcheck_method: pwchek (lui préférer saslauthd dans la mesure du possible)

ou

pwcheck_method: saslauthd (pour version libsasl >= 1.5.26)

IX.1.1.2/ Les règles

Valeur par défaut:

Ensuite il faut lancer le serveur d’authentification saslauthd avec une de ces deux options:

  • pour lecture du fichier /etc/passwd : -a getpwent
  • pour lecture du fichier /etc/shadow : -a shadow
  • pour lecture du fichier /etc/passwd : MECHANISMS="getpwent"
  • pour lecture du fichier /etc/shadow : MECHANISMS="shadow"

IX.1.2/ Authentification par PAM

Remember that SASL (and therefore Cyrus) accesses PAM modules through saslauthd, and that SASL can only deal with
plaintext passwords if PAM is used.

Mais si l’on souhaite tout de même utiliser PAM, il faut créer le fichier /usr/lib/sasl2/ smtpd.conf et y mettre ceci:

Pour utiliser PAM, initialiser les règles suivantes (ou d’autres encore):

IX.1.3/ Authentification avec la base externe de SASL: /etc/saslbd2 (p158)

Pour savoir si c’est le cas, ulitiser la commande suivante:

sasldblistusers2

test30@euphorie.linuxorable.fr: userPassword
 test12@euphorie.linuxorable.fr: userPassword

Et ceci doit ĂŞtre identique Ă  ce que renvoit cette commande:

postconf -h myhostname

euphorie.linuxorable.net

postfix check

postfix/postfix-script: warning: not owned by root: /var/spool/postfix/etc/sasldb2

250-AUTH GSSAPI NTLM LOGIN PLAIN DIGEST-MD5 CRAM-MD5

IX.1.3.1/ Les règles

La règle smtpd_sasl_local_domain indique le nom de royaume d’authentification de SASL. Ce nom doit être le même que celui renvoyé (en gras) par la commande:

sasldblistusers2

test30@euphorie.linuxorable.fr: userPassword
test12@euphorie.linuxorable.fr: userPassword 

Cependant, cette règle peut également rester vide.

Par défaut, le serveur smtpd Postfix accepte les mots de passe en clair mais pas les logins anonymes.

250-AUTH GSSAPI NTLM LOGIN PLAIN DIGEST-MD5 CRAM-MD5 lorsque l’on se connecte au serveur SMTP par telnet.

X - Directives relatives au chiffrage TLS/SSL

X.1/ Généralités

  • TLS ( T ransport L ayer S ecurity protocol), dĂ©veloppĂ© par l’IETF, est la version 3.1 de SSL.
  • Transport Layer Security = Protocole de SĂ©curisation de la Couche Transport
  • La RFC 3207 (STARTTLS) dĂ©finit cette extension SMTP. (p167)
  • TLS utilise un chiffrement par clef publique. (p169)

X.2/ Clef publique/clef privée

  • La clef publique est un certificat signĂ© par une AC ( A utoritĂ© de C ertification).
  • Ces deux clefs ne servent en fait qu’ Ă  dĂ©terminer, en dĂ©but de session, les identitĂ©s du client et du serveur et Ă  chiffrer une clef de session choisie au hasard.
  • C’est cette clef de session qui servira Ă  chiffrer et signer le reste de l’échange (p169).

X.3/ Connexion TCP chiffrée

  • La mise en place d’une connexion TCP chiffrĂ©e permet de prĂ©server la confidentialitĂ© et l’intĂ©gritĂ© des messages.
  • La mise en place d’une connexion TCP chiffrĂ©e produit une commande: 250-STARTTLS

On a donc l’assurance que les messages n’ont pas été modifiés en cours de route. Ceci garantit également que les messages ne sont pas délivrés à un serveur se faisant passer pour un autre.

Utilisé conjointement à l’authentification SALS, TLS garantit le chiffrage des mots de passe.

On peut ajouter une authentification des clients mail au serveur SMTP par présentation de certificats clients. Cependant, cette méthode a un coût en assistance aux utilisateurs et en temps pour l’émission des certificats clients.

X.4/ TLS au niveau du serveur SMTP

La règle smtpd_use_tls (p171) définit si oui ou non on utilise le chiffrement TLS. (p171)

La règle smtpd_enforce_tls déclare que seules les commandes avec chiffrement TLS seront acceptés.

La règle smtpd_tls_key_file (p171) indique quel fichier contient la clef privée RSA non signée au format .pem du serveur smtpd .

La règle smtpd_tls_cert_file (p171) indique quel fichier contient la clef publique RSA non signée au format .pem du serveur smtpd .

La règle smtpd_tls_CAfile (p172) indique quel fichier contient le certificat de l’AC.

Pour vérifier la clef publique d’un serveur il est nécessaire de disposer du certificat de l’AC.

La règle smtpd_tls_loglevel définit le niveau des messages de log qui seront produits pour l’activité TLS.

Niveaux possibles: 0 (nul) 4 (très verbeux).

X.5/ TLS au niveau du client SMTP

La règle smtp_use_tls (p175) définit si oui ou non on utilise le chiffrement TLS. (p175)

La règle smtp_enforce_tls déclare que seules les commandes avec chiffrement TLS seront acceptées.

Cette règle impose que le nom de machine des serveurs SMTP extérieurs correspondent à l’information de leur certificat et que ce certificat soit issu d’une autorité reconnue par le client SMTP de Postfix. Dans le cas contraire, la livraison est retardée et le message reste en file d’attente.

La règle smtp_tls_key_file (p175) indique quel fichier contient la clef privée RSA non signée au format .pem du client smtp .

La règle smtp_tls_cert_file (p175) indique quel fichier contient la clef publique RSA non signée au format .pem du client smtp .

La règle smtp_tls_CAfile (p175) indique quel fichier contient le certificat de l’AC.

Pour vérifier la clef publique d’un serveur il est nécessaire de disposer du certificat de l’AC.

La règle smtp_tls_loglevel définit le niveau des messages de log qui seront produits pour l’activité TLS.

Niveaux possibles: 0 (nul) 4 (très verbeux).

XI - Directives relatives Ă  la lutte anti-spam

XI.1/ Généralités

Cet ordre est induit par le protocole SMTP et l’ordre dans lequel se déroule la communication client/serveur:

  • Etablissement de la connexion <==> smtpd_client_restrictions
  • Envoi de HELO/EHLO par le client <==> smtpd_helo_restrictions
  • Envoi de MAIL FROM: par le client <==> smtpd_sender_restrictions
  • Envoi de RCPT TO: par le client <==> smtpd_recipient_restrictions
  • Envoi de DATA par le client <==> smtpd_data_restrictions
  • Envoi de TO par le client <==> header_checks
  • Envoi du corps du texte par le client <==> body_checks
  • rencontre l’action OK alors le parcours des restrictions continue jusqu’à la fin ou jusqu’à ce qu’une action REJECT soit rencontrĂ©e.
  • rencontre l’action REJECT alors le parcours des restrictions est interrompu et la règle correspondante appliquĂ©e.

XI.2/ Restrictions sur le client (p132-145)

La règle smtpd_client_restrictions (p133) définit les clients qui ont le droit de faire des connexions SMTP sur le serveur smtpd .

Les restrictions sont appliquées dans l’ordre indiqué, la première restriction qui marche a gagné.

XI.2.1/ Explications
  • reject_invalid_hostname => Rejette les requĂŞtes lorsque la syntaxe du nom de machine passĂ©e avec HELO ou EHLO est invalide.
  • reject_non_fqdn_hostname => Rejette les requĂŞtes lorsque le nom de machine passĂ© avec HELO ou EHLO n’est pas sous la forme pleinement qualifiĂ©e, comme requis par la RFC.
  • reject_non_fqdn_sender => Rejette la requĂŞte lorsque l’adresse MAIL FROM n’est pas sous la forme pleinement qualifiĂ©e requise par la RFC.
  • reject_unknown_sender_domain => Rejette la requĂŞte lorsque l’adresse MAIL FROM n’a pas d’enregistrement DNS A ou MX correspondant et Postfix n’est pas la destination finale de l’adresse d’expĂ©dition.
  • reject_unknown_recipient_domain => Rejette la requĂŞte lorsque l’adresse RCPT TO ne correspond Ă  aucun enregistrement DNS de type A ou MX et que Postfix n’est pas la destination finale de l’adresse de destination.
  • permit_mynetworks => Autorise la requĂŞte si l’adresse IP du client correspond Ă  l’une des adresses ou l’un des rĂ©seaux listĂ© dans $mynetworks.
  • reject_unauth_destination => Rejette la requĂŞte sauf si l’une des propositions suivantes est vraie:

l’adresse RCPT TO résolue correspond à $relay_domains ou l’un de leurs sous-domaines et ne contient pas de routage expéditeur (user@elsewhere@domain),

l’adresse RCPT TO résolue correspond à $mydestination , $inet_interfaces , $proxy_interfaces , $virtual_alias_domains ou $virtual_mailbox_domains , et ne contient pas de routage expditeur (user@elsewhere@domain).

  • permit => Autorise la requĂŞte. Cette restriction est pratique Ă  la fin d’une liste de restrictions, pour rendre la politique par dĂ©faut explicite.

XI.3/ Règles & Restrictions sur HELO/EHLO

XI.3.1/ Règles

La règle smtpd_helo_required (p145,220) exige que la commande HELO/EHLO du client soit suivie d’une adresse FQN c’est à dire conforme au RFC 821

Valeur par défaut: no

La chaîne en argument de la commande VRFY est un nom d’utilisateur. La réponse à cette commande pouvant inclure le nom complet de cet utilisateur et devant fournir une adresse complètement qualifiée de BL pour cet utilisateur.

Valeur par défaut: no

Voici les logs de /var/log/mail.log lors du rejet d’un mail:

postfix/cleanup[19455]: E235D47E01: message-id=<200501222052.j0MKqLZu010177@mx7.andrew.cmu.edu>
postfix/cleanup[19455]: E235D47E01: reject: mime-error improper use of 8-bit data in message header: From: 
     OK01???????@andrew.cmu.edu,?????@andrew.cmu.edu, ??? from LISTS2.andrew.cmu.edu[128.2.10.216]; 
     from=<owner-info-cyrus@lists.andrew.cmu.edu> to=<pascal@linuxorable.fr>
postfix/smtpd[19453]: public/cleanup socket: wanted attribute: status
postfix/smtpd[19453]: input attribute name: status
postfix/smtpd[19453]: input attribute value: 8
postfix/smtpd[19453]: public/cleanup socket: wanted attribute: reason
postfix/smtpd[19453]: input attribute name: reason
postfix/smtpd[19453]: input attribute value: improper use of 8-bit data in message header
postfix/smtpd[19453]: public/cleanup socket: wanted attribute: (list terminator)
postfix/smtpd[19453]: input attribute name: (end)
postfix/smtpd[19453]: > LISTS2.andrew.cmu.edu[128.2.10.216]: 550 Error: improper use of 8-bit data in message header
postfix/smtpd[19453]: watchdog_pat: 0x808df78
postfix/smtpd[19453]: < LISTS2.andrew.cmu.edu[128.2.10.216]: QUIT
postfix/smtpd[19453]: > LISTS2.andrew.cmu.edu[128.2.10.216]: 221 Bye
postfix/smtpd[19453]: disconnect from LISTS2.andrew.cmu.edu[128.2.10.216]

Valeur par défaut: no

La règle strict_7bit_headers (p221) définit si oui ( no ) ou non ( yes ) l’on souhaite accepter les mails dont les en-têtes comportent du texte codé sur 8 bits, c’est à dire comportant des caractères accentués.

Normalement (c’est à dire en accord avec les RFC 822 et 2822) un client mail doit utiliser Content-Transfer-Encoding: 8bit pour l’encodage des caractères accentués.

Valeur par défaut:no

XII.4/ Restriction sur les en-tĂŞtes

La règle header_checks (p38,146-147,178) définit la liste des restrictions que le serveur SMTP appliquera sur les en-têtes des messages.

Les actions possibles sont: reject , warm , ignore , hold , discard , filter .

Syntaxe du fichier /etc/postfix/header_checks :

  • LHS: c’est le motif recherchĂ©. Il doit ĂŞtre compris entre deux slash: /mon_motif/
  • RHS: c’est l’action associĂ©e au motif.

Cette règle accepte les expressions régulières(regexp)

XII.5/ Restrictions sur les fichiers attachés

La règle mime_header_checks (p38,146-147,178) définit la liste des restrictions que le serveur SMTP appliquera sur les en-têtes MIME (???) des messages.

XII.6/ Restriction sur le corps des messages

La syntaxe ci-dessus permet de rejeter tous les mails dont le corps du message contient des commentaires HTML en plein milieu d’un mot (technique utilisée par les spameurs pour déjouer les filtres de contenus).

XII.7/ Restrictions sur les expéditeurs

La règle smtpd_sender_restrictions (p133,145) définit la liste des restrictions que le serveur SMTP appliquera sur les expéditeurs dans le contexte des commandes MAIL FROM.

XII.7.1/ Explications:

  • reject_sender_login_mismatch => Rejette la requĂŞte lorsque $smtpd_sender_login_maps indique un propriĂ©taire pour l’adresse MAIL FROM, mais que le client n’est pas loguĂ© (au sens SASL) avec ce compte ou lorsque le client est loguĂ© (SASL) mais que le login utilisĂ© ne possède pas l’adresse MAIL FROM au regard de $smtpd_sender_login_maps .

XII.8/ Restrictions sur les destinataires

La règle smtpd_recipient_restrictions (p133,137,160) définit les restrictions qui s’appliqueront aux requêtes/demandes (effectuées par un client) de connexion au serveur SMTP.

XII.8.1/ Explications:

  • permit_mynetworks autorise postfix Ă  relayer les mails... Ce qui n’est pas une mauvaise solution.
  • permit_mynetworks signifie que postfix autorise Ă  relayer les mails venant d’adresses IP contenues dans $mynetworks .
  • permit_sasl_authenticated autorise la requĂŞte lorsque le client est authentifiĂ© avec succès via le protocole AUTH.
  • reject_unauth_destination rejette la requĂŞte sauf si l’une des propositions suivantes est vraie:

l’adresse RCPT TO résolue correspond à $relay_domains ou l’un de leurs sous-domaines et ne contient pas de routage expéditeur (user@elsewhere@domain),

l’adresse RCPT TO résolue correspond à $mydestination , $inet_interfaces , $proxy_interfaces , $virtual_alias_domains , ou $virtual_mailbox_domains , et ne contient pas de routage expéditeur (user@elsewhere@domain).

XII.9/ Restrictions sur les données

La règle smtpd_data_restrictions (p133,219) permet de rejeter la requête lorsque le client envoie des commandes SMTP en dehors des moments où il y est autorisé ou lorsque le client envoie des commandes SMTP avant de savoir que Postfix supporte la canalisation des commandes SMTP (pipelining).

Ceci arrête les messages issus de logiciels mal écrits qui utilisent incorrectement la canalisation des commandes SMTP pour accélérer les livraisons.

L’utilisation de reject_unauth_pipelining dans les autres contextes de restriction n’est pas recommandé.

XIII - Redéfinition des codes erreur renvoyés par Postfix

Lien vers l'article précédent
Cyrus IMAP : authentification LDAP
Postfix : authentification SASL
Lien vers l'article suivant

Commentaires