Jak postawić Mailpit na Saplo (SMTP catcher do testowania poczty wychodzącej)

Testowy mail z resetem hasła albo fakturą, który przez pomyłkę poleci na prawdziwą skrzynkę klienta, to jeden z tych błędów, które zapamiętuje się na długo. Mailpit to open source SMTP catcher, który przechwytuje każdy mail wysłany przez SMTP z Twojej aplikacji i pokazuje go w panelu webowym, zamiast wypuszczać go na świat, postawiony jednym klikiem na własnym Boxie.

Grzegorz Kalmus· ·129 wyświetleń

Testowanie powiadomień mailowych z własnej aplikacji ma jeden powtarzający się problem: jeśli aplikacja wysyła maile przez prawdziwy SMTP, prędzej czy później literówka w danych testowych albo zapomniana zmiana środowiska sprawi, że testowy reset hasła albo faktura poleci na skrzynkę prawdziwego klienta. Mailtrap rozwiązuje to w chmurze, ale za abonamentem rosnącym z liczbą wysłanych maili. Mailpit to open source SMTP catcher, który stawiasz na własnym Boxie, przechwytuje każdą wiadomość wysłaną przez SMTP z Twojej aplikacji i pokazuje ją w panelu webowym, bez limitu liczby maili i bez miesięcznej opłaty. Poniżej krok po kroku, jak postawić Mailpit na Saplo.

Dlaczego Mailpit zamiast wysyłki na prawdziwą skrzynkę albo Mailtrapa

Testowanie maili bez dedykowanego catchera zwykle idzie jedną z dwóch dróg, i obie mają wady:

  • wysyłka na prawdziwą skrzynkę testową - działa, dopóki ktoś nie pomyli zmiennej środowiskowej albo adresu odbiorcy w danych testowych, a wtedy testowy mail trafia tam, gdzie nie powinien,
  • Mailtrap i podobne usługi w chmurze - rozwiązują ten problem, ale kosztują, a limit liczby przechwyconych maili w darmowym planie kończy się szybciej niż testy skończy zespół.

Mailpit działa jako pojedynczy kontener Docker na Twoim Boxie, więc każdy mail wysłany przez SMTP z aplikacji zostaje przechwycony lokalnie, bez limitu liczby wiadomości i bez ryzyka, że coś poleci do prawdziwego adresata.

Mailpit a Mailtrap i MailHog

Mailpit jest bezpośrednim następcą MailHog, projektu, który od dłuższego czasu nie jest rozwijany, więc naturalne pytanie brzmi, czym różni się od obu:

  • Mailtrap to usługa w chmurze z darmowym limitem liczby przechwyconych maili miesięcznie - wygodna bez stawiania czegokolwiek, ale płatna przy większym ruchu testowym i z danymi u zewnętrznego dostawcy,
  • MailHog to starszy projekt o bardzo podobnej roli, ale bez aktywnego rozwoju od lat, przez co nie dostaje już poprawek ani nowych funkcji,
  • Mailpit łączy zalety obu - jest aktywnie rozwijany jak MailHog kiedyś, a stawiasz go na własnym Boxie jak Mailtrapa, bez limitu liczby maili i bez opłaty za ruch testowy.

Jeśli zespół testuje dużo powiadomień mailowych i chce mieć to pod pełną kontrolą, bez limitu w darmowym planie i bez czekania na martwy projekt, Mailpit pasuje najlepiej.

Wymagania

Żeby postawić Mailpit na Saplo, potrzebujesz:

  • Boxa z uruchomionym Dockerem (silnik włącza go automatycznie przy instalacji z katalogu, wymagane jest nesting w kontenerze, co Saplo ma domyślnie),
  • minimum 256 MB RAM wolnego na Boxie i 2 GB miejsca na dysku, czyli wystarczy plan Box S,
  • domeny albo subdomeny *.saploapp.pl w cenie każdego planu, pod którą stanie panel z podglądem maili,
  • osobnej bazy danych NIE zakładasz - Mailpit trzyma przechwycone maile we własnym pliku SQLite w wolumenie danych.

Instalacja krok po kroku

  1. W panelu Saplo wejdź w Katalog aplikacji i wybierz Mailpit (kategoria "Narzędzia").
  2. Wskaż Box z minimum 256 MB wolnego RAM, na którym ma stanąć catcher, oraz domenę albo subdomenę, pod którą będzie działał panel.
  3. Zatwierdź instalację. Silnik stawia kontener z oficjalnego obrazu axllent/mailpit, generuje losowy port SMTP i wystawia panel webowy wyłącznie na loopback Boxa, podpięty pod nginx, który serwuje go pod wskazaną domeną z darmowym SSL. Na zewnątrz wystawiony jest tylko panel, port SMTP zostaje dostępny wyłącznie lokalnie na Boxie.
  4. Po docker compose up silnik sprawdza, czy panel faktycznie odpowiada po HTTP, zanim uzna instalację za zakończoną.
  5. Dane połączenia SMTP dla innych aplikacji na tym samym Boxie (host, port) trafiają do pliku MAILPIT-SETUP.txt w katalogu aplikacji.

Pierwsza konfiguracja

Mailpit, w odróżnieniu od Chatwoot czy Directusa, nie ma żadnego konta ani logowania do panelu - to sandbox do testów, nie prawdziwa poczta, więc panel jest otwarty od razu po instalacji.

  1. Wejdź pod adres domeny, na przykład poczta-test.saploapp.pl, i zobaczysz pustą listę przechwyconych maili, gotową na pierwszą wiadomość.
  2. W konfiguracji SMTP swojej aplikacji (WordPress, Django, Node) na tym samym Boxie wpisz host 127.0.0.1 i port podany w pliku MAILPIT-SETUP.txt - użytkownik i hasło mogą być dowolne, Mailpit akceptuje każde dane logowania.
  3. Wyślij testowy mail z aplikacji, na przykład reset hasła albo powiadomienie o zamówieniu, i odśwież panel Mailpit - wiadomość pojawi się na liście z podglądem treści HTML i tekstowej oraz załączników.
  4. Każdy przechwycony mail możesz otworzyć, sprawdzić nagłówki SMTP i podejrzeć, jak wygląda w kliencie pocztowym, bez ryzyka, że cokolwiek trafi do prawdziwego odbiorcy.
  5. Żaden mail przechwycony przez Mailpit nie jest nigdzie wysyłany dalej - to wyłącznie lokalny podgląd na potrzeby testów.

Mailpit na Saplo kontra Mailtrap i MailHog

Mailtrap w chmurze MailHog Mailpit na Saplo
Limit liczby maili tak, w darmowym planie brak brak
Aktywny rozwój tak nie tak
Gdzie leży treść przechwyconych maili na serwerze dostawcy na Twoim serwerze na Twoim Boxie
Koszt abonament po przekroczeniu limitu koszt własnego serwera koszt samego Boxa

Najczęstsze pytania

Czy Mailpit wysyła maile dalej do prawdziwych adresatów? Nie, każdy mail wysłany przez SMTP do Mailpit zostaje wyłącznie przechwycony i pokazany w panelu, nigdy nie trafia do prawdziwego odbiorcy.

Czy trzeba podawać prawdziwe dane logowania SMTP w aplikacji? Nie, Mailpit akceptuje dowolnego użytkownika i hasło, bo to tylko przechwytywanie testowej wysyłki, nie prawdziwy serwer pocztowy.

Czym Mailpit różni się od MailHog, skoro robią to samo? Mailpit jest aktywnie rozwijanym następcą MailHog, projektu, który od dłuższego czasu nie dostaje już aktualizacji.

Czy Mailpit nadaje się do wysyłki produkcyjnej? Nie, to wyłącznie sandbox do testów - do prawdziwej wysyłki potrzebna jest osobna skrzynka albo usługa transakcyjna.

Jeśli zespół testuje powiadomienia mailowe z własnej aplikacji i chce mieć pewność, że żaden testowy mail nie poleci do prawdziwego klienta, napisz do nas, pomożemy dobrać Box pod Twój zespół.