Instalacja Postfixa i wirtualne aliasy

Serwer pocztowy oparty na Postfixie to na pewno dobry pomysł w kontekście jego szybkości, bezpieczeństwa i elastyczności. W zasadzie Postfix to zespół współpracujących ze sobą demonów do obsługi i przetwarzania poczty. Instalacja Posfixa najczęściej wiąże się z instalacją innych pakietów takich jak SASL czyli autoryzacja poczty wychodzącej ( bez tego nasz sewer będzie typu Open Relay ), pakiet do szyfrowania TLS/OpenSSL czy też pakiety odpowiedzialne za obsługę pobierania poczty z serwera na komputer klienta wykorzystując protokoły POP3 czy IMAP. Instalacja wykonana z wykorzystaniem dystrybucji Linux Debian.

Instalacja i Konfiguracja Postfixa

Poniżej przedstawiony jest proces instalacji i konfiguracji serwera MTA Postfix w oparciu o użytkowników systemowych. Tak więc w tym przypadku opieramy się na trzymanie danych w oparciu o pliki tekstowe a nie bazę danych typu MySQL.

Sama instalacja Postfixa jest prosta, wystarczy wpisać poniższe polecenia w konsoli.

Aktualizujemy pakiety:

apt-get update
apt-get upgrade

Następnie instalujemy Postfixa:

apt-get install postfix

Po zainstalowaniu pakietu przechodzimy do właściwej konfiguracji Postfixa. Na samym początku pojawi się nam okno dialogowe w którym podajemy podstawowe informacje dotyczące konfiguracji Postfixa.

Podstawowa konfiguracja Postfixa

Podstawowa konfiguracja Postfixa

Konfigurujemy nasz serwer pocztowy krok po kroku zgodnie z podanymi poniżej zalecanymi ustawieniami:

  1. General type of mail configuration: wybieramy Internet Site
  2. System mail name: wpisujemy nazwę domeny naszego serwera ( musi być zgodna z FQDN )
  3. Root and postmaster mail recipient: wpisujemy nazwę maila dla roota ( administratora serwera pocztowego )
  4. Other destination to accept mail: nazwy domen obsługiwanych przez serwer, mogą to być zarówno domeny FQDN jak i lokalne
  5. Force synchronous updates on mail queue: NO
  6. Local networks: pozostawiamy adres IP lokalny
  7. Mailbox size limit: 0
  8. Local address extension character: +
  9. Internet protocols to use: all

Jeśli popełniliśmy błąd podczas podstawowej konfiguracji wystarczy, że wpiszemy poniższe polecenie aby rozpocząć proces od nowa:

dpkg-reconfigure postfix

Konfiguracja i tak zostaje zapisana w pliku: /etc/postfix/main.cf tak więc możemy konfigurować parametry „ręcznie”.

Domyślna konfiguracja Postfixa wymusza aby pracował w środowisku chroot, co można zmienić ( nie polecam takiej zmiany ze względów bezpieczeństwa ) w pliku: /etc/postfix/master.cf co widać w linii odwołującej się do demona smtp ( patrz: 3 kolumna – w tym wypadku jest nałożony chroot „-„, literka n go deaktywuje ):

smtp      inet  n       -       -       -       -       smtpd

Zmieniamy odpowiednie dyrektywy w pliku /etc/postfix/main.cf jak poniżej:

+ Dyrektywa: myhostname

Zmieniamy nazwę naszego hosta na naszą domenę zgodną z FQDN np. mail.naszadomena.pl
Tak też będzie identyfikowany nasz serwer pocztowy w sieci.

myhostname = mail.naszadomena.pl

+ Dyrektywa: mydestination

Tutaj wpisujemy domeny obsługiwane przez nasz serwer ( oczywiście domeny muszą w DNSach być nakierowane na nasz serwer, co jest chyba oczywiste ). Należy uważać aby nie wpisywać domen, które są wyszczególnione do obsługi wirtualnych domen w dyrektywach: virtual_alias_domain i virtual_mailbox_domain ! Z domen wyszczególnionych w mydestination będziemy korzystać my i nasi użytkownicy systemowi.

mydestination = mail.naszadomena.pl, naszadomena.pl, nasza_inna_domena.pl, localhost, [LOKALNA_NAZWA_KOMPUTERA]

