Date de publication: le mardi 15 mai 2007 Ã 20h40
Dernière modification: par Pascal BOYER le dimanche 15 juillet 2007 à 08h52
« 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.
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.
- La colonne gauche: appelée également LHS pour L eft H and S ide (partie gauche) représente la clef de l’entrée.
- La colonne droite: appelée également RHS pour R ight H and S ide (partie droite) représente la valeur de l’entrée.
3°/ Version indexée des fichiers (p34)
La version indexée des fichiers texte est obtenue avec la commande suivante:
postmap < mon fichier texte >
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 .
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 ).
Il existe deux commandes pour effectuer cette génération:
postalias < mon fichier texte >
ou
newaliases
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.
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 !
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













