README.pl.md

August 30, 2026 · View on GitHub

ZeroSMTP

Wszystko, co potrzebne przy wyłączeniu SMTP AUTH w Microsoft 365.
Sprawdź, co się zepsuje w Twoim tenancie, ustal czy Twój sprzęt ma jakieś wyjście, i utrzymaj wysyłkę — razem z darmowym relayem dla urządzeń, które nigdy nie będą mówić OAuth.
Relay jest darmowy bez planu płatnego, z limitem 200 wiadomości/dzień, i wysyła ze współdzielonego adresu @msgwing.com, nie z Twojej domeny (dlaczego).

mx.msgwing.com status Odliczanie do wyłączenia Basic auth w Exchange Online Lint examples 21 gotowych przykładów Licencja: MIT

Odliczanie do wyłączenia Basic auth w Exchange Online (SMTP AUTH)

Załóż darmowe konto → · Migracja z Exchange Online → · Strona dokumentacji · Szybki start · Przykłady kodu · FAQ · English · Deutsch

Co tu jest

1. Audyt tenantaFind-SmtpAuthExposure.ps1 — tylko czyta. Raportuje każdą skrzynkę, która nadal może użyć SMTP AUTH, licząc osobno te, które dziedziczą ustawienie tenanta — bo typowy jednolinijkowiec -eq $false pomija je zupełnie i potrafi pokazać zero na w pełni narażonym tenancie.
2. Sprawdzenie sprzętuLista zgodności — maszynowo czytalna, oparta na data/devices.json. Które modele mają firmware z OAuth, a które producent skreślił, z odnośnikiem do każdego oświadczenia.
3. Utrzymanie wysyłkiDarmowy relay SMTP przyjmujący login i hasło, z 21 przykładami w 19 językach, gotowcami dla Ansible i Docker Compose oraz konfiguracją drukarek per marka.

Plus co dokładnie znaczy każdy komunikat błędu i przewodnik migracji, który omawia Graph API, Direct Send i płatne relaye — nie tylko ten jeden.

Dostajesz 535 5.7.139 Authentication unsuccessful, basic authentication is disabled? Microsoft domyślnie wyłącza uwierzytelnianie Basic dla SMTP AUTH z końcem grudnia 2026. Drukarki, NAS-y, zadania backupu i monitoring, które nie potrafią OAuth, przestają wysyłać — a te alarmowe padają po cichu, więc dowiadujesz się o tym dopiero w trakcie awarii, o której miały ostrzec.

Datowany harmonogram → — zasubskrybuj, a dostaniesz e-mail w dniu, w którym Microsoft zmieni którąkolwiek datę. Grudzień 2026 to wyłączenie domyślne, nie usunięcie; datę ostateczną Microsoft ogłasza w drugiej połowie 2027.

Przewodnik migracji → omawia wszystkie opcje (Graph API, Direct Send, własny relay, usługi płatne), nie tylko tę jedną. Co się zepsuje → to lista do audytu, z PowerShellem do znalezienia swojej ekspozycji.


curl --url "smtps://mx.msgwing.com:465" \
  --user "$ZEROSMTP_USERNAME:$ZEROSMTP_PASSWORD" \
  --mail-from "$ZEROSMTP_FROM" --mail-rcpt "$ZEROSMTP_TO" \
  --upload-file <(printf 'Subject: Test\r\n\r\nHello from ZeroSMTP!') --ssl-reqd

I to wszystko — żadnego SDK, żadnego klucza API, po prostu dane SMTP, które działają z czymkolwiek, co już obsługuje SMTP.

Serwermx.msgwing.com
Port587 (STARTTLS) lub 465 (SSL/TLS)
LoginTwój losowo wygenerowany adres @msgwing.com
Kosztza darmo — do 200 maili dziennie (limity)
Haczykmaile wychodzą z @msgwing.com, nie z Twojej domeny (dlaczego)

