From i Reply-To w formularzu WordPress — jak ustawić nadawcę poprawnie?
Formularz zna adres klienta, ale nie powinien automatycznie wysyłać wiadomości tak, jakby pochodziła z jego skrzynki. Serwer strony nie ma prawa podpisywać się jako klient@gmail.com. Bezpieczny wzorzec rozdziela autora technicznego powiadomienia od adresu, na który pracownik ma odpowiedzieć.
Krótka odpowiedź: ustaw
Fromna stały adres w domenie kontrolowanej przez firmę i autoryzowanej u dostawcy wysyłki, np.formularz@example.pl. Adres wpisany przez klienta umieść po walidacji wReply-To.Topowinno wskazywać kontrolowaną skrzynkę odbiorczą. Przetestuj pełne nagłówki, SPF/DKIM/DMARC i działanie przycisku „Odpowiedz”. Nie składaj surowych nagłówków bez walidacji danych użytkownika.
Cztery adresy, które łatwo pomylić
From
Widoczny autor wiadomości. RFC 5322 opisuje go jako osobę lub system odpowiedzialny za stworzenie wiadomości. W powiadomieniu automatycznym autorem jest system firmy, a nie przypadkowy adres podany w polu.
Reply-To
Adres sugerowany programowi pocztowemu jako cel odpowiedzi. Jeśli jest obecny, odpowiedź powinna domyślnie trafić właśnie tam. To dobre miejsce dla zweryfikowanego składniowo adresu klienta.
To
Główny odbiorca powiadomienia, np. biuro@example.pl. Nie musi być tym samym adresem co From.
envelope sender / Return-Path
Adres transportowy używany m.in. do niedostarczeń. Może być ustawiany przez dostawcę SMTP i różnić się od widocznego From. SPF zwykle ocenia domenę z warstwy transportowej, a DMARC sprawdza jej zgodność z widocznym autorem.
Poprawny wzorzec dla formularza
Przykładowy układ:
From: Formularz strony <formularz@example.pl>
To: Biuro <biuro@example.pl>
Reply-To: Anna Klient <anna@example.net>
Subject: Nowe zapytanie ze strony
Po kliknięciu „Odpowiedz” program kieruje wiadomość do Anny, ale serwer wysłał powiadomienie uczciwie jako system example.pl.
Nie kopiuj adresów przykładowych do produkcji. From musi istnieć albo być dozwolony przez dostawcę, a domena powinna być prawidłowo uwierzytelniona.
Dlaczego From: klient@gmail.com jest błędem?
Strona deklarowałaby, że jest autorem wiadomości z cudzej domeny. Serwer odbiorcy może zobaczyć, że transport i podpis nie są zgodne z polityką tej domeny. Rezultatem bywa spam, odrzucenie albo ostrzeżenie o podszywaniu.
Aktualne wytyczne Gmaila zabraniają podszywania się pod nagłówki From Gmaila i wymagają uwierzytelniania domen wysyłających. Nawet jeśli taki układ „działał od lat”, nie jest stabilnym fundamentem.
Nazwa klienta w From też może wprowadzać w błąd
Układ:
From: Anna Klient <formularz@example.pl>
technicznie pozostawia firmowy adres, ale interfejs skrzynki może pokazać przede wszystkim nazwę „Anna Klient”. Pracownik może błędnie uznać wiadomość za bezpośrednią korespondencję.
Czytelniej:
From: Formularz example.pl <formularz@example.pl>
Reply-To: Anna Klient <anna@example.net>
Dane klienta umieść również w kontrolowanej treści wiadomości.
Walidacja i ochrona przed wstrzyknięciem nagłówków
Adres z formularza jest niezaufanym wejściem. Użyj walidacji oferowanej przez WordPress lub wtyczkę, ogranicz do jednego adresu, usuń niedozwolone znaki i nie pozwalaj użytkownikowi sterować nazwami nagłówków.
Nie buduj ręcznie:
$headers = "Reply-To: " . $_POST['email'];
bez walidacji i mechanizmu biblioteki pocztowej. Znaki końca linii mogą posłużyć do dodania kolejnego nagłówka. Wtyczka formularza powinna traktować pole e-mail jako dane, nie gotowy fragment protokołu.
Jak ustawić adresy w WordPressie?
Sposób zależy od formularza. Zwykle szukasz pól:
- „From” / „Nadawca”;
- „To” / „Odbiorca”;
- „Additional headers” / „Reply-To”;
- „Sender name”;
- opcji wymuszania adresu przez wtyczkę SMTP.
Jeżeli integracja SMTP wymusza From, nie walcz z nią drugim filtrem w motywie. Ustal jedno źródło prawdy. WordPress udostępnia filtry wp_mail_from i wp_mail_from_name, lecz globalna zmiana wpływa na reset haseł, alerty i inne wtyczki. Testuj cały serwis.
DMARC: samo przejście SPF lub DKIM nie zawsze wystarcza
DMARC wymaga, aby co najmniej jeden uwierzytelniony identyfikator — domena SPF albo domena podpisu DKIM — był zgodny z domeną widoczną w From. Dlatego wynik spf=pass dla technicznej domeny dostawcy nie musi dać dmarc=pass, jeśli widoczny autor jest z innej domeny i DKIM również nie jest zgodny.
Sprawdź w nagłówkach wiadomości:
Authentication-Results: ... spf=pass ... dkim=pass ... dmarc=pass ...
Nie traktuj tego przykładu jako identycznego formatu u wszystkich operatorów. Odczytaj również domeny użyte w wynikach.
Test funkcjonalny
- Wyślij formularz z kontrolowanym adresem klienta.
- Sprawdź zapis zgłoszenia w WordPressie.
- Otwórz powiadomienie w skrzynce.
- Potwierdź widoczny
From. - Kliknij „Odpowiedz” i sprawdź adres docelowy bez wysyłania.
- Przejrzyj źródło wiadomości i
Authentication-Results. - Powtórz dla innego operatora skrzynki.
- Sprawdź spam oraz log SMTP.
Testy negatywne
Formularz powinien odrzucić albo bezpiecznie obsłużyć:
- brak adresu;
- niepoprawną składnię;
- dwa adresy w jednym polu;
- znaki nowej linii;
- bardzo długą wartość;
- nazwę zawierającą próby dodania nagłówka;
- adres z domeny międzynarodowej zgodnie z realną obsługą systemu.
Nie wypisuj surowego błędu transportu użytkownikowi. Zapisz bezpieczny komunikat dla administratora, a klientowi pokaż neutralną informację i alternatywny kontakt.
Najlepsza konfiguracja jest czytelna i zgodna
From odpowiada na pytanie „jaki system jest autorem powiadomienia”, a Reply-To — „dokąd ma trafić odpowiedź pracownika”. Rozdzielenie tych ról poprawia zgodność uwierzytelnienia, ułatwia obsługę i nie udaje, że serwer strony kontroluje cudzą domenę.