Forum Linux.mandriva Postfix parle avec le LDAP mais ne le comprend pas.

Posté par  (site web personnel) .
Étiquettes : aucune
0
9
fév.
2005
Posftix a bien compris qu'il doit aller chercher les alias dans l'annuaire ldap :

# grep alias /etc/postfix/main.cf |grep maps
alias_maps = ldap:/etc/postfix/ldap-aliases.cf
local_recipient_maps = $alias_maps


De rechercher ces alias comme on lui a dis :

# cat /etc/postfix/ldap-aliases.cf
server_host = willou.net
search_base = ou=people,o=willou,c=net
query_filter = (&(objectClass=mailRecipient)(mail=%s))
domain = willou.net, salsa-nantes.com
result_attribute = mailRoutingAddress
bind_dn = uid=proxyuser,o=willou,c=net
bind_pw = xxxxxxxx


sauf que même avec une réponse positive sur la requête sur l'annuaire il me répond grossièrement «Recipient address rejected: User unknown in local recipient table» :

Feb 9 00:28:11 willou postfix/smtpd[9485]: connect from postfix3-2.free.fr[213.228.0.169]
Feb 9 00:28:11 willou slapd[8422]: conn=331 fd=33 ACCEPT from IP=82.231.146.58:34364 (IP=0.0.0.0:389)
Feb 9 00:28:12 willou slapd[8422]: conn=331 op=0 BIND dn="uid=proxyuser,o=willou,c=net" method=128
Feb 9 00:28:12 willou slapd[8422]: conn=331 op=0 BIND dn="uid=proxyuser,o=willou,c=net" mech=SIMPLE ssf=0
Feb 9 00:28:12 willou slapd[8422]: conn=331 op=0 RESULT tag=97 err=0 text=
Feb 9 00:28:12 willou slapd[8422]: conn=331 op=1 SRCH base="ou=people,o=willou,c=net" scope=2 filter="(&(objectClass=mailRecipient)(mail=david@salsa-nantes.com))"
Feb 9 00:28:12 willou slapd[8422]: conn=331 op=1 SRCH attr=mailRoutingAddress
Feb 9 00:28:12 willou slapd[8422]: conn=331 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 9 00:28:12 willou postfix/smtpd[9485]: NOQUEUE: reject: RCPT from postfix3-2.free.fr[213.228.0.169]: 450 <david@salsa-nantes.com>: Recipient address rejected: User unknown in local recipient table; from=<willou@willou.net> to=<david@salsa-nantes.com> proto=ESMTP helo=<postfix3-2.free.fr>
Feb 9 00:28:12 willou postfix/smtpd[9485]: disconnect from postfix3-2.free.fr[213.228.0.169]
Feb 9 00:28:12 willou postfix/smtpd[9485]: connect from xxxx.xxxxxxxxx.xxx[xxx.xx.xxx.xx]
Feb 9 00:28:13 willou slapd[8422]: conn=331 op=2 SRCH base="ou=people,o=willou,c=net" scope=2 filter="(&(objectClass=mailRecipient)(mail=david@salsa-nantes.com))"
Feb 9 00:28:13 willou slapd[8422]: conn=331 op=2 SRCH attr=mailRoutingAddress
Feb 9 00:28:13 willou postfix/smtpd[9485]: NOQUEUE: reject: RCPT from xxxx.xxxxxxxxxx.xxx[xxx.xx.xxx.xx]: 450 <david@salsa-nantes.com>: Recipient address rejected: User unknown in local recipient table; from=<willou@willou.net> to=<david@salsa-nantes.com> proto=ESMTP helo=<xxxxx.xxxx.xxxxxxxxx.xxx>
Feb 9 00:28:13 willou slapd[8422]: conn=331 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 9 00:28:13 willou postfix/smtpd[9485]: disconnect from xxxx.xxxxxxxxx.xxx[xxx.xx.xxx.xx]



Je me demande donc, comme il est possible qu'avec une réponse positive, Posftix n'accepte pas le mail. Je suis en quête de piste pour trouver ma solution.

