Publié le : 11/08/2025

Vérifier et Diagnostiquer la Connexion à un Serveur IMAP – Guide Complet

Vérification de la connexion avec un serveur imap

Besoin d’un diagnostic messagerie clair et rapide ? Ce guide pas-à-pas vérifie la chaîne TLS de bout en bout — DNS, certificats acme.sh, déploiement HestiaCP — et teste IMAP/SMTP avec des commandes openssl simples. À la clé : contrôle des ports 143/993/587/465 et correctifs concrets pour Dovecot/Exim4.

1. Objectif & Contexte

Ce guide explique comment tester la connectivité et l’authentification à un serveur IMAP (ex. Dovecot, Cyrus, Courier) sur les ports standards (143 pour IMAP clair + STARTTLS, 993 pour IMAPS). Il couvre les outils en ligne de commande, l’analyse des réponses, la vérification SSL/TLS et la résolution des erreurs communes.

2. Rappels IMAP & Ports

PortProtocoleUsageChiffrement
143IMAPLecture mail standardSTARTTLS optionnel (upgrade)
993IMAPSIMAP sur TLS directTLS implicite dès la connexion

Remarque : IMAP ne gère que la réception/consultation. L’envoi passe par SMTP (ports 587/465). Mais une défaillance IMAP peut impacter le webmail ou les clients lourds.

3. Checklist Rapide de Diagnostic

ÉtapeActionOutils
1Vérifier DNS & enregistrements MX, Adig, host
2Vérifier ouverture portsss, netstat, nmap
3Test handshake TLSopenssl s_client
4Lire CAPABILITY & authentifierDialogue IMAP manuel
5Vérifier certificats (dates, CN/SAN)openssl x509
6Consulter logs serveurjournalctl, fichiers logs
7Vérifier bans (Fail2ban)fail2ban-client
8Test multi-outils (swaks, client mail)swaks, Thunderbird

4. Pré-requis DNS & Réseau

4.1 Résolution DNS

dig +short MX exemple.com
dig +short mail.exemple.com

Attendu : l’entrée MX pointe vers un hôte qui résout vers l’IP du serveur IMAP.

4.2 Latence & Accessibilité

ping -c 3 mail.exemple.com

(S’il est désactivé côté firewall → pas critique.)

4.3 Ports ouverts (externe)

nmap -Pn -p 143,993 mail.exemple.com

Résultat attendu : open sur les deux ports (si 993 activé).

5. Méthodes de Test (Basique → Avancé)

5.1 Vérifier la résolution & l’IP utilisée

host mail.exemple.com

Si plusieurs IP (IPv4 + IPv6), tester les deux (certains serveurs mal configurés en IPv6).

5.2 Test IMAPS (port 993) avec openssl

echo | openssl s_client -connect mail.exemple.com:993 -servername mail.exemple.com -showcerts

Points à lire dans la sortie :

  • Verify return code: 0 (ok) (sinon chaîne incomplète ou nom incorrect)
  • Le certificat présenté (CN/SAN) doit inclure mail.exemple.com (ou wildcard *.exemple.com).

5.3 Test IMAP STARTTLS (port 143)

openssl s_client -connect mail.exemple.com:143 -starttls imap -servername mail.exemple.com -crlf

5.4 Dialogue IMAP manuel

Après connexion (port 993 ou STARTTLS sur 143), taper :

a1 CAPABILITY
a2 LOGIN [email protected] MOTDEPASSE
a3 LIST "" "*"
a4 SELECT INBOX
a5 LOGOUT

Réponses :

  • * CAPABILITY IMAP4 ... (présence de STARTTLS seulement sur 143 avant négociation)
  • a2 OK = authentification réussie.

5.5 Test automatisé avec swaks

swaks est un outil SMTP/IMAP flexible (selon build). À défaut, script expect.

Exemple script IMAP simple (bash + openssl) :

#!/usr/bin/env bash
HOST="mail.exemple.com"
USER="[email protected]"
PASS="MOTDEPASSE"  # (éviter de le laisser en clair en prod)

{
  echo "a1 LOGIN $USER $PASS";
  echo "a2 LIST \"\" \"INBOX\"";
  echo "a3 LOGOUT";
} | openssl s_client -quiet -connect "$HOST:993" -servername "$HOST" 2>/dev/null

