NetSendo
Platform Updates

NetSendo v2.11.0: wbudowany MTA i kontrola portu 25 oraz PTR

NetSendo Team7 min czytania

Własny serwer pocztowy wiąże się z kilkoma znanymi problemami. Dostawca hostingu może bez ostrzeżenia blokować wychodzący port 25. Adres IP serwera może nie mieć rekordu odwrotnego DNS (PTR). Rekord SPF może nie zawierać adresu, z którego faktycznie wychodzi poczta. Każdy z tych problemów może sprawić, że wiadomości trafią do spamu albo utkną w kolejce.

NetSendo v2.11.0 rozwiązuje je wszystkie. NetSendo MTA jest teraz standardową usługą w każdej instalacji. Sam sprawdza swoją konfigurację tak, jak widzi ją serwer odbiorcy, i dokładnie wskazuje, co trzeba poprawić.

TL;DR: W v2.11.0 NetSendo MTA (nmi-mta) jest częścią domyślnego docker-compose.yml i korzysta z opublikowanego obrazu. Przekazuje pocztę w instalacjach GOLD. Nowy panel „Czy ten serwer może wysyłać pocztę” sprawdza wychodzący port 25, rekord PTR i wpis SPF. MTA przedstawia się w HELO nazwą PTR serwera, a kontrola SPF szuka wpisów ip4:/ip6: zamiast include:, który nigdy nie działał.

🚀 Co nowego w v2.11.0

MTA jako standardowa usługa

Przed tym wydaniem kontener MTA uruchamiał się tylko z docker compose --profile nmi. Był budowany na serwerze z plików, których install.sh nigdy nie pobierał. Dostawca był też ukryty, jeśli nie ustawiono NMI_ENABLED=true, a żadna instalacja nie miała tego ustawienia. W praktyce prawie nikt nie mógł z niego korzystać.

Teraz MTA działa jak każda inna usługa NetSendo:

  • ✅ Jest zdefiniowany w docker-compose.yml i startuje razem z resztą
  • ✅ Korzysta z opublikowanego obrazu ghcr.io/netsendo/netsendo:mta-<wersja>, budowanego tym samym workflow co aplikacja
  • ✅ Konfiguracja i wtyczki są w obrazie, więc nic nie jest montowane z katalogu instalacji
  • ✅ Nie publikuje portów na hoście, więc kilka instalacji na jednym serwerze nie koliduje już na portach 2525/2587

Dostawca NetSendo MTA pojawia się w Ustawienia → Skrzynki, gdy tylko MTA odpowiada. Bez GOLD dostawca ma plakietkę GOLD. MTA niczego nie przekazuje, dopóki instalacja GOLD nie zapisze skrzynki z tym dostawcą, bo przyjmuje tylko sesje logujące się danymi wydanymi przez NetSendo.

⚠️ Ważne: NMI_ENABLED nie jest już odczytywane. Pliki .env skopiowane ze starszych przykładów zawierają NMI_ENABLED=false, choć nikt świadomie nie wybrał tej wartości. Aby zrezygnować z MTA, użyj NMI_DISABLED=true. Ukrywa to dostawcę i zatrzymuje zaplanowane zadania NMI.
# .env — opcjonalne ustawienia NMI
NMI_DISABLED=true          # ukrywa dostawcę i zatrzymuje zadania NMI
NMI_MTA_HOST=nmi-mta       # nazwa usługi, przez którą aplikacja łączy się z MTA
NMI_HELO_HOST=mail.example.com  # nadpisuje nazwę HELO (opcjonalnie)
NMI_EGRESS_PROBE=false     # wyłącza test wychodzący (opcjonalnie)

Aplikacja łączy się z MTA po nazwie usługi nmi-mta. Stara nazwa netsendo-mta działa, dopóki kontener ją nosi.

„Czy ten serwer może wysyłać pocztę?”

Ten test jest dostępny w sekcji NetSendo MTA formularza skrzynki oraz w Ustawienia → Infrastruktura pocztowa. MTA uruchamia go przy starcie i ponownie co kilka godzin. Sprawdza serwer z zewnątrz, tak jak widzi go odbiorca: łączy się z serwerem MX Gmaila na porcie 25, niczego nie wysyła i odczytuje adres, który MX dla niego podaje.

🔌

Wychodzący port 25

Pokazuje, czy port 25 jest otwarty, czy zablokowany przez dostawcę. Jeśli jest zablokowany, poczta zostałaby w kolejce, a panel podpowiada, co zrobić.

🔁

Publiczny IP i PTR

Pokazuje publiczny adres, jego rekord PTR i to, czy nazwa z PTR wskazuje z powrotem na ten sam adres.

📋

Wpis SPF

Podaje dokładny wpis ip4:… do dodania w rekordzie SPF domeny nadawczej, z przyciskiem kopiowania.

HELO z nazwą PTR serwera

Poczta wysyłana bez dedykowanego IP przedstawiała się w HELO nazwą hosta kontenera, której żaden odbiorca nie mógł rozwiązać. Teraz, jeśli PTR publicznego adresu wskazuje nazwę, która rozwiązuje się z powrotem na ten adres, MTA używa tej nazwy. To tak, jakby podać prawdziwy adres zwrotny zamiast numeru pokoju w budynku. W razie potrzeby nadal możesz to nadpisać przez NMI_HELO_HOST.

Poprawiona kontrola SPF