La même requête ldap que celle émise par le serveur mail :

]# ldapsearch -x -b 'ou=people,o=willou,c=net' -H ldap://localhost -D "uid=proxyuser,o=willou,c=net" -w xxxxxxxxx "(&(objectClass=mailRecipient)(mail=david@salsa-nantes.com))"
# extended LDIF
#
# LDAPv3
# base <ou=people,o=willou,c=net> with scope sub
# filter: (&(objectClass=mailRecipient)(mail=david@salsa-nantes.com))
# requesting: ALL
#

# willou, people, willou, net
dn: uid=willou,ou=people,o=willou,c=net
cn: willou
gidNumber: 2000
givenName: David
homeDirectory: /home/willou
loginShell: /bin/bash
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: mailRecipient
shadowExpire: -1
shadowFlag: 0
shadowInactive: -1
shadowMax: 999999
shadowMin: -1
shadowWarning: 7
sn:: Qk9VQ0jDiQ==
uid: willou
uidNumber: 2000
mailForwardingAddress: willou@willou.net
mail: willou@willou.net
mail: msn@willou.net
mail: david@salsa-nantes.com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


Merci pour les éventuelles pistes. Je puis vous apporter de plus amples renseignements au besoin. (Une fois mon installation complète des documentations -sous licences libres- seront publiées sur Willou.Net sur un SPIP prochainement ouvert).
  • # local_recipient

    Posté par  . Évalué à 1.

    Ldap semble fonctionné,
    Indique a postfix quels destinataires sont valides:

    local_recipient_maps = proxy:unix:passwd.byname $alias_maps

    ->rtfm: http://x.guimard.free.fr/postfix/index.php?page=postconf.5.html#loc(...)
    • [^] # Re: local_recipient

      Posté par  (site web personnel) . Évalué à 1.

      Merci de m'avoir mis le nez dessus.
      Posftix arrive donc à présent à parler à mon annuaire, mais ne «réécrit» pas le mail de destination.

      Sur un mail envoyé à david@salsa-nantes.com, il devrait le transmettre à willou@willou.net (et réécrire l'entête) tel que cela a été déclaré dans mon annuaire :

      dn: uid=willou,ou=people,o=willou,c=net
      cn: willou
      objectClass: mailRecipient
      mailForwardingAddress: willou@willou.net
      mail: willou@willou.net
      mail: msn@willou.net
      mail: david@salsa-nantes.com


      Malheureusement se passe, à présent, ce qui suit :
      Feb 9 10:28:45 willou amavis[5327]: (05327-10) Passed CLEAN, [193.252.22.29] [82.126.67.177] <willou@willou.net> -> <david@salsa-nantes.com>, Message-ID: <4209D7C0.1070102@willou.net>, Hits: 0
      Feb 9 10:28:45 willou postfix/qmgr[17079]: ACAFF6BCA3: from=<willou@willou.net>, size=1519, nrcpt=1 (queue active)
      Feb 9 10:28:45 willou postfix/smtp[17194]: 73B636BCA1: to=<david@salsa-nantes.com>, relay=127.0.0.1[127.0.0.1], delay=8, status=sent (250 2.6.0 Ok, id=05327-10, from MTA: 250 Ok: queued as ACAFF6BCA3)
      Feb 9 10:28:45 willou postfix/qmgr[17079]: 73B636BCA1: removed
      Feb 9 10:28:45 willou lmtpunix[17156]: accepted connection
      Feb 9 10:28:45 willou lmtpunix[17156]: lmtp connection preauth'd as postman
      Feb 9 10:28:45 willou cyrus-master[17200]: about to exec /usr/lib/cyrus-imapd/lmtpd
      Feb 9 10:28:45 willou lmtpunix[17156]: verify_user(user.david) failed: Mailbox does not exist
      Feb 9 10:28:45 willou lmtpunix[17200]: executed
      Feb 9 10:28:47 willou postfix/pipe[17198]: ACAFF6BCA3: to=<david@salsa-nantes.com>, relay=cyrus-deliver, delay=2, status=bounced (data format error. Command output: david: Mailbox does not exist )


      Je n'ai pas trouvé dans la documentation de postfix sur la gestion des alias LDAP comment procéder. J'espère donc qu'un hérudit saura me venir en aide. Je continue ma quête !
      • [^] # Re: local_recipient

        Posté par  . Évalué à 2.

        Quelques remarques.

        Dans ta première configuration, la configuration de Postfix est bonne mais tu ne renseignes pas l'attribut mailRoutingAddress dans ton utlisateur, ca ne peut donc pas marcher.

        Ensuite tu sembles avoir changé cette atttribut par mailForwardingAddress (pas forcement judicieux), mais qu'as tu mis dans la configuration de Postfix ? Vu le problème que tu as, je dirais que tu as mis un "result_attribute = mail", qui fait que la réécritute n'a pas lieu.

        Vu ta configuration tu devrais peut-être regarder du coté du mode virtual de postfix qui pourrait gérer mieux tout ca.

        Dernière pettite chose : la norme LDAP pour un DIT root c'est dc=willou, dc=net et pas o=willou, c=net. "c" est utilisé pour Country, tu imagines bien que "net" n'est pas (encore) un pays :).

        --
        Thomas
        • [^] # Re: local_recipient

          Posté par  (site web personnel) . Évalué à 1.

          Je reste avec le même soucis pour la redirection.

          Voici mes fichiers de configuration :

          # postconf |grep "^alias_maps"
          alias_maps = ldap:/etc/postfix/ldap-aliases.cf

          # cat /etc/postfix/ldap-aliases.cf
          server_host = willou.net
          search_base = ou=people,o=willou,c=net
          query_filter = (&(objectClass=mailRecipient)(mail=%s))
          domain = willou.net, willou.org, inea.info, lab44.inea.info, salsa-nantes.com
          result_attribute = mailForwardingAddress
          bind_dn = uid=proxyuser,o=willou,c=net
          bind_pw = Thie6eek
          version = 3

          Après vérification Postfix pose bien la bonne question à mon annuaire qui lui répond qu'il a effectivement trouvé la bonne réponse :

          Feb 15 20:52:56 willou slapd[4824]: conn=582 op=2 SRCH base="ou=people,o=willou,c=net" scope=2 filter="(&(objectClass=mailRecipient)(mail=david@salsa-nantes.com))"
          Feb 15 20:52:56 willou slapd[4824]: conn=582 op=2 SRCH attr=mailForwardingAddress
          Feb 15 20:52:56 willou slapd[4824]: conn=582 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=

          J'en veux pour preuve :
          # ldapsearch -x -b 'ou=people,o=willou,c=net' -D "uid=proxyuser,o=willou,c=net" -w Thie6eek "(&(objectClass=mailRecipient)(mail=david@salsa-nantes.com))" mailForwardingAddress -LLL
          dn: uid=willou,ou=people,o=willou,c=net
          mailForwardingAddress: willou@willou.net


          Je ne vois donc pas ce qui cloche & pourquoi Postfix ne redirige pas le mail.

          Voici donc l'erreur que j'ai de retournée (dans le mail de non distribution) :
          <david@salsa-nantes.com>: data format error. Command output: david: Mailbox does not exist

          Au niveau des logs voici ce que cela dis :
          Feb 15 21:04:46 willou lmtpunix[7582]: verify_user(user.david) failed: Mailbox does not exist

          Pour infos j'utilise Cyrus-imap :
          # postconf |grep ^local_transport
          local_transport = cyrus-deliver

          grep ^cyrus-deliver /etc/postfix/master.cf
          cyrus-deliver unix - n n - - pipe user=cyrus argv=/usr/lib/cyrus-imapd/deliver -r ${sender} -m ${extension} ${user}

          Si vous pensez qu'avec d'autres informations vous pouvez m'aider je vous les fournirais avec joie.
          • [^] # Re: local_recipient

            Posté par  . Évalué à 2.

            Salut,

            Je crois que j'ai trouvé ton problème :
            http://www.postfix.org/aliases.5.html.(...)

            Soit : "The aliases(5) table provides a system-wide mechanism to redirect mail for local recipients. The redirections are processed by the Postfix local(8) delivery agent."

            Il faut utiliser local comme local_transport si tu veux utiliser les alias. Deux possibilités :
            - Tu utilises les virtual_alias (je trouve ca plus propre quand tu heberges plusieurs domaines)
            - Tu définis ton tranport avec local et tu fais une mailbox_transport avec cyrus

            --
            Thomas

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.