minsmtpd - le serveur smtp minimum en script shell
Pour demarrer minsmtpd :
et pour le stopper :
Pour l'utiliser avec mutt, rajouter dans le fichier ~/.muttrc la ligne :
set sendmail="~/perso/minsmtpd/sendmail.sh"
|
|
Voici en gros comment se passe l'envoi d'un mél d'un site vers un autre site :
+------------------------------+ (3) +------------------------------+
| MTA (sendmail, postfix, ...) |---->| MTA (sendmail, postfix, ...) |
+------------------------------+ +------------------------------+
^ | | (4)
| | v
+---------------------------+ | | +---------------------------+
| MDA (mail, procmail, ...) | | | | MDA (mail, procmail, ...) |-----+
+---------------------------+ | | +---------------------------+ |
| | |
| | |
+-----------------------+ | | +-----------------------+ |
| MUA (mutt, pine, ...) |-----+ | | MUA (mutt, pine, ...) | | (5)
+-----------------------+ (2) | +-----------------------+ |
| | | |
| (1) | | (1) |
v | v |
+-------------------+ | +-------------------+ |
| Boîte aux lettres | | | Boîte aux lettres |<------------+
+-------------------+ | +-------------------+
|
----------------------------------+----------------------------------------
DOMAINE EMMETEUR | DOMAINE RECEVEUR
(1) : consultation des messages ;
(2) : emmission d'un courrier ;
(3) : transfert du courrier entre les deux sites distants ;
(4) : distribution au facteur local ;
(5) : distribution à l'utilisateur.
|
|
Le serveur de méls, ou encore MTA, doit remplir deux rôles :
-
lire sur l'entrée standard les données venant du MUA et les transférer
au MTA du site distant via une connexion SMTP ;
-
être un démon à l'écoute d'un port (le port 25) pour recevoir les
méls arrivants des sites distants au travers d'une connexion SMTP et
les transmettres à un programme pouvant les délivrer en local.
Il faut donc écrire deux programmes distincts. Le premier, sendmail.sh, est appellé par le MUA et lui envoie un message du type :
Date: Wed, 19 Sep 2001 16:22:01 +0200
From: Mathieu DECORE <mdecore@tarsier.chez.moi>
To: Mathieu DECORE <mdecore@chez.moi>
Subject: Salut
Message-ID: <20010919162201.A27651@tarsier.chez.moi>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.2.5i
Salut
|
|
Le second, minsmtpd-wrapper, est en permanance à l'écoute du port 25 et
se substitue à l'aide de nc au script minsmtpd.sh à chaque connexion.
Ce script minsmtpd.sh se contente donc de lire sur l'entrée standard les
données émises par le client SMTP, et d'écrire sur la sortie standard les
données à transmettre au client SMTP.
Enfin, il faut un programme pour scrutter régulièrement la file d'attente
des méls à être traités : c'est le script mqueued.sh.
Le fichier commun contient tous les paramètres de ces différents programmes
(numéro du port, intervalle entre deux verifications de la file d'attente,
nom de la personne apparaîssant comme expéditeur des méls d'erreur, ...).
Le répertoire format contient les modèles des méls envoyés par le serveur en
cas d'erreur. Les types d'erreurs pouvant se produire sont :
- le nom de domaine est non valide ;
- le nom de domaine est valide mais l'utilisateur n'existe pas.
Pour chacune de ces erreurs, il y a deux modèles de méls d'erreur :
domaine-non-valide et utilisateur-non-valide.
Pour domaine-non-valide, les mots cléfs possibles sont :
- TO : ce mot sera remplacé par l'adresse mél étant invalide ;
- DOMAINE : ce mot sera remplacé par le nom du domaine invalide.
Pour utilisateur-non-valide, les mots cléfs possibles sont :
- TO : ce mot sera remplacé par l'adresse mél étant invalide ;
- UTILISATEUR : ce mot sera remplacé par le nom de l'utilisateur invalide.
Voici maintenant, par ordre alphabétique, les différents programmes :