Postfix
Autoriser le point pour faire du plus addressing
Le plus addressing est une solution simple pour donner des adresses mail différentes selon les sites auquels vous donnez votre adresse. Cela permet de faire des filtres selon la destinataire et éventuellement de retrouver l’origine de la fuite si vous commencez à recevoir du spam sur une adresse plus-adressée.
Concrètement, vous pouvez donner foo+truc@exemple.org
à la place de foo@exemple.org
, vous recevrez les mails envoyés à l’adresse avec un +
.
Certains sites mal codés considèrent malheureusement qu’une adresse mail avec un +
est invalide.
Pour contourner ces sites de gougnafiers, on peut utiliser le point (.
) à la place du caractère +
.
N’autoriser que le point
Là, c’est tout simple : il suffit de changer le paramètre recipient_delimiter
dans /etc/postfix/mail.cf
et de recharger postfix
.
Si vous n’avez pas encore utilisé le plus addressing, je vous conseille de faire ça, c’est le plus simple.
Autoriser les deux : le point et le plus
Il semblerait qu’on puisse, depuis Postfix 2.11, mettre plusieurs caractères dans recipient_delimiter
(genre recipient_delimiter = +-
).
Mais ça ne fonctionne pas chez moi, sans doute à cause de mon groupware (Bluemind) qui fait plein de trucs tout seul (et ça me va très bien) mais qui, du coup, n’aime pas trop certaines modifications manuelles.
Donc on va faire une réécriture de l’adresse de destination des mails.
Créez un fichier /etc/postfix/point_addressing
qui contiendra ceci :
/^(.*)\.(.*)@(.*)$/ $1+$2@$3
Dans /etc/postfix/main.cf
, ajoutez regexp:/etc/postfix/point_addressing
au début du paramètre virtual_alias_maps
(l’ordre est important : la recherche d’alias va regarder les fichiers dans l’ordre).
Chez moi, c’est passé de
virtual_alias_maps = hash:/etc/postfix/virtual_alias
à
virtual_alias_maps = regexp:/etc/postfix/point_addressing, hash:/etc/postfix/virtual_alias
Rechargez postfix
, profitez 🙂
Si vous avez des utilisatrices dont l’identifiant comporte un point… là, j’avoue que c’est un peu compliqué.
Il faudrait certainement adapter l’expression rationnelle, ou faire un autre fichier pour le virtual_alias_maps
.