Własny serwer – cz.5: serwer poczty SMTP
Ostatnia aktualizacja: 16 września 2023, 15:18
W czterech poprzednich częściach cyklu postawiliśmy serwer www, ftp i zaszyfrowaliśmy połączenie za pomocą Let’s Encrypt.
W kolejnej, obecnej, piątej części cyklu zainstalujemy własny serwer pocztowy SMTP. Z uwagi na złożoność konfiguracji, instalację serwera IMAP przeprowadzimy w osobnej, szóstej części.
Co to jest SMTP?
Z Wikipedii:
SMTP (ang. Simple Mail Transfer Protocol) – protokół komunikacyjny opisujący sposób przekazywania poczty elektronicznej w Internecie… …SMTP to względnie prosty, tekstowy protokół, w którym określa się co najmniej jednego odbiorcę wiadomości (w większości przypadków weryfikowane jest jego istnienie), a następnie przekazuje treść wiadomości.
Co to jest serwer SMTP?
Mail Transport Agent (MTA), czyli serwer SMTP służy dwóm celom:
– Wychodzące wiadomości e-mail: odpowiada za przesyłanie wiadomości e-mail z klienta poczty/agenta użytkownika poczty (MUA), takiego jak Mozilla Thunderbird i Microsoft Outlook, do zdalnego serwera SMTP.
– Przychodzące wiadomości e-mail: służy również do przyjmowania wiadomości e-mail z innych serwerów SMTP.
Do obsługi serwera SMTP mogą być użyte programy, takie jak: Exim, Sendmail, Postfix, Msmtp, Masqmail, Qmail, etc.
Do naszych celów użyję programu Postfix.
Co to jest Postfix?
Postfix autorstwa Witese’a Venemy jest serwerem pocztowym, który funkcjonuje jako alternatywa dla popularnego Sendmaila. Postfix celuje w byciu szybkim, łatwym w administracji oraz bezpiecznym i jednocześnie kompatybilnym z Sendmailem na tyle, żeby nie zdenerwować użytkowników. Pomimo, że z zewnątrz wygląda jak Sendmail, w środku jest zupełnie inny.
Konfiguracja hostname dla serwera pocztowego
W pierwszej części cyku skonfigurowaliśmy hostname zgodny z nazwą naszej domeny (tutaj: linuxiarze.pl).
Aby Twój serwer był rozpoznawany w sieci jako serwer pocztowy, nazwa domeny musi posiadać w nazwie np. „mail”, a więc pełna nazwa domeny serwera pocztowego powinna być, np. mail.linuxiarze.pl
W tym celu należy przekonfigurować hostname, tak jak to zrobiliśmy w części pierwszej, wskazując na nową (sub)-domenę:
hostnamectl set-hostname mail.linuxiarze.pl
Zmień również pliki:
/etc/hostname
zmieniając nazwę hosta na nową oraz:
/etc/hosts
zmieniając:
127.0.0.1 linuxiarze.pl
lna:
127.0.0.1 mail.linuxiarze.pl
Zmiana rekordów MX i A
Podczas rejestracji/parkowania domeny u Twojego dostawcy usługi serwerowej, upewnij się że posiadasz lub dodaj, jeśli nie, rekord MX Twojej domeny pocztowej, który powinien przykładowo wyglądać:
Record Type Name Mail Server Priority
MX @ mail.linuxiarze.pl 0
Dodaj również nowy rekord A, który przykładowo wygląda:
Record Type Name value
A mail
Instalacja Postfix
apt update
apt install postfix
Podczas instalacji będzie wymagana podstawowa konfiguracja Postfix:
1. General type of mail configuration: Internet Site
2. System mail name (bez suffixu „mail”, tutaj): linuxiarze.pl
Konfiguracja domeny w punkcie 2 zapisze Twój adres mailowy nick@linuxiarze.pl , gdzie
nick zostanie użyty taki, jakiego usera (oprócz root) założyłeś w poprzedniej części 3 Serwer FTP (tutaj: lolek), więc skonfigurowany adres mailowy to: lolek@linuxiarze.pl
Narzędzie 'ss’ (Socket Statistics) powie nam czy Postfix master proces nasłuchuje TCP na porcie 25:
sudo ss -lnpt | grep master
Konfiguracja zapory ogniowej
Nakładkę na filtr pakietów UFW zainstalowaliśmy w pierwszej części cyklu, więc teraz dodamy reguły umożliwiające odbieranie poczty z innych serwerów SMTP:
ufw allow 25/tcp
Test portu 25
Aby sprawdzić czy Postfix wysyła wiadomości użyjemy programy Telnet:
apt install telnet
Wykonaj test, np. do serwera pocztowego Gmail:
telnet gmail-smtp-in.l.google.com 25
Wiadomość zwrotna typu:
telnet: Unable to connect to remote host: Connection timed out
oznacza, że port 25 jest wciąż zamknięty. W takim wypadku skontaktuj się z dostawcą usługi serwerowej o otwarcie tego portu.
W innym przypadku port jest otwarty i serwer SMTP jest gotowy do pracy.
Test działania poczty
Aby wykonać testową wysyłkę maila, można posłużyć się zainstalowanym programem Postfix lub innym, np. Mailutils.
a. Postfix zawiera w swoim składzie plik Sendmail, więc wysyłka będzie wykonana z konta użytkownika systemu, na jakim teraz pracujesz (root).
Aby wysłać maila z konta zwykłego użytkownika, np. tego, który już posiadasz (tutaj: lolek), przeloguj się na jego konto:
su - lolek
Teraz wyślij maila za pomocą Postfix:
echo "mail testowy" | sendmail twoje-konto@serwer.com
b. Aby wysłać maila przy pomocy Mailutils, zainstaluj ten pakiet:
apt install mailutils
a następnie wyślij maila:
echo "mail testowy" | mail -s "Mój pierwszy mail testowy" twoje-konto@serwer.com
gdzie:
– twoje-konto@serwer.com to aktywne konto pocztowe na innym serwerze
Aby opuścić konto zwykłego usera i wrócić na konto root-a:
exit
Jeśli Twój email nie dotrze do skrzynki zewnętrznej, sprawdź log:
tail -n 20 /var/log/mail.log
lub:
nano /var/log/mail.log
Czytanie odebranych maili
Do tego celu posłuży nam program Mailutils – jeśli go nie zainstalowałeś, zrób to teraz.
Co to jest Mailutils?
GNU Mailutils to bogata i potężna, niezależna od protokołu struktura poczty. Zawiera szereg przydatnych bibliotek pocztowych, klientów i serwerów.
Wysyłanie poczty za pomocą Mailutils (polecenie mail) właśnie przerobiliśmy.
Aby przeczytać odebraną pocztę użyj tej samej komendy, czyli:
mail
Pamiętaj, iż powyższe polecenie przeczyta odebrane wiadomości pocztowe użytkownika, na którego koncie jesteś zalogowany.
Ustawienie hostname dla Postfix
Domyślnie serwer Postfix SMTP używa nazwy hosta systemu operacyjnego. Jednak nazwa hosta systemu operacyjnego może się zmienić, więc dobrą praktyką jest ustawienie nazwy hosta bezpośrednio w pliku konfiguracyjnym Postfix.
Otwórz główny plik konfiguracyjny Postfix za pomocą edytora tekstu:
nano /etc/postfix/main.cf
i zmień linię:
myhostname = linuxiarze.pl
na:
myhostname = mail.linuxiarze.pl
Po zapisaniu zmian zrestartuj Postfix:
systemctl restart postfix
Utworzenie aliasu mailowego
Istnieją pewne wymagane aliasy, które należy skonfigurować podczas obsługi serwera poczty. Możesz dodać alias e-mail w pliku /etc/aliases, który jest specjalnym plikiem tabeli wyszukiwania Postfix, używającym formatu zgodnego z Sendmail.
nano /etc/aliases
Domyślnie istnieje tam konfiguracja:
postmaster: root
dzięki której e-maile dla postmaster@linuxiarze.pl będą dostarczane do root@linuxiarze.pl
Zwykle nie używamy adresu e-mail root. Zamiast tego postmaster może używać normalnej nazwy logowania, aby uzyskać dostęp do wiadomości e-mail. Możesz więc dodać następującą linię, zastępując nazwę użytkownika swoją prawdziwą nazwą użytkownika.
root: lolek
(zamiast lolek wpisz swoją nazwę użytkownika systemu)
Dzięki temu e-maile dla postmaster@linuxiarze.pl i root@linuxiarze.pl będą dostarczane do lolek@linuxiarze.pl
Aktywuj nowe aliasy:
newaliases
Pamiętaj również, aby w przyszłości, w trakcie aktualizacji pakietu Postfix, podczas konfiguracji wybrać opcję 'No Configuration’ (Bez konfiguracji), aby zachować aktualne ustawienia serwera SMTP.
W przypadku pytań odsyłam do stron man-a:
man postfix
man mailutils
man sendmail
man telnet
Podsumowując dzisiejszy tutorial, możemy teraz odbierać pocztę z innych serwerów pocztowych, czytać ją i wysyłać własną za pomocą programu w konsoli tekstowej.
W następnej części cyklu Własny serwer rozwinę temat poczty email i zainstalujemy serwer IMAP, który umożliwi nam obsługę poczty przychodzącej i wychodzącej za pomocą klienta pocztowego (Thunderbird, Evolution, Claws-Mail, Geary, etc.) na komputerze domowym.
Świetnie by było napisać jeszcze parę regułek firewalla do pełni szczęścia i cały art był by miodem.
Najpotrzebniejsze reguły są dodane przez ufw:
Nakładkę na filtr pakietów UFW zainstalowaliśmy w pierwszej części cyklu( https://linuxiarze.pl/wlasny-serwer-cz-1-serwer-www/ ), więc teraz dodamy reguły umożliwiające odbieranie poczty z innych serwerów SMTP