Разделы:

Главная

О проекте

Загрузки

Документация:

Linux

BSD

Другие Unix

Программинг

HTML, XML...

Сервера

"Окна Закрой!"

MANы

 


Sendmail+UUCP HOWTO

Sendmail + UUCP HOWTO

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

Перевод: Станислав Рогин, ASPLinux

История:

  • Первое издание: (Июль 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:
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 ASPLinux Все права зарезервированы.

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

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

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

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

 



Партнёры и спонсоры проекта:

Все материалы сайта распространяются по лицензии GNU/GPL
© ProUNIX 2003-2009, UnixLib 2005-2009, SoftLib 2006-2009.