# Jak skonfigurować sendmail przez UUCP.

## Autor: Jamal Hadi Salim, jamal@glcom.com
v1.2, 15 Marca 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.3, 13 Listopada 1997

Historia: -------- Pierwsza wersja tego dokumentu: Lipiec/96: tylko dla sendmail-a bez bind-a Aktualizacja: 1 Paźdz./96: dla binariów dostarczanych z RedHat-em Aktualizacja: 7 Paźdz./96: dodane wskazówki jak skompilować sendmail-a bez bind-a Aktualizacja: 25 Paźdz./96: dodana wskazówka jak uszczęśliwić funkcję sendmail-a getHostbyAddr() poprzez nieprawdziwy /etc/hosts Aktualizacja: 15 Marca/97: Jestem zdumiony ilością komentarzy, którą dostaję więc postanowiłem kontynuować moje dzieło. Poprawiłem kilka małych błędów: dodałem diagram + referencje. Po ustatkowaniu się i dokładnym przeczytaniu TFM (dokładnie mówiąc "the Bat Book") odkryłem tajemnicę Caramilki ! :) Kroki opisane poniżej będą działać z binariami dostarczanymi wraz z dystrybucją RedHat. Może powinienem też wysłać informację o tym dokumencie do opiekuna Sendmail-FAQ, bo nie ma tam ani słowa o nim.

## 1. Wprowadzenie.

## 1.1 Co ten dokument stara się wyjaśnić?

Jak ustawić pojedynczy komputer zwany tutaj ja.pl bez bezpośredniego dostępu do Internetu, aby przesyłał pocztę przy pomocy sendmail-a do "sprytniejszego hosta" np. twojego dostawcy Internetu. Opcjonalnie możesz skonfigurować swój komputer, aby obsługiwał pocztę dla innych, czyli ty będziesz "sprytnijeszym hostem" czy gateway-em".

## 1.2 Czego ten dokument nie wyjaśnia.

Dostawałem niewiarygodną ilość pytań dotyczących następujących tematów. Celem tego dokumentu nie jest ich opis, więc postarajcie się proszę nie przsyłać mi takich pytań:

- jak ustawić UUCP. Zajrzyj do wielu doskonałych dokumentów na ten temat np:
  - UUCP HOWTO`[po polsku]` (Vince Skahan, vince@halcyon.com)
  - "Using and managing UUCP" (Ed Ravin -- wydawnictow O'Reilly - TO JEST NAJLEPSZE
  - Linux Network Administrator Guide (Olaf Kirch)
- jak ustawić DNS. Zajrzyj do wielu doskonałych dokumentów na ten temat np:
  - Caching named mini howto (Nicolai Langfeldt)
  - "The bat book" (Sendmail;Costalles, Allman, Rickert;wydawnictwo O'Reilly)
  - "DNS and BIND" (Wydawnictwo O'Reilly)
  - "TCP/IP Network Administration" (Hunt, Craig; Wydawnictwo O'Reilly) `[jest także po polsku:` Administracja siecią TCP/IP `lub jakoś tak.]`
  - Linux Network Administrator Guide (Olaf Kirch)
  - "sendmail Theory and Practice" (Avolio and Vixie; Wydawnictwo Digital press)
- jak ustawić bazy (inne niż mailertable) tak, żeby działały z sendmail-em. Zajrzyj do wielu doskonałych dokumentów na ten temat np:
  - "The bat book" (Sendmail;Costalles, Allman, Rickert;wydawnictwo O'Reilly)
  - "TCP/IP Network Administration" (Hunt, Craig; Wydawnictwo O'Reilly) `[jest także po polsku:` Administracja siecią TCP/IP `lub jakoś tak.]`
  - "sendmail Theory and Practice" (Avolio and Vixie; Wydawnictwo Digital press)
  - dokumentacja dołączona do sendmail-a.
- jak pisać czy modyfikować zasady i mailery. Zobacz wszystkie referencje z c).

Możesz także znaleźć pomoc na tych grupach dyskusyjnych:

- comp.mail.sendmail
- comp.mail.uucp
- comp.os.linux.networking
- pl.comp.os.linux `[po polsku]`

Na IRC-u też. Kanały: #linux, #unix, #plug `[po polsku]`.

## 1.3 Ustawienia.

Dokument ten dotyczy systemów, które przesyłają pocztę poprzez UUCP. "mysmarthost" jest nazwą hosta ISP, tak jak jest to ustawione w pliku konfiguracyjnym (sys file) uucp a "ja.pl" to nazwa hosta, którego używamy. "mysmarthost" ma dostęp do Internet-u. Tak naprawdę nie obchodzi nas jak - po prostu wiemy, że ma i już.
ja.pl, którego ustawienia opiszemy w przykładzie, obsługuje pocztę dla down.pl i system1.org.pl i ich poddomen.
ja.pl łączy się z down.pl poprzez TCP/IP a z system1.org.pl czystym UUCP poprzez linię telefoniczną.

Sytuacja pokazana jest na poniższym obrazku:

             -----------------------
            |                       |
            |     Internet          |
            |                       |
             -----------------------
                        |
                        | Linia dedykowana/PPP z protokołem TCP/IP
                        |
                     -------------
                    |             |
                    | mysmarthost | Autorytatywny nameserver dla
                    |             | *.ja.pl, *.down.pl, *.system1.org.pl
                     -------------
                        |
                        | UUCP otrzymuje pocztę przez linię telefoniczną dla
                        | system1.org.pl, *.system1.org.pl,*.down.pl, down.pl
                        | jak również dla ja.pl and *.ja.pl
                     ------------
                    | * ***** *  |
       ------------ | * ja.pl *  | ------
       |            | * ***** *  |      |
       |             ------------       |
       |UUCP poprzez linię tel.         | UUCP poprzez TCP/IP
       |                                |
     --------------                  -------------
    |              |                |         |
    |system1.org.pl|                | down.pl |-----
    |              |                |         |    |
     -------------                   ---------     |
         |                                         |
         |                                         |
         |                                         | LAN: smtp dla poszczególnych odbiorców
         | Linia tel UUCP                          |
         |                                         |
     ----------------                         -----------
    | LAN            |                       | LAN       |
    | system1.org.pl |                       | down.pl   |
    |                |                        -----------
     ----------------

## 2. Wymagania.

Jeśli masz system używający uucp dla poczty, to właściwie nie musisz wkompilowywać bind-a/resolvera do sendmail-a.

Upewnij się, że masz makemap-a, i że obsługuje on "hash" i bardziej popularne formaty "dbm" czy nawet format "btree" (Wersja na RedHat-a nie obsługuje dbm). Makemap jest normalnie dystrybuowany z sendmail-em.

## 2.1 Jak przeżyć kanonizację nazw na samotnie stojącej maszynie bez DNS-u?

### Część I:

Jeśli dostaniesz pre-kompilowanego sendmail-a z dołączonym bind-em, to możesz z nim dalej żyć (Tak jak to jest w RedHat-cie).

- Odnośnie konfiguracji opartej na pliku m4 zobacz moje rozwiązanie (moje ulubione). Próbuj użyć tej opcji o ile naprawde nie zajdzie konieczność b) czy c)
- Jeśli ze mną porozmawiasz, mógłbym wspomóc cię wersją skompilowaną (8.8.5) bez bind-a. Może RedHat powinien rozważyć możliwość dostarczania dwóch wersji binarnych senmail-a (tak jak jest to w Slackware). Jedna z bind-em a jedna bez.
- Najszybszym rozwiązaniem, aby otrzymać działający sendmail bez bind-a jest edycja pliku `src/conf.h`tak, żeby wyglądał tak:

      conf.h:# ifndef NAMED_BIND
      conf.h:#  define NAMED_BIND     0     /* use Berkeley Internet Domain Server */

### Część II:

Normalnie sendmail będzie koniecznie chciał sprawdzić nazwę, aby rozwinąć część dotyczącą host-u przy pomocy gethostbyaddr() dla każdego listu, który wysyła (nawet jeśli go poinformujesz żeby nie kanonifikował nazw).

- Użyj adresu IP według RFC1597 (10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255). Zmodyfikuj plik `/etc/hosts` i dodaj następującą linię, jako przykład dla "myhost"

      10.0.0.1    myhost.ja.pl        myhost

- Jeśli używasz bazy NIS (i NIS jest wkompilowane w sendmail-a tak jak to chyba jest z RedHat-em. RedHat ma także wbudowanego NIS-a) upewnij się, że plik `/etc/nsswitch.conf` zawiera:

      hosts:  files dns

  i w pliku `/etc/hosts` i dodaj poniższą linię jak przykład dla host-a myhost: [cały czas używając schematu z RFC1597]

              10.0.0.1        myhost.ja.pl    myhost

UWAGA: W obu przypadkach ważne jes, aby podać pełny adres w pliku `/etc/hosts`. Czyli linia powinna wyglądać tak:

            10.0.0.1   myhost.ja.pl   myhost

a nie tak

            10.0.0.1   myhost

Będziesz musiał także zdefiniować makro sendmail-a - $w, aby zawierało myhost.ja.pl. Dodaj następującą linijkę do swojego pliku `/etc/sendmail.cf` jak już zostanie wygenerowany:

    Dwmyhost.ja.pl

(albo możesz użyć użyć MASQUAREADE_AS(myhost.me.com) w poniższym pliku .mc)

UWAGA !!! myhost jako nazwa domeny jest podane tylko przykładowo; nie musisz używać takiej samej nazwy. Wybierz sobie jakąś swoją nazwę host-a jeśli jej jeszcze nie masz.

## 3. Ustawianie.

- Stwórz swój plik `.mc` używając ulubionego edytora; nazwę ten plik `my.mc`

      ============== plik my.mc =======================
      include(`../m4/cf.m4')
      VERSIONID(`me.com's setup with uucp created by xxxx')dnl
      OSTYPE(linux)
      FEATURE(nodns)dnl
      FEATURE(nocanonify)dnl
      FEATURE(always_add_domain)dnl
      FEATURE(mailertable, hash /etc/mailertable)dnl
      MAILER(local)dnl
      MAILER(smtp)dnl
      MAILER(uucp)
      define(`SMART_HOST', uucp-dom:mysmarthost)
      ===============================================

  Rozgryźmy to:

      include(`../m4/cf.m4')

  Dołącza macro m4 znajdujące się w `../m4/cf.m4`, aby zrobiło za nas parę rzeczy.

      VERSIONID(`me.com's setup with uucp created by xxxx')dnl

  Używane jest to, aby odróżnić od siebie różne wersje plików konfiguracyjnych, które możesz z biegem czasu potworzyć.

      OSTYPE(linux)

  Tutaj definiuje się różne specyficzne dla Linux-a ustawienia.
  Bezpieczniej jest zawrzeć to polecenie.

      FEATURE(nodns)dnl

  Polecenie to informuje, że nie mamy serwer-a DNS (więc w efekcie używamy tylko uucp dla poczty. Sendmail musi zostać tak skompilowany, aby nie używał bind-a.)
  Teraz jest to już przestarzałe, ale zostawię to tutaj na wypadek gdybyś używał jakiejś starszej wersji sendmail-a.

      FEATURE(nocanonify)dnl

  Polecenie to informuje, żeby nie przekazywać adresów do `$[ ... $]` do kanonizacji. Normalnie, jeśli masz wkompilowanego bind-a, to sendmail próbowałby i rozwiązałby alias/adres IP na nazwę kanoniczną używając DNS-a.
  Niechcesz tego robić jeśli wszystko co masz, to linie łaczące cię poprzez uucp tj. jesteś dla siebie i dla nikogo innego.

      FEATURE(always_add_domain)dnl

  Dodaje to nazwę hosta dla domeny lokalnej nawet jeśli poczta jest dostarczana lokalnie.
  Nie jest to konieczne - po prostu lubię to.

      FEATURE(mailertable, hash /etc/mailertable)dnl

  Plik `/etc/mailertable` będzie bazą danych typu "hash", gdzie będziemy zapisywać informacje dotyczące routingu pewnych adresów. Jeśli nie masz nikogo, do kogo masz podłączone linie uucp, to nie potrzebujesz tego. Więcej informacji będzie później. Jeśli chciałeś użyć formatu "dbm", to miałbyś

      FEATURE(mailertable, dbm /etc/mailertable)dnl

  Jeśli chciałeś użyć formatu "btree", to miałbyś

      FEATURE(mailertable, btree /etc/mailertable)dnl

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

  To są "mailery", których używamy.

      define(`SMART_HOST', uucp-dom:mysmarthost)

  Nasz "smart host" jest naszym ISP, który jest zdefiniowany w pliku konfiguracyjnym uucp (uucp sys file), jako "system mysmarthost". Wszystkie wiadomości, których nie umiemy obsłużyć (czyli dla domeny, czy "mailery", których nie rozumiemy) będą przekazane do niego, aby je odpowiednio dostarczyć.
  Zauważ, że używamy uucp-dom jako "mailer" uucp. Ten konkretny "mailer" używa zasad przepisywania "smtp".
- Stwórz swój plik `sendmail.cf`

  - skopiuj stary plik `/etc/sendmail.cf`
  - zapisz nowy plik na miejsce starego:

        m4 my.mc > /etc/sendmail.cf

  - zweryfikuj czy plik `sendmail.cf` został poprawnie stworzony odnośnie twoich ustawień. Niektóre błędy na jakie się natknąłem to:
    - brak "mailera" uucp-dom
    Działo się tak, ponieważ nie miałem pozycji dla "smtp". Właściwie rozumiem, że jest ważne, aby zdefiniować to przed uucp.

- Stwórz swój `/etc/mailertable`
  Jeśli nie masz adresów, które cię podłączają poprzez uucp, to przeskocz ten krok.
  - stwórz/zmodyfikuj plik `/etc/mailertable`

        --------- przykładowy plik /etc/mailertable ----------
        system1.org             uucp-dom:system1
        .system1.org            uucp-dom:system1
        ja.pl                   uucp-dom:ja
        up.down.pl              error: Host nie jest znany w ja.pl
        .down.pl                uucp-dom:down
        .ja.pl                  error: Host nie jest znany w ja.pl
        ------

    Plik ten informuje, że wszystko co jest adresowane do system1.org zostanie przesłane do system1 używając "mailer-a" uucp-dom (zdefiniowanego w pliku konfiguracyjnym uucp [uucp sys file]). Innymi słowy przekazujemy pocztę dla *.system1.org podobnie dla down.pl i jej poddomen za wyjątkiem dodoatkowego filtrowania; odrzucamy każdą pocztę dla poddomeny up.down.pl używając wbudowanego "mailer-a" sendmail-a do obsługi błędów z komunikatem "Host nie jest znany w ja.pl"; Jest tak ponimeważ zostaliśmy poproszeni o to przez adminstratora down.pl. Aby odrzucić wszystkie nieznane dla nas poddomeny używamy ostatniej linii w "mailertable".

  - stwórz bazę danych programem "makemap" Jeśli używasz formatu "hash":

        makemap hash /etc/mailertable </etc/mailertable

    Jeśli używasz formatu "dbm":

        makemap dbm /etc/mailertable </etc/mailertable

    Jeśli używasz formatu "btree":

        makemap btree /etc/mailertable </etc/mailertable

    Rób to za każdym razem kiedy zmieniasz plik.
- zrestartuj `sendmail-a`
- przetestuj `sendmail-a`
  - sendmail -bv uzytkownik@gdzies.tam
  - użyj sendmail -bt i wpisuj różne adresy używając zasady 3,0, aby zobaczyć gdzie one skończą i różnych zasad i podjętych tras.

To wszystko.

## 4. Do zrobienia.

1. Zhtml-izować ?
2. Dodać informacje na temat ustawiania systemu down.pl (żeby pokazać jak się zająć tymi "poszczególnymi odbiorcami").
3. Dodać informacje na temat dostarczania news-ów poprzez UUCP (preferowany będzie INN). To może wymagać zmiany tytułu tego dokumentu.

## 5. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu `/HOWTO/`.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści `subscribe jtz Imię Nazwisko` na adres `majordomo@ippt.gov.pl`