Nullmailer to prosty agent przekazujący pocztę lokalną do zewnętrznego serwera, bez własnej obsługi kolejek odbiorczych.
Nullmailer jako przekaźnik poczty wychodzącej
Nullmailer jest lekkim agentem transportu poczty (MTA, Mail Transfer Agent) przeznaczonym wyłącznie do przekazywania wiadomości do wcześniej określonego zewnętrznego serwera. Jego zadaniem nie jest pełna obsługa poczty dla domeny, przyjmowanie wiadomości od innych serwerów ani dostarczanie ich do lokalnych skrzynek użytkowników. Program działa jako warstwa pośrednia między aplikacją uruchomioną na komputerze a wskazanym serwerem SMTP lub innym obsługiwanym przekaźnikiem.
Takie rozwiązanie stosuje się przede wszystkim wtedy, gdy system ma wysyłać komunikaty techniczne, powiadomienia aplikacyjne, wiadomości generowane przez zadania systemowe albo raporty, ale nie powinien samodzielnie pełnić funkcji kompletnego serwera pocztowego. Nullmailer ogranicza liczbę elementów wymaganych do wysyłki i przekazuje odpowiedzialność za dalsze dostarczenie wiadomości zewnętrznemu serwerowi. Nie oznacza to jednak, że każda wiadomość trafia do odbiorcy natychmiast. Przekazanie może zostać opóźnione przez niedostępność serwera docelowego, błędne dane uwierzytelniające lub problemy z połączeniem sieciowym.
Droga wiadomości od aplikacji do kolejki
Nullmailer udostępnia mechanizm zgodny z typowym lokalnym interfejsem wysyłania poczty. Narzędzie nullmailer-inject odbiera wiadomość ze standardowego wejścia, analizuje wybrane pola nagłówka i przygotowuje ją do umieszczenia w kolejce. Rozpoznawane są między innymi pola To, Cc, Bcc, pola związane z ponownym wysłaniem oraz wybrane informacje określające nadawcę koperty. Nagłówek może zostać przekształcony tak, aby wiadomość miała format oczekiwany przez dalszy etap obsługi.
Po przyjęciu wiadomości do kolejki proces wysyłający próbuje przekazać ją do zdalnego przekaźnika. Za tę część odpowiada nullmailer-send, który korzysta z konfiguracji określającej zdalne hosty, nazwę używaną podczas powitania SMTP oraz limity czasu połączenia. Kolejka jest istotnym elementem działania programu, ponieważ pozwala zachować wiadomość do ponownej próby, gdy serwer zewnętrzny chwilowo nie odpowiada. W praktyce trzeba więc rozróżnić trzy stany: wiadomość zaakceptowaną przez lokalny interfejs, wiadomość oczekującą w kolejce oraz wiadomość skutecznie przekazaną do zdalnego serwera.
Konfiguracja serwera zdalnego i ponawianie wysyłki
Podstawowym miejscem wskazania przekaźnika jest plik kontrolny remotes. To w nim definiuje się zdalne punkty, do których Nullmailer ma próbować dostarczać wiadomości. Pozostałe pliki kontrolne określają między innymi nazwę lokalnego systemu, domyślną domenę, domyślny host, adres administratora oraz nazwę używaną w komunikacie HELO lub EHLO. Znaczenie tych ustawień jest praktyczne: niespójna nazwa hosta, nieprawidłowa domena nadawcy albo błędny adres zdalnego przekaźnika mogą powodować odrzucenie wiadomości mimo poprawnego działania samego procesu.
Mechanizm wysyłający obsługuje przerwy między kolejnymi próbami oraz maksymalny czas oczekiwania na odpowiedź. Parametry takie jak pausetime, maxpause i sendtimeout wpływają na zachowanie kolejki podczas awarii sieci lub niedostępności zdalnego serwera. Nullmailer zawiera także programy związane z obsługą powiadomień o niepowodzeniu dostarczenia oraz narzędzia do sprawdzania kolejki. Sama obecność wiadomości w kolejce nie jest potwierdzeniem dostarczenia do skrzynki odbiorcy. Potwierdzeniem na wcześniejszym etapie jest dopiero zaakceptowanie transmisji przez serwer przekazujący, a dalsza obsługa zależy od jego konfiguracji i odpowiedzi kolejnych serwerów pocztowych.
Diagnostyka działania Nullmailera na komputerze
Diagnostykę należy rozpocząć od ustalenia, czy aplikacja przekazuje wiadomość do właściwego lokalnego interfejsu oraz czy wiadomość pojawia się w kolejce. Następnie sprawdza się plik remotes, nazwy hostów, rozwiązywanie DNS, dostępność portu używanego przez skonfigurowany transport i poprawność parametrów uwierzytelniania, jeżeli wymaga ich zewnętrzny przekaźnik. W logach warto rozdzielić błędy lokalnego przyjęcia wiadomości od błędów połączenia, odrzuceń SMTP i problemów z ponawianiem wysyłki. Taki podział wskazuje, czy problem występuje przed zapisaniem wiadomości, podczas transmisji, czy już po przekazaniu jej do serwera zewnętrznego.
Przy diagnozowaniu komputera lub laptopa, na którym działa Nullmailer, sprawdza się również uprawnienia do katalogów kolejki, stan procesu nullmailer-send, dostępność plików konfiguracyjnych i zgodność ustawień nadawcy z wymaganiami przekaźnika. Warto zweryfikować, czy kolejka nie rośnie wskutek trwałego błędu, na przykład odrzucania adresu nadawcy albo nieosiągalnego hosta. Naprawa może obejmować przywrócenie poprawnej konfiguracji, usunięcie przyczyny błędów sieciowych, uporządkowanie usługi startowej oraz ponowne sprawdzenie pełnego przepływu wiadomości od aplikacji do serwera przekazującego. Przydatne jest zachowanie komunikatów diagnostycznych, ponieważ sam fakt uruchomienia procesu nie świadczy jeszcze o prawidłowej wysyłce.