5.6 Test via curl (capability rapide)

Certaines builds permettent :

curl -k 'imaps://mail.exemple.com:993' --user '[email protected]:MotDePasse' -v

Observe le code de sortie (0 = succès).

5.7 Test depuis un client GUI

  • Thunderbird : ajouter le compte → détecte automatiquement ports & chiffrement.
  • Vérifier qu’il sélectionne IMAP (pas POP3), port 993 (SSL/TLS) ou 143 (STARTTLS).

6. Scripts d’Automatisation

6.1 Script de vérification quotidienne (ex. cron)

#!/usr/bin/env bash
HOST="mail.exemple.com"
USER="[email protected]"
PASS="__SECRET__"
LOG="/var/log/imap_check.log"
TS=$(date '+%Y-%m-%d %H:%M:%S')

RESULT=$( {
  echo "a1 LOGIN $USER $PASS";
  echo "a2 STATUS INBOX (MESSAGES)";
  echo "a3 LOGOUT"; } | \
  openssl s_client -connect "$HOST:993" -servername "$HOST" -quiet 2>/dev/null )

echo "[$TS]" >> "$LOG"
if echo "$RESULT" | grep -q "a1 OK"; then
  echo "SUCCESS" >> "$LOG"
else
  echo "FAIL" >> "$LOG"
  echo "$RESULT" >> "$LOG"
fi

Ajouter dans cron (crontab -e) :

*/15 * * * * /usr/local/bin/check_imap.sh

6.2 Alerting simple (mail en cas d’échec)

Ajouter :

if ! echo "$RESULT" | grep -q "a1 OK"; then
  mail -s "ALERTE IMAP" [email protected] <<< "Echec IMAP : $RESULT"
fi
Vérifier une connexion à un serveur imap en utilisant openssl

7. Interprétation des Réponses IMAP

ÉlémentSignification
* OK [CAPABILITY ...]Serveur prêt, liste des capacités
NO Authentication failed.Login incorrect / compte verrouillé
BADCommande mal formée
BYEDéconnexion forcée (timeout, shutdown, ban)
* LIST (...)Liste de dossiers retournée
* FLAGS (\Seen ...)Informations sur la boîte sélectionnée

8. Authentification & Formats d’Identifiant

Selon la configuration :

Format requisExempleContexte
Adresse complète[email protected]Multi‑domaines (virtual users)
Username simpleuserDomaine unique / mapping local
Préfixe/suffixe transforméuser%exemple.comTransport spécifique legacy

Cas d’erreur : le serveur accepte le login mais ne trouve pas la boîte → mauvais répertoire maildir, permissions, ou user non provisionné.

9. Vérification des Certificats SSL/TLS

9.1 Détails certificat

openssl s_client -connect mail.exemple.com:993 -servername mail.exemple.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates -ext subjectAltName

Vérifier :

  • notBefore / notAfter (validité)
  • subjectAltName contient le FQDN
  • Issuer : AC reconnue (Let’s Encrypt, Sectigo…).

9.2 Chaîne complète

Absence d’intermédiaire → certains clients échouent : vérifier fullchain.pem utilisé.

9.3 Renouvellement & Reload

Après renouvellement (ex. acme.sh) :

systemctl reload dovecot
systemctl reload exim4  # si utilisé pour SMTP auth

10. Logs Serveur & Où Chercher

ServiceFichier / Commande
Dovecot/var/log/dovecot.log ou journalctl -u dovecot -n 50
Cyrus/var/log/maillog (selon distro)
Courier/var/log/mail.log
Auth (PAM / passdb)Même logs Dovecot (mots-clés auth:)
Fail2ban/var/log/fail2ban.log
TLS errorsDovecot log + openssl côté client
Webmail (Roundcube)/var/log/roundcube/errors

Exemple d’entrée Dovecot :

Jul 19 10:02:31 mail dovecot: imap-login: Login: user=<[email protected]>, method=PLAIN, rip=198.51.100.25, lip=203.0.113.10, mpid=12345, TLS, session=<AbCdEfGhIj==>

11. Erreurs Fréquentes & Résolutions

