Réseau - Web - GNU/Linux

2018 04 février

Test de la réception de courrier - Debian 9.0 Stretch

Rédigé par Marc GUILLAUME | 2 commentaires
Article précédent Mail façon FAI - Debian 9.0 Stretch Article suivant

Traduction 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/Maildir

Merci à 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 :

  1. 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) ;
  2. Postfix communique avec Dovecot via le protocole LMTP et lui délivre le mail ;
  3. 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 :

mail affiché dans roundcube

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).

2 commentaires

#1  - Devinas a dit :

Bonjour,

Merci pour ce merveilleux tuto qui m'amène un peu plus loin dans la configuration de postfix/dovecot. J'avoue que j'ai essayé plusieurs tuto, mais le tient est vrai spécial pour tes explications les plus minutieuses. Une fois encore bravo.

Chez moi, il a fallu que j'ajoute la directive suivante pour que le système puisse retrouver le répertoire de john.

virtual_mailbox_base = /var/vmail/%d/%n/Maildir

Je ne crois pas qu'on en a parlé. Sinon avant cela, j'avais eu le message d'erreur :
fatal: bad string length 0 < 1: virtual_mailbox_base =

A présent, c'est résolu.

Répondre
#2  - Marc GUILLAUME a dit :

Bonjour,

merci pour le compliment, mais il faut surtout féliciter Christoph Haas !

C'est curieux, chez moi virtual_mailbox_base n'est pas renseigné et ça fonctionne, en tout cas merci pour l'information, je vais rajouter une remarque dans une note sur la page et en parler avec Christoph.

Répondre

Écrire un commentaire

Quelle est la dernière lettre du mot vgezi ?

Fil RSS des commentaires de cet article

À propos

Yakati.info - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.034s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml