Od audytu do działających SPF, DKIM i DMARC w jeden dzień roboczy, bez przerwy w działaniu poczty

Serwer pocztowy czterech domen firmowych niczego nie podpisywał, nie publikował polityki DMARC i był odrzucany przez Microsoft. Nasi inżynierowie sprawdzili go, przetestowali zmianę na jednej domenie i wdrożyli ją partiami. Efekt: wszystkie trzy mechanizmy przechodzą sprawdzenie w Gmailu, blokada Microsoftu została zdjęta, a użytkownicy niczego nie odczuli.

  • 1 dzień roboczy od audytu do wdrożenia
  • Zero przestojów
  • SPF, DKIM i DMARC przechodzą w Gmailu
Serwer z czterema modułami wysyła cztery koperty czterema równymi torami przez bramki SPF, DKIM i DMARC, każda z pomarańczowym haczykiem, do skrzynki odbiorczej

Serwer pocztowy czterech domen małych firm, z DNS rozproszonym u trzech operatorów

Wyzwanie

Serwer obsługiwał cztery domeny, ale żadna nie podpisywała poczty DKIM ani nie publikowała polityki DMARC, a jedna nie miała w ogóle rekordu SPF. Odkąd duzi dostawcy skrzynek zaostrzyli wymagania wobec nadawców, taka poczta częściej trafia do spamu albo jest odrzucana. Do tego wiadomości do skrzynek Microsoftu wracały z błędem 550 5.7.1 (S3150).

DNS czterech domen był rozproszony u trzech operatorów, więc każda zmiana oznaczała kilka paneli i osobne sprawdzenie.

Rozwiązanie

Najpierw audyt: konfiguracja Postfixa, Dovecota i amavisa, publiczny DNS wszystkich domen i logi z ostatnich dni. Potem plan w etapach, według priorytetów: najpierw DKIM, DMARC i blokada Microsoftu, potem utwardzanie i monitoring.

Jedna domena posłużyła za pilotaż, pozostałe poszły partiami według operatora DNS. Każdy rekord DNS sprawdzaliśmy z zewnątrz, na obu serwerach autorytatywnych i w publicznych resolverach, zanim domena zaczęła podpisywać pocztę. Każdy krok miał kopię konfiguracji i procedurę wycofania, a Postfix dostarczał pocztę nawet wtedy, gdyby podpisywanie zawiodło.

Wyniki

SPF
4 z 4 domen, do tego rekord dla nazwy HELO serwera
DKIM i DMARC
4 z 4 domen podpisuje DKIM i publikuje DMARC
Sprawdzenie w Gmailu
SPF, DKIM i DMARC zaliczone
Blokada Microsoftu
Zdjęta 1 godzinę 18 minut po pierwszej wiadomości do wsparcia
Przestój podczas wdrożenia
Zero
Od audytu do wdrożenia
1 dzień roboczy

Jak pracowaliśmy

  1. Audyt bez ingerencji

    Konfiguracja Postfixa, Dovecota i amavisa, rekordy DNS wszystkich domen i logi z ostatnich dni. Na tym etapie nic na serwerze nie zmienialiśmy.

  2. Plan w etapach

    Najpierw to, co najmocniej wpływa na dostarczalność: DKIM, DMARC i blokada Microsoftu. Utwardzanie i monitoring potem.

  3. Pilotaż na jednej domenie

    Dopiero potem pozostałe domeny, partiami według operatora DNS.

  4. Każdy rekord sprawdzony z zewnątrz

    Oba autorytatywne serwery nazw i publiczne resolvery, klucz RSA, znaczniki, TTL oraz to, czy klucze nie powtarzają się między domenami.

  5. Bramka przed podpisywaniem

    Domena trafiała do tablicy podpisów dopiero po pozytywnym teście klucza. Domena z błędnym lub brakującym rekordem była pomijana, bez zatrzymywania pozostałych.

  6. Bezpieczne zmiany

    Przed każdym krokiem kopia konfiguracji i procedura wycofania. Postfix przyjmował pocztę nawet wtedy, gdyby usługa podpisująca padła.

Wyzwania, które pokonaliśmy

Najwięcej czasu zajęły rzeczy, które wyglądały na poprawne, a były błędne, albo wyglądały na błędne, a były poprawne.

Narzędzie diagnostyczne, które kłamało o rekordzie PTR

Zapytanie o rekord PTR serwera zwróciło zupełnie inną, testową nazwę hosta, co wyglądało na poważną niezgodność z nazwą HELO. Przyczyną był lokalny resolver na stacji diagnostycznej: odpowiadał na zapytania PTR wpisami z pliku hosts komputera. W publicznym DNS rekord był od początku poprawny. Od tej chwili każde sprawdzenie DNS szło bezpośrednio do serwerów autorytatywnych i do publicznego resolvera.

Microsoft twierdził, że adres nie jest zablokowany, a pocztę i tak odrzucał

Tak wyglądał zwrot, który dostał użytkownik; adresy i znacznik czasu są zanonimizowane:

<**************@hotmail.com>: host hotmail-com.olc.protection.outlook.com[x.x.x.x]
said: 550 5.7.1 Unfortunately, messages from [x.x.x.x] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.
[Name=Protocol Filter Agent][AGT=PFA][MxId=**************] [**************.eurprd04.prod.outlook.com 2026-03-17T08:14:52.316Z **************] (in reply to MAIL FROM command)

Odrzucenia miały kod S3150, a portal samoobsługowy Microsoftu zapewniał, że adres IP nie jest zablokowany. S3150 oznacza blokadę zakresu adresów u dostawcy hostingu, a nie pojedynczego adresu, a portal obsługuje tylko pojedyncze adresy. Wyjściem było zgłoszenie do wsparcia Microsoftu, eskalowane z faktami: SPF, DKIM i DMARC we wszystkich domenach, czyste publiczne czarne listy, niski wolumen, wyłącznie uwierzytelnieni nadawcy. Potwierdzenie zdjęcia blokady przyszło 1 godzinę 18 minut po pierwszej wiadomości do wsparcia. DKIM i DMARC nie usuwają takiej blokady, bo Microsoft odrzuca połączenie, zanim zobaczy wiadomość; kompletne uwierzytelnienie bardzo jednak wzmacnia eskalację.

Serwer mógł zacząć podpisywać przychodzący spam

Przy milterze podpisującym włączonym globalnie, jak radzi większość poradników, poczta przeskanowana przez amavisa przeszłaby przez niego drugi raz w drodze powrotnej do Postfixa. Przychodzący spam z podrobionym nadawcą z jednej z czterech domen dostałby wtedy prawidłowy podpis DKIM tej domeny. Miltery są więc wyłączone na porcie, którym amavis oddaje pocztę, i na publicznym porcie 25.

Jeden znacznik w rekordzie DKIM i TTL

Test klucza kończył się błędem „unknown hash”: znacznik h= w rekordzie DKIM przyjmuje nazwy funkcji skrótu, takie jak sha256, a nie nazwę algorytmu podpisu. Odbiorcy pilnujący specyfikacji odrzuciliby każdy podpis. Rekord poprawiliśmy, zanim domena cokolwiek podpisała, a test klucza stał się warunkiem włączenia podpisywania. Rekord miał TTL równe dobie, więc resolvery mogły trzymać błędną wersję przez 24 godziny; na czas wdrożenia obniżyliśmy TTL do godziny.

Zwroty potrzebują SPF dla własnej nazwy serwera

Komunikat o niedoręczeniu ma pusty adres nadawcy w kopercie, więc SPF sprawdza wtedy nazwę HELO serwera. Bez rekordu SPF dla tej nazwy zwroty nie przeszłyby DMARC po przejściu domeny głównej na reject, a nadawcy z zewnątrz nigdy nie dowiedzieliby się, że ich wiadomość nie doszła. Jeden rekord to załatwił.

Laptop pyta lokalny resolver z pamięcią podręczną, którego odpowiedź jest przekreślona, oraz autorytatywny serwer DNS z pomarańczowym haczykiem, który podaje prawdziwy rekord

Przed i po

