26.5. Rozwiązywanie problemów

26.5.1. Dlaczego powinienem używać nazw FQDN w hostach mojej sieci?
26.5.2. sendmail wyświetla komunikat “mail loops back to myself
26.5.3. Jak mogę uruchomić serwer pocztowy na hoście z połączeniem dial-up PPP?
26.5.4. Dlaczego wciąż otrzymuję komunikaty błędów “Relaying Denied” kiedy próbuję wysłać pocztę z innych hostów?

26.5.1. Dlaczego powinienem używać nazw FQDN w hostach mojej sieci?

Prawdopodobnie zdarzy się, że host znajduje się w innej domenie. Na przykład jeżeli znajdujemy się w domenie o nazwie foo.bar.edu i chcielibyśmy podłączyć się do komputera o nazwie mumble w domenie bar.edu, będziemy musieli się odwołać do w pełni kwalifikowalnej nazwy domenowej (fully-qualified domain name, FQDN) mumble.bar.edu zamiast do nazwy mumble.

Dawniej resolver BSD BIND umożliwiał odwołania do nazw skróconych. Jednakże aktualna wersja BIND-a instalowana z systemem FreeBSD nie pozwala już na domyślne skracanie nazw dla nie w pełni kwalifikowalnych nazw domen innych niż tych w których się znajdujemy. Zatem nie w pełni kwalifikowalna nazwa hosta zostanie dopasowana jako mumble.foo.bar.edu albo będzie wyszukiwana w domenie root.

Takie zachowanie resolvera różni się od zachowania wcześniejszego gdzie wyszukiwanie było kontynuowane dla domen mumble.bar.edu i mumble.edu. RFC 1535 wyjaśnia dlaczego uważa się to za błędne podejście lub nawet za lukę w bezpieczeństwie.

Można objeść takie zachowanie się resolvera przez umieszczenie linii:

search foo.bar.edu bar.edu
zamiast wcześniejszej:
domain foo.bar.edu
do pliku /etc/resolv.conf. Jednak powinniśmy się upewnić, że kolejność wyszukiwania nie wykroczy poza “granicę pomiędzy lokalną a publiczną administracją” jak nazywa to dokument RFC 1535.

26.5.2. sendmail wyświetla komunikat “mail loops back to myself

Jest to wyjaśnione w dokumencie FAQ sendmaila w następujący sposób:

Otrzymuję poniższe komunikaty błędów:

Jak mogę rozwiązać ten problem?

Usiłowałeś wysłać pocztę do domeny (np. domain.net) dla której
rekord MX wskazuje na konkretny host (w tym przypadku relay.domain.net)
ale host relay.domain.net nie rozpoznaje siebie jako odbiorcy
poczty dla domeny domain.net. Należy dodać wiersz domain.net
do pliku /etc/mail/local-host-names (w wersjach wcześniejszych
niż 8.10 sendmaila do pliku /etc/sendmail.cw) jeżeli używasz
FEATURE(use_cw_file) lub dodać wpis “Cw domain.net” do pliku
/etc/mail/sendmail.cf.

Dokument FAQ można znaleźć pod adresem http://www.sendmail.org/faq/ i zaleca się przeczytanie go jeżeli zamierzamy dostrajać ustawienia serwera poczty.

26.5.3. Jak mogę uruchomić serwer pocztowy na hoście z połączeniem dial-up PPP?

Możemy podłączyć komputer z FreeBSD w sieci LAN do Internetu. Komputer ten będzie stanowił bramę pocztową dla sieci LAN. Połącznie PPP nie jest łączem stałym.

Są co najmniej dwa sposoby aby to osiągnąć. Jednym z nich jest użycie UUCP.

Innym sposobem jest ustawienie serwera ze stałym dostępem do Internetu jako secondary MX dla naszej domeny. Na przykład domena naszej firmy to example.com a nasz dostawca Internetu ustawia example.net jako domenę zapewniającą usługi dodatkowego serwera poczty (secondary MX) dla naszej domeny:

example.com.          MX        10      example.com.
                      MX        20      example.net.

Tylko jeden host powinien zostać określony jako ostateczny odbiorca (należy dodać wpis Cw example.com do pliku /etc/mail/sendmail.cf na serwerze odpowiedzialnym za domenę example.com).

Kiedy wysyłający pocztę będzie próbował dostarczyć przesyłkę do naszej domeny najpierw spróbuje podłączyć się do naszego hosta (example.com) za pośrednictwem połączenia modemowego. Najprawdopodobniej się to nie uda ponieważ nasz serwer nie jest podłączony stałym łączem do sieci Internet. sendmail automatycznie dostarczy przesyłkę do domeny ustawionej jako secondary MX (w tym przypadku domena example.net naszego dostawcy Internetu). Host ustawiony jako secondary MX będzie próbował okresowo połączyć się i dostarczyć pocztę do naszego serwera ustawionego jako primary MX domeny example.com).

