Sendmail + UUCP HOWTO

Автор: Jamal Hadi Salim ([email protected] или [email protected])

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

История:


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

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

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

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

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

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

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

 

б) как настроить 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.

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

г) как создавать или изменять наборы правил (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)


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

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

 

б) С использованием 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:
makem
ap 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). Это может потребовать изменения заголовка данного документа.
 


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

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

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

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

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

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