Add Test-SMTPRelay-M365.ps1
This commit is contained in:
parent
02ede18d6b
commit
f5ea8371b2
60
Test-SMTPRelay-M365.ps1
Normal file
60
Test-SMTPRelay-M365.ps1
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Test unauthenticated SMTP relay via Microsoft 365 using MX record and IP-based connector.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
This script sends a test email through Microsoft 365 (Exchange Online) using a connector
|
||||||
|
that allows mail relay based on the sender's IP address. It does not require authentication
|
||||||
|
and is useful for testing printers, scanners, or any other device that cannot use modern SMTP auth.
|
||||||
|
|
||||||
|
.AUTHOR
|
||||||
|
Generic / Public version (sanitized for open-source use)
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Requires that your public IP is allowed in an Exchange Online connector.
|
||||||
|
Use the MX hostname (e.g. yourdomain-nl.mail.protection.outlook.com) as the SMTP endpoint.
|
||||||
|
|
||||||
|
# CHANGELOG
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Date | Version | Author | Description
|
||||||
|
------------|---------|----------------|------------------------------------------
|
||||||
|
2025-07-18 | 1.0.0 | Public / GPT | Initial release for generic SMTP relay test
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
#>
|
||||||
|
|
||||||
|
# Variables (edit to match your domain and connector setup)
|
||||||
|
$from = "relay@yourdomain.com"
|
||||||
|
$to = "relay@yourdomain.com"
|
||||||
|
$smtpServer = "yourdomain-nl.mail.protection.outlook.com" # Replace with your actual MX record
|
||||||
|
$smtpPort = 25
|
||||||
|
$subject = "SMTP Relay Test via Microsoft 365 Connector"
|
||||||
|
$body = "This message was sent without authentication using an IP-allowed connector."
|
||||||
|
|
||||||
|
# Create email message
|
||||||
|
$message = New-Object system.net.mail.mailmessage
|
||||||
|
$message.From = $from
|
||||||
|
$message.To.Add($to)
|
||||||
|
$message.Subject = $subject
|
||||||
|
$message.Body = $body
|
||||||
|
$message.IsBodyHtml = $false
|
||||||
|
|
||||||
|
# Configure SMTP client (unauthenticated, no TLS)
|
||||||
|
$smtp = New-Object Net.Mail.SmtpClient($smtpServer, $smtpPort)
|
||||||
|
$smtp.EnableSsl = $false
|
||||||
|
$smtp.DeliveryMethod = "Network"
|
||||||
|
$smtp.UseDefaultCredentials = $true
|
||||||
|
|
||||||
|
Write-Host "⏳ Attempting SMTP relay via $smtpServer..."
|
||||||
|
|
||||||
|
try {
|
||||||
|
$smtp.Send($message)
|
||||||
|
Write-Host "`n✅ Message successfully sent via connector."
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host "`n❌ Failed to send mail:"
|
||||||
|
Write-Host $_.Exception.Message
|
||||||
|
if ($_.Exception.InnerException) {
|
||||||
|
Write-Host "`nDetails:"
|
||||||
|
Write-Host $_.Exception.InnerException.Message
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user