Szybki start

  1. Zarejestruj i aktywuj darmowe konto na msgwing.com, a następnie skopiuj wygenerowany losowo login @msgwing.com i hasło.
  2. Skopiuj .env.example do .env i uzupełnij swoimi danymi.
  3. Uruchom powyższy snippet curl (najpierw export $(grep -v '^#' .env | xargs)), albo wybierz swój język z tabeli Przykłady kodu — każdy przykład korzysta z tych samych zmiennych w .env.
  4. Coś nie działa? Zobacz Komunikaty błędów · Rozwiązywanie problemów — najczęstszą przyczyną nieudanego pierwszego uruchomienia jest blokowanie wychodzących portów SMTP przez dostawcę chmury, a nie błąd w konfiguracji.

Wolisz nie instalować niczego lokalnie? Każde środowisko używane poniżej (Python, PHP, Node, Ruby, Go, Java, Kotlin/Gradle, .NET, Rust) jest już zainstalowane w dołączonym Dev Container / Codespace. Open in GitHub Codespaces

Sprawdzenie połączenia z mx.msgwing.com

Dlaczego ZeroSMTP?

  • Nic nie trzeba utrzymywać i nic nie trzeba płacić. Bez serwera pocztowego, bez klucza API, bez karty, bez progów cenowych za wolumen.
  • Działa ze wszystkim, co już obsługuje SMTP — aplikacje, skrypty, drukarki sieciowe, NAS-y, sprzęt IoT. Jeśli ma pole „serwer SMTP", zadziała.
  • Zwykłe SMTP AUTH nadal akceptowane. Żadnego OAuth2 do wdrożenia — a to właśnie sedno problemu dla starych urządzeń bez aktualizacji firmware'u.
  • Zarządzana reputacja. Konta są generowane losowo w domenie aktywnie monitorowanej pod kątem nadużyć, więc nie rozgrzewasz własnego IP.
  • 21 gotowych przykładów w 19 językach, korzystających z tych samych zmiennych środowiskowych, plus gotowce dla Ansible i Docker Compose oraz przewodniki dla Windows Server, Linuksa i drukarek.
  • Sprawdzalnie działa — odznaka statusu powyżej to realny test wykonywany na mx.msgwing.com co 6 godzin, a nie statyczny obrazek.

Dobre do: formularzy kontaktowych · resetów haseł · alertów z CI/CD i monitoringu · skan-do-mail · powiadomień IoT · homelabów.

⚠️ Tracisz SMTP AUTH w Exchange Online / Microsoft 365?

Microsoft domyślnie wyłącza uwierzytelnianie Basic dla SMTP AUTH z końcem grudnia 2026, co zepsuje drukarki i starsze aplikacje bez obsługi OAuth. Przeczytaj przewodnik migracji → — omawia wszystkie opcje (Graph API, Direct Send, własny relay, usługi płatne), nie tylko tę jedną.

Uruchom Find-SmtpAuthExposure.ps1, żeby dostać odpowiedź dla własnego tenanta. Skrypt tylko czyta i liczy osobno skrzynki dziedziczące ustawienie tenanta — te, które typowy jednolinijkowiec pomija.

Przewodniki konfiguracji: Drukarki sieciowe · Popularne aplikacje · Linux (Debian/Ubuntu/Rocky/Fedora/openSUSE) · Systemowy relay pocztowy (Postfix/msmtp/Exim4) · Windows Server · Migracja z Exchange Online SMTP AUTH · Alerty monitoringu · Lista zgodności OAuth · Urządzenia bez firmware z OAuth · Przypadki konkretnych urządzeń · Rozwiązywanie problemów · Niezawodność (ponawianie prób) · FAQ

Udało Ci się dzięki temu przywrócić wysyłkę na konkretnym urządzeniu? Napisz na jakim — zgłoszenie urządzenia zajmuje kilka minut. Producenci publikują ogólne listy modeli, ale gałęzie firmware'u, nazwy regionalne i rebrandingi OEM się od nich rozjeżdżają — dlatego zgłoszenie od kogoś, kto ma sprzęt pod ręką, to ta część listy zgodności, której nikt inny nie skopiuje. Potwierdzenie, że urządzenie działa, jest tak samo przydatne jak zgłoszenie takiego, które nie działa.

