Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Sendmail + UUCP HOWTO

Автор: Jamal Hadi Salim (jamal@glcom.com или hadi@cyberus.ca)

Перевод: Станислав Рогин, SWSoft Pte Ltd.

История:

  • Первое издание: (Июль 96) работает только с поставкой sendmail без поддержки DNS
  • 1 октября 96: работает с программой, поставляемой в Redhat
  • 7 октября 96: добавлены/исправлены советы по компиляции независимого sendmail-а
  • 25 октября 96: добавлены/исправлены советы по совмещению функции getHostbuAddr() sendmail-а, путем вставки подставной строки в файл /etc/hosts
  • 15 марта 97: я поражен количеством отзывов и советов, которые я получил, и поэтому решил немного доработать  документ. Исправлены некоторые ошибки; добавлены диаграммы и ссылки.
  • 25 октября 97 : Перевод в формат HTML. Добавлено несколько слов о машинах с работающим DNS

  • После того как я окончательно успокоился и прочитал документацию (точнее Bat Book), я разрешил загадку фараонов! Шаги, описанные ниже, тестировались с пакетом sendmail, поставляемом в Redhat. Возможно, надо было также отослать эти советы тому, кто сопровождает FAQ Sendmail-а, потому что там нет ни единого упоминания о взаимодействии sendmail и UUCP.
     

    Для чего был написан этот документ

    Здесь дана информация о том, как настроить отдельную машину, упоминаемую здесь как  me.com (как пример), не имеющую постоянного доступа в Интернет, так, чтобы она посылала вашу почту через sendmail и UUCP к "более совершенной" (smarter) машине, т.е. к вашему провайдеру.
    Заодно, вы можете настроить вашу машину для пересылки почты с других машин, т.е. вам, в свою очередь, стать "более совершенной" машиной или шлюзом  (gateway).

    Что в этом документе не описывается

    Я получаю огромное количество вопросов, относящихся к темам, находящимся за пределами этого HOWTO. Этот документ не может охватить все, поэтому не присылайте вопросов типа:
     

    а) Как настроить UUCP.

    Читайте другие, не менее прекрасные источники, например:

    • UUCP HOWTO (Vince Skahan)
    • Использование и управление UUCP (автор Ed Ravin -- издатель O'reilly), по моему мнению, наиболее авторитетное издание о UUCP
    • Руководство сетевого администратора Linux (автор Olaf Kirch)

     

    б) как настроить DNS.

    Читайте другие источники, например:

    • мини-HOWTO "кэширующий named" (Nicolai Langfeldt)
    • The bat book (Sendmail;Costalles, Allman, Rickert;издатель O'reilly)
    • DNS и BIND (Издатель O'reilly)
    • Администрирование сетей TCP/IP (Hunt, Craig;издатель O'reilly)
    • Руководство сетевого администратора Linux (автор Olaf Kirch)
    • Теория и практика sendmail (Avolio и Vixie; издатель Digital press)

     

    в) как настроить базы данных (кроме таблицы mailer-ов) для работы с sendmail.

    Читайте другие источники, например:

    • The bat book (Sendmail;Costalles, Allman, Rickert -- издатель O'reilly)<o:p</o:p
    • Администрирование TCP/IP (издатель O'reilly)
    • Теория и практика Sendmail (Avolio и Vixie; издатель Digital press)
    • Docs bundled with sendmail <o:p</o:p

    г) как создавать или изменять наборы правил (rulesets) или mailer-ы.

    • Смотрите ссылки в пункте c)
    Также вы можете обратиться к следующим группам новостей:
    comp.mail.sendmail
    comp.mail.uucp
    comp.os.linux.networking
    Каналы IRC
    #linux, #unix
     


    НАСТРОЙКА

    Эта настройка приведена для системы, гипотетически названной me.com, чья почта отправляется только через UUCP. mysmarthost - это название машины провайдера, написанное в файле sys UUCP и me.com - это название машины, который мы используем, и который известен в Интернете в записях MX DNS.
    mysmarthost подключена к Интернету. Мы на самом деле не знаем, как она подключена, мы просто знаем, что она доставит нашу почту.
    me.com, чья настройка описана ниже, собирает и пересылает (feed) почту машин down.com и system1.org и их подузлов (subnodes). me.com соединяется с down.com через TCP/IP и соединяется с system1.org через обычное UUCP соединение, с использованием телефонных линий.
    Описание настройки приведено ниже:
     
            ------------------------
            |                       |
            |     Интернет          |
            |                       |
            -----------------------
                        |   
                        | PPP/выделенная линия, использующая TCP-IP
                        |
                    -------------
                    |            |
                    |mysmarthost | Авторитетный (Authoritative)сервер DNS для
                    |            | *.me.com, *.down.com, *.system1.org
                    |            |
                    --------------
                        |
                        | UUCP-соединение по телефонной линии, передающее почту
                        | для system1.org, *.system1.org,*.down.com, down.com,
                        | а также для me.com and *.me.com
                     ------------
                    | * *****  *  |
       ------------ | * me.com *  | ------
                    | *        *  |      |
       |            | * *****  *  |      |
       |             ------------        | 
       |UUCP по телефонной линии         | UUCP через TCP/IP
       |                                 |
     -----------                  -----------
    |           |                |           |
    |system1.org|                | down.com  |-------
    |           |                |           |      |
     ----------                  ------------       |
         |                                          |
         |                                          |
         |                                          | Локальная сеть: SMTP к узлам
         | UUCP по телефонной линии
         |                                          |
    -----------                             -------------
    |         |                             | Локальная |
    | подузлы |                             | сеть узла |
    | system1 |                             |   down    |
    |         |                             ------------
    ----------

    Предварительные условия

    1) Если у вас уже работает DNS, или есть ссылка на DNS-сервер (в файле /etc/resolv.conf), и у вас "живое" соединение с Интернетом, тогда пропустите эту часть. У вас все в порядке. Вам не надо делать ничего "очень умного". Спускайтесь к части 2)

    Если у вас машина, использующая UUCP для почты, то вам, на самом деле, не надо собирать bind/resolv в sendmail;

    Как справиться с канонизацией имен на отдельной машине, не имеющей DNS

    ЧАСТЬ I
    Если у вас заранее собранный sendmail с поддержкой BIND, вы сможете жить и с ним (Как в случае с Redhat, в поставку которого входит sendmail).

    а) Используйте мое решение, основанное на m4-файле, описанном ниже. Попробуйте этот вариант, если вы не настаиваете на пунктах б) или в), приведенных ниже;

    б) Если вы переговорите со мной, я могу снабдить вас собранным sendmail-ом без BIND (версии 8.8.5). Возможно, Redhat стоит снабдить свою поставку двумя собранными пакетами sendmail (как в Slackware) - один с BIND, а другой без;

    в) Наиболее быстрый способ получить sendmail без поддержки BIND - отредактировать файл src/conf.h так, как показано ниже:

    # ifndef NAMED_BIND conf.h:# define NAMED_BIND 0 /* исп. Berkeley Internet Domain Server */

    ЧАСТЬ II:
    Sendmail обычно настаивает на произведении поиска имени (name look ups) , чтобы получить имя машины(resolve), используя gethostbyaddr() для каждого письма, которое он посылает (даже если вы запретите ему канонизировать имена).

    а) используйте IP адреса в соответствии с RFC1597 IP (10.0.0.0-10.255.255.255, 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255)
    Отредактируйте файл /etc/hosts и добавьте в него строки, в соответствии с примером для myhost:
    10.0.0.1 myhost.me.com myhost или
    б) Если вы используете NIS (кстати вроде и NIS собран в sendmail в дистрибутиве Redhat), то убедитесь в том, что ваш файл /etc/nsswitch.conf содержит:
    hosts: files dns  
    и в файл /etc/hosts добавьте в него строки, в соответствии с примером для myhost [снова используя IP-адреса, в соответствии с RFC1597]
    10.0.0.1 myhost.me.com myhost

    ЗАМЕЧАНИЕ: ---- В обоих случаях важно, чтобы вы использовали в файле /etc/hosts полное (fully qualified) имя домена, то есть в строке должно быть написано 10.0.0.1 myhost.me.com myhost, а не 10.0.0.1 myhost 
    Вам также придется определить макрос $w для сохранения myhost.me.com
    Добавьте следующую строчку в файл /etc/sendmail.cf после того, как он будет собран:
    Djmyhost.me.com  
    (или вы можете использовать функцию MASQUAREADE_AS(myhost.me.com) в  .mc-файле, которые приведен ниже)

    ВНИМАНИЕ!!!!! myhost - это имя машины, данное для примера; вы не должны использовать его. Выберите себе собственное имя машины, если у вас его еще нет.


    2) Убедитесь в том, что у вас есть makemap, и он поддерживает хешированный формат или наиболее распространенный dbm формат, или хотя бы формат btree (Версия в Redhat не поддерживает dbm). Makemap обычно поставляется вместе с sendmail.

    НАСТРОЙКА (mc-файл)

    I) Создайте свой .mc-файл, с использованием вашего любимого редактора, я называю этот файл my.mc

    a) Без DNS - отдельно стоящая машина



    include(`../m4/cf.m4')
    VERSIONID(`Настройка машины me.com c  uucp, создана xxxx -- без DNS ')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)


    Давайте подробно разберемся с этим:

    • include(`../m4/cf.m4') добавляет в обработку m4-макро, находящееся в каталоге ../m4/cf.m4, чтобы предусмотреть некоторые вещи
    • VERSIONID(`Настройка машины me.com c  uucp, создана xxxx -- без DNS ')dnl  - это нужно для разделения разных версии .cf-файлов, которые вы можете создать.
    • OSTYPE(linux) Это нужно, чтобы ввести некоторые коррекции, связанные с linux. Это можно здесь оставить.
    • FEATURE(nodns)dnl - это говорит о том, что у нас нет DNS-сервера (поэтому мы используем для почты только UUCP. Sendmail должен быть скомпилирован без поддержки BIND) Эта опция устарела. Я оставляю ее на случай того, что у вас более старая версия пакета sendmail.
    • FEATURE(nocanonify)dnl Не посылать адреса на $[ ... $] для канонизации. Обычно, если у вас sendmail собран с поддержкой BIND, то он будет пытаться преобразовать псевдоним/IP-адрес в каноническое имя с использованием DNS. Вам это не нужно, если вся ваша почта идет через UUCP, то есть у вас выделена на это машина.
    • FEATURE(always_add_domain)dnl Эта функция добавляет домен к имени машины даже на локальной почте. Это не обязательно, просто мне это нравится; Эта функция может быть не совсем безопасна, т.к. спаммеры с соответствующей настройкой могут воспользоваться этим.

    Но me.com не подсоединен напрямую к Интернету по TCP/IP поэтому не страшно

    • FEATURE(mailertable, hash /etc/mailertable)dnl означает, что в файле  /etc/mailertable находится хешированная (hash) база данных, где находятся информация о путях к соответствующим сайтам. Если у вас нет никого, кому передать UUCP-почту, то вам это не нужно. Подробнее об этом ниже. Если вы хотите использовать формат dbm, то вам следует использовать FEATURE(mailertable, dbm /etc/mailertable)dnl  Если вы хотите использовать формат btree, то используйте FEATURE(mailertable, btree /etc/mailertable)dnl
    • MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp) Это способы доставки, которые мы используем.
    • define(`SMART_HOST', uucp-dom:mysmarthost) Наш смарт-хост (smart host) - машина нашего провайдера, который задан в файле sys UUCP как system mysmarthost. Любые почтовые сообщения, с которыми мы не можем справиться (например, для доменов или способов доставки, которые нам не известны), будут отправляться смарт-машине для дальнейшей обработки (заметьте, что мы используем uucp-dom как способ доставки через UUCP). Это специальный способ доставки, использующий правила преобразования адресов, аналогичные smtp.

     

    б) С использованием DNS



    include(`../m4/cf.m4')
    VERSIONID(`Настройка машины me.com c  uucp, создана xxxx -- с использованием DNS ')dnl 
    OSTYPE(linux)
    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)


    II) Создаем собственный файл sendmail.cf

    а) сохраните резервную копию вашего старого файла /etc/sendmail.cf  
    б) запишите новый файл sendmail.cf поверх старого командой : m4 my.mc > /etc/sendmail.cf
    в) проверьте, что ваш файл sendmail.cf был правильно создан на основе спецификации.
    Самая частая ошибка, которая была у меня : - missing uucp-dom mailer (отсутствует способ доставки uucp-dom) Она возникала от того, что я не вставлял строку о способе доставки smtp. Как я понимаю, важно, чтобы эта строка шла раньше способа доставки uucp
     

    III) Создаем таблицу /etc/mailertable

    Если вы никому не передаете UUCP-почту, то вы можете пропустить этот пункт

    а) создаем/редактируем файл /etc/mailertable

    Пример возможного файла /etc/mailertable:


    system1.org uucp-dom:system1
    .system1.org uucp-dom:system1
    down.com uucp-dom:down
    up.down.com  error: Машина неизвестна me.com
    .down.com uucp-dom:down
    .me.com error: Машина неизвестна me.com


    Здесь сказано, что все, что посылается на адрес system1.org или *.system1.org, будет пересылаться системе system1, с использованием доставки uucp-dom (система system1 должна быть определена в файле sys UUCP), другими словами, мы производим маршрутизацию почты для *.system1.org ; похожий механизм применен для down.com и его субдоменов, только с некоторой дополнительной фильтрацией; мы возвращаем назад любую почту, идущую на домен up.down.com, используя встроенный "способ доставки" error (ошибка) с сообщением "Машина неизвестна me.com"; Это строка добавлена по просьбе администратора машины down.com. Последняя строчка отправляет почту на все наши субдомены (которых нет) назад.
    б) создайте базу данных с помощью makemap
    Если вы используете хешированные базы (hash):
    makemap hash /etc/mailertable < /etc/mailertable
    Если вы используете dbm:
    makemap dbm /etc/mailertable </etc/mailertable
    Если вы используете btree:
    makemap btree /etc/mailertable </etc/mailertable

    И проделывайте это каждый раз после изменения файла /etc/mailertable.
     

    IV) Перезапустите sendmail

    V) Протестируйте sendmail

    а) sendmail -bv user@destination
    б) запустите sendmail -bt и вводите различные адреса, используя набор правил 3,0, и смотрите, во что превращаются адреса, и какие правила при преобразовании используются.

    У вас все настроено!


    ЧТО НУЖНО ДОПИСАТЬ

    1) Добавить информацию, как настроить систему down.com (чтобы показать, как работать с теми SMTP-подузлами)
    2) Добавить информацию, как пересылать новости (news) через UUCP
    (предпочтителен INN). Это может потребовать изменения заголовка данного документа.
     


    Авторские права

    Авторские права на русский перевод этого текста принадлежат c 2000 SWSoft Pte Ltd. Все права зарезервированы.

    Этот документ является частью проекта Linux HOWTO.

    Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

    Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

    Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу