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 обычно осуществляет поиск имени, чтобы определить имя машины, используя функцию 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 полное имя домена. Например, строка должна выглядеть как 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-файл)

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

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

include(`../m4/cf.m4')
VERSIONID(`Настройка машины me.com с 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)

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

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

include(`../m4/cf.m4')
VERSIONID(`Настройка машины me.com с 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, и смотрите, какие преобразования происходят и какие правила применяются при этом.

Настройка завершена!