Test de la réception de courrier - Debian 9.0 Stretch
Rédigé par Marc GUILLAUME | 2 commentairesTraduction de la page : https://workaround.org/ispmail/stretch/testing-email-delivery
Jusque là vous avez passé un temps considérable à apprendre de la théorie et faire de la configuration. Mais êtes-vous ennuyé de ce que tout ce travail conduise à un serveur de courrier fonctionnel ? Avant d'aborder les dernières étapes faisons une pause pour vérifier si tout ce que nous avons fait fonctionne jusque là.
Pour l'instant le répertoire /var/vmail devrait être vide ou peut-être contenir un répertoire « example.org » si vous avez joué auparavent avec le compte john@example.org. Vous pouvez avoir la liste de son contenu en lançant la commande :
find /var/vmail
Bien qu'il n'y ait en réalité pas encore de courriers électroniques sur le serveur, vous pouvez obtenir quelque chose comme :
/var/vmail/ /var/vmail/lost+found /var/vmail/example.org /var/vmail/example.org/john /var/vmail/example.org/john/Maildir /var/vmail/example.org/john/Maildir/new /var/vmail/example.org/john/Maildir/subscriptions /var/vmail/example.org/john/Maildir/dovecot-uidvalidity /var/vmail/example.org/john/Maildir/tmp /var/vmail/example.org/john/Maildir/dovecot-uidvalidity.5a537e85 /var/vmail/example.org/john/Maildir/dovecot.mailbox.log /var/vmail/example.org/john/Maildir/dovecot-uidlist /var/vmail/example.org/john/Maildir/dovecot.index.log /var/vmail/example.org/john/Maildir/cur /var/vmail/example.org/john/Maildir/.INBOX.Trash /var/vmail/example.org/john/Maildir/.INBOX.Trash/new /var/vmail/example.org/john/Maildir/.INBOX.Trash/maildirfolder /var/vmail/example.org/john/Maildir/.INBOX.Trash/tmp /var/vmail/example.org/john/Maildir/.INBOX.Trash/dovecot-uidlist /var/vmail/example.org/john/Maildir/.INBOX.Trash/dovecot.index.log /var/vmail/example.org/john/Maildir/.INBOX.Trash/cur /var/vmail/example.org/john/Maildir/.INBOX.Junk /var/vmail/example.org/john/Maildir/.INBOX.Junk/new /var/vmail/example.org/john/Maildir/.INBOX.Junk/maildirfolder /var/vmail/example.org/john/Maildir/.INBOX.Junk/tmp /var/vmail/example.org/john/Maildir/.INBOX.Junk/dovecot-uidlist /var/vmail/example.org/john/Maildir/.INBOX.Junk/dovecot.index.log /var/vmail/example.org/john/Maildir/.INBOX.Junk/cur
Basiquement le schema que vous voyez ici est celui de /var/vmail/DOMAIN/USER/Maildir/…
Tous les dossiers IMAP on trois sous-répertoires :
- new – Chaque mail dans ce dossier est un mail enregistré sur le disque mais qui n'a pas encore été lu ;
- cur – La même chose mais pour des mails qui ont déjà été lus ;
- tmp – pour des actions temporaires du serveur de mail.
Selon votre configuration de Dovecot les dossiers de mails sont imbriqués comme suit :
- …/Maildir/new/… – la boîte principale ;
- …/Maildir/.INBOX.reddit/new/… – le dossier « reddit » un niveau en dessous de inbox ;
- …/Maildir/.INBOX.servers.inga/new/… – le dossier de mail « server/inga » un niveau en dessous de inbox.
Si vous n'utilisez pas le schéma hérité des précédents guide qui utilisaient le point comme séparateur (separator = .) vos répertoires vont plutôt ressembler à ceci :
- …/Maildir/new/… – la boîte principale ;
- …/Maildir/INBOX/reddit/new/… – le dossier de mail « reddit » au niveau en dessous de inbox ;
- …/Maildir/INBOX/servers/inga/new/… – le dossier de mail « server/inga » un niveau en dessous de inbox.
Édition du 29 juillet 2018 : Devinas m'informe que sur son système il a été obligé de définir le paramètre de configuration
virtual_mailbox_base
pour faire fonctionner son installation. Ce paramètre définit la racine à partir de laquelle Postfix doit rechercher les mappings.Je n'ai pour ma part pas eu à utiliser ce paramètre pour que Postfix retrouve ses petits. Et je n'ai pas vu de valeur par défaut dans mail.cf. Il a en tout cas rajouté à son fichier
/etc/postfix/mail.cf
:virtual_mailbox_base = /var/vmail/%d/%n/MaildirMerci à lui pour la remarque.
Envoi d'un email de test
Il est temps maintenant d'envoyer un email depuis le système. Ouvrez un terminal et lancez la commande :
tail -f /var/log/mail.log
Cela pour voir ce que fait le serveur de mail. Maintenant envoyez un mail à John. Une façon simple d'envoyer un mail est de pipeliner un texte vers la commande mail
. Faites cela dans une autre fenêtre de terminal :
date | sendmail john@example.org
Si tout marche comme prévu votre fichier mail.log affichera de nombreuses informations techniques à propos de la réception du mail. Comme cela :
Jan 9 09:10:47 jen postfix/pickup[2370]: 30B4B41A98: uid=0 from=<root> Jan 9 09:10:47 jen postfix/cleanup[2633]: 30B4B41A98: message-id=<20180109081047.30B4B41A98@mail.example.org> Jan 9 09:10:47 jen postfix/qmgr[30330]: 30B4B41A98: from=<root@mail.example.org>, size=287, nrcpt=1 (queue active) Jan 9 09:10:47 jen dovecot: lmtp(2636): Connect from local Jan 9 09:10:47 jen dovecot: lmtp(john@example.org): iHHHEwd5VFpMCgAA3BOsLQ: msgid=<20180109081047.30B4B41A98@mail.example.org>: saved mail to INBOX Jan 9 09:10:47 jen dovecot: lmtp(2636): Disconnect from local: Successful quit Jan 9 09:10:47 jen postfix/lmtp[2635]: 30B4B41A98: to=<john@example.org>, relay=mail.example.org[private/dovecot-lmtp], delay=0.28, delays=0.06/0.03/0.08/0.11, dsn=2.0.0, status=sent (250 2.0.0 <john@example.org> iHHHEwd5VFpMCgAA3BOsLQ Saved)
Les informations qui s'afficheront sur votre serveur seront légèrement différente. Prêtez simplement attention au parties imprimées en gras. Elles devraient être exactement les mêmes dans votre fichier de log. Si tout a fonctionné comme attendu Postfix a accepté le mail et l'a transféré à Dovecot qui à son tour a copié le mail dans le répertoire de John. Si vous obtenez des messages d'erreur dans le fichier de log, alors essayez de compendre le message d'erreur et cherchez la cause du problème avant de continuer.
Relancez la commande :
find /var/vmail
Dovecot a maintenant créé une structure de répertoires pour john et créé un nouveau fichier :
/var/vmail/ […] /var/vmail/example.org/john/Maildir/new/1515485447.M404984P2636.mail,S=510,W=522 […]
Le fichier peut avoir un nom différent sur votre système ça n'est pas un problème. Le nom de fichier imprimé en gras décrit le fichier de mail. C'est le seur fichier dans le dossier « new ».
Accédez au mail en tant que fichier
Le fichier contient juste le mail :
Return-Path: <root@mail.example.org> Delivered-To: john@example.org Received: from mail.example.org by mail.example.org (Dovecot) with LMTP id iHHHEwd5VFpMCgAA3BOsLQ for <john@example.org>; Tue, 09 Jan 2018 09:10:47 +0100 Received: bymail.example.org (Postfix, from userid 0) id 30B4B41A98; Tue, 9 Jan 2018 09:10:47 +0100 (CET) Message-Id: <20180109081047.30B4B41A98@mail.example.org> Date: Tue, 9 Jan 2018 09:10:47 +0100 (CET) From: root@mail.example.org (root) Di 9. Jan 09:10:47 CET 2018
Si quelque chose n'a pas fonctionné, alors regardez soigneusement les dernières lignes de votre fichier /var/log/mail.log. Il y a toute probabilité qu'il vous indique le problème. Ou lisez la section sur le dépannage du serveur. Ou encore déposez un commentaire sur cette page et demandez à un autre lecteur de vous aider.
Vous pouvez également utiliser un outil légèrement plus confortable pour accéder aux répertoires de courrier et qui vous sera utile en tant qu'administrateur de serveur de mail : mutt.
mutt -f /var/vmail/example.org/john/Maildir
Il se peut que vous soit demandé de créer le répertoire /root/Mail. Il s'agit d'une procédure standard. Appuyez juste sur Entrée).
Ce que vous voyez maintenant est le contenu de la boîte mail de John :
Utiliser mutt est une bonne façon de consulter des boîtes mails quand vous êtes connecté sur le serveur de mail.
Pour récapituler ce qui arrive quand vous recevez un email :
- Postfix reçoit le mail (en utilisant la commande
sendmail
dans cet exemple, mais habituellement via le réseau en utilisant le protocole SMTP depuis un autre serveur) ; - Postfix communique avec Dovecot via le protocole LMTP et lui délivre le mail ;
- Dovecot enregistre le mail sur le disque.
Accéder au mail via IMAP (Roundcube)
Maintenant que le mail a été délivré vous pouvez communiquer avec Dovecot en utilisant le protocole IMAP pour récupérer votre mail. Êtes-vous encore connecté via le webmail Roundcube ? Alors rechargez la page et vous verrez le mail :
Accéder au mail via IMAP (mutt)
Dans la dernière section nous avons utilisé mutt pour accéder directement au répertoire des mails (Maildir) sur le disque. Mais souvenez-vous que mutt parle également IMAP
mutt -f imaps://john@example.org@localhost
Vous affiche-t-il le mail maintenant ? Super.
Accéder au mail via IMAP (client de messagerie)
Il y a peu de chances que vos utilisateurs emploient mutt pour lire leur courrier (à moins que ce ne soit des accros de la console). Donc bien entendu vous pouvez utiliser un client de mail en mode graphique pour accéder à la boîte de John. Si vous utilisez Thunderbird, Evolution, A**le Mail, claws-mail ou n'importe quel autre client IMAP, alors vous pouvez configurer un nouveau compte mail utilisant IMAP et qui se connectera sur le serveur. Souvenez-vous que le nom d'utilisateur et l'adresse mail sont tous les deux « john@example.org » et que le mot de passe est « summersun ».
POP3 comparé à IMAP
En plus de parler IMAP, Dovecot sait également parler POP3. Mais soyons réalistes, POP3 est mort. Je ne l'offre plus à mes utilisateurs. Mais comme vos utilisateurs peuvent poser la question voyons rapidement les différences entre les deux protocoles :
- POP3 (Post Office Protocol)
- C'est un protocole simple qui vous permet de récupérer des mails depuis une seule boîte à lettres. Il est en général utilisé pour rapatrier les mails, bien que vous puissiez également laisser une copie sur le serveur, mais c'est un peu du bricolage, et vous ne pouvez pas créer plusieurs répertoires sur le serveur pour classer vos mails. Il économise de la place sur le serveur de mail, parce que les mails sont déplacés sur le disque dur de l'ordinateur des utilisateurs. Mais ces derniers ne pourront accéder au même mail depuis un autre ordinateur. L'autre inconvénient, on l'a dit, est qu'il ne permet pas de créer de multiples répertoires sur le serveur pour classer les mails. Il existe juste inbox. Cette variante est un peu dépassée et pas vraiment agréable pour l'utilisateur.
- IMAP (Internet Messaging Application Protocol)
- Il est principalement axé sur la conservation des mails sur le serveur, mais vous pouvez également collecter le courrier comme avec POP3. Le dossier « inbox » est l'emplacement où sont copiés vos mails entrants, mais l'utilisateur peut également créer des dossiers et ventiler ses mails entre ces dossiers. IMAP est très utile si vous voulez accéder à vos mails depuis différents endroits sans perdre de mail parce que vous l'auriez rapatrié sur une autre machine. L'inconvénient est que les utilisateurs paresseux laissent leurs mails sur le serveur, ces derniers finissant par remplir le disque dur du serveur (à moins que vous n'utilisiez des quotas).