Można użyć poniższego skryptu jako skryptu uruchamianego podczas logowania się do systemu:

#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyisp

Jeżeli zamierzamy utworzyć osobny skrypt uruchamiany podczas logowania użytkownika, powinniśmy użyć polecenia sendmail -qRexample.com zamiast powyższego. Spowoduje to natychmiastowe przetworzenie wszystkich wiadomości znajdujących się w kolejce poczty i przeznaczonych dla domeny example.com.

Dalsze szczegóły dotyczące takiej konfiguracji są następujące:

Wiadomość “ukradziona” z Listy dyskusyjnej dostawców usług internetowych FreeBSD.

> zapewniamy serwer secondary MX dla jednego z naszych klientów.
> Klient łączy się z naszym serwerem kilka razy dziennie automatycznie
> aby pobrać pocztę do swojego serwera ustawionego jako primary MX
> (nie łączymy się z jego serwerem w momencie gdy dostarczana jest
> do nas poczta przeznaczona dla jego domeny). Nasz sendmail przetwarza
> kolejkę pocztową co 30 minut. W tej sytuacji klient musi pozostać
> połączony przez całe 30 minut aby być pewnym że wszystkie wiadomości
> dotarły do jego serwera primary MX
>
> Czy jest jakieś polecenie które umożliwi zainicjowanie sendmaila do
> wysłania poczty natychmiast po połączeniu klienta ? Użytkownik nie
> ma oczywiście uprawnień root-a na naszym serwerze.

W sekcji “privacy flags” pliku konfiguracyjnego sendmaila - sendmail.cf
znajduje się opcja Opgoaway,restrictqrun

Należy usunąć restrictqrun w celu umożliwienia użytkownikom bez
praw administratora uruchomienia przetwarzania kolejki.
Można również przekonfigurować priorytety MX serwerów poczty.
Serwer dostawcy stanie się wtedy primary MX dla klientów.
Dodatkowo dostawca powinien zdefiniować w pliku konfiguracyjnym
sendmaila opcję:

# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue

W ten sposób komputery wysyłające pocztę będą się łączyć
bezpośrednio z serwerem pocztowym dostawcy Internetu,
bez próby łączenia się z serwerami klientów. Serwer dostawcy
wysyła następnie pocztę do serwerów klientów. Takie rozwiązanie
działa tylko dla konkretnych nazw hostów więc koniecznym będzie
wymuszenie na klientach zmiany nazw ich serwerów poczty
np. z “customer.com” na “hostname.customer.com” w serwerach DNS.
Wystarczy dodać rekord A w konfiguracji DNS dla domeny “customer.com”.

26.5.4. Dlaczego wciąż otrzymuję komunikaty błędów “Relaying Denied” kiedy próbuję wysłać pocztę z innych hostów?

W domyślnej konfiguracji po zainstalowaniu FreeBSD, sendmail jest skonfigurowany tylko do wysyłania wiadomości z komputera, na którym jest uruchomiony. Na przykład jeżeli dostępna jest usługa POP użytkownicy będą mogli sprawdzać pocztę ze szkoły, pracy lub innych miejsc ale nie będą mogli wysyłać poczty ze zdalnych lokacji. Zazwyczaj kilka chwil po próbie wysłania takiej przesyłki zostanie odesłana wiadomość od użytkownika MAILER-DAEMON z komunikatem błędu “5.7 Relaying Denied”.

Jest kilka sposobów na rozwiązanie tego problemu. Najprostszym jest umieszczenie adresu, z którego wysyłamy pocztę (np. adresu naszego dostawcy Internetu) do pliku /etc/mail/relay-domains. Najszybciej można to zrobić wywołując polecenie:

# echo "domena.naszego.dostawcy.com" > /etc/mail/relay-domains

Po utworzeniu lub dodaniu wpisu do tego pliku należy zrestartować sendmaila. To rozwiązanie działa bardzo dobrze jeżeli jesteśmy administratorami serwera i nie zamierzamy wysyłać poczty lokalnie lub zamierzamy wykorzystać system kliencki “wskaż i kliknij” na innym komputerze lub u innego dostawcy Internetu. Jest również bardzo użyteczne gdy mamy tylko jedno lub dwa konta pocztowe do ustawienia. Jeżeli mamy dużą liczbę adresów do dodania możemy otworzyć ten plik w ulubionym edytorze tekstu i dodać wymagane domeny po jednej w każdej linii np.:

domena.naszego.dostawcy.com
domena.innego.dostawcy.net
domena.kolejnego.dostawcy.org
www.przyklad.org

Po dopisaniu domen do pliku każdy host klienta należący do jednej z wpisanych domen może wysłać pocztę przez nasz serwer (pod warunkiem że ma konto w naszym systemie). Jest to bardzo wygodny sposób na umożliwienie użytkownikom wysyłania poczty ze zdalnych lokacji przy jednoczesnym zablokowaniu możliwości wysyłania SPAM-u za pośrednictwem naszego systemu.

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