Jak to wypada na tle innych opcji?

ZeroSMTPGmail SMTP relayAmazon SESMailgun / SendGrid / Brevo (typowy darmowy plan)
KosztDarmowe, bez kartyDarmowe (osobiste konto Google)Płatność za email (limitowana darmowa pula tylko z AWS EC2, pierwsze 12 miesięcy)Darmowy plan, zwykle mocno ograniczony i wymagający rejestracji + weryfikacji domeny
KonfiguracjaRejestracja, kopiujesz dane SMTP, gotoweWymaga konta Google; regulamin Google odradza automatyczną/masową wysyłkę tą drogąWymaga konta AWS oraz wniosku o "production access" przed wysyłką do niezweryfikowanych adresówRejestracja + weryfikacja domeny dla pełnej funkcjonalności
Własna domena w "From"Nie — zawsze @msgwing.com (zobacz FAQ)Tak, Twój adres Gmail/WorkspaceTakTak, po zweryfikowaniu domeny
Najlepsze doFormularzy kontaktowych, resetów haseł, powiadomień, drukarek/IoT — wszędzie tam, gdzie adres nadawcy nie musi być Twoją domenąSkryptów osobistych o niskim wolumenieAplikacji produkcyjnych, które tego potrzebują i udźwigną konfigurację AWSFirm potrzebujących brandowanej wysyłki, które udźwigną konfigurację

Warunki darmowych planów powyżej zmieniają się w czasie — przed wyborem sprawdź aktualny cennik danego dostawcy.

A co z samodzielnym hostowaniem własnego serwera pocztowego?

Popularne, samodzielnie hostowane rozwiązania jak docker-mailserver, Mailu czy mailcow dają skrzynkę na własnej domenie i pełną kontrolę — ale to Ty utrzymujesz Postfix, DKIM/SPF/DMARC, filtrowanie spamu i reputację IP/domeny, co jest realną, ciągłą pracą, a nie jednorazową konfiguracją. ZeroSMTP to drugi biegun tego kompromisu: zero konfiguracji i zero utrzymania, w zamian za wysyłkę ze wspólnego adresu @msgwing.com zamiast własnej domeny. Jeśli już prowadzisz jedno z tych rozwiązań i działa — nie ma powodu, żeby zmieniać. Jeśli nie jesteś pewien, czy ten wysiłek się opłaca dla skryptu, formularza kontaktowego czy projektu pobocznego — ZeroSMTP nic nie kosztuje, żeby spróbować najpierw.

GitHub Actions

Używasz ZeroSMTP z poziomu workflow (alerty o błędach CI, powiadomienia o wdrożeniu, raporty cykliczne)? msgwing/send-email-action z GitHub Marketplace zamyka poniższą konfigurację w jednym kroku:

- uses: msgwing/send-email-action@v1
  with:
    username: ${{ secrets.ZEROSMTP_USERNAME }}
    password: ${{ secrets.ZEROSMTP_PASSWORD }}
    from: ${{ secrets.ZEROSMTP_USERNAME }}
    to: you@example.com
    subject: "Build nieudany"
    body: "Zobacz przebieg: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"

Przykłady kodu

Gotowe do użycia przykłady dla mx.msgwing.com:465 (SSL/TLS) lub :587 (STARTTLS), po jednym pliku na język:

JęzykPlik
Pythonpython-zerosmtp.py
PHP (PHPMailer)php-zerosmtp.php
PHP (Symfony Mailer)php-symfony-mailer-zerosmtp.php
Node.jsnode-zerosmtp.mjs
TypeScriptts-zerosmtp.ts
Bash (curl)bash-curl-zerosmtp.sh
Bash (swaks)bash-swaks-zerosmtp.sh
Javajava-zerosmtp.java
C# (.NET / MailKit)cs-zerosmtp.cs
Gogo-zerosmtp.go
Rubyruby-zerosmtp.rb
Rustrust-zerosmtp.rs
Kotlinkotlin-zerosmtp.kt
Elixirelixir-zerosmtp.exs
Lualua-zerosmtp.lua
Perlperl-zerosmtp.pl
C (libcurl)c-zerosmtp.c
Dartdart-zerosmtp.dart
Zig (libcurl)zig-zerosmtp.zig
Swiftswift-zerosmtp.swift
PowerShellpwsh-zerosmtp.ps1

