Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

Peut-être ne le savez-vous pas, mais Debian, comme beaucoup d'autres distributions Unix/Linux, dispose en standard d'un serveur de courrier électronique local.

La raison pour laquelle la configuration standard installe un MTA (Mail Transfert Agent – Logiciel de transfert de courrier électronique
(plus))
, est que certains utilitaires, dont at, ont besoin de pouvoir communiquer de manière asynchrone avec l'administrateur de la machine. Et le courrier électronique est la solution idéale pour cela.

Où les choses deviennent encore plus intéressantes, c'est qu'exim4, le MTA installé par défaut sous Debian, accepte les requêtes SMTP (Simple Mail Transfert Protocol – Un protocole utilisé pour envoyer des courriers électroniques.) . Ce qui permet de l'interfacer avec des clients de messagerie comme Evolution Mail. C'est ce que nous allons voir maintenant.

Euh... A quoi ça sert?

Vous vous demandez peut-être quel est l'intérêt de configurer un client mail pour accéder à la messagerie locale. A cela plusieurs réponses:

  • Permettre aux différents utilisateurs d'un système Unix de communiquer entre eux? Bof, à l'époque où tout le monde dispose de son adresse e-mail, l'intérêt est réduit.
  • Aider l'administrateur à consulter les messages envoyés par le système? Oui, pourquoi pas...
  • Mais surtout, cela offre au développeur une plate-forme indépendante d'internet pour développer et tester les fonctionnalités d'envoi de message dans une application, sans avoir besoin d'installer et configurer un serveur SMTP exprès pour cela.

Unix mailbox

Avant d'aller plus loin, il faut savoir qu'un système Unix dispose traditionnellement d'un service de messagerie locale et des outils nécessaires pour envoyer et recevoir des messages avec ce service. Selon les distributions, les BAL (boîtes aux lettres) sont stockées à des emplacements différents. Sous Debian, elles sont dans /var/mail/user (où user est le nom de l'utilisateur).

La commande standard pour lire et écrire des messages est mail. Nous n'allons pas trop détailler cet utilitaire, par trop rustique pour les standards modernes de l'ergonomie, mais juste voir les manipulations de base.

Envoyer un message avec mail

Imaginons que l'utilisateur sylvain souhaite envoyer un message à l'utilisateur sonia de ma machine. La commande à utiliser sera la suivante:

sylvain$ mail sonia
Subject: Réunion
N'oublie pas la réunion du blah blah blah... 

A+,
Sylvain
.
Cc: 

Note:

La fin du message est délimitée par une ligne comportant uniquement un point.

Lire son courrier avec mail

De son côté, l'utilisateur sonia peut relire son courrier avec la même commande mail, mais invoquée ainsi:

sonia$ mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/sonia": 1 message 1 new
>N  1 sylvain@mobal.chi  Thu Aug 13 15:30   19/599   Réunion
& 1
Message 1:
From sylvain@mobal.chicoree.fr Thu Aug 13 15:30:59 2009
Envelope-to: sonia@mobal.chicoree.fr
Delivery-date: Thu, 13 Aug 2009 15:30:59 +0200
To: sonia@mobal.chicoree.fr
Subject:  RM-CM-)union
From: Sylvain <sylvain@mobal.chicoree.fr>
Date: Thu, 13 Aug 2009 15:30:58 +0200

N'oublie pas la réunion du blah blah blah... 

A+,
Sylvain

& q
sonia$

