A free SMTP relay that still takes a username and password, for devices that cannot do OAuth 2.0.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.

Everything you need for the Microsoft 365 SMTP AUTH shutdown.
Find out what breaks in your tenant, check whether your hardware has a way
out, and keep it sending β including a free relay for the devices that will
never speak OAuth.
The relay is free with no paid tier, capped at 200 messages/day, and sends
from a shared @msgwing.com address rather than your own
(why).
Get a free account β Β· Exchange Online migration β Β· Documentation site Β· Quickstart Β· Code examples Β· FAQ Β· Deutsch Β· Polski
Arrived from the GitHub Marketplace?
This page is the README of the whole project, which is a free SMTP relay β so the action you came for is below the fold. Here it is:
It checks outbound SMTP from the runner β ports, TLS, certificate and the AUTH mechanisms offered β and fails the job when the mail server's certificate is inside the window you set. Nobody watches a mail certificate; it expires on a Sunday and the first report is somebody saying scanning stopped working.
No install and no npm: the tool has no dependencies, so the action runs the file shipped beside it. Every input, and the scheduled-canary setup that reports without failing, is in GitHub Actions further down.
| 1. Audit your tenant | Find-SmtpAuthExposure.ps1 β read-only. Reports every mailbox that can still use SMTP AUTH, counting the ones that inherit the tenant setting separately, because the usual -eq $false one-liner misses those entirely and can report zero on a fully exposed tenant. |
| 2. Check your hardware | Compatibility list for printers, MFPs, scanners and NAS units β machine-readable, backed by data/devices.json and published as data at docs.msgwing.com/data/devices.json. Which models have OAuth firmware, and which ones the vendor has ruled out, each row linking the vendor's own statement. |
| 3. Keep it sending | A free SMTP relay β an outgoing mail gateway that still accepts a username and password β with 21 code examples across 19 languages, Ansible and Docker Compose recipes, and scan to email setup by printer brand for HP, Canon, Ricoh, Xerox, Kyocera, Sharp, Brother and the rest. |
Plus what every error message actually means, and a migration guide that covers Graph API, Direct Send and paid relays β not just this one.
How big is this actually? Nobody had published a number, so we measure one every week: at least 24,960 public files on GitHub still contain a Microsoft 365 SMTP hostname. That is a count of files, not of systems that will break, and the page says exactly what it does and does not mean β along with the raw data, so you can check it rather than trust it.
Getting
535 5.7.139 Authentication unsuccessful, basic authentication is disabled? That's Microsoft switching off Basic auth for SMTP AUTH β start here. Three of the four causes are still reversible until the end of December 2026.Want to know the day this changes? Subscribe to the dated timeline β one comment per confirmed change, nothing else.
Paste whatever your client printed β a Postfix SASL line, a Python traceback,
1102off a Kyocera panel, or thecurl: (67) Login deniedthat hides the server's answer entirely. They are the same refusal wearing different clothes, and it says which case you are in and whether it can still be switched back on. No install, nothing sent.
That's the whole thing β no SDK, no API key, just SMTP credentials that work with anything that already speaks SMTP.
| Server | mx.msgwing.com |
| Port | 587 (STARTTLS) or 465 (SSL/TLS) |
| Login | your randomly generated @msgwing.com address |
| Cost | free β up to 200 emails/day (limits) |
| Catch | mail is sent from @msgwing.com, not your own domain (why) |
@msgwing.com login and password..env.example to .env and fill in your credentials.export $(grep -v '^#' .env | xargs) first), or pick your language from the Code Examples table β every example reads the same .env variables.Test-NetConnection mx.msgwing.com -Port 587 on Windows, or openssl s_client -starttls smtp -connect mx.msgwing.com:587 elsewhere. That is what most first-run failures turn out to be. Then see Error messages Β· Troubleshooting.Prefer not to install anything locally? Every runtime used below (Python, PHP, Node, Ruby, Go, Java, Kotlin/Gradle, .NET, Rust) is preinstalled in the included Dev Container / Codespace.

mx.msgwing.com,
not a static image: every completed run is drawn, and the spacing printed on
it is measured from those runs rather than copied from the schedule. GitHub
delays scheduled workflows, so the cron asks for 15 minutes and the median
gap is closer to 45.Good for: contact forms Β· password resets Β· CI/CD and monitoring alerts Β· scan-to-email Β· IoT and device notifications Β· homelabs.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/zerosmtp)<a href="https://allmcps.com/mcp/zerosmtp"><img src="https://allmcps.com/api/badge/zerosmtp?style=directory" alt="Zerosmtp on AllMCPs" /></a>