Powyższy wpis dotyczy zarówno domen FQDN jak i domen lokalnych. System konfiguracyjny automatycznie dopisał nam: localhost i nazwę komputera, które pobrał z pliku gdzie trzymane są nazwy hostów: /etc/hosts

+ Dyrektywa: mynetworks

Ten wpis podaje, które adresy należą do naszej sieci ( są zaufane ). W tym wypadku dodajemy adres lokalny serwera. Z tego adresu maile nie będą poddawane restrykcjom z uwagi na „zaufanie” wychodzą i wchodzą w obręb tej samej sieci. Wpis jest taki jaki został ustawiony podczas startowej konfiguracji Postfixa.

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

+ Skrzynki pocztowe

Jeśli teraz wyślemy naszego maila do jakiegoś użytkownika wykorzystując jedną z naszych domen ( musi być to domena z mydestination lub jakaś wirtualna – jeśli takową ustaliliśmy w konfiguracji ) to mail zostanie wysłany do użytkownika systemowego, na przykład wysyłamy na naszym serwerze maila z wykorzystaniem domeny lokalnej:

echo "jakiś mail" | mail -s "testowy temat" nasz_user@localhost

Sprawdzamy co mówią nam nasze logi mailowe po wysłaniu maila:

tail /var/log/mail.log

Jeśli mamy w logach status SEND i żadnych błędów to nasz mail wylądował w skrzynce usera, nasuwa się pytanie gdzie ta skrzynka jest ? Skrzynki ( domyślnie typ: mbox ) znajdują się w katalogu: /var/spool/mail/ ( lub /var/mail/ – jeśli brak chroota ) umieszczone są tam pliki tekstowe z naszymi mailami, nazwa pliku oczywiście określa użytkownika systemowego. Postfix obsługuje dwa typy skrzynek ( sposób magazynowania wiadmości ): MBOX i MAILDIR. Mail wysłany do użytkownika, który nie istnieje w naszym systemie oczywiście zostanie odrzucony chyba, że jest aliasem wtedy nastąpi przekierowanie do usera lub na inny serwer pocztowy. Przypominam, że ta konfiguracja Postfixa opiera się na plikach tekstowych, tak więc mówiąc o użytkownikach poczty mówię o użytkownikach systemowych, których dane zapisane są w pliku: /etc/passwd.
Do odbierania poczty jak wspomniałem na wstępie służą protokoły POP3 i znacznie bardziej od niego popularny IMAP. Tak więc aby użytkownik, mógł ze swojego komputera obsługiwać pocztę na serwerze należy zainstalować serwer Dovecot.

Wracając do skrzynek pocztowych to dla przykładu jeśli chcemy wymusić aby Postfix przetrzymywał nasze maile w standardzie „MAILDIR” dodajemy poniższą opcję do pliku konfiguracyjnego: /etc/postfix/main.cf

home_mailbox = Maildir/

Powyższy katalog Maildir powinien zostać utworzony w katalogu domowym użytkownika ( np. /home/[USER]/Maildir/ ). Jeśli takiego katalogu nie ma to wysłanie maila na skrzynkę użytkownika spowoduje automatyczne utworzenie takiego katalogu wraz z niezbędnymi plikami przechowującymi pocztę użytkownika. Jeśli katalog nie został stworzony sugeruję przejrzeć logi – możliwe, że są problemy z uprawnieniami katalogu.

+ Bezpieczeństwo i testowanie Postfixa

