w poście Best Free SMTP Servers poruszyliśmy temat rozwiązań opartych na chmurze do wysyłania wiadomości e-mail. Są one dość powszechne dla wszystkich rozmiarów projektów. Ale co, jeśli nie chcesz korzystać z usług przekazywania wiadomości e-mail Gmail SMTP lub jego alternatyw? W tym artykule nauczymy cię, jak skonfigurować lokalny serwer SMTP i pozbyć się zależności wysyłania wiadomości e-mail.
czy naprawdę potrzebujesz serwera SMTP?
używanie wychodzącego serwera SMTP jest tradycyjną metodą wysyłania wiadomości e-mail. Alternatywnym rozwiązaniem jest ominięcie serwera SMTP i wysłanie go bezpośrednio do miejsca docelowego. Jest znany jako Direct Send i można go używać za pośrednictwem określonych programów pocztowych. Bezpośrednie wysyłanie nie jest jednak bardzo wiarygodne, a oto dlaczego:
- nie można go używać, jeśli port 25 jest zablokowany przez dostawcę usług internetowych.
- nie nadaje się do masowej poczty e-mail z powodu wielu połączeń z wieloma różnymi serwerami.
- nie może wysyłać spersonalizowanych wiadomości e-mail.
- może być zablokowany przez filtry e-mail, ponieważ wiadomości e-mail nie są wysyłane ze zwykłego serwera SMTP.
odstawmy Direct Send. To, co może Cię zainteresować, to dlaczego uruchomisz własny serwer SMTP.
plusy i minusy lokalnego serwera SMTP
plusy | minusy |
---|---|
|
|
niektóre rozwiązania oparte na chmurze, takie jak Mailgun i SendPulse, zapewniają również wszystkie powyższe zalety. Jednak wszystkie te funkcje są płatne i nadal musisz polegać na usłudze innej firmy. Zamiast tego można skonfigurować serwer SMTP na komputerze przy użyciu określonego oprogramowania.
wymagania dla lokalnego serwera SMTP
do tej pory nie ma żadnych szczególnych wymagań. Niemniej jednak, należy być przygotowanym na następujące:
- niektórzy dostawcy usług internetowych mogą zablokować port 25. Możesz rozwiązać ten problem, kontaktując się z dostawcą usług internetowych i dowiedzieć się o ograniczeniach, które mogą narzucić. Ponadto musisz poprosić o poprawny serwer DNS i pozwolenie na rozdzielczość rekordu MX.
- w przypadku masowych wiadomości e – mail prawdopodobnie powinieneś zdecydować się na domenę i powiązany z nią stały adres IP-zwiększy to twoją odporność na filtry antyspamowe.
Szybka konfiguracja serwera SMTP
teraz do dzieła. Ponieważ zamierzasz skonfigurować serwer SMTP na swoim komputerze, ważne jest, aby wiedzieć, jaki system operacyjny jest używany. Dlatego omówimy trzy sposoby, jak to zrobić dla systemów macOS, Windows i Linux.
Ważna uwaga: jeśli wyślesz testowe e-maile na prawdziwy adres e-mail, możesz ich nie znaleźć w skrzynce odbiorczej. Nie zapomnij sprawdzić folderu spam. ESP, takie jak Gmail, Yahoo i inne, są podejrzane wobec nowych agentów przesyłania poczty.
dla systemu macOS
najnowsze wersje systemu macOS X są fabrycznie zainstalowane z domyślnym serwerem pocztowym Postfix. Wszystko, co musisz zrobić, to dostosować konfigurację serwera SMTP w następujący sposób:
plik konfiguracyjny Postfixa
- główny plik konfiguracyjny Postfixa jest pierwszym, z którym działa. Run:
sudo vim /etc/postfix/main.cf
- powiedz Postfixowi, jakiej nazwy powinien używać, aby identyfikować się z innymi serwerami pocztowymi. Dodaj następujące linie:
myhostname = john.example.commyorigin = example.com
jeśli Twoja lokalna nazwa użytkownika to John, wiadomość pojawi się od [email protected].
- host przekaźnika jest maszyną, która będzie przyjmować wiadomości po uwierzytelnieniu i przekazywać je do serwera SMTP.
relayhost=mail.example.com:25
- musisz włączyć SASL z dodatkowym plikiem konfiguracyjnym, w którym przechowywane jest hasło.
smtp_sasl_auth_enable = yessmtp_sasl_password_maps = hash:/etc/postfix/saslpasswd
- ta linia oznacza, że Postfix będzie używał tylko połączeń szyfrowanych TLS.
smtp_tls_security_level = encrypt
- Oto jak wygląda
main.cf
w całości:
myhostname = john.example.commyorigin = example.comrelayhost=mail.example.com:25smtp_sasl_auth_enable = yessmtp_sasl_password_maps = hash:/etc/postfix/saslpasswdsmtp_tls_security_level = encrypt
- Zapisz plik z:
sudo postmap /etc/postfix/main.cf
Plik z hasłem SASL
- Utwórz plik
sasl_passwd
:
sudo vim /etc/postfix/sasl_passwd
- Dodaj następujący wiersz:
mail.example.com:25 [email protected]:
- Zapisz plik z:
sudo postmap /etc/postfix/sasl_passwd
- i restart Postfixa:
sudo postfix reload
lokalny serwer SMTP jest gotowy. Wypróbuj go wysyłając testowy e-mail:
date | mail -s "Test email" [email protected]
uwaga: ten przepływ konfiguracji jest odpowiedni dla maszyn innych niż macOS, które mają zwykłego demona Postfixa.
dla Linuksa
większość dystrybucji Linuksa jest dostarczana z dwoma najpopularniejszymi implementacjami SMTP: Sendmail i Postfix. Sendmail ma dość skomplikowaną konstrukcję i jest mniej bezpieczny; dlatego ponownie wybraliśmy Postfixa.
instalacja
jeśli nie masz Postfixa na swoim komputerze, zainstaluj go najpierw. Ponadto, będziesz potrzebował pakietu Mailutils, który zawiera programy niezbędne do działania Postfixa:
sudo apt install mailutils postfix
w oknie konfiguracyjnym Postfixa musisz wybrać konfigurację poczty internetowej. Na koniec musisz podać nazwę poczty systemowej. Powinna być taka sama jak nazwa przypisana do nazwy domeny wskazującej na serwer. Użyjmy example.com.
Konfiguracja
teraz skonfigurujmy Postfixa do przetwarzania żądań wysyłania wiadomości e-mail z localhost. W tym celu musisz dostosować główny plik konfiguracyjnymain.cf
:
sudo nano /etc/postfix/main.cf
przewiń w dół do linii inet_interfaces = all
i zamień ją na inet_interfaces = loopback-only
ponadto musisz zmodyfikować mydestination
, która określa listę domen. Powinno to wyglądać tak:
mydestination = $myhostname, localhost.$example.com, $example.com
Zapisz plik i zrestartuj Postfixa za pomocą:
sudo systemctl restart postfix
na koniec spróbuj wysłać testowy e-mail:
echo "Test email body" | mail -s "Test email subject line" receipient's_email_address
Dla Windows
istnieje kilka opcji oprogramowania do skonfigurowania serwera SMTP w systemie Windows, w tym MailEnable i Apache James. Ale zdecydowaliśmy się na najpopularniejszy, o nazwie hMailServer.
instalacja
Pobierz najnowszą wersję tutaj i zainstaluj ją. Na początku instalacji należy zwrócić uwagę na następujące kwestie:
- w oknie wybierz Komponenty upewnij się, że wybrano pełną instalację. Należy sprawdzić składniki serwera i Administracji.
- w oknie wybierz typ serwera bazy danych Sprawdź wbudowany silnik bazy danych.
- w oknie zabezpieczeń hMailServer Utwórz hasło dla domyślnego użytkownika.
po zainstalowaniu uruchom hMailServer, a teraz skonfigurujmy go.
Konfiguracja
- kliknij Połącz w oknie startowym i wprowadź hasło skonfigurowane podczas instalacji.
- kliknij Dodaj domenę i wprowadź nazwę domeny w odpowiednim polu. Nawiasem mówiąc, możesz użyć fałszywej nazwy domeny, ponieważ prawdziwa nie jest wymagana do wysyłania e-maili. Ale w tym przypadku upewnij się, że fałszywa domena w rzeczywistości nie istnieje. Kliknij Zapisz, a na lewej karcie zobaczysz utworzoną domenę.
- Wybierz folder konta w lewej karcie i kliknij Dodaj…, aby go skonfigurować. Wszystko, co musisz zrobić, to wpisać nazwę w polu adresu. To skonfiguruje Twój adres e-mail. Opcjonalnie można podać hasło. Kliknij Zapisz i przejdź do ustawień na lewej karcie.
- rozwiń wątek ustawień i wybierz protokoły. Odznacz opcję POP3 i IMAP. Aby uzyskać więcej informacji na temat tych protokołów, przeczytaj nasz wpis na blogu IMAP vs. POP3 vs. SMTP. Kliknij Zapisz.
- teraz wybierz Zaawansowane w wątku Ustawienia i wprowadź localhost w polu Domena domyślna w prawej zakładce. Kliknij Zapisz. Aby zakończyć z ustawieniami zaawansowanymi, wybierz opcję Auto-ban i odznacz włączone pole. Kliknij Zapisz.
- na końcu rozwiń wątek narzędzia i wybierz opcję Diagnostyka. Wybierz domenę do uruchomienia testów i kliknij Start. Nie interesują nas wszystkie testy, wystarczy zebrać dane serwera i przetestować Port wychodzący. Te powinny być zaznaczone na Zielono.
to wszystko. Teraz możesz wysłać testowy e-mail. Można to zrobić za pomocą programu PowerShell-jest to szybkie i łatwe. Aby uzyskać więcej informacji na ten temat, przeczytaj nasz wpis na blogu wyślij e-maile z PowerShell. Uruchom następujący wiersz (nie zapomnij wprowadzić danych):
Send-MailMessage -To "<recipient's email address>" -From "<your email address>" -Subject "Your email subject" -Body "Your email body text" -Credential "<your username>" -SmtpServer "127.0.0.1" -Port 25
w wyskakującym oknie musisz wprowadzić hasło.
czy serwer SMTP jest dobry do testowania?
w większości przypadków ludzie konfigurują lokalne serwery SMTP do celów testowych. Jeśli tworzysz aplikację, która będzie wysyłać wiadomości e-mail, musisz przetestować tę funkcję, a prawdziwy serwer SMTP działający na Twojej maszynie lokalnej może wydawać się dobrym rozwiązaniem. Ale tak jest? Z jednej strony instalacja i konfiguracja lokalnego serwera SMTP nie jest kłopotliwa. Istnieje jednak znacznie lepsze rozwiązanie.
jeśli używasz Mailtrap do testowania, otrzymasz zaawansowane narzędzie oparte na fałszywym serwerze SMTP. Oznacza to, że Twoja aplikacja będzie wysyłać e-maile, ale nie będzie ich dostarczać. Twoja poczta wychodząca trafi do skrzynki odbiorczej Mailtrap Demo. Nie musisz więc martwić się prawdziwymi odbiorcami wiadomości e-mail i sprawdzaniem folderu spam za każdym razem, gdy uruchamiasz testy. Nie jest wymagana żadna instalacja. Wszystko, co musisz zrobić, to zaktualizować ustawienia SMTP za pomocą poświadczeń Mailtrap. Możesz też skopiować i wkleić gotowy do użycia fragment kodu. Dostępne są różne integracje dla najpopularniejszych frameworków i języków programowania. Aby uzyskać więcej informacji na temat innych korzyści i możliwości, przeczytaj przewodnik pierwsze kroki Mailtrap.
zakończenie
uruchamianie lokalnego serwera pocztowego może czasami być uciążliwe. Wiele wiedzy i wysiłku są wymagane, aby osiągnąć dobrą dostarczalność poczty e-mail za pomocą własnego serwera SMTP. Być może jest to dobra opcja do celów testowych, ale Mailtrap lub inne narzędzia do testowania poczty e-mail zrobią to lepiej. Czy potrzebujesz lokalnego serwera SMTP? Tylko Ty możesz na to odpowiedzieć. Powodzenia!