26.3. Konfiguracja demona sendmail

Napisał Christopher Shumway.

sendmail(8) jest domyślnym agentem przekazywania poczty (ang. Mail Transfer Agent - MTA) w systemie FreeBSD. Zadaniem sendmaila jest odebranie przesyłki od programu klienta poczty (ang. Mail User Agent - MUA) i dostarczenie jej do odpowiedniego programu doręczającego zgodnie z kofiguracją. sendmail może również przyjmować połączenia sieciowe i dostarczać pocztę do lokalnych skrzynek pocztowych lub przesłać ją do innego programu.

sendmail wykorzystuje następujące pliki konfiguracyjne:

Nazwa pliku Funkcja
/etc/mail/access baza danych kontroli dostępu
/etc/mail/aliases baza aliasów
/etc/mail/local-host-names lista nazw hostów/domen dla których sendmail akceptuje przesyłki
/etc/mail/mailer.conf plik konfiguracyjny programu Mailer
/etc/mail/mailertable tablica dostarczania programu Mailer
/etc/mail/sendmail.cf główny plik konfiguracyjny sendmaila
/etc/mail/virtusertable tablica wirtualnych użytkowników i domen

26.3.1. Plik /etc/mail/access

Baza danych kontroli dostępu określa jakie hosty lub adresy IP mają dostęp do lokalnego serwera poczty, oraz określa rodzaj tego dostępu. Adresy hostów zdalnych mogą mieć parametry OK, REJECT, RELAY lub mogą zostać przekazane do procedury obsługi błędów sendmaila wraz z kodem błędu. Hosty z domyślnym parametrem OK mają prawo do przesyłania poczty do lokalnego hosta pod warunkiem, że adresem docelowym przesyłki jest ten lokalny host. Wszystkie połączenia do serwera poczty pochodzące od adresów hostów z parametrem REJECT są odrzucane. Hosty posiadające parametr RELAY mają prawo przesyłać pocztę do dowolnego odbiorcy przez lokalny serwer poczty.

Przykład 26-1. Konfiguracja bazy danych kontroli dostępu sendmaila

cyberspammer.com                550 Nie przyjmujemy poczty od spamerow
FREE.STEALTH.MAILER@            550 Nie przyjmujemy poczty od spamerow
another.source.of.spam          REJECT
okay.cyberspammer.com           OK
128.32                          RELAY

Przykład zawiera pięć wpisów. Nadawcy poczty pasujący do lewej strony tablicy są traktowani wg reguł określonych z prawej strony tablicy. Dwa pierwsze przykłady przekazują kod błędu do procedury obsługi błędów sendmaila. Komunikat jest wyświetlany hostom, których adres pasuje do adresu z lewej strony tablicy. Następny wpis odrzuca pocztę od hosta z adresem Internetowym another.source.of.spam. Kolejny wiersz akceptuje połączenia do serwera poczty z adresu okay.cyberspammer.com, który jest bardziej precyzyjnie określony niż adres cyberspammer.com w linii pierwszej. Bardziej precyzyjne określenia adresów przesłaniają adresy mniej precyzyjne. Ostatni wpis pozwala na przekazywanie poczty ze wszystkich adresów IP zaczynających się od 128.32. Wszystkie hosty z takim początkiem numeru IP mają możliwość przesyłania poczty za pomocą tego serwera poczty, adresowanej do innych serwerów.

Po aktualizacji tego pliku należy wywołać komendę make w katalogu /etc/mail/ w celu aktualizacji bazy danych.

26.3.2. Plik /etc/mail/aliases

Baza danych aliasów zawiara listę nazw wirtualnych skrzynek pocztowych przekazywanych do innych użytkowników, do plików, do programów lub do innych aliasów. Poniżej kilka przykładów, jakie mogą zostać użyte w pliku /etc/mail/aliases:

Przykład 26-2. Baza danych aliasów

root: localuser
ftp-bugs: joe,eric,paul
bit.bucket:  /dev/null
procmail: "|/usr/local/bin/procmail"

