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.
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
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.
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.