Настройка поставляемого с FreeBSD sendmail предназначена
для сайтов, подключенных к интернет непосредственно. Сайты, осуществляющие обмен почтой
через UUCP, должны использовать другой файл настройки sendmail.
Редактирование /etc/mail/sendmail.cf вручную это сложная
задача. sendmail версии 8 генерирует файлы настройки через
препроцессор m4(1), реально
настройка выполняется на более высоком уровне абстракции. Файлы настройки m4(1) можно найти в
/usr/src/usr.sbin/sendmail/cf.
Если вы не установили в систему все исходные тексты, пакет настройки sendmail можно найти в отдельном архиве исходных текстов. Если
CDROM с исходными текстами FreeBSD смонтирован, выполните:
# cd /cdrom/src
# cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail
Эта установка займет всего несколько сотен килобайт. Файл README в каталоге cf содержит введение в
основы настройки m4(1).
Лучшим способом настройки поддержки передачи по UUCP является использование
возможности mailertable. При этом создается база данных,
которая помогает sendmail решать вопросы маршрутизации.
Во-первых, создайте файл .mc. В каталоге /usr/src/usr.sbin/sendmail/cf/cf находятся несколько примеров.
Возьмем для примера имя файла foo.mc. Все, что потребуется для
преобразования его в sendmail.cf, это:
# cd /usr/src/usr.sbin/sendmail/cf/cf
# make foo.cf
# cp foo.cf /etc/mail/sendmail.cf
Типичный .mc файл может выглядеть примерно так:
VERSIONID(`Your version number') OSTYPE(bsd4.4)
FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCP
Строки, содержащие accept_unresolvable_domains, nocanonify, и confDONT_PROBE_INTERFACES,
предотвратят использование DNS для доставки почты. Пункт UUCP_RELAY необходим для поддержки доставки по UUCP. Просто
поместите сюда имя хоста в интернет, способного работать с .UUCP адресами псевдо-доменов;
скорее всего, вы введете сюда основной сервер пересылки почты провайдера.
Как только вы сделаете это, потребуется файл /etc/mail/mailertable. Если вы используете для всей почты только
одно внешнее соединение, подойдет следующий файл:
#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
. uucp-dom:your.uucp.relay
Более сложный пример может выглядеть так:
#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:
В первых трех строках обрабатываются специальные случаи, когда почта для домена должна
отправляться не на маршрут по умолчанию, а на ближайшее соединение UUCP для сокращения
пути доставки. Следующая строка обрабатывает почту, которая может быть доставлена по SMTP
для локального Ethernet домена. Наконец, определены маршруты UUCP в нотации
псевдо-доменов .UUCP, для включения перезаписи правил по умолчанию правилом uucp-neighbor !recipient. Последняя строка всегда содержит одиночную
точку, означающую ``все остальное'', с отправкой через UUCP, являющимся универсальным
почтовым шлюзом. Все имена узлов после ключевого слова uucp-dom: должны представлять существующие маршруты UUCP, проверить
их можно с помощью команды uuname.
Напоминаем, что этот файл должен быть преобразован в базу данных DBM перед
использованием. Командную строку для этой задачи лучше всего поместить в качестве
комментария в верхней части файла mailertable. Всегда
выполняйте эту команду после правки файла mailertable.
И наконец: если вы не уверены, что некоторые отдельные почтовые маршруты будут
работать, запомните параметр sendmail -bt. С этим параметром sendmail
запускается в режиме тестирования
адреса; просто введите 3,0 и адрес, который вы
хотите протестировать. В последней строке появится сообщение об используемом внутреннем
почтовом агенте, хосте назначения, с которым вызывается этот агент, и (возможно
транслированный) адрес. Выход из этого режима происходит при нажатии Ctrl+D.
% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 foo@example.com
canonify input: foo @ example . com
...
parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
> ^D