Authentification LDAP

Cette procédure décrit l’envoi de mail en local d’un utilisateur LDAP à un autre. C’est la solution qui est attendue au terme de la TX.

:!: Puisque plusieurs conversations par telnet sont reportées ici, et afin de simplifier la lecture, nous avons adopté la convention du chevron > pour spécifier les lignes entrées par l’utilisateur. Mais en réalité, il n’est pas requis ! Du reste, c’est la convention bash qui est adoptée (# pour root et $ sinon).

Utiliser le fichier Compose du dépôt, à lancer par exemple sur la machine de test :

snippet.bash
docker-compose build
docker-compose up -d

Une fois les conteneurs lancés, nous allons pouvoir envoyer un mail d’un utilisateur LDAP huetremy à un utilisateur LDAP louise. Tous deux ont été créés dans le LDAP de test de Picasoft préalablement. (:!: Attention au schéma LDAP utilisé : le bind LDAP s’opère sur l’ uid de l’utilisateur LDAP)

Pour cela, il faut rentrer à l’intérieur du conteneur du MTA1):

$docker exec -it pica-mail-mta /bin/bash

On peut maintenant envoyer un mail à l’aide de la commande telnet :

#telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 pica01-test.test.picasoft.net ESMTP Postfix (Debian/GNU)
>helo pica01-test.test.picasoft.net
250 pica01-test.test.picasoft.net
>MAIL FROM:<huetremy@picasoft.net>
250 2.1.0 Ok
>RCPT TO:<louise@picasoft.net>
250 2.1.5 Ok
>DATA
354 End data with <CR><LF>.<CR><LF>
>Subject: Second mail!
>Bonjour Pica-world!
>.
250 2.0.0 Ok: queued as 946E8FB621
>quit
221 2.0.0 Bye
Connection closed by foreign host.
#exit

Il convient enfin de vérifier que le mail a été reçu par le MDA.

On rentre à l’intérieur du conteneur:

$docker exec -it pica-mail-mda /bin/bash

On interroge donc le serveur à l’aide de telnet2)3) :

#telnet localhost 143
Trying 91.224.148.59...
Connected to pica-mail-mda.pica01-test.test.picasoft.net.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
>1 LOGIN louise loufouette
1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in  // Authentification réussie !
>2 SELECT INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 1 RECENT
* OK [UNSEEN 1] First unseen.
/* on récupère l'UID du mail qui vient d'arriver, ici 1 mais
pour vous il sera différent. Il est utile pour la commande suivante. */
* OK [UIDVALIDITY 1543245819] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs).
>3 UID FETCH 1 BODY[HEADER]  // on rentrer ici l'UID qu'on a récupéré
* 1 FETCH (UID 1 FLAGS (\Seen \Recent) BODY[HEADER] {636}
Return-Path: <huetremy@picasoft.net>
Delivered-To: louise@picasoft.net
Received: from pica01-test.test.picasoft.net ([172.19.0.3])
	by pica-mail-mda (Dovecot) with LMTP id 5gdxAPsP/Fs4AAAATq6bHg
	for <louise@picasoft.net>; Mon, 26 Nov 2018 15:23:39 +0000
Received: from pica01-test.test.picasoft.net (localhost [127.0.0.1])
	by pica01-test.test.picasoft.net (Postfix) with SMTP id 946E8FB621
	for <louise@picasoft.net>; Mon, 26 Nov 2018 15:22:59 +0000 (UTC)
Subject: Second mail!
Message-Id: <20181126152314.946E8FB621@pica01-test.test.picasoft.net>
Date: Mon, 26 Nov 2018 15:22:59 +0000 (UTC)
From: huetremy@picasoft.net

)
3 OK Fetch completed (0.001 + 0.000 secs).
>4 UID FETCH 1 BODY[TEXT]
* 1 FETCH (UID 1 BODY[TEXT] {21}
Bonjour Pica-world!
)
4 OK Fetch completed (0.001 + 0.000 secs).
>5 LOGOUT
* BYE Logging out
5 OK Logout completed (0.000 + 0.000 secs).
Connection closed by foreign host.
#exit

1)
En effet, par mesure de sécurité, la connexion au serveur n’est acceptée que pour l’adresse 127.0.0.1, donc l’envoi de mail ne peut s’effectuer que depuis le serveur lui-même.
2)
Une explication simple et rapide des règles de conversation avec un serveur IMAP est consultable sur cette page. Une description plus complète et plus utile (pour comprendre ce qu’on fait) est disponible sur cette autre page.
3)
Il est intéressant de noter que l’authentification est confirmée à partir de la ligne n°7 du bloc suivant.
  • technique/adminsys/mail/tests/mail_local/ldap.txt
  • de ppom