Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
technique:adminsys:mail:tests:mail_local:plaintext [2021/11/24 23:39] – ↷ Liens modifiés en raison d'un déplacement. qduchemitechnique:adminsys:mail:tests:mail_local:plaintext [2022/05/24 20:59] (Version actuelle) ppom
Ligne 1: Ligne 1:
 +====== Authentification UNIX ======
  
 +Cette procédure décrit l'envoi de mail en local d'un compte UNIX à un autre. À terme, le serveur de mail doit être configuré avec le [[technique:adminsys:tips:auth_ldap|LDAP de Picasoft]] et ne plus nécessiter la création d'un utilisateur UNIX.
 +
 +:!: 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).
 +
 +===== Build et lancement des conteneurs =====
 +
 +Utiliser le [fichier Compose du dépôt](https://gitlab.utc.fr/picasoft/projets/services/mail-system/), à lancer par exemple sur la machine de test :
 +
 +```bash
 +docker-compose build
 +docker-compose up -d
 +```
 +===== Envoi d'un mail à une adresse locale =====
 +
 +Une fois les conteneurs lancés, nous allons pouvoir envoyer un mail d'un utilisateur UNIX ''mail1'' à un utilisateur UNIX ''mail2''. Tous deux ont été créés dans le conteneur du MDA au moment du lancement du conteneur (voir le fichier ''entrypoint.sh''). Concernant le MTA (Postfix) un simple fichier de configuration a été édité pour autoriser le transit des adresses ''mail1@picasoft.net'' et ''mail2@picasoft.net''.
 +
 +Pour cela, il faut rentrer à l'intérieur du conteneur du MTA((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.)):
 +
 +<code>
 +docker exec -it pica-mail-mta /bin/bash
 +</code>
 +
 +On peut maintenant envoyer un mail à l'aide de la commande ''telnet'' :
 +
 +<code>
 +#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:<mail1@picasoft.net>
 +250 2.1.0 Ok
 +>RCPT TO:<mail2@picasoft.net>
 +250 2.1.5 Ok
 +>DATA
 +354 End data with <CR><LF>.<CR><LF>
 +>Subject: First mail!
 +>Hello Pica-world!
 +>.
 +250 2.0.0 Ok: queued as 09C197F5F6
 +>quit
 +221 2.0.0 Bye
 +Connection closed by foreign host.
 +</code>
 +===== 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:
 +
 +<code>
 +docker exec -it pica-mail-mda /bin/bash
 +</code>
 +
 +On interroge donc le serveur à l'aide de ''telnet''((Une explication simple et rapide des règles de conversation avec un serveur IMAP est consultable sur cette [[http://www.technologuepro.com/reseaux/Pratique-des-protocoles/Interrogation-d-un-serveur-mail-avec-telnet.html|page]]. Une description plus complète et plus utile (pour comprendre ce qu'on fait) est disponible sur cette [[http://irp.nain-t.net/doku.php/190imap:030_commandes#syntaxe|autre page]].))((Il est intéressant de noter que l'authentification est confirmée à partir de la ligne n°7 du bloc suivant.))  :
 +
 +<code>
 +#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 mail2 mail2pwd
 +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.
 +* OK [UIDVALIDITY 1540735176] 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]
 +* 1 FETCH (UID 1 FLAGS (\Seen \Recent) BODY[HEADER] {626}
 +Return-Path: <mail1@picasoft.net>
 +Delivered-To: mail2@picasoft.net
 +Received: from pica01-test.test.picasoft.net ([172.19.0.3])
 + by pica-mail-mda (Dovecot) with LMTP id c6FIIsjA1VtKAAAATq6bHg
 + for <mail2@picasoft.net>; Sun, 28 Oct 2018 13:59:36 +0000
 +Received: from pica01-test.test.picasoft.net (localhost [127.0.0.1])
 + by pica01-test.test.picasoft.net (Postfix) with SMTP id 09C197F5F6
 + for <mail2@picasoft.net>; Sun, 28 Oct 2018 13:58:22 +0000 (UTC)
 +Subject: First mail!
 +Message-Id: <20181028135844.09C197F5F6@pica01-test.test.picasoft.net>
 +Date: Sun, 28 Oct 2018 13:58:22 +0000 (UTC)
 +From: mail1@picasoft.net
 +
 +)
 +3 OK Fetch completed (0.001 + 0.000 secs).
 +>4 UID FETCH 1 BODY[TEXT]
 +* 1 FETCH (UID 1 BODY[TEXT] {19}
 +Hello 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.
 +</code>
 +
 +===== Pérennisation des données =====
 +
 +On peut également vérifier la présence du mail en physique sur la machine ''pica01-test'' (//l'architecture du répertoire ''Maildir'' est détaillée sur cette [[technique:old:etudes:mail:users:formatstockage|page]]//) :
 +
 +<code>
 +#ls -l /var/lib/docker/volumes/mail-mda-maildir/_data/mail2/Maildir
 +total 28
 +drwx------ 2 mail2 mail2 4096 Oct 28 14:01 cur
 +-rw------- 1 mail2 mail2  102 Oct 28 13:59 dovecot-uidlist
 +-rw------- 1 mail2 mail2    8 Oct 28 13:59 dovecot-uidvalidity
 +-r--r--r-- 1 mail2 mail2    0 Oct 28 13:59 dovecot-uidvalidity.5bd5c0c8
 +-rw------- 1 mail2 mail2  688 Oct 28 14:01 dovecot.index.cache
 +-rw------- 1 mail2 mail2  764 Oct 28 14:02 dovecot.index.log
 +drwx------ 2 mail2 mail2 4096 Oct 28 14:01 new
 +drwx------ 2 mail2 mail2 4096 Oct 28 13:59 tmp
 +#ls -l /var/lib/docker/volumes/mail-maildir/_data/mail2/Maildir/cur/
 +total 4
 +-rw------- 1 mail2 mail2 631 Oct 28 14:01 1540735176.M617719P74.pica-mail-mda,S=631,W=645:2,S
 +#cat /var/lib/docker/volumes/mail-maildir/_data/mail2/Maildir/cur/1540735176.M617719P74.pica-mail-mda\,S\=631\,W\=645\:2\,S
 +Return-Path: <mail1@picasoft.net>
 +Delivered-To: mail2@picasoft.net
 +Received: from pica01-test.test.picasoft.net ([172.19.0.3])
 + by pica-mail-mda (Dovecot) with LMTP id c6FIIsjA1VtKAAAATq6bHg
 + for <mail2@picasoft.net>; Sun, 28 Oct 2018 13:59:36 +0000
 +Received: from pica01-test.test.picasoft.net (localhost [127.0.0.1])
 + by pica01-test.test.picasoft.net (Postfix) with SMTP id 09C197F5F6
 + for <mail2@picasoft.net>; Sun, 28 Oct 2018 13:58:22 +0000 (UTC)
 +Subject: First mail!
 +Message-Id: <20181028135844.09C197F5F6@pica01-test.test.picasoft.net>
 +Date: Sun, 28 Oct 2018 13:58:22 +0000 (UTC)
 +From: mail1@picasoft.net
 +
 +Hello Pica-world!
 +</code>