Postfix to popularne darmowe oprogramowanie o otwartym kodzie źródłowym, które działa jako agent transferu poczty (MTA). Zadaniem Postfix jest rutowanie i dostarczanie wiadomości e-mail. Oprócz klasycznego zastosowania, Postfix można również skonfigurować tak, aby wysyłał wiadomości e-mail wyłącznie z lokalnych aplikacji.
Takie zastosowanie Postfix to przydatna sztuczka do wdrożenia w różnych sytuacjach. Na przykład może być używane do regularnego wysyłania powiadomień e-mail, współpracy z zewnętrznym dostawcą usług pocztowych o ograniczonym ruchu wychodzącym itp. W porównaniu z dowolnym pełnoprawnym SMTP serwerem, Postfix jest lżejszą alternatywą, która jednocześnie zachowuje niezbędne funkcjonalności.
W tym poradniku dowiesz się, jak zainstalować i skonfigurować Postfix jako serwer SMTP tylko do wysyłania na systemie Ubuntu.
Wymagania wstępne
Aby móc postępować zgodnie z tym przewodnikiem, musisz spełnić następujące wymagania wstępne:
-
Musisz posiadać odpowiednio skonfigurowany serwer Ubuntu z dostępem do użytkownika non-root z uprawnieniami sudo.
-
Potrzebujesz również w pełni zarejestrowanej nazwy domeny. Dowiedz się więcej o nazwach domen z naszego wpisu Instalacja certyfikatu SSL od komercyjnego urzędu certyfikacji.
-
Na koniec będziesz potrzebować rekordu DNS z nazwą domeny wskazującą na publiczny adres IP serwera.
Instalacja Postfix
Po spełnieniu warunków wstępnych serwer jest gotowy do wdrożenia Postfix. Najprostszym sposobem instalacji Postfix jest zainstalowanie pakietu mailutils . Jest on bezpośrednio dostępny w oficjalnych repozytoriach Ubuntu.
Najpierw uruchom terminal i zaktualizuj APT bazę danych pakietów:
|
1 |
sudo apt update |

Następnie możesz zainstalować Postfix:
|
1 |
sudo apt install mailutils |

Podczas procesu instalacji pojawi się następujące okno konfiguracji. Domyślną opcją jest Internet Site. Aby potwierdzić wybór, naciśnij TAB , aby przenieść kursor do następnej sekcji. Następnie naciśnij Enter:

W następnym kroku zostaniesz poproszony o podanie systemowej nazwy poczty (System mail name). Będzie to nazwa przypisana do serwera w momencie jego tworzenia. Jak opisano w skrypcie, jeśli adres e-mail dla lokalnego hosta to „foo@example.org”, wówczas systemową nazwą poczty będzie example.org:

Pamiętaj, że skrypt konfiguracyjny można również uruchomić w dowolnym momencie później za pomocą następującego polecenia:
|
1 |
sudo dpkg-reconfigure postfix |
Konfiguracja Postfix
W tym kroku Postfix zostanie skonfigurowany do wysyłania i odbierania wiadomości e-mail wyłącznie z localhost. Wymaga to, aby Postfix nasłuchiwał na interfejsie loopback. Jest to wirtualny interfejs sieciowy, którego serwer używa do komunikacji wewnętrznej. Następnie otwórz plik konfiguracyjny Postfix za pomocą wybranego edytora tekstu:
|
1 |
sudo nano /etc/postfix/main.cf |
Zmień wartość inet_interface na loopback-only:

Inną dyrektywą, którą musisz zmienić, jest mydestination. Definiuje ona listę domen, które są dostarczane za pośrednictwem transportu local_transport dostarczania poczty. Domyślna wartość będzie wyglądać mniej więcej tak:

Zmień jej wartość na następującą:
|
1 |
mydestination = localhost.$mydomain, localhost, $myhostname |

W przypadku, gdy Twoja domena jest w rzeczywistości subdomeną i chcesz, aby wiadomości e-mail wyglądały na wysłane z domeny głównej, dodaj następującą dyrektywę na końcu konfiguracji Postfix. Usunie ona subdomenę z adresu e-mail:
|
1 |
masquerade_domains = <glowna_domena> |

Aby zmiany weszły w życie, zrestartuj Postfix:
|
1 |
sudo systemctl restart postfix |
Testowanie serwera SMTP
Zakładając, że proces konfiguracji przebiegł pomyślnie, czas go przetestować. Aby to zrobić, sprawdź, czy Postfix może wysłać wiadomość e-mail na zewnętrzne konto e-mail za pomocą polecenia mail . Jest ono częścią pakietu mailutils :
|
1 |
echo "Testowa treść wiadomości" | mail -s "Temat wiadomości" <adres_email> |
Wiadomość powinna dotrzeć na podany adres e-mail. W tym momencie wszystkie wysyłane wiadomości e-mail są niezaszyfrowane. Dostawcy usług zazwyczaj oznaczają takie wiadomości jako spam, więc upewnij się, że sprawdziłeś folder ze spamem.
Jeśli mail zgłosi błąd lub wiadomość e-mail nie dotrze po dłuższym czasie, sprawdź ponownie konfigurację Postfixa i upewnij się, że nazwa serwera i nazwa hosta są ustawione poprawnie. Przy tej konfiguracji wiadomości e-mail będą wyglądać na wysłane z następującego adresu:
|
1 |
<username>@<domain> |
W tym miejscu nazwą użytkownika będzie nazwa użytkownika serwera, który uruchomił polecenie mail.
Przekazywanie poczty systemowej
Pomyślnie zweryfikowaliśmy, że serwer pocztowy jest poprawnie skonfigurowany i działa. Teraz należy go skonfigurować tak, aby przekazywał wiadomości e-mail dla użytkownika root. Wszystkie generowane przez system wiadomości wysyłane na serwer będą przekazywane na zewnętrzny adres e-mail. W przypadku odbiorców wiadomości e-mail, plik /etc/aliases zawiera listę alternatywnych nazw. Otwórz go za pomocą wybranego edytora tekstu:
|
1 |
sudo nano /etc/aliases |
Domyślnie będzie to wyglądać tak:

Na końcu pliku dodaj następującą linię:
|
1 |
root: <email_address> |

Informuje to, że wiadomości e-mail wysyłane do root będą przekazywane na adres e-mail. Aby zmiany weszły w życie, uruchom następujące polecenie. Odbuduje ono bazę danych aliasów, z której korzysta polecenie mail :
|
1 |
sudo newaliases |
![]()
Następnie musisz przetestować, czy zmiana się powiodła. Wyślij testową wiadomość e-mail do root:
|
1 |
echo "Test root email body" | mail -s "Subject line" root |
Wiadomość e-mail powinna dotrzeć na podany adres e-mail. Nie zapomnij sprawdzić folderu ze spamem, ponieważ nie skonfigurowano jeszcze szyfrowania.
Włączanie szyfrowania SMTP
Wysyłanie wiadomości e-mail w niezaszyfrowanym formacie jest ryzykownym krokiem. Aby zapewnić bezpieczeństwo, wymagane jest włączenie szyfrowania SMTP. Aby to osiągnąć, poprosimy o bezpłatny certyfikat TLS od Let’s Encrypt dla Twojej domeny.
W przypadku systemu Ubuntu to narzędzie Certbot wykonuje to zadanie. Na szczęście jest ono bezpośrednio dostępne w oficjalnym repozytorium Ubuntu. Zainstaluj Certbota za pomocą następującego polecenia:
|
1 |
sudo apt install certbot |

Zakładając, że serwer ma skonfigurowany UFW, konieczne jest, aby port 80 był otwarty, aby mogła nastąpić weryfikacja domeny. Uruchom następujące polecenie, aby go włączyć:
|
1 |
sudo ufw allow 80 |

Teraz uruchom Certbota, aby wygenerować certyfikat. Nakazuje to Certbotowi wydanie certyfikatów z 4096-bitowym kluczem RSA. Weryfikacja odbędzie się za pośrednictwem portu 80 (HTTP):
|
1 |
sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d <domain> |
Dane wyjściowe będą wyglądać mniej więcej tak:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Zapisywanie debug logu do /var/log/letsencrypt/letsencrypt.log Wtyczki wybrane: Authenticator standalone, Installer None Uzyskiwanie a nowego certyfikatu Wykonywanie następujących wyzwańchallenges: http-01 wyzwanie dla '<domain>' Oczekiwanie na weryfikację... Czyszczenie up wyzwań WAŻNE UWAGI: - Gratulacje! Twój certyfikat i łańcuch zostały been zapisane w: /etc/letsencrypt/live/<domain>/fullchain.pem Twój klucz plik został been zapisany w: /etc/letsencrypt/live/<domain>/privkey.pem Twój certyfikat wygaśnie expire dnia 2020-07-11. Aby uzyskać nową new lub zmodyfikowaną wersję tego certyfikatu certificate w przyszłościfuture, po prostu uruchom certbot ponownie. Aby nieinteraktywnie-interactively odnowić *wszystkie* swoje certyfikatycertificates, uruchom "certbot renew" - Jeśli podoba Ci się Certbot, prosimy o rozważenie wsparcia naszej pracy poprzez: Przekazanie darowizny na rzecz ISRG / Let's Encrypt: https://letsencrypt.org/donate Przekazanie darowizny na rzecz EFF: https://eff.org/donate-le |
Klucz zostanie zapisany w następującym katalogu:
|
1 |
/etc/letsencrypt/live/<domain> |
Po wygenerowaniu certyfikatu otwórz plik konfiguracyjny Postfix w edytorze tekstu:
|
1 |
sudo nano /etc/postfix/main.cf |
Znajdź sekcję TLS parametry:

Następnie zmień wartość dyrektyw smtpd_tls_cert_file oraz smtpd_tls_key_file:

Następnie zapisz i zamknij plik. Aby zmiany weszły w życie, zrestartuj Postfix:
|
1 |
sudo systemctl restart postfix |
Na koniec wyślij ponownie testową wiadomość e-mail na docelowy adres e-mail:
|
1 |
echo "This is email body" | mail -s "Email subject line" <email> |
Wiadomość e-mail powinna teraz pojawić się normalnie, tak jak inne wiadomości. Jeśli sprawdzisz informacje techniczne wiadomości e-mail, będzie ona widoczna jako zaszyfrowana.
Podsumowanie
Gratulacje! Pomyślnie skonfigurowałeś serwer pocztowy tylko do wysyłania, oparty na Postfixie. Transakcje e-mail są również bezpieczne dzięki zastosowaniu odpowiedniego klucza szyfrującego.
Więcej sposobów na optymalizację przesyłania wiadomości e-mail znajdziesz w tym poradniku Najlepsze sposoby korzystania z serwera SMTP Google.
Udanego korzystania!
Komentarze
Brak komentarzy. Bądź pierwszy.