Port joignable ?

Vérifie si le port SMTP (25, 587 ou 465) est ouvert depuis votre emplacement actuel.

SMTP (25)

PowerShell (Windows)

Test-NetConnection Natif

Test-NetConnection -ComputerName mail.example.com -Port 25

nc / ncat Outil complémentaire

ncat -vz mail.example.com 25

Shell Unix (bash)

bash /dev/tcp Natif

timeout 5 bash -c "</dev/tcp/mail.example.com/25" && echo open || echo closed

nc Outil complémentaire

nc -vz mail.example.com 25

Submission (587)

PowerShell (Windows)

Test-NetConnection Natif

Test-NetConnection -ComputerName mail.example.com -Port 587

nc / ncat Outil complémentaire

ncat -vz mail.example.com 587

Shell Unix (bash)

bash /dev/tcp Natif

timeout 5 bash -c "</dev/tcp/mail.example.com/587" && echo open || echo closed

nc Outil complémentaire

nc -vz mail.example.com 587

SMTPS (465)

PowerShell (Windows)

Test-NetConnection Natif

Test-NetConnection -ComputerName mail.example.com -Port 465

nc / ncat Outil complémentaire

ncat -vz mail.example.com 465

Shell Unix (bash)

bash /dev/tcp Natif

timeout 5 bash -c "</dev/tcp/mail.example.com/465" && echo open || echo closed

nc Outil complémentaire

nc -vz mail.example.com 465

Bannière + EHLO

Ouvre la connexion, lit la bannière 220 et la réponse EHLO avec les capacités proposées.

Eigener Mailserver

PowerShell (Windows)

TcpClient (.NET) Natif

$h = "mail.example.com"; $p = 25
$c = New-Object Net.Sockets.TcpClient($h, $p)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("EHLO test.example.com")
Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("QUIT"); $c.Close()

nc / ncat Outil complémentaire

"EHLO test.example.com`r`nQUIT`r`n" | ncat mail.example.com 25

Shell Unix (bash)

bash /dev/tcp Natif

exec 3<>/dev/tcp/mail.example.com/25
printf 'EHLO test.example.com\r\nQUIT\r\n' >&3
cat <&3
exec 3<&-

nc Outil complémentaire

( printf 'EHLO test.example.com\r\nQUIT\r\n'; sleep 1 ) | nc mail.example.com 25

Microsoft 365

PowerShell (Windows)

TcpClient (.NET) Natif

$h = "contoso-com.mail.protection.outlook.com"; $p = 25
$c = New-Object Net.Sockets.TcpClient($h, $p)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("EHLO test.example.com")
Start-Sleep -Milliseconds 400; while ($c.Available) { $r.ReadLine() }
$w.WriteLine("QUIT"); $c.Close()

nc / ncat Outil complémentaire

"EHLO test.example.com`r`nQUIT`r`n" | ncat contoso-com.mail.protection.outlook.com 25

Shell Unix (bash)

bash /dev/tcp Natif

exec 3<>/dev/tcp/contoso-com.mail.protection.outlook.com/25
printf 'EHLO test.example.com\r\nQUIT\r\n' >&3
cat <&3
exec 3<&-

nc Outil complémentaire

( printf 'EHLO test.example.com\r\nQUIT\r\n'; sleep 1 ) | nc contoso-com.mail.protection.outlook.com 25

Tester STARTTLS

Établit une connexion STARTTLS et affiche le certificat.

Submission (587)

PowerShell (Windows)

SslStream (.NET) Natif

