Date de publication: le mardi 15 mai 2007 à 20h40
Dernière modification: par Pascal BOYER le mardi 28 décembre 2010 à 14h34
« Article précédent: Postfix : authentification SASL
» Article suivant: Postfix : le fichier master.cf
Avant propos
Dans cet article, je présente la structure (i.e: la syntaxe) des tables de recherche utilisées par Postfix ainsi que les fichiers servant à effectuer du contrôle "anti-spam".
Toutes ces tables sont préalablement définies dans le fichier /etc/postfix/ main.cf .
Beaucoup d’informations sont tirées de la lecture du livre Postfix - La référence, ed. O’REILLY . Donc, comme pour les précédents articles et par respect pour le travail des auteurs, les références aux pages du livre contenant l’information présentée ici, sont indiquées entre parenthèses.
A propos du contrôle anti-spam, je pense qu’il est plus aproprié, étant donné la configuration que je présente, de parler de filtrage des messages indésirables. En effet, la configuration "anti-spam" présentée dans le fichier /etc/postfix/ main.cf se limite à contrôler, auprès de plusieurs RBL, que l’émetteur du mail n’y est pas enregistré, à effectuer un contrôle sévère sur les fichiers attachés et un simple contrôle dans le corps des messages.
Sachez que Postfix propose des règles qui permettent de lutter plus efficacement contre les mails indésirables en effectuant, par exemple, un contrôle sur le corps des mails.
Ceci étant dit, l’ajout d’un système anti-spam (e.g: Spamassassin) peut s’avérer utile et plus performant.
Pensez également à vous servir des règles de tri que proposent aujourd’hui les clients mail comme Thunderbird, IMP3 etc...
Tables de recherche et fichiers d’alias
1°/ Géneralités (p34)
Les tables de recherche utilisées par Postfix sont simples mais souples. De nombreux paramètres pointent vers de telles tables pour obtenir des informations de configuration importantes. Le principe de fonctionnement est toujours le même:
Un message/mail fournit une clef qui servira à rechercher une valeur contenue dans une table.
En fonction de cette valeur, Postfix agira d’une certaine façon ou effectuera certaines modifications.
2°/ Format des tables de recherche (p34)
Les tables de recherche utilisées par Postfix sont généralement des fichiers bases de données UNIX. Ces fichier sont spécialement indexés pour permettre un accès rapide aux éléments qu’ils contiennent.
Initialement, avant d’obtenir une table de recherche (i.e: un fichier base de données), on commence par créer un simple fichier texte contenant les informations souhaitées.
La structure de ces fichiers texte est quasiment toujours la même et seule change leur syntaxe en fonction du type de la base de donnée souhaitée.
Ces fichiers texte sont constitués de lignes.
Toute ligne commençant par un # est un commentaire et n’a donc aucune incidence sur le comportement de Postfix.
Toutes les autres lignes sont des entrées et sont constituées de deux colonnes:
- La colonne gauche: appelée également LHS pour Left Hand Side (partie gauche) représente la clef de l’entrée.
- La colonne droite: appelée également RHS pour Right Hand Side (partie droite) représente la valeur de l’entrée.
:
Les clefs des tables de recherche sont insensibles à la casse.
Dans les tables de recherche, les apostrophes ne représentent pas des caractères spéciaux.
3°/ Version indexée des fichiers (p34)
La version indexée des fichiers texte est obtenue avec la commande suivante:
postmap < mon fichier texte >
La sortie de cette commande produit donc les fichiers base de données qui contituent les tables de recherche utilisées par Postfix.
Les fichiers produits par postmap ( dans notre cas) portent l’extension .db (pour data base).
4°/ Les types de bases de données (p35)
Les différents types de bases de données UNIX utilisent des formats internes distincts. Ce format interne dépend des bibliothèques présentent sur le système Linux.
Les types de bases de données reconnus par Postfix sont obtenus avec la commande:
postconf -m
static cidr nis dbm regexp environ proxy btree unix hash tcp mysql sdbm ldap
Il est important que cette sortie renvoie au moins le type hash.
:
C’est la règle default_database_type = du fichier /etc/postfix/ main.cf qui détermine le type de base de données utilisée par défaut par Postfix.
La commande postmap utilise également le type défini par cette règle lorsqu’aucun type ne lui est passé en option.
: (p35)
Le type représente en fait la méthode d’accès à la base de données.
C’est pourquoi, pour chaque règle du fichier /etc/postfix/ main.cf définissant l’utilisation d’une base de données, est également défini le type !!!
5°/ Les fichiers d’alias (p38)
Les fichiers d’alias sont des tables de recherche particulières car compatibles avec Sendmail. Ces fichiers d’alias sont également appelés tables d’alias ou encore base de données d’alias.
Historiquement, les serveurs de courrier n’utilisent qu’une seule table d’alias (souvent placée par défaut dans /etc).
Mais Postfix permet d’en créer autant qu’on le souhaite.
Tout comme les fichiers indexés base de données, les fichiers base de données d’alias sont construits à partir un simple fichier texte (p39). Mais le format interne des tables d’alias étant différent de celui des tables de recherche, on ne peut pas employer la commande postmap pour générer les tables d’alias.
Il existe deux commandes pour effectuer cette génération:
postalias < mon fichier texte >
ou
newaliases
Et la sortie de ces deux commandes est, tout comme avec la commande posmat et dans notre cas, un nouveau fichier dont l’extension est .db
La syntaxe du fichier texte source est très proche de celle du fichier texte servant à générer les tables de recherche. On retrouve une colonne gauche (la clef) et une colonne droite (la cible) (p40).
Exemples des fichiers externes
Ci-dessous, je présente le contenu de tous les fichiers externes définis dans le fichier /etc/postfix/ main.cf présenté dans l’article précédent.
Un seul manque à l’appel: /etc/postfix/ header_checks défini par la règle header_checks dans le fichier /etc/postfix/ main.cf
Je n’ai pas pris le temps de le configurer.
:
Tout fichier, d’alias ou table de recherche, défini par une règle dans /etc/postfix/ main.cf doit être créé quitte à le laisser vide !
Tout fichier déclaré qui n’existe pas engendre des messages d’erreur de ce genre:
postfix/cleanup[27692]: fatal: open /etc/postfix/header_checks: No such file or directory postfix/master[27609]: warning: process /usr/lib/postfix/cleanup pid 27692 exit status 1 postfix/master[27609]: warning: /usr/lib/postfix/cleanup: bad command startup -- throttling
...et les mails ne sont plus livrés !
Il faut donc créer le fichier /etc/postfix/ header_checks
Le fichier /etc/postfix/ aliases
# /etc/postfix/aliases # Ce fichier est défini par la règle {alias_maps} # ======================== IMPORTANT !!! ========================== # # Après chaque modification de cette base, penser à lancer les commandee: # # ~# newaliases # ~# postfix reload # ============================================================= # CI-DESSOUS, LES ALIAS DES ADMINISTRATEURS SYSTÈME ET LOGICIELe abuse: pascal@linuxorable.fr ftp: pascal@linuxorable.fr hostmaster: pascal@linuxorable.fr mailer-daemon: pascal@linuxorable.fr news: pascal@linuxorable.fr nobody: pascal@linuxorable.fr noc: pascal@linuxorable.fr pirouette: pascal@linuxorable.fr postmaster: pascal@linuxorable.fr root: pascal@linuxorable.fr security: pascal@linuxorable.fr usenet: pascal@linuxorable.fr webmaster: pascal@linuxorable.fr webmin: pascal@linuxorable.fr www: pascal@linuxorable.fr # CI-DESSOUS, UNE ENTRÉE POUR CHAQUE BAL CRÉÉE SUR LE SERVEUR Cyrus-IMAP SI ON # N'UTILISE PAS LDAP. # SI ON UTILISE LDAP, ALORS IL FAUT COMMENTER LES ENTRÉES CI-DESSOUS. # En LHS il ne doit pas y avoir de nom n'ayant pas de BàL sur le serveur !!! # LHS RHS ma-femme: ma-femme@linuxorable.fr ma-fille: ma-fille@linuxorable.fr ma-soeur: ma-soeur@linuxorable.fr mon-bof: mon-bof@linuxorable.fr mon-frere: mon-frere@linuxorable.fr mon-garçon1: mon-garçon1@linuxorable.fr mon-garçon2: mon-garçon2@linuxorable.fr pascal: pascal@linuxorable.fr test0: test0@linuxorable.fr
Le fichier /etc/postfix/ sender_login_maps
# /etc/postfix/sender_login_maps # Ce fichier est défini par la règle {smtpd_sender_login_maps} # Elle définit la correspondance entre un nom de login SASL et une adresses d'expéditeur (MAIL FROM). # En clair, cette table dit: l'@ mail "ma-femme@linuxorable.fr" ne doit être utilisée QUE par le user authentifié # en tant que "ma-femme" # Après chaque modification du fichier texte, il faut reconstruire la table de recherche avec la commande: # postmap /etc/postfix/canonical_maps # postfix reload # La table sera de la forme: # LHS RHS ma-femme@linuxorable.fr ma-femme ma-fille@linuxorable.fr ma-fille ma-soeur@linuxorable.fr ma-soeur mon-bof@linuxorable.fr mon-bof mon-frere@linuxorable.fr mon-frere mon-garçon1@linuxorable.fr mon-garçon1 mon-garçon2@linuxorable.fr mon-garçon2 pascal@linuxorable.fr pascal test0@linuxorable.fr test0
Le fichier /etc/postfix/ pieces_jointes_checks
# Ce fichier est défini par la règle mime_header_checks dans /etc/postfix/main.cf # Ce fichier me sert à rejeter tout mail comportant un fichier attaché dont l'extension est comprise dans la liste ci-dessous. /filename="?.*\.(bat|com|pif|vb|exe|lnk|scr|reg|chm|wsh|js|inf|shs|job|ini|shb|scp|scf|wsc|sct|dll|msc|msi|ppt|pps|mdb| rar|bmp|wav|mpg|mpeg|wma|wmv)/ REJECT /^Content(Disposition|Type):.*(file)?name="?.*\.(bat|com|pif|vb|exe|lnk|scr|reg|chm|wsh|js|inf|shs|job|ini|shb|scp|scf|wsc| sct|dll|msc|msi|ppt|scr|reg|chm|wsh|js|inf|shs|job|ini|shb|scp|scf|wsc|sct|dll|msc|msi|ppt|pps|mdb|rar| bmp|wav|wma|wmv)/ REJECT Extension de fichier joint refusée.
Le fichier /etc/postfix/ body_checks
# /etc/postfix/body_checks # Ce fichier est défini par la règle {body_checks} # Ce fichier est défini par la règle body_check dans /etc/postfix/main.cf # Ce fichier 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). /[:alpha:]<!--.*-->[:alpha:]/ REJECT Commentaire HTML douteux
Le fichier /etc/postfix/ transport-AOL
# /etc/postfix/transport-AOL <==> règle transport_maps de main.cf # # # # ======================== IMPORTANT !!! ========================== # # A chaque modification de cette base, penser à lancer les commandes: # # ~# postmap /etc/postfix/transport-AOL # ~# postfix reload # # =================================================================== #patrick@aol.com smtp:smtp.free.fr #valerie@aol.com smtp:smtp.free.fr aol.com smtp:smtp.free.fr
Commentaires