Sprawdzenie Przed Po
SPF 3 z 4 domen, brak SPF dla nazwy HELO 4 z 4, do tego SPF dla nazwy HELO
DKIM 0 z 4: serwer w ogóle nie podpisywał 4 z 4 aktywne
DMARC 0 z 4 4 z 4, p=none z raportami zbiorczymi
Wynik w Gmailu Tylko SPF zaliczone SPF, DKIM i DMARC zaliczone
Microsoft (Outlook, Hotmail) Odrzucenia z kodem S3150 Blokada zdjęta 1 godzinę 18 minut po pierwszej wiadomości do wsparcia
Czas i przestój Cztery domeny, trzech operatorów DNS Jeden dzień roboczy, zero przestoju

Co z tego wynika

  • Brak DKIM i DMARC to dziś realny problem z dostarczalnością, nie kwestia dobrych praktyk. Duzi dostawcy coraz częściej wymagają wszystkich trzech mechanizmów.
  • Czas pochłaniają szczegóły: droga wiadomości przez filtr treści, chroot, znaczniki w rekordach, TTL, zwroty i czytanie liczb w logach. Ponad 2500 wpisów w logu o brakującym TLS okazało się 36 wiadomościami w pięć dni, w większości automatycznymi odpowiedziami do systemów masowej wysyłki; wymóg TLS został.
  • Kilka domen u kilku operatorów DNS da się zrobić bez przestoju: audyt, pilotaż, partie, sprawdzenie z zewnątrz po każdym kroku i gotowy plan wycofania.

Kolejne kroki dla operatora są spisane: analiza raportów DMARC, przejście na quarantine, a potem na reject, monitoring reputacji adresu i domen w narzędziach dla nadawców Microsoftu i Google oraz procedura dla nowej domeny, w której jeden skrypt generuje klucz, wpisy w tablicach i wartości do DNS.

Polityka DMARC jako schody: p=none z raportami zbiorczymi jest osiągnięte i obramowane na pomarańczowo; p=quarantine z folderem spam i p=reject z odrzuconą wiadomością to kolejne stopnie, przerywane

Powiązane sytuacje

  • Faktury, oferty lub hasła jednorazowe trafiają do spamu albo wracają do nadawcy? Od listopada 2025 r. Gmail ostrzej egzekwuje zasady dla nadawców, także przez odrzucanie wiadomości (stan: 2026-10). Sprawdzamy SPF, DKIM, DMARC i reputację, a potem przekazujemy pisemną listę poprawek.

  • Wsparcie Debiana 11 zakończyło się 31.08.2026, a CentOS 7 już 30.06.2024 (stan: 2026-10). Zaktualizujemy Państwa serwer albo zaplanujemy i wykonamy przejście na Debiana. Pracujemy również z Proxmox VE 8 i z serwerami fizycznymi, które przenosimy na Proxmox.

Inne projekty

  • Telefon z kodem QR, plik podzielony na porcje, trzy równoległe strumienie do serwera z dyskiem i siatka galerii

    Aplikacja do zbierania zdjęć od gości weselnych

    Goście weselni skanują kod QR, otwierają jeden sekretny adres i wysyłają zdjęcia oraz filmy prosto z telefonu: bez aplikacji, bez konta, bez logowania. Pliki do 5 GB lądują na dysku klienta, a para młoda ogląda galerię, która zapełnia się jeszcze w trakcie przyjęcia. Jeden wieczór, bez drugiej szansy, i telefony sprzed sześciu lat.

  • Skala punktów z przerywanym progiem: koperta phishingu przechodzi pomarańczowym łukiem przez próg

    Filtr antyspamowy, który działał, ale nie chronił

    Usługi uruchomione, konfiguracja poprawna, w statusie systemu żadnych błędów. A mimo to phishing lądował w skrzynkach odbiorczych, a newslettery partnerów w folderze spam. Nasi inżynierowie zmierzyli, które mechanizmy wykrywania naprawdę działają, usunęli przyczyny, a trzy miesiące później znaleźli i naprawili regresję, którą było widać dopiero w ujęciu godzinowym.

W 20 minut ustalimy, jaki pierwszy krok pasuje do Państwa systemu

Państwo opisują cel i obecny stan, my mówimy otwarcie, czy i jak możemy pomóc. Odpowiedź w ciągu jednego dnia roboczego, bez zobowiązań.

Telefon (niemiecki, polski, angielski) +48 501 250 220
E-mail E-mail

Dostępni: poniedziałek–piątek, 9:00–17:00 (czas środkowoeuropejski); wsparcie i awarie całą dobę (24/7)