2mail — relay SMTP z belgijskiej infrastruktury

SMTP dla Pythona — poczta ze skryptu albo aplikacji Django, która dociera

Python ma SMTP wbudowane: dzięki smtplib wyślą Państwo wiadomość w kilku linijkach, a Django pakuje to we własną warstwę pocztową z ustawieniami EMAIL. Czego nie dostarcza żadne z nich, to dostarczalność — ta zależy od serwera, przez który Państwo wysyłają.

Czy mają Państwo luźny skrypt, aplikację Flask czy projekt Django: ustawienia to te same pięć danych. Kierują je Państwo na swój relay, a kod budujący wiadomości zostaje bez zmian.

Dlaczego bez relaya coś idzie nie tak

Poczta z Pythona pochodzi często z tła: nocnego raportu, zadania cron wysyłającego faktury, skryptu ostrzegającego, gdy pomiar wypada poza normę. Nikt na to nie patrzy — a więc nikt nie zauważa, że serwer odbiorcy po cichu je odrzuca. Przy Django dochodzi klasyczna niespodzianka przy uruchomieniu: w rozwoju wszystko idzie na konsolę, a w produkcji do prawdziwych dostawców, którzy <em>faktycznie</em> sprawdzają reputację.

Konfiguracja SMTP w Python

1

Pobranie danych

Zaloguj się na swoje konto 2mail i pobierz stamtąd serwer SMTP, nazwę użytkownika oraz hasło.

2

Wpisanie w Python

W projekcie Django prosimy ustawić w settings dane EMAIL: backend SMTP jako backend pocztowy, host relaya, port 587, włączoną opcję STARTTLS, nazwę użytkownika i hasło oraz domyślny adres nadawcy we własnej domenie. Jeśli pracują Państwo bezpośrednio ze smtplib, prosimy połączyć się z hostem na porcie 587, wywołać starttls, zalogować się nazwą użytkownika i hasłem, a potem wysłać wiadomość. W obu przypadkach prosimy odczytywać dane ze zmiennych środowiskowych, a nie z kodu.

3

Uwierzytelnienie domeny

Zadbaj o poprawne ustawienie SPF, DKIM i DMARC dla swojej domeny, aby odbiorcy mogli zweryfikować, że wiadomość pochodzi od Ciebie.

4

Test

Wyślij wiadomość testową na adres u dużego dostawcy i sprawdź, czy trafia do skrzynki odbiorczej, a nie do spamu.

Pola, o które prosi Python

Każda platforma nazywa je nieco inaczej, ale zawsze chodzi o te same pięć. Konkretne wartości są powiązane z kontem i znajdą je Państwo na swoim koncie 2mail — prosimy je stamtąd przepisać, aby mieć pewność, że są właściwe.

Pole Co wpisać
Serwer SMTP (host)Nazwa serwera z Państwa konta 2mail.
PortPort odpowiadający wybranemu szyfrowaniu; Państwa konto pokazuje, który to.
SzyfrowanieTLS. Nigdy nie wysyłają Państwo bez szyfrowania — inaczej dane logowania idą przez sieć otwartym tekstem.
Nazwa użytkownikaLogin SMTP Państwa konta 2mail.
HasłoOdpowiadające mu hasło. Nigdy nie należy używać hasła do skrzynki pracownika.

Jakie wiadomości wysyła Python

Gdy relay jest już skonfigurowany, wszystkie idą przez 2mail — nie trzeba ich konfigurować pojedynczo.

Reset hasła i weryfikacja adresu e-mail z Django
Zaplanowane raporty i eksporty z zadań cron
Ostrzeżenia ze skryptów monitoringu i przetwarzania danych
Faktury i potwierdzenia z aplikacji webowej
Raporty o błędach do administratorów

Pułapki przy Python

Opcja TLS i port muszą się zgadzać

Django zna dwa osobne ustawienia TLS: jedno dla STARTTLS i jedno dla TLS od samego początku. Prosimy włączyć wyłącznie ustawienie STARTTLS; ono pasuje do portu 587. Oba naraz dają błąd konfiguracji; żadne z nich wysyła Państwa login bez szyfrowania, a to relay słusznie odrzuca.

Jedno połączenie na serię, nie na wiadomość

Skrypt, który dla każdej z tysiąca wiadomości otwiera nowe połączenie SMTP, zachowuje się jak napastnik. Prosimy otworzyć jedno połączenie, wysłać serię i zamknąć. Django ma do tego funkcję wysyłania wielu wiadomości przez jedno połączenie.

Ciche błędy w zadaniach w tle

Wyjątek w zadaniu cron znika w pliku logu, którego nikt nie czyta. Prosimy przechwytywać błędy przy wysyłce i zgłaszać je tam, gdzie rzucają się w oczy — oraz podłączyć webhooki 2mail dla dostarczenia i odbicia, aby widzieć też, co psuje się <em>po</em> przekazaniu.

SPF, DKIM i DMARC wyjaśnione O dostarczalności

Inna platforma?

SMTP to protokół standardowy: każdy system, który mówi po SMTP — CRM, ERP, własna aplikacja albo serwer — może wysyłać przez 2mail z użyciem tych samych pięciu pól.

Najczęściej zadawane pytania o SMTP dla Python

smtplib i Django wysyłają, ale nie dostarczają dostarczalności: ta zależy od serwera, przez który Państwo wysyłają. Lokalna funkcja pocztowa albo świeży serwer nie ma uwierzytelniania ani reputacji. Relay SMTP z poprawnymi rekordami SPF, DKIM i DMARC to rozwiązuje.
Backend SMTP jako backend poczty, host relaya, port 587, włączoną opcję STARTTLS, swoją nazwę użytkownika i hasło oraz domyślny adres nadawcy we własnej domenie. Login prosimy przechowywać w zmiennych środowiskowych, a nie w samych ustawieniach.
Prosimy nawiązać połączenie z hostem na porcie 587, wywołać starttls, zalogować się nazwą użytkownika i hasłem i wysłać wiadomość. Przy kilku wiadomościach prosimy używać tego samego połączenia zamiast otwierać nowe dla każdej z nich.
Na swoim koncie 2mail, dla każdego zastosowania osobno. Są przypisane do konta, więc nie publikujemy ich na stronie. Dla każdego skryptu albo aplikacji prosimy najlepiej utworzyć własny login, aby móc go osobno odwołać i osobno śledzić ruch.
Zadzwoń teraz
Wyślij e-mail