26.4. Zmiana agenta przekazywania poczty MTA

Autor Andrew Boothman. Autor informacji pobranych z e-maili Gregory Neil Shapiro.

Jak już wspomniano wcześniej, FreeBSD posiada zainstalowanego sendmaila jako MTA (Mail Transfer Agent). Jest on zatem domyślnie odpowiedzialny za naszą pocztę wychodzącą i przychodzącą.

Niektórzy administratorzy z różnych powodów wolą zmienić agenta przekazywania poczty. Powody te są bardzo różne, od chęci wypróbowania innego MTA po wymóg zastosowania specjalnej właściwości dostępnej w innym oprogramowaniu. Na szczęście, jakikolwiek byłby to powód, FreeBSD w łatwy sposób umożliwia przeprowadzenie zmiany MTA.

26.4.1. Instalacja nowego MTA

Dostępnych jest bardzo wiele różnych agentów przekazywania poczty. Dobrym miejscem do rozpoczęcia poszukiwań jest Kolekcja portów systemu FreeBSD, w której dostępnych jest wiele z nich. Oczywiście możemy używać MTA z dowolnego źródła, pod warunkiem że będziemy go w stanie uruchomić w systemie FreeBSD.

Pierwszym krokiem jest instalacja oprogramowania MTA. Po instalacji będziemy w mogli przekonać się czy wybrany agent spełnia nasze potrzeby. Po instalacji konfigurujemy oprogramowanie zanim przejmie ono rolę sendmaila. Podczas instalacji należy upewnić się aby nie nadpisać oryginalnych plików systemu takich jak /usr/bin/sendmail, w przeciwnym bowiem razie nowe oprogramowanie zostanie wykorzystane do pracy przez system zanim zostanie poprawnie skonfigurowane.

Informacje o konfiguracji wybranego MTA dostępne są w jego dokumentacji.

26.4.2. Wyłączenie sendmaila

Procedura uruchamiania sendmaila znacznie różni się między wersją 4.5-RELEASE, 4.6-RELEASE a wersjami późniejszymi, dlatego też sposób wyłączenia sendmaila jest nieco inny.

Ostrzeżenie Należy pamiętać, aby po wyłączeniu usług poczty wychodzącej sendmaila zamienić je innym systemem dostarczania poczty. Pominięcie tego kroku spowoduje że usługi systemowe takie jak periodic(8) nie będą w stanie dostarczać wyników swojej pracy za pośrednictwem poczty elektronicznej jak to zazwyczaj robią. Wiele modułów systemu wymaga do poprawnej pracy procesu o funkcjonalności sendmaila. Jeżeli aplikacje w dalszym ciągu będą używać sendmaila w celu wysłania poczty, mimo że go wyłączyliśmy, przesyłki zostaną wstawione do nieaktywnych kolejek poczty i nigdy nie zostaną dostarczone do adresata.

26.4.2.1. FreeBSD 4.5-STABLE przed 04-04-2002 i wcześniejsze (również 4.5-RELEASE i wcześniejsze)

wpisanie wiersza:

sendmail_enable="NO"

do pliku /etc/rc.conf wyłączy sendmaila jako serwer poczty przychodzącej, ale w dalszym ciągu umożliwi wysyłanie poczty (jeżeli plik /etc/mail/mailer.conf nie zostanie zmodyfikowany, szczegóły poniżej).

26.4.2.2. FreeBSD 4.5-STABLE after 2002/4/4 (Including 4.6-RELEASE and Later)

Całkowite wyłączenie sendmaila, włącznie z możliwością wysyłania poczty, umożliwia wpisanie wiersza:

sendmail_enable="NONE"

do pliku /etc/rc.conf..

Jeżeli naszym celem jest tylko wyłączenie serwera poczty przychodzącej należy wpisać wiersz:

sendmail_enable="NO"

do pliku /etc/rc.conf. Jeżeli poczta przychodząca jest wyłączona w dalszym ciągu funkcjonuje lokalne dostarczanie wiadomości. Więcej informacji nt. opcji startowych sendmaila jest dostępnych na stronie man rc.sendmail(8).

26.4.2.3. FreeBSD 5.0-STABLE i późniejsze

Całkowite wyłączenie sendmaila, włącznie z możliwością wysyłania poczty, umożliwia wpisanie wierszy:

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

do pliku /etc/rc.conf.

Jeżeli naszym celem jest tylko wyłączenie serwera poczty przychodzącej należy wpisać wiersz:

sendmail_enable="NO"

