26.7. SMTP przez UUCP

Konfiguracja sendmaila dostarczanego z FreeBSD jest przygotowana dla serwerów bezpośrednio połączonych z Internetem. Serwery, które będą wymieniać pocztę za pośrednictwem protokołu UUCP muszą mieć zainstalowaną inną wersję pliku konfiguracyjnego.

“Ręczna” modyfikacja pliku /etc/mail/sendmail.cf to sprawa bardzo skomplikowana. Od wersji 8 sendmail umożliwia generowanie plików konfiguracyjnych przez przetwarzanie m4(1) gdzie właściwa konfiguracja odbywa się na wyższym poziomie abstrakcji. Pliki konfiguracyjne można znaleźć w katalogu /usr/src/usr.sbin/sendmail/cf. Plik README w tym katalogu zawiera podstawowe wprowadzenie do konfiguracji m4(1).

Najlepszym sposobem na dostarczanie poczty za pomocą UUCP jest wykorzystanie właściwości mailertable. Powoduje ona utworzenie bazy danych, którą sendmail wykorzystuje do podejmowania decyzji o trasie dostarczania.

W pierwszej kolejności musimy utworzyć plik .mc. Katalog /usr/src/usr.sbin/sendmail/cf/cf zawiera kilka przykładów. Zakładając, że nazwaliśmy nasz plik foo.mc, wszystko co musimy zrobić aby przekonwertować go na poprawny plik konfiguracyjny sendmail.cf to wywołać polecenia:

# cd /usr/src/usr.sbin/sendmail/cf/cf
# make foo.cf
# cp foo.cf /etc/mail/sendmail.cf

Typowy plik .mc może przykładowo zawierać następujące wpisy:

VERSIONID(`Your version number') OSTYPE(bsd4.4)

FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')

define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')

MAILER(local)
MAILER(smtp)
MAILER(uucp)

Cw    your.alias.host.name
Cw    youruucpnodename.UUCP

Wiersze zawierajce właściwości accept_unresolvable_domains, nocanonify i confDONT_PROBE_INTERFACES blokują korzystanie z DNS podczas doręcznia poczty. Warunek UUCP_RELAY jest wymagany do dostarczania za pomocą UUCP. Wystarczy umieścić internetową nazwę hosta który obsługuje adresację pseudo-domen .UUCP. Najczęściej należy umieścić tam przekaźnik poczty naszego ISP.

Po utworzeniu pliku konfiguracyjnego potrzebny jest nam jeszcze plik /etc/mail/mailertable. Jeżeli mamy tylko jedno połączenie na zewnątrz używane dla wszystkich przesyłek pocztowych wystarczy wykonać polecenie:

#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
.                             uucp-dom:your.uucp.relay

Bardziej złożony przykład mógłby wyglądać następująco:

#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
horus.interface-business.de   uucp-dom:horus
.interface-business.de        uucp-dom:if-bus
interface-business.de         uucp-dom:if-bus
.heep.sax.de                  smtp8:%1
horus.UUCP                    uucp-dom:horus
if-bus.UUCP                   uucp-dom:if-bus
.                             uucp-dom:

Pierwsze trzy wiersze zawierają specjalne przypadki, gdzie poczta adresowana do domeny nie powinna być wysyłana domyślną trasą ale do pewnego hosta-sąsiada UUCP w celu “skrócenia” drogi dostawy. Następna linia obsługuje pocztę do domeny w sieci lokalnej, która może być dostarczone za pośrednictwem protokołu SMTP. W końcu sąsiedzi-UUCP są wymienieni w notacji pseudo-domenowej .UUCP aby umożliwić sąsiadowi-UUCP !odbiorcy przesłonienie domyślnych reguł. Ostatnia linia zawsze zawiera pojedynczą kropkę, jako regułę pasującą do wszystkich innych hostów z dostarczaniem UUCP do sąsiada-UUCP, który służy nam jako uniwersalna brama pocztowa na świat. Wszystkie nazwy węzłów po słowie kluczowym uucp-dom: muszą być poprawnymi sąsiadami-UUCP, co można sprawdzić za wykorzystując polecenie uuname.

Należy pamiętać o konwersji tego pliku do formatu bazy danych DBM. Polecenie, które to zrealizuje najlepiej umieścić w komentarzu na początku pliku mailertable. Po każdej zmianie zawartości pliku należy uruchomić to polecenie aby zmiany przyniosły skutek.

Ostatnia wskazówka: jeżeli nie jesteśmy pewni czy jakaś szczególna trasa pocztowa zadziała należy pamiętać o opcji -bt sendmaila. Uruchamia ona program sendmail w trybie testowania adresów. Wystarczy wprowadzić 3,0, a następnie adres którego trasę chcemy sprawdzić. Ostatnia linia poinformuje nas o użytym wewnętrznym agencie poczty, hoście przeznaczenia z którym zostanie wywołany ten agent oraz (prawdopodobnie przetłumaczony) adres. Tryb ten możemy opuścić za pomoc kombinacji klawiszy Ctrl+D.

% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 foo@example.com
canonify           input: foo @ example . com
...
parse            returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
> ^D

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