$h = "mail.example.com"; $p = 587
$c = New-Object Net.Sockets.TcpClient($h, $p)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine() | Out-Null
$w.WriteLine("EHLO test.example.com"); Start-Sleep -Milliseconds 200; while ($c.Available) { $r.ReadLine() | Out-Null }
$w.WriteLine("STARTTLS"); $r.ReadLine()
$ssl = New-Object Net.Security.SslStream($s, $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
([Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate) | Format-List Subject, Issuer, NotBefore, NotAfter
$ssl.Dispose(); $c.Close()

openssl Outil complémentaire

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

Shell Unix (bash)

openssl Natif

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

swaks Outil complémentaire

swaks --server mail.example.com:587 -tls --quit-after TLS

Microsoft 365

PowerShell (Windows)

SslStream (.NET) Natif

$h = "smtp.office365.com"; $p = 587
$c = New-Object Net.Sockets.TcpClient($h, $p)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine() | Out-Null
$w.WriteLine("EHLO test.example.com"); Start-Sleep -Milliseconds 200; while ($c.Available) { $r.ReadLine() | Out-Null }
$w.WriteLine("STARTTLS"); $r.ReadLine()
$ssl = New-Object Net.Security.SslStream($s, $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
([Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate) | Format-List Subject, Issuer, NotBefore, NotAfter
$ssl.Dispose(); $c.Close()

openssl Outil complémentaire

openssl s_client -starttls smtp -crlf -connect smtp.office365.com:587 -servername smtp.office365.com

Shell Unix (bash)

openssl Natif

openssl s_client -starttls smtp -connect smtp.office365.com:587 -servername smtp.office365.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

swaks Outil complémentaire

swaks --server smtp.office365.com:587 -tls --quit-after TLS

Vous pouvez ensuite continuer à saisir manuellement (EHLO, puis QUIT). openssl est un outil complémentaire, disponible sous Windows p. ex. via Git for Windows, et fonctionne aussi dans PowerShell.

TLS implicite (465)

Se connecte directement en TLS sur le port 465 (SMTPS, TLS implicite).

Impliztes TLS (465)

PowerShell (Windows)

SslStream (.NET) Natif

$h = "mail.example.com"; $p = 465
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
([Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate) | Format-List Subject, Issuer, NotAfter
$ssl.Dispose(); $c.Close()

openssl Outil complémentaire

openssl s_client -connect mail.example.com:465 -servername mail.example.com

Shell Unix (bash)

openssl Natif

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

swaks Outil complémentaire

swaks --server mail.example.com -p 465 --tlsc --quit-after BANNER

Envoyer un message de test (flux SMTP)

Construit ligne par ligne la conversation SMTP complète (EHLO, MAIL FROM, RCPT TO, DATA, QUIT) et envoie un vrai message de test : avec les outils natifs, sans outil complémentaire.

PowerShell (Windows)

TcpClient (.NET) Natif

$h = "mail.example.com"; $p = 25
$from = "sender@example.com"; $to = "recipient@example.com"
$c = New-Object Net.Sockets.TcpClient($h, $p)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
function Talk($line) { if ($line) { $w.WriteLine($line) }; Start-Sleep -Milliseconds 300; while ($c.Available) { $r.ReadLine() } }
Talk $null
Talk "EHLO test.example.com"
Talk "MAIL FROM:<$from>"
Talk "RCPT TO:<$to>"
Talk "DATA"
$w.WriteLine("Subject: SMTP-Test")
$w.WriteLine("From: $from")
$w.WriteLine("To: $to")
$w.WriteLine("")
$w.WriteLine("Testnachricht via reinem SMTP-Stream.")
Talk "."
Talk "QUIT"
$c.Close()

Send-MailMessage Outil complémentaire

Send-MailMessage -SmtpServer mail.example.com -Port 25 -From sender@example.com -To recipient@example.com -Subject "SMTP-Test" -Body "SMTP-Test $(Get-Date -Format o)"

Shell Unix (bash)

bash /dev/tcp Natif

exec 3<>/dev/tcp/mail.example.com/25
send() { printf '%s\r\n' "$1" >&3; }
resp() { while IFS= read -r -t 3 line <&3; do printf '%s\n' "$line"; case $line in [0-9][0-9][0-9]" "*) break;; esac; done; }
resp
send "EHLO test.example.com"; resp
send "MAIL FROM:<sender@example.com>"; resp
send "RCPT TO:<recipient@example.com>"; resp
send "DATA"; resp
send "Subject: SMTP-Test"
send "From: sender@example.com"
send "To: recipient@example.com"
send ""
send "Testnachricht via reinem SMTP-Stream."
send "."; resp
send "QUIT"; resp
exec 3<&-

swaks Outil complémentaire

swaks --server mail.example.com:25 --from sender@example.com --to recipient@example.com

Le flux brut circule en clair sur le port 25, adapté à un relais ou au MX sans authentification. Pour le port 587 avec STARTTLS et AUTH, utilisez swaks ou openssl. Send-MailMessage est officiellement obsolète, mais fonctionne encore.

Autres domaines