Większość klientów dla których przygotowywałem strony ma je albo na VPSach zarządzanych przeze mnie, albo – w przypadku mniej wymagających stron – na hostingach, które wybrałem, i wiem, że raczej nic mnie tam nie zaskoczy, a nawet jeśli, to ma wpływ na dalsze działania (zarządzam również tym kontem hostingowym).
A skoro napisałem, że większość, to łatwo wywnioskować, że zdarzają się tacy, którzy przygotowaną przeze mnie (przez nas) stronę trzymają na serwerach/hostingach zarządzanych przez innych, np. przez firmę która od dawna obsługuje ich infrastrukturę informatyczną.
I jak to czasem w takich przypadkach bywa – najprostsze sprawy potrafią sprawiać problemy…
WordPress: stały nagłówek od/from
Jeden z takich „tylko strona” klientów korzysta z konta (serwer/hosting) w Home.pl, gdzie oprócz strony mają pocztę, z której są chyba zadowolenie, więc nawet nie próbowałem sugerować jakiejkolwiek migracji – zwłaszcza że obsługą tego serwera zajmuje się zewnętrzna firma, która „od lat” wykonuje dla nich usługi informatyczne (poza przygotowanie strony internetowej).
Nie będę tutaj opisywał całej gamy problemów, problemików i utrudnień, jakie przy tego typu 3-stronnej współpracy mogą się pojawiać, napisze tylko tyle, że nie jest to moja ulubiona konfiguracja… ;-)
No na taki serwer/hosting została wgrana baza danych, oraz niezbędne pliki, tak by wcześniej przygotowana strona mogła zacząć działać zamiast istniejącej – starej – strony. Wszystko przebiegło raczej bez problemów (nawet mimo dość starej wersji PHP, która akurat na tym koncie jest aktywna/ustawiona), poza jednym szczegółem – nie dało się ze strony wysłać żadnej wiadomości e-mail.
Kilka szybkich testów wykazało, że w zastanej konfiguracji w polu nadawca nie może być adres w domenie, pod którą dostępna jest strona, a musi tam znajdować się adres typu:
[email protected]
Oczywiście można by to obejść korzystając z zewnętrznego serwera SMTP (zalecam/polecam), to w tym przypadku – z racji tego, że wiadomości mają przychodzić tylko do mnie (powiadomienia administracyjne), oraz do firmy (formularz kontaktowy), a zarazem nie mając pewności co do ingerencji osób postronnych w dane autoryzacyjne – postanowiłem zostawić jak jest, czyli wysyłanie wiadomości przez serwer/hosting, na którym stoi strona.
Jedyne co w takiej sytuacji należało zrobić, to upewnić się, że każda wiadomość w polu „od” będzie miała wpisany wymagany adres e-mail, w czym pomogło mi kilka linijek kodu w functions.php:
function webinsider_add_email_headers( $params ) {
$params['headers'] = $params['headers'] . "From: [email protected]";
return $params;
}
add_filter( 'wp_mail', 'webinsider_add_email_headers' );
Wprawdzie mógłbym podobny efekt uzyskać stosując jakąś dedykowaną wtyczkę do konfiguracji SMTP w WordPressie (lub własny kod), ale wymagałoby to prawdopodobnie wymiany co najmniej kilku wiadomości z drugą firmą IT, a po kilku pierwszych nie mam pewności, czy na pewno wiedzieliby jak do tematu się zabrać – raczej chłopaki od infrastruktury komputerowej, telekomunikacyjnej, centralek itp., niż serwerów czy stron internetowych, czy choćby konfiguracji konta FTP dla mnie… ;-)
- Zero Trust od Cloudflare, czyli prosty i bezpieczny sposób na dostęp do lokalnych zasobów z zewnątrz, bez publicznego adresu IP i otwierania portów na routerze - 1970-01-01
- Home Assistant i integracja z IMGW-PIB, czyli tworzymy automatyzację z powiadomieniami bazując na sensorach zagrożenie i alarm powodziowy - 1970-01-01
- Home Assistant 2024.9 i kolejne przydatne nowości w widoku „sekcje”, dzięki którym jeszcze lepiej można dopasować wygląd - 1970-01-01
Ten temat jest aktualny tylko do wspomnianego hostingu? Czy inne też mają taki problem?
Można założyć, że to będzie dość często spotykane ograniczenie, jako jeden z elementów walki z wysyłaniem SPAMu – jedno IP dzieli wielu klientów, i w przypadku problemów wygenerowanych przez jednego klienta obrywają wszyscy.
Choć opisana sytuacja jest dość specyficzna, i zdecydowanie lepiej skorzystać z zewnętrznych serwerów SMTP, czy nawet stworzyć „dla strony” dodatkowe konto e-mail, i za jego pomocą (wtyczka SMTP, lub własny kod) wysyłać wiadomości.
Zdecydowanie lepiej stworzyć własne konto SMTP do wszelakich wysyłek i na ile to możliwe ustawić ograniczanie wiadomości wysyłanych dziennie. Po pierwsze zawsze będziemy wiedzieć czy przypadkiem nie mamy jakiegoś złośliwego kodu – przyjdzie nam odpowiedni komunikat o przekroczeniu ilości wysłanych wiadomości lub powiadomienie w panelu serwera, po drugie – większa kontrola nad tym co kiedy i gdzie jest wysyłane, ponieważ WP-MAIL bez dodatkowych wtyczek i ulepszeń nie loguje nigdzie wysłanych wiadomości, a to pozwoli na odkrycie i zniwelowanie czy zablokowanie niepotrzebnie wysyłanych wiadomości.
Ja bym hierarchię ustawił tak:
Zewnętrzny serwer SMTP ma taką zaletę/przewagę nad dedykowanym 'zwykłym kontem e-mail’, że daje większą szansę na skuteczne dostarczenie wiadomości, do tego zazwyczaj mamy całkiem rozbudowane raporty i powiadomienia (nie tylko, że wyczerpaliśmy limit – o ile dane konto oferuje w ogóle takie powiadomienie), oraz dużo większe limity dzienne/godzinowe, co czasem też ma znaczenie…
W przypadku strony która generuje relatywnie mała ilość wiadomości, i są to głównie wiadomości dla nas (raporty, powiadomienia), to dedykowane konto e-mail zapewne się sprawdzi.
W przypadku stron/serwisów które generują więcej wiadomości i zależy nam na dobrej „dostarczalności” do wielu różnych adresów (wszelkiej maści wiadomości transakcyjne, newslettery), to zdecydowanie lepiej skorzystać z zewnętrznego serwera SMTP (SMTP jako usługa). Zwłaszcza, że większość tego typu serwisów oferuje również bezpłatne konta (zazwyczaj 10 000 – 12 000 wiadomości miesięcznie, ale czasem będzie to nawet 100 000).