Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Emacs, Windows, eudc, ldap & Exchange : comment le configurer

8 réponses
Avatar
Jérôme Haguet
Salut

Dans un post précédent (9 déc. 2004), je demandais comment affecter le
user-full-name et user-mail-address en interrogeant Active-Directory
connaissant le user-login-name.

Sébastien Kirche m'avait alors répondu :
>Au sujet de LDAP, dans mon Emacs 21.3.50 (CVS) sous OSX, le menu Tools /
>Directory Search me permet de faire des requêtes LDAP au serveur Exchange
>de
>la boîte et ça marche plutôt bien.
>
>Je suppose que cela ne doit pas poser de problèmes sous Win.
>
>Apparemment, il faut regarder du côté de eudc et eudc-query pour
>automatiser
>le truc.

J'ai essayé de gratter dans cette direction, mais sans succès, car c'est
encore un peu confus pour moi.

En clair, quelqu'un peut-il me donner un exemple de parametrage eudc et ldap
du genre :
(setq eudc-server "???"
ldap-xxx "???"
ldap-default-yyy "???")

et comment interroger AD du genre :
(setq user-mail-address (eudc-get-email user-login-name))
(setq user-full-name (eudc-query (list (cons 'name user-login-name))
'(full-name))

PS : Vous l'avez compris, je patauge !

8 réponses

Avatar
Sébastien Kirche
Le 13 Apr 2005, Jérôme Haguet a formulé :

Salut

Dans un post précédent (9 déc. 2004), je demandais comment affecter le
user-full-name et user-mail-address en interrogeant Active-Directory
connaissant le user-login-name.

[...]

J'ai essayé de gratter dans cette direction, mais sans succès, car c'est
encore un peu confus pour moi.

En clair, quelqu'un peut-il me donner un exemple de parametrage eudc et
ldap du genre : (setq eudc-server "???" ldap-xxx "???" ldap-default-yyy
"???")



Tu as de la chance : je m'y suis intéressé récemment et j'ai justement
creusé un peu plus la configuration.

Je voulais interfacer bbdb dans gnus avec ldap pour pouvoir saisir le nom
d'un destinataire et que ldap me complète son adresse. Ça marche mais pas
exactement comme je voulais : je voulais que bbdb cherche dans sa base si le
serveur ldap ne retournait rien et ce n'est pas possible en l'état. Pour le
moment on peut chercher soit dans une base soit dans l'autre.

Mais j'espère y arriver prochainement, en modifiant légèrement une fonctions
de bbdb.

Sinon voici ce que j'ai dans ma config pour eudc/ldap :
(setq eudc-set-server '("metz-exchange" 'ldap t)
ldap-host-parameters-alist '(
("metz-exchange" base "o=SAGE" auth nil scope subtree))
eudc-inline-query-format '((name) (firstname name) (uid))
eudc-query-form-attributes '(uid name firstname email)
)

- eudc-set-server : c'est le nom (ou l'adresse) de ton serveur (tu dois
pouvoir faire un ping sur cette adresse par example

Avec ce seul paramètre, tu dois pouvoir interroger ton serveur en allant
dans Tools/Directory Search/Query with form. Essaie de l'interroger avec un
nom connu pour voir si ça passe (ici on a un Exchange et je pense que la
config de base n'a pas dû être modifiée). Si oui, le résultat pourrait
t'aider à affiner les paramètres.

- eudc-query-form-attributes : te permet de choisir les champs présents dans
le formulaire d'interrogation (pour ce que tu veux faire c'est inutile,
mais ça permet toujours de tester manuellement)

- ldap-host-parameters-alist : te permet de préciser des paramètres pour la
recherche. Comme tu peux avoir plusieurs serveur, c'est une liste de
listes (une par serveur). Ici j'ai une base qui regroupe plusieurs
milliers d'enregistrements entre plusieurs sociétés, et le "o=SAGE" me
permet de ne considérer qu'une partie. Tu peux savoir quoi paramétrer en
fonction de ce que le Query with form te renverra si ça marche.

- eudc-inline-query-format : sert lors de l'appel à eudc-expand-inline par
example dans gnus pour remplacer un nom par son adresse à savoir sur quels
champs ldap on doit faire la recherche.

et comment interroger AD du genre :
(setq user-mail-address (eudc-get-email user-login-name))
(setq user-full-name (eudc-query (list (cons 'name user-login-name))
'(full-name))



Là je ne vais as pouvoir te répondre directement, mais je pense donner un
début et d'autres ici sauront sans doute compléter.

Ici (eudc-query (list (cons 'Uid user-login-name))) me retourne une liste
constituée somme suit :
(((physicalDeliveryOfficeName . "METZ")
(sn . "KIRCHE"))
((objectClass ."organizationalPerson")
(objectClass . "person")
(objectClass . "Top")
(rdn . "SeKI")
(cn . "KIRCHE Sébastien")
(distinguishedName . "cn=SeKI,cn=Recipients,ou=METZ,o=SAGE")
(rfc822Mailbox . "")
(mail . "")
(textEncodedORaddress . "c=FR;a= ;p=SAGE;o=METZ;s=KIRCHE;g=Sebastien;")
(otherMailbox . "smtp$")
(otherMailbox . "FAXMAKER$")
(givenName . "Sébastien")
(uid . "SEKI"))
nil)

Mais je ne sais pas en extraire l'élément mail pour le mettre dans
(setq user-mail-address (la-requete))

PS : Vous l'avez compris, je patauge !



Est-ce qu'avec ces indications ça va mieux ?

--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 13 Apr 2005, Jérôme Haguet a formulé :

Salut

Dans un post précédent (9 déc. 2004), je demandais comment affecter le
user-full-name et user-mail-address en interrogeant Active-Directory
connaissant le user-login-name.

[...]

J'ai essayé de gratter dans cette direction, mais sans succès, car c'est
encore un peu confus pour moi.

En clair, quelqu'un peut-il me donner un exemple de parametrage eudc et
ldap du genre : (setq eudc-server "???" ldap-xxx "???" ldap-default-yyy
"???")



Tu as de la chance : je m'y suis intéressé récemment et j'ai justement
creusé un peu plus la configuration.

Je voulais interfacer bbdb dans gnus avec ldap pour pouvoir saisir le nom
d'un destinataire et que ldap me complète son adresse. Ça marche mais pas
exactement comme je voulais : je voulais que bbdb cherche dans sa base si le
serveur ldap ne retournait rien et ce n'est pas possible en l'état. Pour le
moment on peut chercher soit dans une base soit dans l'autre.

Mais j'espère y arriver prochainement, en modifiant légèrement une fonctions
de bbdb.

Sinon voici ce que j'ai dans ma config pour eudc/ldap :
(setq eudc-set-server '("metz-exchange" 'ldap t)
ldap-host-parameters-alist '(
("metz-exchange" base "o=SAGE" auth nil scope subtree))
eudc-inline-query-format '((name) (firstname name) (uid))
eudc-query-form-attributes '(uid name firstname email)
)

- eudc-set-server : c'est le nom (ou l'adresse) de ton serveur (tu dois
pouvoir faire un ping sur cette adresse par example)

Avec ce seul paramètre, tu dois pouvoir interroger ton serveur en allant
dans Tools/Directory Search/Query with form. Essaie de l'interroger avec un
nom connu pour voir si ça passe (ici on a un Exchange et je pense que la
config de base n'a pas dû être modifiée). Si oui, le résultat pourrait
t'aider à affiner les paramètres.

- eudc-query-form-attributes : te permet de choisir les champs présents dans
le formulaire d'interrogation (pour ce que tu veux faire c'est inutile,
mais ça permet toujours de tester manuellement)

- ldap-host-parameters-alist : te permet de préciser des paramètres pour la
recherche. Comme tu peux avoir plusieurs serveur, c'est une liste de
listes (une par serveur). Ici j'ai une base qui regroupe plusieurs
milliers d'enregistrements entre plusieurs sociétés, et le "o=SAGE" me
permet de ne considérer qu'une partie. Tu peux savoir quoi paramétrer en
fonction de ce que le Query with form te renverra si ça marche.

- eudc-inline-query-format : sert lors de l'appel à eudc-expand-inline par
example dans gnus pour remplacer un nom par son adresse à savoir sur quels
champs ldap on doit faire la recherche.

et comment interroger AD du genre :
(setq user-mail-address (eudc-get-email user-login-name))
(setq user-full-name (eudc-query (list (cons 'name user-login-name))
'(full-name))



Là je ne vais pas pouvoir te répondre directement, mais je pense donner un
début et d'autres ici sauront sans doute compléter.

Ici (eudc-query (list (cons 'Uid user-login-name))) me retourne une liste
constituée somme suit :
(((physicalDeliveryOfficeName . "METZ")
(sn . "KIRCHE"))
((objectClass ."organizationalPerson")
(objectClass . "person")
(objectClass . "Top")
(rdn . "SeKI")
(cn . "KIRCHE Sébastien")
(distinguishedName . "cn=SeKI,cn=Recipients,ou=METZ,o=SAGE")
(rfc822Mailbox . "")
(mail . "")
(textEncodedORaddress . "c=FR;a= ;p=SAGE;o=METZ;s=KIRCHE;g=Sebastien;")
(otherMailbox . "smtp$")
(otherMailbox . "FAXMAKER$")
(givenName . "Sébastien")
(uid . "SEKI"))
nil)

Mais je ne sais pas en extraire l'élément mail pour le mettre dans
(setq user-mail-address (la-requete))

PS : Vous l'avez compris, je patauge !



Est-ce qu'avec ces indications ça va mieux ?

--
Sébastien Kirche
Avatar
drkm
Sébastien Kirche writes:

Je voulais interfacer bbdb dans gnus avec ldap pour pouvoir saisir le nom
d'un destinataire et que ldap me complète son adresse. Ça marche mais pas
exactement comme je voulais : je voulais que bbdb cherche dans sa base si le
serveur ldap ne retournait rien et ce n'est pas possible en l'état. Pour le
moment on peut chercher soit dans une base soit dans l'autre.



Au fait, tu as regardé le code que j'avais posté ici à ce
propos (si je me souviens bien), qui parcourait une liste pour
obtenir les résultats ?

PS: Ton fill-column a l'air plutôt élevé. Ce qui, conjugué à
l'utilisation de la justification des paragraphes, ne laisse pas
beaucoup de place pour te citer ... D'ailleurs, je viens
d'ajouter ceci dans mon ~/.gnus, afin de réduire fill-column à 65
pour les news, ce qui est ÀMHA suffisant :

(add-hook 'message-mode-hook
(lambda ()
(set (make-local-variable 'fill-column) 65)))

--drkm
Avatar
Sébastien Kirche
Le 13 avr 2005, drkm vraute :

Au fait, tu as regardé le code que j'avais posté ici à ce
propos (si je me souviens bien), qui parcourait une liste pour
obtenir les résultats ?



Cet après-midi, du temps que je fais des essais sur ldap pour répondre à
Jérôme.

Stay tuned comme ils disent ;)


PS: Ton fill-column a l'air plutôt élevé. Ce qui, conjugué à
l'utilisation de la justification des paragraphes, ne laisse pas
beaucoup de place pour te citer ...



J'étais à 76, je passe à 72. C'est mieux comme ça ?
65 je trouve ça un peu peu.

--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 13 Apr 2005, Sébastien Kirche vraute :

Mais je ne sais pas en extraire l'élément mail pour le mettre dans
(setq user-mail-address (la-requete))



Arf :S

En lisant la doc un peu mieux je vois que eudc-query peut prendre en
second argument la liste des champs que l'on veut.

Donc ici ça nous donnerait ça :
(set user-mail-address
(eudc-cdaar (eudc-query (list (cons 'uid user-login-name))
'(email))))

Attention : pas de vérification de doublons ou d'absence de résultat...

Le code de la fonction eudc-get-email peut aider à comprendre comment
faire mais cette fonction ne fonctionne pas ici avec ma configuration.

HTH.
--
Sébastien Kirche
Avatar
drkm
Sébastien Kirche writes:

(((physicalDeliveryOfficeName . "METZ")
(sn . "KIRCHE"))
((objectClass ."organizationalPerson")
(objectClass . "person")
(objectClass . "Top")
(rdn . "SeKI")
(cn . "KIRCHE Sébastien")
(distinguishedName . "cn=SeKI,cn=Recipients,ou=METZ,o=SAGE")
(rfc822Mailbox . "")
(mail . "")
(textEncodedORaddress . "c=FR;a= ;p=SAGE;o=METZ;s=KIRCHE;g=Sebastien;")
(otherMailbox . "smtp$")
(otherMailbox . "FAXMAKER$")
(givenName . "Sébastien")
(uid . "SEKI"))
nil)

Mais je ne sais pas en extraire l'élément mail pour le mettre dans
(setq user-mail-address (la-requete))



(cdr (assq 'mail (nth 1 LE-GROS-MACHIN)))

Je ne suis pas certain cependant que c'est bien le (nth 1) dont
tu as besoin. Cela dépend du format exact de la structure.

--drkm
Avatar
drkm
Sébastien Kirche writes:

Le 13 avr 2005, drkm vraute :

Au fait, tu as regardé le code que j'avais posté ici à ce
propos (si je me souviens bien), qui parcourait une liste pour
obtenir les résultats ?



Cet après-midi, du temps que je fais des essais sur ldap pour répondre à
Jérôme.



Ça te convient ?

PS: Ton fill-column a l'air plutôt élevé. Ce qui, conjugué à
l'utilisation de la justification des paragraphes, ne laisse pas
beaucoup de place pour te citer ...



J'étais à 76, je passe à 72. C'est mieux comme ça ?
65 je trouve ça un peu peu.



Oui. C'était juste que lorsque l'on est sur un terminal de 80,
à 76, cela te permet juste d'être cité deux fois avant de
provoquer des retours à la ligne. 72, ça laisse déjà plus de
marge :-).

Merci.

--drkm
Avatar
Sébastien Kirche
Le 13 Apr 2005, drkm s'est exprimé ainsi :

> > Au fait, tu as regardé le code que j'avais posté ici à ce
> > propos (si je me souviens bien), qui parcourait une liste pour
> > obtenir les résultats ?

> Cet après-midi, du temps que je fais des essais sur ldap pour
> répondre à Jérôme.

Ça te convient ?



Je viens de poster le résultat de mes essais à la suite du fil
«[gnus] BBDB et EUDC/LDAP»

--
Sébastien Kirche