UWAGA: Taka podstawowa konfiguracja to proszenie się o kłopoty 🙂 Nasz serwer staje się Open Relay`em więc każdy może wykorzystać nasz serwer do spamu.
Więcej informacji na temat restrykcji, autoryzacji za pośrednictwem SASL i testowania naszego serwera pocztowego można znaleźć w poniższym artykule:

Autoryzacja SASL w Postfix

Obsługa wirtualnych aliasów

Ta część tekstu dotyczy ficzera, który był mi potrzebny do obsługi wielu aliasów mailowych.
Wirtualne aliasy są po to aby użytkownik mając na przykład jedna skrzynkę pocztową na naszym serwerze mógł mieć także inne adresy, które będą tożsame z jego głównym adresem. Tak więc mamy tutaj z przekazywaniem poczty z innych „wirtualnych” adresów pocztowych na „fizyczne” adresy naszych użytkowników na serwerze, które lądują we właściwej skrzynce systemowego użytkownika.
Przykłady plik z wirtualnymi aliasami:

admin@wirtualny_alias.pl webmaster@nasza_domena.pl
biuro@mail.pl webmaster@nasza_domena.pl
szalony_user@mail.pl szalony

Tak więc dla przykładu mail wysłany na admin@wirtualny_alias.pl zostanie przekazany na maila webmaster@nasza_domena.pl ( poczta zostaje przekazana na nasz serwer i ląduję u użytkownika webmaster )
W przypadku drugiego przykładu mail wysłany na adres biuro@mail.pl zostaje przekazany tak samo jak w pierwszym przypadku na nasz właściwy adres webmaster@nasza_domena.pl
W trzecim przypadku mail wysłany na adres szalony_user@mail.pl ląduje u użytkownika lokalnego „szalony”.
Oczywiście wszystkie domeny wirtualne muszą zostać dopisane do dyrektywy: virtual_alias_domains.

Tak więc do pliku konfiguracyjnego main.cf dodajemy poniższe opcje dotyczące naszych wirtualnych domen:

virtual_mailbox_base = /var/mail/virtual
virtual_transport = maildrop
virtual_alias_domains = wirtualna_domena_1.pl, wirtualna_domena_2.pl, wirtualna_domena_3.pl
virtual_alias_maps = hash:/etc/postfix/virtual_alias

W zasadzie tutaj nie trzeba nic tłumaczyć, trzeba tylko pamiętać aby wyszczególnione domeny w virtual_alias_domains nie były takie same jak w dyrektywie mydestination !

Teraz przystępujemy do utworzenia naszych aliasów mailowych. Tworzymy plik o takiej samej nazwie jak podaliśmy w powyższej dyrektywie virtual_alias_maps, czyli w naszym przypadku: /etc/postfix/virtual_alias

I tam dodajemy nasze wirtualne aliasy zgodnie z podanym wcześniej przykładzie. Dla przykładu:

Następnie wykonujemy polecenie:

postmap /etc/postfix/virtual_alias

Następnie restartujemy Postfixa:

service postfix restart

W katalogu /etc/postfix/ powinien pojawić się przetworzony nowy lub zaktualizowany plik: virtual_alias.db
Teraz możemy przystąpić do testowania jak spisują się nasze aliasy pocztowe 🙂

Błędy, problemy … rozwiązania

+ Problem z dostarczeniem poczty na serwery Google

Przykładowy log z naszego serwera:

Our system has detected that this message does 550-5.7.1 not meet IPv6 sending guidelines regarding PTR records and 550-5.7.1 authentication. 
Please review 550-5.7.1  https://support.google.com/mail/?p=ipv6_authentication_error for more 550 5.7.1 information.

Musimy sprawdzić opcję określającą obsługę protokołów IP, zmieniamy tak jak poniżej w pliku /etc/postfix/main.cf

inet_protocols = ipv4

+ Przekierowanie maili do /dev/null

Warto skorzystać z takiego rozwiązania aby zatrzymać niechcianą pocztę. Na przykład dla usuwanie maili od usera www-data szczególnie jeśli autorespondery niektórych userów wysyłają na domyślny adres www-data@nasz-host.com ogromną ilość maili potwierdzających dostarczenie wiadomości.

Wykorzystamy do tego wirtualne aliasy, na samym początku tworzymy użytkownika systemowego no-reply:

useradd -s /sbin/nologin -d /dev/null no-reply
passwd no-reply

Po czym dodajemy do pliku z naszymi aliasami przekierowanie na konto usera no-reply ( u mnie plik z wirtualnymi aliasami ma nazwę: /etc/postfix/virtual_alias ):

www-data@nasz-host.com     no-reply

Po czym należy przegenerować bazę z aliasami i zrestartować postfixa:

postmap /etc/postfix/virtual_alias
/etc/init.d/postfix reload

keys: instalacja postfixa, virtualne aliasy, virtualne, przekierowania, autorespondery, maile no-reply, /dev/null, przykładowa konfiguracja, debian, ubuntu, linux, raspberry, serwery pocztowe, szybki i bezpieczny MTA, tutorial, poradnik

Jedno przemyślenie nt. „Instalacja Postfixa i wirtualne aliasy

  1. Zmieniłem inet_protocols na ipv4, mimo to zwrotki z Gmaila nadal przychodzą. Co może być nie tak? Dodam, że nie udaje się zrestartować Postfixa. To znaczy maile wysyła, jednak nie dochodzą one na skrzynki gmailowe.

Dodaj komentarz