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