Guide

Comment tester un serveur SMTP avec OpenSSL

OpenSSL permet de vérifier la connexion TCP, STARTTLS et le certificat présenté par un serveur SMTP avant même de tester l’authentification.

⌚ Environ 3 min de lecture
Voir mes favoris
Messagerie / SMTP Intermédiaire 10 min

OpenSSL permet de vérifier la connexion TCP, STARTTLS et le certificat présenté par un serveur SMTP avant même de tester l’authentification.

Avant de commencer : adaptez toujours les commandes et manipulations à votre environnement. Sur un système de production, prévoyez une sauvegarde ou un retour arrière lorsque l’action peut modifier la configuration.

Étapes à suivre

  1. 1

    Choisir le bon port

    Utilisez généralement 587 avec STARTTLS ou 465 en TLS implicite selon le fournisseur.

  2. 2

    Ouvrir la session TLS

    Lancez s_client avec -starttls smtp pour le port 587.

  3. 3

    Lire le certificat

    Contrôlez CN/SAN, dates et chaîne.

  4. 4

    Tester EHLO

    Saisissez EHLO pour voir les capacités annoncées.

  5. 5

    Comparer avec l’application

    Validez ensuite hôte, port et mode TLS dans le logiciel concerné.

Commandes utiles

openssl s_client -connect smtp.exemple.fr:587 -starttls smtp -servername smtp.exemple.fr
openssl s_client -connect smtp.exemple.fr:465 -servername smtp.exemple.fr

À retenir

  • Ne collez pas un mot de passe réel dans un historique de terminal partagé.
  • Un handshake TLS réussi ne valide pas l’autorisation d’envoi.
  • Conservez le texte exact d’un éventuel 535 ou 550.
Complément technique

SMTP STARTTLS : vérifier l’annonce, puis le handshake

Repères techniques

  • STARTTLS est annoncé après EHLO ; le client demande ensuite de transformer la session SMTP claire en TLS.
  • Le certificat présenté doit correspondre au nom utilisé par le client et construire une chaîne de confiance.
  • Un serveur peut accepter le port 587 tout en refusant AUTH avant STARTTLS selon sa politique.

OpenSSL SMTP

Utiliser -starttls smtp pour négocier correctement EHLO/STARTTLS au lieu de tester TLS brut.

openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com

Pièges spécifiques

  • Tester uniquement telnet:587 ne valide pas le certificat TLS.
  • Le port 465 utilise généralement TLS implicite, différent de STARTTLS sur 587.

Comment valider

  • EHLO annonce STARTTLS et le handshake se termine avec la chaîne/nom attendus.
  • La méthode AUTH prévue fonctionne ensuite dans la session chiffrée.

Preuves et vérifications

STARTTLS est annoncé après EHLO ; le client demande ensuite de transformer la session SMTP claire en TLS. Le certificat présenté doit correspondre au nom utilisé par le client et construire une chaîne de confiance.

Contrôle de résultat

EHLO annonce STARTTLS et le handshake se termine avec la chaîne/nom attendus. La méthode AUTH prévue fonctionne ensuite dans la session chiffrée.

Point d’attention

Tester uniquement telnet:587 ne valide pas le certificat TLS. Un serveur peut accepter le port 587 tout en refusant AUTH avant STARTTLS selon sa politique.

Concepts liés

Référence primaire : RFC 3207 — SMTP STARTTLS.

♡ 0