Format pliku jest prosty - z lewej strony nazwa aliasu, a następnie po dwukropku adres docelowy. Pierwszy przykład zwyczajnie przekazuje pocztę konta root do skrzynki użytkownika localuser, która to nazwa jest następnie również przeszukiwana w bazie aliasów. Jeżeli nie zostanie znalezione żadne dopasowanie poczta jest przekazywana do lokalnego użytkownika localuser. Drugi wiersz zawiera przykład listy odbiorców. Poczta adresowana do odbiorcy ftp-bugs jest przekazywana do trzech skrzynek lokalnych użytkowników: joe, eric oraz paul. Należy pamiętać że skrzynki zdalne powinny być określone pełną nazwą np . Kolejny przykład pokazuje przekazanie poczty do pliku, w tym przypadku /dev/null. Ostatni przykład prezentuje przekazanie poczty do programu, tutaj wiadomość jest zapisana na standardowe wejście programu /usr/local/bin/procmail poprzez potok systemu UNIX®.

Kiedy plik zostanie zaktualizowany należy uruchomić polecenie make w katalogu /etc/mail/ w celu zaktualizowania bazy danych.

26.3.3. Plik /etc/mail/local-host-names

Plik /etc/mail/local-host-names zawiera listę nazw które sendmail(8) traktuje jako nazwy hosta lokalnego. Możemy umieścić tu dowolną nazwę hosta lub domeny dla której sendmail ma odbierać pocztę. Na przykład jeżeli nasz serwer poczty ma odbierać pocztę przeznaczoną dla domeny example.com oraz hosta mail.example.com, plik local-host-names powinien wyglądać następująco:

example.com
mail.example.com

Po aktualizacji tego pliku wymagany jest restart sendmail(8) w celu odczytania przez niego wprowadzonych zmian.

26.3.4. Plik /etc/mail/sendmail.cf

Główny plik konfiguracyjny sendmaila -- sendmail.cf określa wszystkie aspekty pracy sendmaila począwszy od przepisywania adresów e-mail po wyświetlane komunikaty dla zdalnych serwerów poczty. Oczywiście, przy tak rozległej roli jaką spełnia ten plik, jest on bardzo skomplikowany i szczegóły jego konfiguracji wychodzą poza zakres tego podrozdziału. Na szczęście dla standardowej konfiguracji serwera poczty rzadko wymagana jest modyfikacja tego pliku.

Główny plik konfiguracyjny sendmaila może być zbudowany za pomocą zestawu makr m4(1) które definiują cechy i zachowanie sendmaila. Szczegóły opisane są w pliku /usr/src/contrib/sendmail/cf/README.

Aby zmiany poczynione w tym pliku przyniosły skutek należy zrestartować sendmaila.

26.3.5. Plik /etc/mail/virtusertable

Mapa użytkowników wirtualnych virtusertable odwzorowuje adresy poczty domen wirtualnych na rzeczywiste skrzynki pocztowe. Skrzynki te mogą być lokalne, zdalne, aliasy zdefiniowane w pliku /etc/mail/aliases lub pliki.

Przykład 26-3. Przykładowe odwzorowanie adresów domen wirtualnych

root@example.com                root
postmaster@example.com          postmaster@noc.example.net
@example.com                    joe

W powyższym przykładzie mamy odwzorowanie domeny example.com. Plik map wirtualnych jest przetwarzany do napotkania pierwszego dopasowania, w kierunku od góry do dołu. Pierwszy wiersz odwzorowuje adres do lokalnej skrzynki użytkownika root. Kolejny wiersz odwzorowuje adres do skrzynki użytkownika postmaster na hoście noc.example.net. W końcu jeżeli żadne dotychczasowe odwzorowanie nie zostało dopasowane, zostanie użyte ostatnie dopasowanie które przekazuje wszelką pocztę adresowaną do kogokolwiek w domenie example.com do lokalnej skrzynki pocztowej użytkownika joe.

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.