SMTP (Simple Mail Transfer Protocol)
Définition
Le SMTP (Simple Mail Transfer Protocol, RFC 5321) est le protocole standard pour l’envoi et le routage d’emails sur Internet. C’est un protocole de type store-and-forward qui délivre l’email du destinataire au serveur de messagerie du destinataire.
Le SMTP gère uniquement la livraison d’email (envoi). La réception et le stockage d’email utilisent POP3 ou IMAP.
Flux SMTP
Expéditeur MTA de l'expéditeur MTA du destinataire MDA du destinataire
│ │ │ │
│ (composition de l'email) │ │ │
│── SMTP (port 587/TLS) ──────────▶│ │ │
│ │── Requête MX DNS ──────▶│ │
│ │ │ │
│ │── SMTP (port 25) ────▶│ │
│ │ │── POP3/IMAP ───────▶│
│ │ │ │ (récupération de l'email)
Ports SMTP
|| Port | Protocole | Cas d’utilisation | ||——|———–|——————-| || 25 | SMTP (non chiffré) | Relais serveur-à-serveur | || 465 | SMTPS (TLS) | SMTP sur TLS implicite (déprécié mais encore utilisé) | || 587 | SMTP + STARTTLS | Soumission client-vers-serveur (recommandé) | || 2525 | SMTP (non chiffré) | Alternative quand le port 25 est bloqué |
Commandes SMTP (EHLO/HELO)
Client : EHLO example.com
Serveur : 250 mail.example.com
250-SIZE 35882577
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 ENHANCEDSTATUSCODES
Client : AUTH LOGIN
Serveur : 334 VXNlcm5hbWU6
Client : base64(username)
Serveur : 334 UGFzc3dvcmQ6
Client : base64(password)
Serveur : 235 2.7.0 Authentication successful
Client : MAIL FROM:<sender@example.com>
Serveur : 250 2.1.0 OK
Client : RCPT TO:<recipient@example.com>
Serveur : 250 2.1.5 OK
Client : DATA
Serveur : 354 End data with <CR><LF>.<CR><LF>
Client : Subject: Hello
From: sender@example.com
To: recipient@example.com
Hello!
.
Serveur : 250 2.0.0 OK: queued as ABC123
Authentification SMTP (SMTP AUTH)
|| Mécanisme | Description | Sécurité | ||———–|————-|———-| || PLAIN | Nom d’utilisateur + mot de passe en base64 | Nécessite TLS | || LOGIN | Variante de Microsoft de PLAIN | Nécessite TLS | || CRAM-MD5 | Challenge-response avec MD5 | Pas besoin de TLS (déprécié) | || OAuth 2.0 | Authentification par jeton | Moderne, recommandé | || XOAUTH2 | Extension OAuth 2.0 de Google | Spécifique à Google |
Sécurité email (couche SMTP)
|| Protocole | Objectif | ||———–|———| || STARTTLS | Mettre à niveau le SMTP en clair vers le chiffrement TLS | || DKIM | Signer les emails avec une clé privée ; vérifier avec un enregistrement DNS public | || SPF | Enregistrement DNS listant les IPs d’envoi autorisées | || DMARC | Politique de gestion des échecs SPF/DKIM | || TLS | Chiffrer les connexions SMTP |
Exemple d’enregistrement SPF
example.com. IN TXT "v=spf1 mx a:mail.example.com ip4:192.168.1.0/24 -all"
|| Balise | Signification |
||——–|————-|
|| v=spf1 | Version SPF |
|| mx | Autoriser les serveurs MX du domaine |
|| a | Autoriser l’IP de l’enregistrement A du domaine |
|| ip4:192.168.1.0/24 | Autoriser cette plage d’IP |
|| -all | Hard fail (rejeter tous les autres) |
Exemple d’enregistrement DKIM
default._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4..."
Exemple d’enregistrement DMARC
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; pct=100; adkim=s; aspf=s"
|| Balise | Signification |
||——–|————-|
|| p=reject | Rejeter les emails en échec |
|| rua=mailto:... | Email de rapport agrégé |
|| pct=100 | Appliquer à 100% des emails |
|| adkim=s | Alignement DKIM strict |
|| aspf=s | Alignement SPF strict |
SMTP dans l’infrastructure
|| Composant | Rôle SMTP | ||———–|———–| || Serveur de messagerie | Postfix, Exim, Sendmail (MTA) | || Relai de messagerie | Envoyer des emails via un relai externe (SendGrid, Mailgun) | || Surveillance | Surveiller la file d’attente SMTP, les taux de livraison | || Sécurité email | SPF, DKIM, DMARC, TLS | || CI/CD | SMTP pour les emails de notification |
Termes associés
- Imap
- POP3 — POP3 récupère l’email (le SMTP l’envoie)
- Tls — filtrage du trafic SMTP (port 25/587)
- Waf
Références
- Wikipedia : https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
- RFC 5321 : https://datatracker.ietf.org/doc/html/rfc5321
- DKIM (RFC 6376) : https://datatracker.ietf.org/doc/html/rfc6376
- DMARC (RFC 7489) : https://datatracker.ietf.org/doc/html/rfc7489
- SPF (RFC 7208) : https://datatracker.ietf.org/doc/html/rfc7208