Tests SMTP
Joignabilité, bannière, STARTTLS et message de test.
Port joignable ?
Vérifie si le port SMTP (25, 587 ou 465) est ouvert depuis votre emplacement actuel.
SMTP (25)
- Hôte / serveur
-
mail.example.comModifier dans le générateur →
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)
- Hôte / serveur
-
mail.example.comModifier dans le générateur →
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)
- Hôte / serveur
-
mail.example.comModifier dans le générateur →
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
- Hôte / serveur
-
mail.example.comModifier dans le générateur →
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)
- Hôte / serveur
-
mail.example.comModifier dans le générateur →
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
- Hôte / serveur
-
smtp.office365.comModifier dans le générateur →
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)
- Hôte / serveur
-
mail.example.comModifier dans le générateur →
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.
- Hôte / serveur
-
mail.example.comModifier dans le générateur → - Destinataire
-
recipient@example.comModifier dans le générateur →
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.