**Ceci est une ancienne révision du document !**
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).
Activation des serveurs
Après la construction des images Docker, deux méthodes sont proposées pour lancer les conteneurs.
Construction des images
Nous sommes ici sur une branche à part du projet (“branche” au sens projet, et non au sens git), les conteneurs sont donc sensiblement différents en terme de fichiers de configuration. Il faut penser à construire les bonnes images des conteneurs puis les lancer.
Normalement, il existe déjà deux images étiquetées pour le MTA et le MDA qui se nomment respectivement pica-mail-mta:2
et pica-mail-mda:2
. Cependant, il se peut qu’avec le temps elles aient été supprimées (nous sommes sur un serveur de test). Si elles existent toujours (ou si vous voulez utiliser Docker-compose), vous pouvez directement passer à la section suivante.
Sinon, il est important de :
- se placer sur la bonne branche du dépôt git de Picasoft :
mail
- se placer dans le bon répertoire :
$(USERDIRECTORY)/dockerfiles/pica-mail-mta/sasl-test/
pour le MDApour le MTA *
$(USERDIRECTORY)/dockerfiles/pica-mail-mda/
- et suivre la procédure suivante.
Pour le MTA
docker build -t pica-mail-mta:2 .
Pour le MDA
docker build -t pica-mail-mda:2 .
Lancement des conteneurs
On suppose que le volume mail-mda-maildir
est créé (procédure à suivre), ainsi que le réseau picamail
(procédure à suivre).
Par la suite, on propose deux méthodes différentes pour lancer les conteneurs :
* la première mobilise
docker-compose : un outil de Docker pour concentrer dans un seul fichier les commandes (parfois lourdes) nécessaires au lancement de plusieurs conteneurs et potentiellement reliés entre eux.
* la seconde en mobilisant la commande
run de Docker avec les différentes options.
=== Docker-compose ===
On se place :
- sur la branche
mail du dépôt git de Picasoft.
- dans le répertoire
$(USERDIRECTORY)/dockerfiles/docker-compose
Puis on entre :
docker-compose -f mail_ldap.yml up -d
Docker run
MTA
Pour lancer le conteneur :
docker run -d --name pica-mail-mta \ --network pica_mail \ --volume /DATA/docker/mail/opendkim/nov2018.private:/etc/dkimkeys/nov2018.picasoft.net.rsa pica-mail-mta:2
MDA
Pour lancer le conteneur :
docker run -d --name pica-mail-mda \ --network pica_mail \ --hostname pica-mail-mda \ --mount source=mail-mda-maildir,target=/home/ \ pica-mail-mda:2
Envoi d'un mail à une adresse locale
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
Consultation d'un mail en IMAP
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 telnet
2)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
127.0.0.1
, donc l’envoi de mail ne peut s’effectuer que depuis le serveur lui-même.