Pour lire un message, il faut donner son numéro (1 dans l'exemple ci-dessus). Et pour quitter mail il faut taper q. Austère, n'est-ce pas?

SMTP

SMTP est un protocole standard pour envoyer du courrier électronique. Or, exim accepte les requêtes SMTP, il est possible d'envoyer du courrier à l'aide de ce protocole. Pas besoin pour cela de configurer un client: en effet, SMTP est un protocole texte – et il est possible d'envoyer des requêtes au serveur en utilisant une simple application de communication par socket comme telnet. Le port standard SMTP est 25. Vous pouvez donc commencer par vous connecter ainsi:

Et voici comment on peut faire une fausse joie à un de ses collaborateurs...
sh$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost ESMTP Exim 4.69 Tue, 18 Aug 2009 00:20:58 +0200

A partir de maintenant, vous êtes connecté à exim, et celui-ci attend que vous lui transmettiez des requêtes SMTP valides.

MAIL FROM: the-big-boss@votre-job.fr
250 OK
RCPT TO: sylvain@localhost
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
Subject: Promotion acceptée!

J'ai le plaisir de vous confirmer
votre promotion. Bien entendu, celle-ci
s'accompagnera d'une hausse de salaire
substantielle!

Cordialement,
BB
.
250 OK id=1MdAzX-00015G-1R
QUIT
221 localhost closing connection
Connection closed by foreign host.

Bien entendu, ici encore, un client graphique sera bien plus convivial que les outils de base. Donc, sans plus tarder, attachons nous donc à la configuration d'Evolution Mail!

Configurer Evolution Mail pour utiliser la BAL locale

Comme je l'ai dit plus haut, mail est plutôt rustique, mais ça fonctionne – même sans environnement graphique ou via une connexion ssh sur une liaison bas débit. Mais si vous avez fait une installation standard de Debian avec interface graphique Gnome, vous préférerez peut-être utiliser un client de messagerie plus moderne comme Evolution Mail.

Les copies d'écran ci-dessous détaillent pas-à-pas les étapes permettant de configurer ce client de messagerie afin d'envoyer et recevoir des messages sur les boîtes aux lettres locales. Le tout via exim4:

Pour créer un nouveau compte mail dans Evolution, allez dans le menu Edition > Préférences. Et cliquez sur le bouton Ajouter.
Après l'écran d'accueil, vous arrivez sur la boîte de dialogue qui vous demande la saisie de votre nom et adresse mail. Ici, comme adresse e-mail, il faut donner une adresse de la forme utilisateur@localhost – où utilisateur est votre nom d'utilisateur sur la machine (votre login).
Maintenant, nous passons au compte de réception. Habituellement, à cette étape vous spécifiez un serveur POP3 ou IMAP. Mais là, vous allez indiquer que vous souhaitez utiliser le compte de messagerie locale. Et vous donnerez aussi le chemin vers votre BAL (dans mon cas, /var/mail/sylvain).
Si vous le souhaitez, vous pouvez aussi configurer Evolution pour relever périodiquement les messages.
Enfin, la partie concernant SMTP: C'est là que vous aller préciser que les messages devront être envoyés via exim4, qui est à l'écoute sur le port SMTP de l'hôte local (localhost). A noter, qu'exim ne requiert aucune authentification.
Pour terminer, n'oubliez pas de donner un nom distinctif à ce nouveau compte, pour vous rappeler que c'est le compte local.

Recevoir un mail local

Maintenant que le compte est configuré dans Evolution, nous pouvons tester le fonctionnement de notre messagerie. Envoyez donc un message à partir du shell:

sylvain$  mail sylvain
Subject: Hello smtp
Hello smtp!!!
.
Cc: 

Et maintenant, repassez sous Evolution Mail, et vous pourrez constater l'arrivée de votre message:

Piège:

Si rien n'arrive, pensez à vérifier qu'Evolution est bien en mode connecté. Le cas échéant, cliquez le bouton en bas à gauche de la fenêtre – ou passez par le menu Fichier > Travailler en mode connecté.

Envoyer un mail local

Nous pouvons aussi faire la manipulation inverse: envoyer un mail via Evolution et vérifier avec mail qu'il est bien arrivé dans la boîte locale:

sylvain$ mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/sylvain": 1 message 1 new
>N  1 sylvain@localhost  Thu Aug 13 16:08   22/656   Hello from Evolution

Piège:

Si le message ne part pas tout seul après avoir cliqué sur Envoyer:

  • Vérifiez que vous êtes en mode connecté;
  • Cliquez sur le bouton Envoyer/Recevoir.

Conclusion

Sous prétexte de configurer un client de messagerie, cet article a été l'occasion de jeter un oeil sous le capot et de voir quelques éléments de compréhension du fonctionnent du courrier électronique.

Muni de ces informations et maintenant que vous pouvez consulter les messages locaux en même temps que votre courrier personnel, vous disposez d'une plate-forme qui vous permet d'expérimenter de manière conviviale avec l'envoi de mail par SMTP. Alors, pourquoi ne pas pousser vos investigations? Par exemple, en mettant en oeuvre une bibliothèque comme JavaMail pour permettre à vos applications d'envoyer des mails...