Un système de courrier électronique est composé de plusieurs modules spécialisés dans des tâches précises. Diviser les tâches permet de rendre plus facile l'écriture des logiciels.
Ces modules sont :
- Le Mail Transfer Agent (MTA) qui agit comme le centre de tri postal. Il reçoit donc les courriers du réseau local ou d'autre centres de tris, et décide en fonction de l'adresse du destinataire si ce courrier doit être envoyé à un autre centre de tri ou si il doit être donné au facteur pour distribution locale. Les MTA les plus connus sont sendmail, qmail, postfix, smail, exim et mmdf.
- Le Mail Delivery Agent (MDA) qui joue le rôle de ce facteur. Il distribue donc les courriers dans le réseau local, ce qui revient à copier dans la boîte aux lettres de l'utilisateur les courriers arrivant. Il ne prend aucune décision quant au routage, mais se contente simplement d'acheminer le courrier suivant la route précisée par le MTA. Comme MDA, on peut citer mail ou procmail.
- Le Mail User Agent (MUA) qui permet à l'utilisateur de consulter sa boîte aux lettres, d'écrire de nouveaux messages. Le MUA transmet donc les courriers au MTA qui va les redistribuer en fonction de l'adresse du destinataire au réseau local pour attérir dans la boîte aux lettres de l'utilisateur ou aux autres MTA. Les MUA les plus connus sont mail, pine, mutt.
La boîte aux lettres (mailbox) est en fait un simple fichier où tous les messages commencent par une ligne From indiquant l'adresse de l'expéditeur au format UUCP (parfois appellé le ``From Unix''). Cette boîte aux lettres peut aussi bien se trouver dans le fichier /var/spool/mail/login (systèmes d'origine BSD), /usr/mail/login (systèmes d'origine System-V) ou encore /var/mail/login.
Le figure montre comment ces composants interragissent entre eux :
Figure:
Interaction entre les divers composants d'un système de messagerie.
|
Pour la réception des courriers :
- Les différents MTA répartits sur l'Internet interragissent au travers d'un port définit par la RFC 821. Ce port est décrit dans le fichier /etc/services :
smtp 25/tcp mail
C'est donc via le port 25 que communiquent les différents MTA.
- Le MTA connaît le MDA grâce à son fichier de configuration. Pour sendmail, par exemple, le fichier /etc/sendmail.cf contient une ligne comme celle ci :
Mlocal, Path=/usr/bin/procmail, Flags=lsDFMAw5:/|wA9q,
Sender=10, Recipient=20, Argv=procmail -Y -a $h -d $u
lui indiquant d'utiliser procmail comme MDA.
- Le MDA dépose alors le courrier dans la boîte aux lettres de l'utilisateur.
Pour l'envoi de courriers :