Tester la connexion IMAP

Se connecte à une boîte aux lettres et liste les dossiers : vérifie en une fois la joignabilité, les identifiants et les droits.

IMAPS (993)

PowerShell (Windows)

SslStream (.NET) Natif

$h = "mail.example.com"; $p = 993
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$r = New-Object IO.StreamReader($ssl)
$w = New-Object IO.StreamWriter($ssl); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine()
$w.WriteLine('a1 LOGIN user@example.com "P@ssw0rd"'); $r.ReadLine()
$w.WriteLine("a2 LIST \"\" *"); Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("a3 LOGOUT"); $c.Close()

openssl Outil complémentaire

openssl s_client -crlf -connect mail.example.com:993

Shell Unix (bash)

openssl Natif

openssl s_client -crlf -quiet -connect mail.example.com:993 <<'EOF'
a1 LOGIN user@example.com "P@ssw0rd"
a2 LIST "" *
a3 LOGOUT
EOF

curl Outil complémentaire

curl -v --url "imaps://mail.example.com:993" --user "user@example.com"

Microsoft 365

PowerShell (Windows)

SslStream (.NET) Natif

$h = "outlook.office365.com"; $p = 993
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$r = New-Object IO.StreamReader($ssl)
$w = New-Object IO.StreamWriter($ssl); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine()
$w.WriteLine('a1 LOGIN user@contoso.com "P@ssw0rd"'); $r.ReadLine()
$w.WriteLine("a2 LIST \"\" *"); Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("a3 LOGOUT"); $c.Close()

openssl Outil complémentaire

openssl s_client -crlf -connect outlook.office365.com:993

Shell Unix (bash)

openssl Natif

openssl s_client -crlf -quiet -connect outlook.office365.com:993 <<'EOF'
a1 LOGIN user@contoso.com "P@ssw0rd"
a2 LIST "" *
a3 LOGOUT
EOF

curl Outil complémentaire

curl -v --url "imaps://outlook.office365.com:993" --user "user@contoso.com"

Remplacez P@ssw0rd par le vrai mot de passe. Microsoft 365 a désactivé l'authentification Basic pour IMAP ; il faut y utiliser OAuth 2.0, donc une simple tentative LOGIN échoue comme prévu.

Capacités IMAP

Affiche les capacités annoncées par le serveur, y compris les méthodes d'authentification prises en charge (AUTH=PLAIN, AUTH=XOAUTH2 ...).

IMAPS (993)

PowerShell (Windows)

SslStream (.NET) Natif

$h = "mail.example.com"; $p = 993
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$r = New-Object IO.StreamReader($ssl)
$w = New-Object IO.StreamWriter($ssl); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine()
$w.WriteLine("a1 CAPABILITY"); Start-Sleep -Milliseconds 300; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("a2 LOGOUT"); $c.Close()

openssl Outil complémentaire

openssl s_client -crlf -connect mail.example.com:993

Shell Unix (bash)

openssl Natif

printf 'a1 CAPABILITY\r\na2 LOGOUT\r\n' | openssl s_client -crlf -quiet -connect mail.example.com:993 2>/dev/null

curl Outil complémentaire

curl -sv --url "imaps://mail.example.com:993" 2>&1 | grep -i capability

État de la boîte aux lettres

Interroge le nombre de messages et de messages non lus dans la boîte de réception : utile pour confirmer une remise.

PowerShell (Windows)

SslStream (.NET) Natif

$h = "mail.example.com"; $p = 993
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$r = New-Object IO.StreamReader($ssl)
$w = New-Object IO.StreamWriter($ssl); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine()
$w.WriteLine('a1 LOGIN user@example.com "P@ssw0rd"'); $r.ReadLine()
$w.WriteLine("a2 STATUS INBOX (MESSAGES UNSEEN)"); Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("a3 LOGOUT"); $c.Close()

curl Outil complémentaire

curl.exe -v --url "imaps://mail.example.com:993/INBOX" --user "user@example.com" --request "STATUS INBOX (MESSAGES UNSEEN)"

Shell Unix (bash)

openssl Natif

openssl s_client -crlf -quiet -connect mail.example.com:993 <<'EOF'
a1 LOGIN user@example.com "P@ssw0rd"
a2 STATUS INBOX (MESSAGES UNSEEN)
a3 LOGOUT
EOF

curl Outil complémentaire

curl --url "imaps://mail.example.com:993/INBOX" --user "user@example.com" --request "STATUS INBOX (MESSAGES UNSEEN)"

Remplacez P@ssw0rd par le vrai mot de passe.

Tester POP3

Se connecte via POP3 et interroge avec STAT le nombre et la taille des messages en attente.

PowerShell (Windows)

SslStream (.NET) Natif

$h = "mail.example.com"; $p = 995
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$r = New-Object IO.StreamReader($ssl)
$w = New-Object IO.StreamWriter($ssl); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine()
$w.WriteLine("USER user@example.com"); $r.ReadLine()
$w.WriteLine("PASS P@ssw0rd"); $r.ReadLine()
$w.WriteLine("STAT"); $r.ReadLine()
$w.WriteLine("QUIT"); $c.Close()

openssl Outil complémentaire

openssl s_client -crlf -connect mail.example.com:995

Shell Unix (bash)

openssl Natif

openssl s_client -crlf -quiet -connect mail.example.com:995 <<'EOF'
USER user@example.com
PASS P@ssw0rd
STAT
QUIT
EOF

curl Outil complémentaire

curl -v --url "pop3s://mail.example.com:995" --user "user@example.com"

Remplacez P@ssw0rd par le vrai mot de passe. Selon le client, POP3 supprime les messages après la récupération ; un simple test STAT ne le fait pas.

IMAP STARTTLS (143)

Établit une connexion STARTTLS sur le port en clair 143 et affiche le certificat.

PowerShell (Windows)

TcpClient (.NET) Natif

$c = New-Object Net.Sockets.TcpClient("mail.example.com", 143)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine()
$w.WriteLine("a1 STARTTLS"); $r.ReadLine()
$ssl = New-Object Net.Security.SslStream($s, $false, ({ $true }))
$ssl.AuthenticateAsClient("mail.example.com")
([Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate) | Format-List Subject, NotAfter
$ssl.Dispose(); $c.Close()

openssl Outil complémentaire

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

Shell Unix (bash)

openssl Natif

openssl s_client -starttls imap -connect mail.example.com:143 </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

curl Outil complémentaire

curl -v --url "imap://mail.example.com:143" --ssl-reqd

Autres domaines