Publié le : 11/08/2025
Vérifier et Diagnostiquer la Connexion à un Serveur IMAP – Guide Complet

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
Port | Protocole | Usage | Chiffrement |
---|---|---|---|
143 | IMAP | Lecture mail standard | STARTTLS optionnel (upgrade) |
993 | IMAPS | IMAP sur TLS direct | TLS 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
Étape | Action | Outils |
---|---|---|
1 | Vérifier DNS & enregistrements MX, A | dig , host |
2 | Vérifier ouverture ports | ss , netstat , nmap |
3 | Test handshake TLS | openssl s_client |
4 | Lire CAPABILITY & authentifier | Dialogue IMAP manuel |
5 | Vérifier certificats (dates, CN/SAN) | openssl x509 |
6 | Consulter logs serveur | journalctl , fichiers logs |
7 | Vérifier bans (Fail2ban) | fail2ban-client |
8 | Test 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 deSTARTTLS
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, scriptexpect
.
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

7. Interprétation des Réponses IMAP
Élément | Signification |
---|---|
* OK [CAPABILITY ...] | Serveur prêt, liste des capacités |
NO Authentication failed. | Login incorrect / compte verrouillé |
BAD | Commande mal formée |
BYE | Dé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 requis | Exemple | Contexte |
---|---|---|
Adresse complète | [email protected] | Multi‑domaines (virtual users) |
Username simple | user | Domaine unique / mapping local |
Préfixe/suffixe transformé | user%exemple.com | Transport 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
Service | Fichier / 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 errors | Dovecot 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ôme | Cause Probable | Solution |
---|---|---|
Timeout / Pas de réponse | Port filtré (firewall, NAT) | Ouvrir ports 143/993 (iptables / security group) |
Connection closed by foreign host | Crash ou restart Dovecot | Vérifier logs, RAM, mises à jour |
NO Authentication failed. | Mauvais mot de passe / format user | Vérifier login complet, reset mot de passe |
BYE Internal error | Permission dossiers mail / corruption index | Réparer droits, supprimer fichiers index (*.imap ) |
Certificat CN mismatch | Mauvais host utilisé par client | Utiliser FQDN correct / regénérer cert incluant host |
Verify return code: 10/20 | Chaîne incomplète / self-signed | Utiliser fullchain, installer CA, cert public |
Invalid login delay / ban | Fail2ban ou rate limiting | Déban IP, corriger script de test |
Dossiers vides / absents | Maildir non créé | Envoyer / recevoir un mail initial, doveadm mailbox create -u user INBOX |
Lenteur listing | Indices corrompus | doveadm index -u user INBOX ou supprimer index |
STARTTLS non proposé | Config TLS désactivée sur 143 | Activer !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
etTLSv1.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
Item | OK ? |
---|---|
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
- Vérifie DNS & ports ouverts.
- Handshake TLS :
openssl s_client
(993 ou 143 + STARTTLS). - Envoie
CAPABILITY
puisLOGIN
pour tester l’auth. - Contrôle certificat (SAN, dates, CA, chaîne complète).
- Inspecte logs Dovecot + Fail2ban pour les échecs.
- Automatisation : script de vérification périodique.
- Applique durcissement TLS + monitoring continu.