Serwer poczty Postfix

Postfix jest kompatybilny z Sendmailem jednak jest łatwiejszy w konfiguracji, administracji, jest bardziej modularny, bardziej bezpieczny i oferuje większą wydajność. Zawiera taką funkcjonalność jak dopasowywanie wzorców do filtrowania niechcianej poczty, ponadto wspiera wiele wirtualnych domen w ramach jednego systemu.

Demonem Postfixa jest master zlokalizowany w katalogu /usr/libexec/postfix. Aby wykonać swoje zdania demon uruchamia na żądanie procesy takich agentów jak  nqmgr, pickup oraz smtpd. Każdy agent ma swoja małą dobrze zdefiniowaną funkcję i pracuje z minimalnymi uprawnieniami. Manadżer kolejki nqmgr jest odpowiedzialny za wysyłkę maili i lokalne dostarczanie. Agent pickup przekazuje komunikaty z katalogu /var/spool/postfix do /var/spool/mail we współpracy z agentem smtpd. Procesy agentów zostają zakończone po wykonaniu przez nich swojego zadania lub bo pozostawaniu nieaktywnym przez określony czas. Proces master i inni agenci współpracują w zarządzaniu całym systemem poczty.

 

Komendy Postfixa.

# alternatives – wyświetla i ustawia domyślnego MTA.

# mail/mailx – wysyła i odbiera maile.

# postalias/newaliases – przetwarza bazę aliasów składowaną w pliku /etc/aliases.

# postconf – wyświetla i modyfiikuje konfigurację Postfixa składowaną w pliku main.cf.

# postfix – kontroluje wszelkie operacje Postfixa, takie jak uruchamianie, zatrzymywanie, sprawdzanie stanu i przeładowywanie konfiguracji.

# postmap – przetwarza i konwertuje niektóre pliki konfiguracyjne do bazy kompatybilnej z Postfixem.

# postqueue/mailq – wyśwwietla i kontroluje kolejkę Postfixa.

 

Pliki konfiguracyjne Postfixa.

Pliki te (z wyjątiem pliku/etc/aliases) składowane są w katalogu /etc/postfix.

  • main.cf – podstawowy plik konfiguracyjny, niektóre jego dyrektywy:

queue_directory      = /var/spool/postfix
command_directory    = /usr/sbin
daemon_directory     = /usr/libexec/postfix
mail_owner           = postfix
myhostname           = host2.example.com
mydomain             = example.com
myorigin             = $myhostname
inet_interfaces      = localhost
mydestination        = $myhostname, localhost.$mydomain, localhost
mynetworks           = 192.168.2.0/24, 127.0.0.0/8
relayhost            = $mydomain
alias_maps           = hash:/etc/aliases
alias_database       = hash:/etc/aliases
mail_spool_directory = /var/spool/mail

Dyrektywa Opis
queue_directory   Położenie kolejki Postfixa.
command_directory  Położenie komend Postfixa.
daemon_directory  Położenie demonów Postfixa.
mail_owner    Właściciel demonów Postfixa i kolejki
myhostname      Pełna nazwa domenowa serwera.
mydomain   Domena serwera.
myorigin Host lub domena, która ma być wyświetlana jako pochodzenie na mailach wychodzących z serwera.
inet_interfaces  Interfejsy sieciowe jakie mają być używane do przychodzącej poczty.
mydestination  Domeny, z których serwer akceptuje pocztę.
mynetworks  Adres IP zaufanych sieci.
relayhost Host lub inny serwer poczty, przez który będzie przesyłana poczta. Ten serwer będzie pełnił rolę bramy wychodzącej.
alias_maps   Baza aliasów używana przez agenta lokalnego dostarczania.
alias_database  Baza aliasów generowana komendą newaliases.
mail_spool_directory  Lokalizacja, w której składowane będą skrzynki użytkowników.

Wyświetlanie domyślnych (-n) ustawień, które są zdefiniowane w pliku main.cf:

Wyświetlanie domyślnych (-d) ustawień, które nie są zdefiniowane w pliku main.cf:

Modyfikacja ustawień z pliku main.cf może się także odbywać bezpośrednio z linii komend np. poniższa komenda modyfikuje dyrektywę inet_interfaces:

Weryfikacja:

 

  • master.cf – definiuje ustawienia konfiguracyjne dla demona master i sposób w jaki powinien współpracować z innymi agentami aby dostarczać pocztę. Fragment pliku:

Dla każdej usługi wylistowanej w pliku master.cf jest siedem kolumn, które definiują jak usługa ma być używana.

Kolumna Opis
service Nazwa usługi.
type Mechanizm transportu, który ma być używany.
private Czy usługa jest tylko do użytku przez Postfixa.
unpriv Czy usługa może być uruchamiana przez zwykłych użytkowników.
chroot Czy usługa ma zmieniać główny katalog (chroot) dla kolejki mail.
wakeup Interwał wake up dla usługi.
maxproc Maksymalna ilość procesów na jaki usługa może się sforkować (rodzielić).
command + args Komenda powiązana z usługą plus dowolny argument.

 

  • access – może być używany do kontroli dostępu opartej o adres e-mail, adres hosta, domenę lub adres sieci.

Aby zezwolić na dostęp dla określonego adresu IP:

Aby zezwolić na dostęp dla określonej domeny:

Aby odmówić dostępu dla sieci 192.168.3.0/24:

Po wprowadzeniu zmian w pliku access należy przekonwertować jego zawartość do bazy access.db komendą postmap:

 

  • canonical – mapowanie maili przychodzących do lokalnych użytkowników na zdalne skrzynki e-mail.

Aby przekazywać maile dla użytkownika user1 na skrzynkę user1@yahoo.com:

Aby przekazywać wszystkie maile przeznaczone dla domeny example.org na inną domenę example.com:

Po wprowadzeniu zmian w pliku canonical należy przekonwertować jego zawartość do bazy canonical.db komendą postmap:

 

  • generic – mapowanie maili wychodzących do lokalnych użytkowników na zdalne skrzynki e-mail. Składnia taka sama jak pliku canonical. Po wprowadzeniu zmian w tym pliku także należy uruchomić komendę postmap.

 

  • relocated – informacje o użytkownikach, którzy zostali przeniesieni. Składnia pliku taka sama jak plików canonical i generic.

Zakładając, że użytkownik user1 został przeniesiony z domeny example.com do example.net można przekazywać wszystkie maile otrzymane na starym adresie na nowy adres:

Po wprowadzeniu zmian w tym pliku także należy uruchomić komendę postmap.

 

  • transport – mapowanie pomiędzy adresami e-mail i serwerami przez które te maile mają być wysyłane (następnymi hopami) w formacie transport:nexthop.  Np.:

Po wprowadzeniu zmian w tym pliku także należy uruchomić komendę postmap.

 

  • virtual – używany do przekierowania maili przeznaczonych dla pewnego użytkownika na konto innego użytkownika lub wielu użytkowników. Może być też używany do implementacji mechanizmu aliasów domen.

Przekierowanie maila dla użytkownika user1 do użytkowników root i user3:

Przekierowanie maila dla użytkownika user1 w domenie example.com do użytkownika root:

Po wprowadzeniu zmian w tym pliku także należy uruchomić komendę postmap.

 

  • /etc/aliases – przekazywanie maile przeznaczonych do użytkowników lokalnych do innych użytkowników lokalnych lub adresów zdalnych.

Aby przekazywać maile przeznaczone do wykasowanego konta user50 do lokalnego użytkownika user1 i zdalnego użytkownika user2@host1.example.com :

Plik aliases pozwala  także na utworzenie grupy mailingowej. Tak możemy utworzyć grupę mailingową lnxadmteam z członkami: user1, user2, user3:

Po każdej modyfikacji tego pliku należy komendą newaliases przekonwertować plik do bazy aliases.db:

 

Logi Postfixa.

Wszystkie komunikaty i ostrzeżenia logowane są do pliku /var/log/maillog.

 

Wymagania SELinux związane z Postfixem.

Typy plików SELinx związane z Postfixem to postfix_exec_t dla katalogu  z konfiguracją /etc/postfix, postfix_data_t dla katalogu z danymi /var/lib/postfix i postfix_spool_t  dla katalogu z pocztą przychodzącą i wychodzącą
/var/spool/postfix.

Typ SELinux związany z portem SMTP to smtp_port_t:

Zmienna boolean związana z postfixem, która pozwala lub zabrania Postfixowi na zapis w lokalnym katalogu spool. Domyślnie zmienna jest włączona.

 

Konfiguracja centralnego serwera poczty.

1. Instalacja Postfixa:

 

2. Edycja pliku konfiguracyjnego main.cf i modyfikacja poniższych dyrektyw, pozostałe zostawiamy niezmienione.

Domyślnie serwer poczty rozwiązuje nazwy domenowe dzięki DNS. Jeżeli DNS jest nieobecny można poinstruować Postfixa aby używał pliku /etc/hosts dyrektywą disable_dns_lookups = yes.

3. Sprawdzenie składni pliku konfiguracyjnego main.cf.

4. Wyświetlenie zmian dokonanych w pliku main.cf komendą postconf:

5. Odblokowanie usługi smtp na firewallu.

6. Autostart, start i status Postfixa.

7. Ustawienie Postfixa jako domyślnego MTA.

8. Wysyłka maila do użytkownika user1 z tematem Test:

9. Przełączenie na konto user1 i sprawdzenie czy poczta doszła.

10. Sprawdzenie logu.

11. Poczta wyświetla się jako wysłana z server.example.com możemy zmodyfikować zmienną myorigin aby wskazywała na domenę.

 

Test centralnego serwera poczty ze zdalnego klienta.

Strona klienta (client.example.com).

1. Instalacja Postfixa:

2. Edycja main.cf i wyłączenie korzystania z DNSa na rzecz pliku /etc/hosts.

3. Autostart i start Postfixa.

4. Wysyłka poczty na konto user1@server.example.com.

 

Strona serwera (server.example.com).

5. Sprawdzenie czy doszła poczta do użytkownika user1.

 

Konfiguracja Postfixa do forwardowania lokalnej poczty z klienta do centralnego serwera poczty i odrzucania poczty ze źródeł zewnętrznych.

Strona klienta (client.example.com).

1. Instalacja postfixa.

2. Edycja pliku konfiguracyjnego main.cf i modyfikacja poniższych dyrektyw. Pozostałe zostawiamy niezmienione.

3. Sprawdzenie składni main.cf:

4. Podejrzenie zmian dokonanych w pliku main.cf komendą postconf:

5. Otworzenie portu w łańcuchu incoming nie jest potrzebne bo serwer tylko forwarduje pocztę. Port 25 w łańcuch outgoing jest otwarty.

6. Autostart i start Postfixa.

7. Ustawienie Postfixa jako domyślnego MTA.

8. Wysyłka maila do użytkownika user1 z tematem Test. Konto user1 musi być założone na serwerze. Jeżeli nie ma takiego konta na kliencie to mail dojdzie ale nie będziemy wiedzieć czy przekazywanie działa poprawnie. Lepiej założyć również na kliencie i przełączyć się na konto user1 na kliencie i sprawdzić, że na konto user1@localhost nie doszła żadna poczta.

9. Sprawdzenie czy kolejka jest pusta, tj. czy mail został wysyłany

10. Przełączenie na konto user1 i sprawdzenie czy czasem lokalnie ten mail nie został wysłany.

Wszystko pasuje mail nie został wysłany lokalnie.

Strona serwera (server.example.com).

11. Przełączenie na konto user1 i sprawdzenie czy poczta doszła.

Mail dotarł na skrzynkę user1@server.example.com czyli a nie na skrzynkę user1@localhost a więc wszystko w porządku.

 

Konfiguracja Postfixa do otrzymywania poczty z sieci lokalnej i forwardowania jej do centralnego serwera.

Strona klienta, który pracuje jako forwarder (client.example.com)

1. Edycja pliku konfiguracyjnego main.cf i modyfikacja poniższych dyrektyw. Pozostałe zostawiamy niezmienione.

2. Restart Postfixa.

3. Otworzenie portu 25 na firewallu.

 

Jakiś inny klient (nie client.example.com) z sieci lokalnej, z którego wyślemy maila.

4. Wysyłka maila.

 

Na centralnym serwerze (server.example.com).

Mail dotarł na skrzynkę user1@server.example.com czyli wszystko w porządku.

 

Leave a Reply

Your email address will not be published. Required fields are marked *