Sendmail UUCP

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, и смотрите, во что превращаются адреса, и какие правила при преобразовании используются.

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