Każdy przykład pobiera dane logowania ze zmiennych środowiskowych ZEROSMTP_* (ZEROSMTP_USERNAME, ZEROSMTP_PASSWORD, ZEROSMTP_FROM, ZEROSMTP_TO, ZEROSMTP_SUBJECT) — nigdy nie wpisuj prawdziwych danych na sztywno w skrypcie.

Gotowce wdrożeniowe

Nie każda migracja to zmiana w kodzie. Dwa miejsca, w których ustawienia SMTP faktycznie siedzą:

GotowiecPlikCo robi
Ansibleansible-zerosmtp.ymlPrzestawia systemową pocztę na flocie maszyn (cron, unattended-upgrades, systemd OnFailure=) na relay przez msmtp. Idempotentny; hasło podajesz przez -e albo ansible-vault, nigdy w pliku.
Docker Composedocker-compose-zerosmtp.ymlWysyła jedną wiadomość z kontenera, czytając .env. Przydatne, żeby sprawdzić dane logowania z wnętrza tej samej sieci, w której działa właściwa aplikacja.

Instalacja zależności

Każdy przykład wymagający zewnętrznej biblioteki ma odpowiadający mu manifest w katalogu głównym repo, więc instalujesz standardową komendą danego ekosystemu, zamiast ręcznie szukać nazw i wersji bibliotek:

Język(i)Instalacja
Node.js / TypeScriptnpm install
PHPcomposer install
Rustcargo build (zależności pobierają się automatycznie)
C#dotnet build cs-zerosmtp.csproj
Javamvn compile
Kotlingradle build
Swiftswift build
Zigzig build-exe zig-zerosmtp.zig -lc -lcurl (wymaga nagłówków libcurl)
Python, Ruby, Go, Bash, PowerShellbrak — tylko biblioteka standardowa

Dane do konfiguracji:

  • Login: losowo wygenerowany adres @msgwing.com
  • Serwer SMTP: mx.msgwing.com
  • Port: 587 (STARTTLS) lub 465 (SSL/TLS)
  • Szyfrowanie: SSL/TLS - wymagane

Dbamy o Twoją prywatność - Twoje dane nie są przetwarzane w żadnych celach marketingowych ani handlowych.

Bezpieczeństwo i Dostarczalność

Co robimy:

  • SPF, DKIM i DMARC (p=reject) są skonfigurowane spójnie na msgwing.com — sprawdź sam: dig txt msgwing.com, dig txt _dmarc.msgwing.com.
  • Konta nadużywające relay są aktywnie usuwane (zobacz FAQ).
  • Wysyłka jest limitowana per konto, żeby reputacja współdzielonej domeny pozostała dobra dla wszystkich (zobacz limity wysyłki).

Czego nie obiecujemy: współdzielona domena to współdzielone ryzyko. Żadne pojedyncze konto nie kontroluje reputacji całej puli — inaczej niż przy własnej domenie, gdzie tylko Ty możesz ją zepsuć. Jeśli poczta musi wychodzić z Twojej własnej domeny, ZeroSMTP jest złym wyborem — zobacz Alternatywy.

Czego nie ujawniamy i dlaczego: zobacz SECURITY.md.

Sprawdź to sam

Nie musisz wierzyć nam na słowo — zweryfikuj to za pomocą mail-tester.com:

  1. Utwórz darmowe konto SMTP na stronie msgwing.com
  2. Użyj naszego skryptu PowerShell: SendEmailTest_mail-tester.com.ps1
  3. Wygeneruj losowy email na mail-tester.com i wyślij wiadomość testową z Twojego adresu @msgwing.com
  4. Sprawdź wynik i szczegółową analizę

Jeśli masz pytania, napisz do nas: abuse@msgwing.com

Rejestracja odbywa się na stronie: https://msgwing.com

Historia gwiazdek

GitHub stars