Kontrola dostarczalności wymagała wcześniej include:_spf.<host instalacji>, czyli rekordu, którego nikt nie publikuje. Teraz szuka publicznego adresu serwera albo dedykowanego IP skrzynki jako wpisu ip4:/ip6:, również w postaci zakresu. Jeśli go brakuje, zobaczysz ostrzeżenie, a wygenerowany rekord go doda:

example.com.  TXT  "v=spf1 include:_spf.google.com ip4:203.0.113.10 ~all"

💼 Korzyści i przypadki użycia

🛒

E-commerce: niezawodna poczta transakcyjna

Przypomnienia o porzuconym koszyku i potwierdzenia zamówień muszą dotrzeć na czas. Gdy port 25, PTR i SPF są sprawdzone przed startem:

  • dowiadujesz się o zablokowanym porcie, zanim maile o koszyku utkną w kolejce
  • sekwencje posprzedażowe wychodzą ze zgodnymi PTR, HELO i SPF
  • nie płacisz za każdy mail zewnętrznemu przekaźnikowi
🚀

SaaS: onboarding, który trafia do skrzynki odbiorczej

Maile onboardingowe i przeciwdziałające odejściom klientów działają tylko wtedy, gdy użytkownicy je widzą. Wbudowany MTA utrzymuje całą ścieżkę wysyłki na Twojej infrastrukturze, a regularne testy wychwytują zmiany w DNS lub sieci, zanim wpłyną na dostarczalność.

🏢

Agencje: kilka instalacji na jednym hoście

MTA nie publikuje już portów, więc możesz uruchomić osobne instalacje NetSendo dla różnych klientów na jednym serwerze bez konfliktów na portach 2525/2587. Każdy klient zachowuje własne dane i konfigurację.

🛠️ Aktualizacja krok po kroku

  1. Pobierz nowy plik compose

    Zastąp swój docker-compose.yml wersją z v2.11.0. Dodaje ona usługę nmi-mta i wolumeny nmi-*.

  2. Uporządkuj .env

    Usuń NMI_ENABLED. Jeśli w ogóle nie chcesz korzystać z MTA, dodaj NMI_DISABLED=true.

  3. Pobierz obrazy i uruchom ponownie
    docker compose pull && docker compose up -d

    Jeśli wcześniej uruchamiałeś MTA z --profile nmi i --build, przestań używać obu flag. Usługa działa teraz z opublikowanego obrazu.

  4. Sprawdź wynik testu wysyłki

    Otwórz Ustawienia → Infrastruktura pocztowa. Zobaczysz stan portu 25, publiczny IP z rekordem PTR i potrzebny wpis SPF.

  5. Popraw PTR i SPF

    Ustaw PTR w panelu dostawcy hostingu, a potem skopiuj wpis ip4: do istniejącego rekordu SPF domeny. Nie twórz drugiego rekordu SPF.

  6. Utwórz skrzynkę (GOLD)

    W Ustawienia → Skrzynki wybierz NetSendo MTA i zapisz. MTA zacznie przekazywać pocztę, gdy ta skrzynka zostanie zapisana.

ℹ️ Uwaga: Jeśli zostawisz stary plik compose, instalacja nadal będzie działać. Formularz skrzynki pokaże jedynie, że MTA nie odpowiada.

Częste problemy

  • Zablokowany port 25: Wielu dostawców chmurowych domyślnie go blokuje. Nowy przewodnik w docs/NMI.md opisuje Google Cloud, AWS, Azure, DigitalOcean, Hetzner, Vultr, Linode, OVHcloud i Contabo.
  • Dwa rekordy SPF: Domena może mieć tylko jeden. Dodaj wpis ip4: do rekordu, który już masz.
  • PTR bez rekordu DNS w przód: Nazwa z PTR musi też mieć rekord A/AAAA wskazujący na ten sam adres IP.

🎯 Wskazówki ekspertów

1
Sprawdź rDNS samodzielnie

Uruchom dig -x 203.0.113.10 +short, a potem dig A dla zwróconej nazwy. Oba wyniki powinny się zgadzać i to właśnie sprawdza panel.

2
Utrzymuj prosty SPF

Wpisy ip4: nie wliczają się do limitu 10 zapytań DNS w SPF, więc to dobry sposób na autoryzację serwera.

3
Nie wyłączaj testu wychodzącego

Test powtarza się co kilka godzin i wychwytuje zmiany, na przykład nowy IP albo nową politykę dostawcy. Ustaw NMI_EGRESS_PROBE=false tylko wtedy, gdy Twoja sieć nie pozwala na takie połączenia.

4
Mniejsza powierzchnia ataku

Bez publikowanych portów i z logowaniem tylko danymi wydanymi przez NetSendo MTA nie może działać jako otwarty przekaźnik. Utrzymaj ten stan: nie dodawaj do usługi mapowań portów.

🎉 Podsumowanie

NetSendo v2.11.0 znacznie ułatwia konfigurację wysyłki z własnego serwera. MTA jest w każdej instalacji, działa z przetestowanego obrazu i informuje, czy serwer rzeczywiście może dostarczać pocztę. Poprawne wskazówki SPF i HELO oparte na PTR zwiększają szansę, że Twoje maile trafią do skrzynki odbiorczej, a wszystko działa na infrastrukturze, którą sam kontrolujesz.

Chcesz wysyłać z własnego serwera?

Zaktualizuj do v2.11.0 i uruchom nowy test wysyłki już dziś:

Poznaj inne integracje i ⭐ daj nam gwiazdkę na GitHubie.

#mta#deliverability#spf#reverse-dns#self-hosted#docker#release
Udostępnij