Erreur / SymptômeCause ProbableSolution
Timeout / Pas de réponsePort filtré (firewall, NAT)Ouvrir ports 143/993 (iptables / security group)
Connection closed by foreign hostCrash ou restart DovecotVérifier logs, RAM, mises à jour
NO Authentication failed.Mauvais mot de passe / format userVérifier login complet, reset mot de passe
BYE Internal errorPermission dossiers mail / corruption indexRéparer droits, supprimer fichiers index (*.imap)
Certificat CN mismatchMauvais host utilisé par clientUtiliser FQDN correct / regénérer cert incluant host
Verify return code: 10/20Chaîne incomplète / self-signedUtiliser fullchain, installer CA, cert public
Invalid login delay / banFail2ban ou rate limitingDéban IP, corriger script de test
Dossiers vides / absentsMaildir non crééEnvoyer / recevoir un mail initial, doveadm mailbox create -u user INBOX
Lenteur listingIndices corrompusdoveadm index -u user INBOX ou supprimer index
STARTTLS non proposéConfig TLS désactivée sur 143Activer !SSLv2 !SSLv3 + ssl = yes (Dovecot)

12. Sécurité & Bonnes Pratiques

  • Imposer TLS : refuser authentification en clair (disable_plaintext_auth = yes en TLS-only).
  • Protocols : limiter à TLSv1.2 et TLSv1.3.
  • Ciphers : config forte (Mozilla SSL Config Generator).
  • Fail2ban : protéger contre brute-force (jail dovecot / exim / postfix).
  • Logs rotation : surveiller croissance (logrotate).
  • Monitoring : script cron + alerting (Email, Slack, Telegram).
  • Certificates : renouvellement automatique + test hebdo.

13. Checklist Finale avant Mise en Prod

ItemOK ?
DNS MX correct & résout
Ports 143 & 993 ouverts
Certificat valide (dates, SAN)
Auth IMAP réussie via openssl
LIST / SELECT INBOX fonctionne
Logs propres (pas d’erreurs récurrentes)
Pas de bans anormaux Fail2ban
Monitoring script en place
Politique TLS durcie

14. FAQ

Q : Puis-je désactiver complètement le port 143 ?
R : Oui si tous les clients supportent 993 (IMAPS). Laisse 143 si tu veux STARTTLS ou compatibilité legacy.

Q : Comment tester rapidement sans openssl ?
R : curl imaps://mail.exemple.com:993 (avec credentials) ou un client mail portable.

Q : Le certificat wildcard couvre-t-il aussi IMAP ?
R : Oui, si le FQDN utilisé (mail.exemple.com) est inclus par le wildcard *.exemple.com.

Q : Pourquoi CAPABILITY ne montre pas IDLE ?
R : Option compilée/désactivée. Vérifier modules Dovecot / config plugin.

Q : Dois-je regénérer les index Dovecot régulièrement ?
R : Non sauf corruption ou lenteur inhabituelle.

Q : Est-ce que les commandes qui sont utilisés ici peuvent être utilisé avec le protocole SMTP ?
R : Oui — utilise openssl s_client -connect mail.exemple.com:587 -starttls smtp -servername mail.exemple.com (ou -connect mail.exemple.com:465 sans -starttls pour SMTPS) ; pour un pas-à-pas clair (acme.sh → HestiaCP → Exim4 + tests openssl), suis ce guide : https://smart-tech.mg/de-lemission-acme-au-smtp-chiffre-guide-complet-acme-sh-hestiacp-exim4-tls/

15. Résumé Express

  1. Vérifie DNS & ports ouverts.
  2. Handshake TLS : openssl s_client (993 ou 143 + STARTTLS).
  3. Envoie CAPABILITY puis LOGIN pour tester l’auth.
  4. Contrôle certificat (SAN, dates, CA, chaîne complète).
  5. Inspecte logs Dovecot + Fail2ban pour les échecs.
  6. Automatisation : script de vérification périodique.
  7. Applique durcissement TLS + monitoring continu.
Les mots clés rattachés à cet article : Certificats  -  Email  -  OpenSSL  -  SSL

Nos clients

Une vingtaine de clients nationaux et internationaux