Relais postfix et vérification d'adresse depuis exchange

Comme vous le savez peut-être (ou pas...), ce magnifique produit qu'est postfix offre la possibilité de vérifier l'existence d'une adresse dans un domaine depuis un relais.

Grâce à l'option relay_recipient_maps, une ou plusieurs tables de recherche (lookup tables) peuvent être indiquées afin de filtrer les mails reçus. Plusieurs backend sont proposés (db4, mysql, ldap, etc.).

Prenons un cas relativement courant :

  • Un serveur exchange (2000/2003) pour gérer les boîtes mail,
  • Un relais postfix en frontal pour effectuer un certain nombre de filtrages.

Il serait bien sympa que le relais puisse intérroger l'exchange pour vérifier l'existence des destinataires. Rien de plus simple! Avec un postfix supportant ldap, créer par exemple le fichier /etc/postfix/ldap_users.cf et y coller les quelques lignes suivantes :

server_host = monserveurexchange
domain = mondomaine.tld
search_base = dc=mondomaine,dc=tld
query_filter = (|(mail=%s)(mailAlternateAddress=%s))
result_attribute = mail
ldap_cache = yes
ldap_cache_expiry = 600
ldap_cache_size = 64256
bind = yes
bind_dn = MONDOMAINEmonuser
bind_pw = monmotdepasse
version = 3

Avec ces quelques lignes (qu'il faut évidemment adapter en fonction de votre configuration), on indique à postfix de comparer une adresse de la forme user@mondomaine.tld avec les attributs mail et mailAlternateAddress des enregistrements LDAP du serveur exchange.

L'activation du cache est nécessaire pour éviter de surcharger les différents serveurs.

Le bind est optionnel (il dépend de votre configuration).

Pour tester la configuration avant de l'activer, y'a qu'à faire ça :

$ postmap -q user@mondomaine.tld ldap:/etc/postfix/ldap_users.cf user@mondomaine.tld

Si la requête renvoie un résultat, c'est tout bon ^^. Si c'est pas le cas... c'est tout mauvais. (aie!)

Pour activer le filtrage de façon permanente, coller la ligne suivante dans le fichier /etc/postfix/main.cf:

relay_recipient_maps = ldap:/etc/postfix/ldap_users.cf

Puis recharger postfix.

A: Cool ??
B: ooouuuueeeep!! ^^

4 commentaires

Flux Flux

toujours intéresssant tes billets :) qu'il faut evidemment adapter en fonction de votre configuration : ça m'a quelque peu faitv sourire :) bonne contin,uation !

Morgan LEFIEUX Morgan LEFIEUX

Merci pour cette astuce ! Cependant les trois valeurs suivantes ne sont apparement plus supportées (d'après la page de manuel "ldap_table"): cache = yes cache_expiry = 600 cache_size = 64256

Antoine Nguyen Antoine Nguyen

Oui, leur présence génère un warning mais ne bloque pas le fonctionnement. Elles ont été désactivées depuis qu'OpenLDAP ne supporte plus le caching. Merci pour cette remarque!

Postez votre commentaire