do pliku /etc/rc.conf. Więcej informacji nt. opcji startowych sendmaila jest dostępnych na stronie man rc.sendmail(8).

26.4.3. Uruchamianie nowego MTA przy starcie systemu

Mamy możliwość wyboru dwóch sposobów uruchamianie nowego MTA przy starcie systemu w zależności od wersji systemu FreeBSD.

26.4.3.1. FreeBSD 4.5-STABLE przed 11-04-2002 (również 4.5-RELEASE i wcześniejsze)

W katalogu /usr/local/etc/rc.d/ musimy utworzyć skrypt z rozszerzeniem .sh i prawami uruchamiania dla użytkownika root. Skrypt powinien akceptować parametry start i stop oraz odpowiednio na nie reagować. Podczas uruchamiania systemu skrypty systemowe wykonają następujące polecenie:

/usr/local/etc/rc.d/supermailer.sh start

Polecenie to może być użyte do ręcznego uruchomienia serwera. W momencie wyłączania systemu skrypty systemowe wykonają polecenie:

/usr/local/etc/rc.d/supermailer.sh stop

które również można wykorzystać do ręcznego zatrzymania naszego serwera poczty podczas pracy systemu.

26.4.3.2. FreeBSD 4.5-STABLE po 11-04-2002 (również 4.6-RELEASE i późniejsze)

W późniejszych wersjach FreeBSD możemy użyć powyższej metody lub wpisać wiersz:

mta_start_script="filename"

do pliku /etc/rc.conf, gdzie filename to pełna ścieżka do skryptu uruchamiającego nasz nowy MTA przy starcie systemu.

26.4.4. Zamiana sendmaila jako domyślnego programu obsługi poczty w systemie

Program sendmail stał się na tyle wszechobecny w świecie systemów UNIX®, że część oprogramowania zakłada z góry że jest on zainstalowany i poprawnie skonfigurowany w systemie. Z tego względu wiele alternatywnych MTA zawiera własną implementację interfejsu linii poleceń sendmaila. Takie podejście ułatwia łagodne przejście z sendmaila na nowy MTA.

Jeżeli zatem chcemy uruchomić nasz nowy program pocztowy, musimy się upewnić że oprogramowanie używające standardowej wersji sendmaila (programu /usr/bin/sendmail) będzie zamiast niego używało naszego oprogramowania poczty. Na szczęście FreeBSD zawiera system zwany mailwrapper(8) który wykona całą pracę za nas.

Przy standardowej instalacji systemu plik /etc/mail/mailer.conf zawiera wpisy podobne do poniższych:

sendmail    /usr/libexec/sendmail/sendmail
send-mail   /usr/libexec/sendmail/sendmail
mailq       /usr/libexec/sendmail/sendmail
newaliases  /usr/libexec/sendmail/sendmail
hoststat    /usr/libexec/sendmail/sendmail
purgestat   /usr/libexec/sendmail/sendmail

Wpisy te oznaczają, że jeżeli któreś z powyższych poleceń (na przykład sam sendmail) zostanie uruchomione, system wywołuje kopię mailwrappera o nazwie sendmail który sprawdza zawartość pliku mailer.conf i uruchamia program /usr/libexec/sendmail/sendmail. Takie rozwiązanie w łatwy sposób umożliwia zmianę programu binarnego, który będzie uruchomiony w momencie wywołania domyślnych funkcji sendmaila.

Dlatego jeżeli chcemy aby program /usr/local/supermailer/bin/sendmail-compat był uruchamiany zamiast oryginalnego sendmaila, musimy zmienić wpisy w pliku /etc/mail/mailer.conf na poniższe:

sendmail    /usr/local/supermailer/bin/sendmail-compat
send-mail   /usr/local/supermailer/bin/sendmail-compat
mailq       /usr/local/supermailer/bin/mailq-compat
newaliases  /usr/local/supermailer/bin/newaliases-compat
hoststat    /usr/local/supermailer/bin/hoststat-compat
purgestat   /usr/local/supermailer/bin/purgestat-compat

26.4.5. Zakończenie

Kiedy wszystko mamy już skonfigurowane w taki sposób jak chcemy, możemy albo zatrzymać oryginalny proces sendmaila (którego nie będziemy więcej potrzebowali) i uruchomić proces naszego nowego oprogramowania, albo po prostu zrestartować komputer. Restart dodatkowo umożliwi sprawdzenie czy nowe oprogramowanie MTA zostało prawidłowo skonfigurowane do automatycznego uruchomienia przy starcie komputera.

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>.