une mailing list pas chère avec postfix + ldap

Suite a l'excellent postfix_ldap, un tuyau de tonton gaston sur comment utiliser les overlays OpenLDAP pour faire une mailing-list gratos avec postfix.

Le problème.. tu as déja un annuaire ldap, avec des branches, et tu aimerais bien pouvoir mailer tout les gens sous ou=service1 avec un alias convivial. Mais tu n'a pas envie de te palucher un objectClass:nisMailAlias listant toutes les personnes dans le service en question, car tu gères une SSII pourrave avec un turnover de malade (d'ailleurs, qu'est-ce que tu fous dans une SSII pourrave? Tu te le demandes toujours). C'est la que tu découvres les overlays, plus particulièrement l'overlay dynlist.

Config slapd

Rien de plus simple, il faut ajouter a ton slapd.conf :

# pour nisMailAlias
include         /etc/ldap/schema/misc.schema

moduleload dynlist
overlay dynlist
dynlist-attrset nisMailAlias labeledURI

Config des aliases

On ajoute une ou=aliases a son tree pour contenir les aliases (en utilisant evidemment l'excellent shelldap):

# aliases, gcu-squad.org
dn: ou=aliases,dc=gcu-squad,dc=org
objectClass: top
objectClass: organizationalUnit
ou: aliases

et on ajoute une entry pour chacun des alias, avec le majiiiique attribute labeledURI

# lutins, aliases, gcu-squad.org
dn: cn=lutins,ou=aliases,dc=gcu-squad,dc=org
objectClass: labeledURIObject
objectClass: nisMailAlias
cn: lutins
labeledURI: ldap:///ou=people,dc=gcu-squad,dc=org?mail?one?(objectClass=inetOrgPerson)

# team, aliases, gcu-squad.org
dn: cn=team,ou=aliases,dc=gcu-squad,dc=org
objectClass: labeledURIObject
objectClass: nisMailAlias
cn: team
labeledURI: ldap:///ou=people,dc=gcu-squad,dc=org?mail?one?(&(objectClass=inetOrgPerson)(title=admin))

Ainsi, un ldapsearch -x cn=team renverra la liste des attributes 'mail' matchant le filtre donné (ie tout les objectClass=inetOrgPerson dans le subtree ou=people,dc=gcu-squad,dc=org ayant l'attribut title=admin). Paf.

Config postfix

Enfin, il suffit de dire a mostfix d'aller aussi chercher des alias dans cette branche du ldap via un petit fragment de .cf en m4^Wtexte

#/etc/postfix/ldap-groups.cf
server_host = ldap://localhost
version = 3
search_base = ou=aliases,dc=gcu-squad,dc=org
query_filter = (&(objectClass=nisMailAlias)(cn=%u))
result_attribute = mail

et on le lie a la conf de postfix en ajoutant dans le main.cf

virtual_alias_maps = hash:/etc/postfix/virtual ldap:/etc/postfix/ldap-groups.cf

(dans mon cas j'ai des users virtuels, pour toi ca sera ptete une alias_maps simple.)

on teste avec postmap :

#postmap -q team@gcu-squad.org ldap:/etc/postfix/ldap-groups.cf
admin1@gcu-squad.org, admin2@gcu-squad.org, pinpin0@gcu-squad.org

A partir de la, on peut mailer team@gcu, ca enverra le mail a tout les membres. Joie.

nb:les noms/dns/aliases utilisés dans cette sont de la pure fiction. Aucune ressemblance avec un cas réel etc etc blah blah.

unix/postfix_ldap_groups.txt · Last modified: 2011/03/28 14:02 by gaston