Simple Mail Transfer Protocol
Norme utilisée par Up ! Mail Service
La norme Simple Mail Transfer Protocol (SMTP) décrit comment envoyer un courrier électronique d'un client vers un serveur ou comment router un courrier entre deux serveurs.
La communication au format Simple Mail Transfer Protocol (SMTP) s'effectue sur un flux dont le transport est TCP-IP. Ce flux est texte uniquement.
La communication est à l'initiative du client : il pose une requête et le serveur répond. Le port d'écoute du serveur est usuellement 25.
- DATA - Data.
Contenu du courrier électronique.
- EXPN - Expand.
Liste l'identité des abonnés à une mailing list. Le paramètre est l'identifiant de la liste.
- HELO - Helo.
Identification du client. Le paramètre est le domaine auquel est rattaché le client.
- HELP - Help.
Ecriture de l'usage des commandes ou d'une commande particulière ne correspondant pas à une extension de la norme.
- MAIL - Mail.
Préparation de l'envoi d'un courrier électronique dans la boîte aux lettres. Le paramètre est le chemin de renvoi à l'émetteur.
- NOOP - No Operation.
Ne fait rien. Dans les faits, teste l'état du flux de contrôle.
- QUIT - Quit.
Le client se déconnecte.
- RCPT - Recipient.
Définition d'un des destinataires du courrier électronique. Le paramètre est le chemin d'envoi au destinataire.
La commande est appelée autant de fois qu'il y a un destinataire.
- RSET - Reset.
Annulation de l'envoi du courrier électronique.
- SAML - Send and mail.
Préparation de l'envoi d'un courrier électronique à l'écran et dans la boîte aux lettres si le destinataire. Le paramètre est le chemin d'envoi au destinataire.
- SEND - Send.
Préparation de l'envoi d'un courrier électronique à l'écran et non dans la boîte aux lettres. Le paramètre est le chemin d'envoi au destinataire.
- SOML - Send or mail.
Préparation de l'envoi d'un courrier électronique à l'écran ou dans la boîte aux lettres si le destinataire n'est pas connecté. Le paramètre est le chemin d'envoi au destinataire.
- TURN - Turn.
Le client devient serveur et le serveur devient client le temps du prochain transfert.
- VRFY - Verify.
Vérification de l'identité d'un destinataire. Le paramètre est l'identifiant du destinataire.
La ligne de la requête est terminée par les caractères saut de ligne \r et retour chariot \n.
La réponse à la requête est une ou plusieurs lignes de texte comportant :
- Le code retour.
Un code retour 2xx ou 3xx traduit un bon fonctionnement. Un code retour 4xx ou 5xx traduit une erreur de fonctionnement.
- Le séparateur.
Le séparateur espace signifie que la ligne est la dernière de la réponse. Un autre séparateur signifie que la ligne n'est pas la dernière de la réponse.
- Le texte libre.
Il s'agit du message correspond au code ou d'un message formaté ou, selon la commande :
- EXPN - Expand.
Description du destinataire et son adresse e-mail entre chevrons < et >.
- HELP - Help.
Usage des commandes.
- VRFY - Verify.
Description de chaque destinataire et leurs adresses e-mail entre chevrons < et >.
Les lignes de la réponse sont terminées par les caractères retour chariot \r et retour chariot \n.
Les limites de la norme sont les suivantes :
- Une adresse e-mail a au plus 64 caractères.
- Un chemin a au plus 256 caractères.
- Une ligne de commande a au plus 512 caractères.
- Une ligne du courrier électronique a au plus 1000 caractères.
Contenu d'un courrier électronique
Le contenu d'un courrier électronique qui suit l'instruction DATA a les caractéristiques suivantes :
- Une succession de lignes de texte, chacune terminée par les caractères retour chariot \r et retour chariot \n.
- Cette succcession prend fin avec la ligne ne contenant que le texte composé du caractère point
.
.
Le contenu comprend en pratique :
- La date de réception s'il ne s'agit pas d'un routage.
- La marque de routage via le mot-clé Received.
- L'en-tête du courrier au format Rfc 822 augmenté de Mime.
- Le corps du courrier encodé au format Base64.
- La ligne comportant uniquement le texte point
.
.
Chemin d'envoi au destinataire
Le chemin d'envoi au destinataire utilisé dans la commande RCTP est une succession d'adresses de serveurs terminée par l'adresse e-mail du destinataire.
Voici des exemples :
- mon-correspondant@serveur-a.com.
Le courrier est envoyé au serveur serveur-a pour le déposer dans la boîte de mon-correspondant.
- @serveur-a.com:mon-correspondant@serveur-b.com.
Le courrier est envoyé au serveur serveur-a qui le transmet au serveur serveur-b pour le déposer dans la boîte de mon-correspondant.
- @serveur-a.com,@serveur-b.com:mon-correspondant@serveur-c.com.
Le courrier est envoyé au serveur serveur-a qui le transmet au serveur serveur-b qui le transmet au serveur serveur-c pour le déposer dans la boîte de mon-correspondant.
Chemin de renvoi à l'émetteur
Le chemin de renvoi à l'émetteur utilisé dans la commande MAIL ou autre est une succession d'adresses de serveurs terminée par l'adresse e-mail de l'émetteur.
Voici des exemples :
- mon-correspondant@serveur-a.com.
Le courrier a été envoyé mon-correspondant. Son serveur de messagerie est serveur-a.
- @serveur-a.com:mon-correspondant@serveur-b.com.
Le courrier a été envoyé par mon-correspondant. Son serveur de messagerie est serveur-b qui l'a transmis au serveur serveur-a.
- @serveur-a.com,@serveur-b.com:mon-correspondant@serveur-c.com.
Le courrier a été envoyé par mon-correspondant. Son serveur de messagerie est serveur-c qui l'a transmis au serveur serveur-b qui l'a transmis au serveur serveur-a.
Messages de Simple Mail Transfer Protocol
Voici les messages déclarés dans la norme :
211 System status, or system help reply.
214 Help message.
220 <domain> Service ready.
221 <domain> Service closing transmission channel.
250 Requested mail action okay, completed.
251 User not local; will forward to .
354 Start mail input; end with <CRLF>.<CRLF>.
421 <domain> Service not available, closing transmission channel.
450 Requested mail action not taken: mailbox unavailable.
451 Requested action aborted: local error in processing.
452 Requested action not taken: insufficient system storage.
500 Syntax error, command unrecognized.
501 Syntax error in parameters or arguments.
502 Command not implemented.
503 Bad sequence of commands.
504 Command parameter not implemented.
550 Requested action not taken: mailbox unavailable.
551 User not local; please try <forward-path>.
552 Requested mail action aborted: exceeded storage allocation.
553 Requested action not taken: mailbox name not allowed.
554 Transaction failed.
Syntaxe d'une conversation au format Simple Mail Transfer Protocol
Commandes :
Commande :
DATA
\r\n
| EXPN
IdentifiantMailingList \r\n
| HELO
Domaine \r\n
| HELP
SuiteAide \r\n
| MAIL FROM: <
CheminDeRenvoiALEmetteur >
\r\n
| NOOP
\r\n
| QUIT
\r\n
| RCPT TO: <
CheminDEnvoiAuDestinataire >
\r\n
| RSET
\r\n
| SAML FROM: <
CheminDeRenvoiALEmetteur >
\r\n
| SEND FROM: <
CheminDeRenvoiALEmetteur >
\r\n
| SOML FROM: <
CheminDeRenvoiALEmetteur >
\r\n
| TURN
\r\n
| VRFY
IdentifiantDestinataire \r\n
;
SuiteAide :
Exemple d'une conversation au format Simple Mail Transfer Protocol
Cette conversation comporte le flux de contrôle et le contenu du courrier :
HELO www.yahoo.fr\r\n
MAIL FROM:<helene@yahoo.fr> \r\n
RCPT TO<francois@hotmail.com> \r\n
RCPT TO<pierre@hotmail.com> \r\n
DATA\r\n
Return-Path: <contact@microsoft.com> \r\n
Delivered-To: commercial@up-comp.com \r\n
Received: from www.microsoft.com\r\n
by b0.monhebergeur.net with SMTP; 4 Dec 2005 19:33:29 -0000 \r\n
Message-ID: <00099QJfaa0a$jashah0$edsjk6d9@ordinateur> \r\n
From: "Helene Mac ARTHUR" <helene@yahoo.fr> \r\n
To: "François Mitterand" <francois@hotmail.com> \r\n
References: <GHAJJKJDJQKJDKQDJJDKQJJKQJJQ.francois@hotmail.com> \r\n
Subject: Re: Thank you \r\n
Date: Sun, 4 Dec 2005 22:35:05 +0300 \r\n
MIME-Version: 1.0 \r\n
Content-Type: multipart/alternative; \r\n
boundary="----=_NextPart_000_0021_0156ABCD.AD0CDE40" \r\n
X-Priority: 3 \r\n
X-MSMail-Priority: Normal \r\n
X-Mailer: Microsoft Outlook Express 5.00.2919.6600 \r\n
Disposition-Notification-To: "Helene Mac ARTHUR" <helene@yahoo.fr> \r\n
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 \r\n
X-MonHebergeur-Remote: 194.67.23.149 (mx3.yahoo.fr) \r\n
X-MonHebergeur-Local: 213.186.33.29 (mx1.monhebergeur.net) \r\n
X-Spam-Check: fait|type 1&3|0.9|H 0.5 \r\n
\r\n
--_NextPart_000_0021_0156ABCD.AD0CDE40\r\n
Merci pour le pain.\r\n
_NextPart_000_0021_0156ABCD.AD0CDE40--\r\n
.\r\n
QUIT\r\n