Страница:
define(PSEUDONYMS, vstout.vbrew.com vstout.UUCP vbrew.com)dnl #
names we're known by
define(DEFAULT HOST, vstout.vbrew.com)dnl # our primary 'name' for mail
Часто, системы желают скрыть их истинное тождество, и служат
как ворота почты, или получатют и обрабатывают почту, адресованную
на " старые " имена.
PSEUDONYMS определяет список всех hostname, для которых
локальная система примет почту.
- 290 -
DEFAULT HOST определяет hostname, который появится при
возникновении сообщений на локальном host.
16.3.2.6 Uucp-зависимые Аспекты
define(UUCPNAME, vstout)dnl # our uucp name
define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors
define(BANGIMPLIESUUCP)dnl # make certain that uucp
define(BANGONLYUUCP)dnl # mail is treated correctly
Часто, системы известны под одним именем для целей DNS и
другим для целей UUCP. UUCPNAME разрешает Вам определять
различные hostname, которые появляются в заголовках выхода почты
UUCP.
UUCPNODES определяет команды, которые возвращают список
hostnames для систем, с которыми мы соединены непосредственно с
через UUCP соединения.
BANGIMPLIESUUCP и BANGONLYUUCP гарантирует, что почта,
адресованная с UUCP синтаксисом обрабатывается согласно UUCP, а
не более современному DNS, используемому сегодня в Internet.
16.3.2.7 Relay-Системы и Mailer'ы
define(RELAY HOST, moria)dnl # our smart relay host
define(RELAY MAILER, UUCP-A)dnl # we reach moria via UUCP
RELAY HOST определяет UUCP hostname интеллектуальной соседней
системы (способной послать почты в любую сеть мира).
RELAY MAILER определяет mailer, используемый, чтобы передать туда
сообщения.
Важно обратить внимание, что устанавливающий эти параметры
приводит к посылке вашей почты к этой отдаленной системе, которая
будет воздействовать на загрузку их системы. Убедитесь, что вы
получили явное соглашение отдаленного Постмастера прежде, чем Вы
конфигурируете вашу систему, чтобы использовать другую систему как
универсальный relay host.
- 291 -
16.3.2.8 Различные Таблицы Конфигурации
define(ALIASES, LIBDIR/aliases)dnl # system aliases
define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts
define(PATHTABLE, LIBDIR/pathtable)dnl # paths database
define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses
define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or
domain
define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed
define(UUCPRELAYS, LIBDIR/uucprelays)dnl # short-circuit paths
С этими макркомандами, Вы можете изменять расположение, где
sendmail + IDA ищет различные dbm таблицы, которые определяют
поведение системы. Вообще нужно оставить их в LIBDIR.
16.3.2.9 Главный Файл Sendmail.mc
include(Sendmail.mc)dnl # REQUIRED ENTRY !!!
Авторы sendmail + IDA обеспечивают файл Sendmail.mc, который
содержит "внутренности" того, что становится файлом sendmail.cf.
Периодически выпускаются новые версии, чтобы установить ошибки
или добавлить функциональные возможности без полного выпуска и
перетрансляции sendmail из исходников.
Важно не редактировать этот файл.
16.3.2.10 Так которые Входы Действительно требуются?
Если не используются dbm таблицы, sendmail + IDA передает почту
через DEFAULT MAILER (и возможно RELAY HOST и RELAY
MAILER) определенный в файле sendmail.m4, используемом, чтобы
генерировать sendmail.cf. Легко можно отменить это поведение через
входы в domaintable или uucpxtable.
Виртуально все системы должны установить DEFAULT HOST,
макркоманды PSEUDONYMS, которые определяют каноническиое имя
пункта, и DEFAULT MAILER. Если все что Вы имеете - это relay host и
relay mailer, Вы не должны устанавлвать эти значения по умолчанию,
так как это работает автоматически.
- 292 -
UUCP главные ЭВМ будут возможно также должны установить
UUCPNAME как их официальное имя UUCP. Они также возможно
установят RELAY MAILER, и RELAY HOST, которые дают
возможность маршрутизации smart-host через relay почту. Транспорт
почты, который нужно использовать определен в RELAY MAILER и
должен обычно быть UUCP-A для UUCP абонента.
Если ваш пункт только SMTP и использует "Domain Name Service ",
Вам следует заменить DEFAULT MAILER на TCP-A и возможно
удалить СТРОКИ RELAY HOST и RELAY MAILER.
16.4 Просмотр Sendmail + IDA Таблиц
Sendmail + IDA обеспечивает ряд таблиц, которые позволяют Вам
отменять заданное по умолчанию поведение sendmail (заданное в файле
sendmail.m4) и определять специальное поведение для уникальных
ситуаций, отдаленных систем, и Сетей. Эти таблицы обрабатываются
dbm используя Make-файл, обеспеченный распределением.
Большинство абонентов будет нуждаться в некоторых из этих
таблиц. Если ваш пункт не требует этих таблиц, самая простая вещь,
возможно, сделать их файлами нулевой длины (командой touch) и
использовать заданный по умолчанию Make-файл в LIBDIR, а не
редактировать Make-файл непосредственно.
16.4.1 Mailertable
Mailertable определяет специальное обращение для специфических
главных ЭВМ или областей, основанных на отдаленном host или
сетевом имени. Это часто используется на абоненте Internet, чтобы
выбрать промежуточный relay host для почты или gateway, чтобы
достигнуть отдаленной сети, и определить специфический протокол
(UUCP или SMTP). UUCP абонент вообще не должен использовать
этот файл.
Порядок важен. Sendmail читает файл, нисходяще и обрабатывает
сообщения согласно первому правилу, которому оно соответствует. Так
что вообще нужно поместить наиболее явные правила наверху файла и
более обобщенных правил ниже.
- 293 -
Предположите, что Вы хотите направлять всю почту для отделения
Информатики в Университете Groucho Marx через UUCP relay host ada.
Чтобы сделать так, Вам нужен пункт в mailertable, который походит на
следующее:
# (in mailertable)
#
# forward all mail for the domain .cs.groucho.edu via UUCP to ada UUCP-
A,ada .cs.groucho.edu
Предположите, что Вы хотите чтобы вся почта к groucho.edu
области шла к другому relay host - bighub. Расширенные входы mailertable
выглядели бы подобно:
# (in mailertable)
#
# forward all mail for the domain cs.groucho.edu via UUCP to ada UUCP-A,ada
.cs.groucho.edu
#
# forward all mail for the domain groucho.edu via UUCP to bighub UUCP-
A,bighub .groucho.edu
Как упомянуто выше, порядок важен. Реверсирование порядка из
двух правил, показанных выше приводит к передаче всей почты к
.cs.groucho.edu через более обобщенный bighub путь вместо явного ada
пути, который действительно желателен.
# (in mailertable)
#
# forward all mail for the domain .groucho.edu via UUCP to bighub UUCP-
A,bighub .groucho.edu
#
# (it is impossible to reach the next line because
# the rule above will be matched first)
UUCP-A,ada .cs.groucho.edu
#
В примерах mailertable выше, UUCP-A mailer заставит sendmail
использовать UUCP получение с заголовками области.
- 294 -
Запятая между mailer'ом и отдаленной системой сообщает о
передаче сообщения к ada для получения.
Mailertable входы(пункты) имеют формат:
mailer delimiter relayhost host or domain
Имеется ряд возможных mailer'ов. Различия - вообще в том, как они
обрабатывают адреса. Типичные mailer'ы - TCP-A (TCP/IP с адресами -
стиля Internet), TCP-U (TCP/IP с адресами uucp-стиля), и UUCP-A
(UUCP с адресами -стиля Internet).
Символ, который отделяет mailer от host слева в строке mailertable,
определяет, как адрес изменяется mailertable.
! Отметка восклицания удаляет hostname получателя перед пересылкой
к mailer'у. Это может использоваться, когда Вы хотите послать почту в
неконфигурированный отдаленный пункт.
, Запятая не изменяет адрес всегда. Сообщение просто будет послано
через заданный mailer заданному relay host.
: Двоеточие удаляет hostname получателя только, если имеются
промежуточные главные ЭВМ между Вами и адресатом. Таким образом
из foo!bar!Joe будет удален foo, в то время как xyzzy!Janet останется
неизменным.
16.4.2 Uucpxtable
Обычно, почта на главные ЭВМ с полностью
квалифицированными именами области передается в стиле Internet
(SMTP), используя Domain Name Service (DNS), или через relay host.
Uucpxtable вынуждает получение через маршрутизацию UUCP,
преобразуя имя в отдаленный hostname UUCP-стиля.
Это часто используется, когда ваш узел служит для продвижения
данных почты для пункта или области или когда Вы желаете послать почту
через прямую и надежную связь UUCP, а не через множество абонентов через
заданный по умолчанию mailer и любые промежуточные системы и сети.
Абоненты UUCP, которые разговаривают с соседями по UUCP, которые
используют заголовки почты с определенным именем области, использовали
бы этот файл, чтобы вынудить получение почты через прямую UUCP
двухточечную связь между двумя системами, а не использовали бы менее
- 295 -
прямой маршрут через RELAY MAILER и RELAY HOST или через DEFAULT
MAILER.
Абонент Internet, который не входит в UUCP может не использовать
uucpxtable.
Предположите, что Вы обеспечиваете обслуживание пересылки почты к
системе, называемой sesame.com в DNS и sesame в картах UUCP. Вы
нуждались бы в следующем входе uucpxtable, чтобы вынудить почту для их host
пройти через ваше прямое соединение UUCP.
#============== /usr/local/lib/mail/uucpxtable ============
# Mail sent to joe@sesame.com is rewritten to sesame!joe and
# therefore delivered via UUCP
#
sesame sesame.com
#
#----------------------------------------------------------
16.4.3 pathtable
Pathtable используется, чтобы определить явную маршрутизацию на
отдаленные главные ЭВМ или сети. Файл pathtable должен быть в синтаксисе
pathalias-стиля, сортируемом в алфавитном порядке. Два поля на каждой строке
должны отделиться реальной МЕТКОЙ ТАБУЛЯЦИИ.
Большинство систем не будет нуждаться в любых входах pathtable.
#=============== /usr/local/lib/mail/pathtable ================
#
# this is a pathalias-style paths file to let you kick mail to
# UUCP neighbors to the direct UUCP path so you don't have to
# go the long way through your smart host that takes other traffic
#
# you want real tabs on each line or m4 might complain
#
# route mail through one or more intermediate sites to a remote
# system using UUCP-style addressing.
#
sesame!ernie!%s ernie
#
- 296 -
# forwarding to a system that is a UUCP neighbor of a reachable
# internet site.
#
swim!%s@gcc.groucho.edu swim
#
# The following sends all mail for two networks through different
# gateways (see the leading '.' ?).
# In this example, "uugate" and "byte" are specific systems that serve
# as mail gateways to the .UUCP and .BITNET pseudo-domains respectively
#
%s@uugate.groucho.edu .UUCP
byte!%s@mail.shift.com .BITNET
#
#=================== end of pathtable =======================
16.4.4 domaintable
Domaintable вообще используется, чтобы вынудить некоторое поведение
после того, как поиск DNS произошел. Это разрешает администратору делать
короткие имена доступными для обычно вызываемых систем или областей,
заменяя такое имя на соответствующее автоматически. Это может также
использоваться, чтобы заменить неправильный host или имена области на "
правильные ".
Большинство абонентов не будет нуждаться в любых входах domaintable.
Следующий пример показывает, как заменить неправильные адреса на
правильный адрес:
#============= /usr/local/lib/mail/domaintable =================
#
#
brokenhost.correct.domain brokenhost.wrong.domain
#
#
#=================== end of domaintable ========================
16.4.5 aliases
Aliases(специальные возможности) разрешают ряд вещей:
- 297 -
+ Они обеспечивают короткое имя или общеизвестное имя для почты, которая
будет адресована к одному или большому количеству людей.
+ Они вызывают программу с сообщением почты как ввод для программы.
+ Они посылают почту в файл.
Все системы требуют aliases для Постмастера.
Всегда чрезвычайно важна защита при определении aliases, которые
вызывают программы или запись к программам, так как sendmail вообще
выполняет setuid-root.
Изменения в файле aliases, не воздействуют до команды
# /usr/lib/sendmail -bi
выполняемой, чтобы формировать требуемые dbm таблицы. Это может также
быть выполнено, выполняя команду newaliases, обычно из cron.
#--------------------- /usr/local/lib/mail/aliases ------------------
#
# demonstrate commonly seen types of aliases
#
usenet: janet # alias for a person
admin: joe,janet # alias for several people
newspak-users: :include:/usr/lib/lists/newspak
# read recipients from a file changefeed: | /usr/local/lib/gup
# alias that invokes a program
complaints: /var/log/complaints
# alias that writes mail to a file
#
# The following two aliases must be present to be RFC-compliant.
# It is important to have them resolve to 'a person'
# who reads mail routinely.
#
postmaster: root # required entry
MAILER-DAEMON: postmaster # required entry
#
- 298 -
#-------------------------------------------------------------------
16.4.6 Редко Используемые Таблицы
Следующие таблицы доступны, но довольно нечасто используются.
Консультируйтесь с документацией, которая приходит с sendmail + IDA для
подробностей.
Uucprelays Файл uucprelays используется для определения " короткого " пути
UUCP к особенно хорошо известному абоненту, а не используя путь через ряд
host или ненадежный путь, сгенерированный, обрабатывая карты UUCP с
pathalias.
Genericfrom и xaliases Файл genericfrom скрывает локальные usernames и адреса
от внешнего мира, автоматически преобразуя(конвертируя) локальные
usernames в обобщенные адреса отправителя, которые не соответствуют
внутреннему usernames.
Связанная утилита xalparse автоматизирует порождение файла genericfrom и
файла aliases так, чтобы и входящие и исходящие username трансляции
произошли из главного файла xaliases.
Decnetxtable перезаписывает адреса с определенным именем области в адреса
decnet-стиля, очень похоже на domaintable, может использоваться, чтобы
перезаписать адреса с не определенным именем области в адреса с
определенным именем области smtp-стиля.
16.5 Установка sendmail
В этом разделе, мы рассмотрим как установить типичное двоичное
распределение sendmail + IDA, и что должно быть выполнено, чтобы сделать
его локализованным и функциональным.
Текущее двоичное распределение sendmail + IDA для Linux может быть
получено из sunsite.unc.edu в /pub/Linux/system/Mail. Даже если Вы имеете более
раннюю версию sendmail, я строго рекомендую, чтобы Вы использовали
sendmail5.67b + IDA1.5.
Если Вы формируете sendmail из исходников, Вы должны следовать
советам в README, включенном в исходное распределение. Текущие
исходники sendmail + IDA доступны из vixen.cso.uiuc.edu. Чтобы формировать
- 299 -
sendmail + IDA на Linux, Вы также нуждаетесь в Linux -специфических файлах
конфигурации из newspak-2.2.tar.gz, который является доступным на sun-
site.unc.edu в каталоге /pub/Linux/system/Mail.
Если Вы предварительно установили smail или другое средство получения
почты, вам возможно нужно удалить (или переименовать) все файлы из smail
для безопасности.
16.5.1 Извлечение двоичного распределения
Сначала, Вы должны разпаковать файл архива в некотором безопасном
расположении:
$ gunzip -c sendmail5.65b+IDA1.5+mailx5.3b.tgz | tar xvf -
Если Вы имеете "современный" tar, например из недавнего Slackware, Вы
можете сделать tar -zxvf filename.tgz и получить те же самые результаты.
Распаковка архива создает каталог, именованный sendmail5.65b +IDA1.5+
mailx5.3b. В этом каталоге, Вы находите комплектное оборудование sendmail +
IDA плюс mailx. Весь paths файл ниже этого каталога отражает расположение,
где файлы должны быть установлены, так что безопасно подготовить команду
tar:
# cd sendmail5.65b+IDA1.5+mailx5.3b
# tar cf - . | (cd /; tar xvvpoof -)
16.5.2 Формирование sendmail.cf
Чтобы сформировать файл sendmail.cf, настроенный для вашего пункта, Вы
должны сщздать файл sendmail.m4, и обработать его с m4. В /usr/local/lib/mail/CF,
Вы найдете типовой файл называемый sample.m4. Копируйте его в
yourhostname.m4, и редактируйте, чтобы отразить ситуацию вашего пункта.
В текущем разделе, я буду давать короткий краткий обзор макркоманд,
которые Вы должны изменить. Для полного описания того, что они делают,
пожалуйста, обратитесь к более раннему обсуждению sendmail.m4.
LOCAL MAILER DEF Определяет файл, который определяет mailer для
локального получения почты. См. раздел " Определение Локального Mailer'а "
выше.
- 300 -
PSEUDONYMS Определяет все имена, вашего локального host.
DEFAULT HOST Помещается в ваше полностью квалифицированное имя
области. Это имя появится как ваш hostname во всей выходящей почте.
UUCPNAME Помещается в ваше неквалифицированное hostnmae.
RELAY HOST и RELAY MAILER Если Вы говорите UUCP smart-host
установить RELAY HOST для UUCP имени вашего " интеллектуально
зависимого " uucp соседа. Используйте UUCP-A mailer, если Вы хотите
заголовки с определенным именем области.
DEFAULT MAILER Если Вы находитесь в Internet и используете DNS, Вы
должны установить его как TCP-A. Это сообщает, чтобы sendmail использовал
TCP-A mailer, который передает почту через SMTP используя нормальную RFC
адресацию для конверта. Абонент Internet возможно не должен определять
RELAY HOST or RELAY MAILER.
Чтобы создать файл sendmail.cf, выполните команду
# make yourhostname.cf
Она обработает файл yourhostname.m4 и создаст yourhostname.cf из него.
Затем, Вы должны проверить, делает ли файл конфигурации, который вы
создали, то, что Вы ожидаете. Это объясняется в следующих двух разделах.
Если вы удовлетворены его поведением, скопируйте его на место
командой:
# cp yourhostname.cf /etc/sendmail.cf
Теперь ваша система sendmail готова к действиям. Поместите следующую
строку в соответствующем файле запуска (вообще /etc/rc.inet2). Вы можете
также выполнить ее вручную, чтобы запустить его теперь.
# /usr/lib/sendmail -bd -q1h
16.5.3 Тестирование файла sendmail.cf
- 301 -
Чтобы включить " проверочный " режим, Вы вызываете sendmail с -bt
флагом. Заданный по умолчанию файл конфигурации - файл sendmail.cf,
который установлен на системе. Вы можете проверять альтернативный файл,
используя -Cfilename опцию.
В следующих примерах, мы проверяем vstout.cf файл конфигурации,
сгенерированный из файла vstout.m4.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
>
Следующие тесты гарантируют, что sendmail способен получать всю почту
пользователей вашей системы. Во всех случаях результат теста должен быть
тот же самый и указывать на локальное имя системы с ЛОКАЛЬНЫМ
mailer'ом.
Сначала проверите, как почта была бы передана локальному пользователю.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 me
rewrite: ruleset 3 input: me
rewrite: ruleset 7 input: me
rewrite: ruleset 9 input: me
rewrite: ruleset 9 returns: < me >
rewrite: ruleset 7 returns: < > , me
rewrite: ruleset 3 returns: < > , me
rewrite: ruleset 0 input: < > , me
rewrite: ruleset 8 input: < > , me
rewrite: ruleset 20 input: < > , me
rewrite: ruleset 20 returns: < > , @ vstout . vbrew . com , me
rewrite: ruleset 8 returns: < > , @ vstout . vbrew . com , me
rewrite: ruleset 26 input: < > , @ vstout . vbrew . com , me
rewrite: ruleset 26 returns: $# LOCAL $@ vstout . vbrew . com $: me
- 302 -
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me
Вывод показывает как sendmail обрабатывает адрес внутренне. Он
вручается различным ruleset, которые анализируют его, вызывают другой
ruleset по очереди, и разбивают его в компоненты.
В нашем примере, мы передали мой адрес к ruleset 3 и 0 (это - значение из
3,0 введенное перед адресом). Последняя строка показывает анализируемый
адрес возвращаемый ruleset 0.
Затем, проверите почту пользователя вашей системы с синтаксисом UUCP.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 vstout!me
rewrite: ruleset 3 input: vstout ! me
[...]
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me >
Затем, проверите почту, адресованную пользователю вашей системы с
синтаксисом Internet к вашему полностью квалифицированному hostname.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 me@vstout.vbrew.com
rewrite: ruleset 3 input: me @ vstout . vbrew . com
[...]
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me >
Вы должны повторить вышеупомянутые два теста с каждым из имен,
которые Вы определили в PSEUDONYMS и параметрах DEFAULT NAME в
вашем файле sendmail.m4.
Наконец, проверите что Вы можете отправлять почту вашему relay host.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
- 303 -
Enter
[Note: No initial ruleset 3 call]
> 3,0 fred@moria.com
rewrite: ruleset 3 input: fred @ moria . com
rewrite: ruleset 7 input: fred @ moria . com
rewrite: ruleset 9 input: fred @ moria . com
rewrite: ruleset 9 returns: < fred > @ moria . com
rewrite: ruleset 7 returns: < @ moria . com > , fred
rewrite: ruleset 3 returns: < @ moria . com > , fred
rewrite: ruleset 0 input: < @ moria . com > , fred
rewrite: ruleset 8 input: < @ moria . com > , fred
rewrite: ruleset 8 returns: < @ moria . com > , fred
rewrite: ruleset 29 input: < @ moria . com > , fred
rewrite: ruleset 29 returns: < @ moria . com > , fred
rewrite: ruleset 26 input: < @ moria . com > , fred
rewrite: ruleset 25 input: < @ moria . com > , fred
rewrite: ruleset 25 returns: < @ moria . com > , fred
rewrite: ruleset 4 input: < @ moria . com > , fred
rewrite: ruleset 4 returns: fred @ moria . com
rewrite: ruleset 26 retu rns < @ moria . com > , fred
rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ moria
. com > , fred >
16.5.4 Помещение всего вместе -
Интеграционная проверка sendmail.cf и таблиц
Вы проверили что почта будет иметь желательное заданное по умолчанию
поведение и что вы будете способны и послать и получить законно
адресованную почту. Чтобы завершить установку, может быть необходимо
создать соответствующие dbm таблицы, чтобы получить желательные
конечные результаты.
После создания таблиц, которые требуются для вашего пункта, Вы должны,
обработать их через dbm созданием make в каталоге, содержащем таблицы.
Если Вы являетесь только UUCP узлом, Вы не должны создвать таблицы,
упомянутые в README.linux файле. Вы будете должны только подправить
файлы так, чтобы Make-файл работал.
Если вы в UUCP и Вы разговариваете с абонентами в дополнение к
вашему smart-host, вы будете должны добавить входы uucpxtable для каждого
- 304 -
(или почта к ним также пройдет через smart host) и выполнить dbm для
пересмотренного uucpxtable.
Сначала, Вы должны удостовериться что почта через ваш RELAY HOST,
посылается им через RELAY MAILER.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 fred@sesame.com
rewrite: ruleset 3 input: fred @ sesame . com
rewrite: ruleset 7 input: fred @ sesame . com
rewrite: ruleset 9 input: fred @ sesame . com
rewrite: ruleset 9 returns: < fred > @ sesame . com
rewrite: ruleset 7 returns: < @ sesame . com > , fred
rewrite: ruleset 3 returns: < @ sesame . com > , fred
rewrite: ruleset 0 input: < @ sesame . com > , fred
rewrite: ruleset 8 input: < @ sesame . com > , fred
rewrite: ruleset 8 returns: < @ sesame . com > , fred
rewrite: ruleset 29 input: < @ sesame . com > , fred
rewrite: ruleset 29 returns: < @ sesame . com > , fred
rewrite: ruleset 26 input: < @ sesame . com > , fred
rewrite: ruleset 25 input: < @ sesame . com > , fred
rewrite: ruleset 25 returns: < @ sesame . com > , fred
rewrite: ruleset 4 input: < @ sesame . com > , fred
rewrite: ruleset 4 returns: fred @ sesame . com
rewrite: ruleset 26 returns: < @ sesame . com > , fred
rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ sesame
. com > , fred >
Если Вы имеете UUCP соседей кроме вашего RELAY HOST, Вы должны
гарантировать, что почта к ним имеет соответствующее поведение. Почта,
адресованная с синтаксисом стиля UUCP для host, с которым Вы говорите по
UUCP, должна идти непосредственно к ним (если Вы явно не предотвращаете
это входом domaintable). Примите, что swim host - прямой сосед UUCP ваших
соседей. И при подаче swim!Fred sendmail должен произвести следующий
результат:
- 305 -
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 swim!fred
rewrite: ruleset 3 input: swim ! fred
[...lines omitted...]
rewrite: ruleset 0 returns: $# UUCP $@ swim $: < > , fred
>
Если Вы имеете входы uucpxtable, чтобы вынудить получение по UUCP для
некоторых UUCP соседей, которые посылают почту стиля Internet с
определенным именем области, это также должно быть проверено.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 dude@swim.2birds.com
rewrite: ruleset 3 input: dude @ swim . 2birds . com
[...lines omitted...]
rewrite: ruleset 0 returns: $# UUCP $@ swim . 2birds $: < > , dude >
16.6 Администрирование и Глупые Приемы Почты
Теперь, когда мы обсудили теорию конфигурирования, установки, и
тестирования sendmail + IDA, давайте рассмотрим несколько моментов, чтобы
изучить вещи, которые случаются обычно в жизни администратора почты.
Отдаленные системы иногда ломаются. Ошибка модема или сбой
телефонных линий, определения DNS установлены неправильно из-за
человеческой ошибки. Сети падают неожиданно. В таких случаях,
администраторы почты должны знать, как реагировать быстро, действенно, и
безопасно схранить почту, текущую через альтернативные маршруты, пока
отдаленные системы или поставщики услуг не могут восстановить
нормальные услуги.
Остальная часть этой главы предназначена, чтобы обеспечить Вас
решениями для наиболее частыми " критическми состояниями электронной
почты ".
- 306 -
16.6.1 Пересылка Почты В Отдаленную Систему
Чтобы отправлять почту для специфического host или области в
обозначенную отдаленную систему, Вы вообще используете mailertable.
Например, чтобы отправить почту для backwood.org к их закулисной
системе GATEWAY UUCP, вы поместили следующий вход в mailertable:
UUCP-A,backdoor backwood.org
16.6.2 Почта Для Неконфигурированного Отдаленного Абонена
Часто, главные ЭВМ Internet будут иметь проблему при получении почты в
не-конфигурированном отдаленном абоненте. Имеются отдельные варианты
этой проблемы, но общий признак - почта передается отдаленной системой
или никогда добирается туда вообще.
Эти проблемы могут помещать локального администратора системы в
плохую позицию, потому что ваши пользователи вообще не заботятся о том
что Вы лично не управляете каждой системой во всем мире (или не знаете, как
получить отдаленного администратора, чтобы установить проблему). Они
только знают, что их почта не проходила желательному получателю на другом
конце и что вы являетесь вероятным виновным человеком.
Конфигурация отдаленного пункта - их проблема, не ваша. Во всех случаях,
убедитесь, что ваш пункт способен связаться с не-конфигурированным
отдаленным пунктом. Если Вы не можете войти в контакт с Постмастером в
отдаленном пункте, чтобы установить их конфигурацию своевременным
способом, Вы имеет две опции.
+ Вообще возможно вынудить послать почту в отдаленную систему успешно,
хотя, так как отдаленная система не-конфигурирована, ответы на отдаленном
конце могут не работать ..., но то это - проблема отдаленного администратора.
Вы можете устранить плохие заголовки в конверте на ваших исходящих
сообщениях только используя вход domaintable для их области или host, что
приводит к правке недопустимой информации, при выходе почты из вашего
пункта:
braindead.correct.domain.com braindead.wrong.domain.com
- 307 -
Знак ! в mailertable передает почту их отдаленному пункту, как будто она
инициировалось локально на их системе. Обратите внимание, что это
изменяет только адрес конверта, так что соответствующий адрес возврата
будет все еще обнаруживаться в сообщении.
TCP!braindead.correct.domain.com braindead.wrong.domain.com
16.6.3 Почта, которая будет перемещена через UUCP
В идеальном мире (из перспективы Internet), все главные ЭВМ будут иметь
записи в Domain Name Service (DNS) и посылать почту с полностью
квалифицированными именами области.
Если Вы, случается, передаете через UUCP такому пункту, Вы можете
вынуждать почту пройти двухточечное соединение UUCP, а не через ваш
заданный по умолчанию mailer по существу " опуская область " их hostname
через uucpxtable.
Чтобы вынуждать получение через UUCP для sesame.com, Вы поместили
бы следующее в ваш uucpxtable:
# un-domainize sesame.com to force UUCP delivery
sesame sesame.com
Результат - тот sendmail, то определит (через UUCPNODES в файле
sendmail.m4) что Вы непосредственно соединены с отдаленной системой, и
будет ставить в очередь почту для получения через UUCP.
16.6.4 Предотвращение Передачи Почты через UUCP
Противоположное условие также происходит. Часто системы могут иметь
ряд прямых соединений UUCP, которые редко используются или они не так
надежны и всегда доступны как заданный по умолчанию mailer или relay host.
names we're known by
define(DEFAULT HOST, vstout.vbrew.com)dnl # our primary 'name' for mail
Часто, системы желают скрыть их истинное тождество, и служат
как ворота почты, или получатют и обрабатывают почту, адресованную
на " старые " имена.
PSEUDONYMS определяет список всех hostname, для которых
локальная система примет почту.
- 290 -
DEFAULT HOST определяет hostname, который появится при
возникновении сообщений на локальном host.
16.3.2.6 Uucp-зависимые Аспекты
define(UUCPNAME, vstout)dnl # our uucp name
define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors
define(BANGIMPLIESUUCP)dnl # make certain that uucp
define(BANGONLYUUCP)dnl # mail is treated correctly
Часто, системы известны под одним именем для целей DNS и
другим для целей UUCP. UUCPNAME разрешает Вам определять
различные hostname, которые появляются в заголовках выхода почты
UUCP.
UUCPNODES определяет команды, которые возвращают список
hostnames для систем, с которыми мы соединены непосредственно с
через UUCP соединения.
BANGIMPLIESUUCP и BANGONLYUUCP гарантирует, что почта,
адресованная с UUCP синтаксисом обрабатывается согласно UUCP, а
не более современному DNS, используемому сегодня в Internet.
16.3.2.7 Relay-Системы и Mailer'ы
define(RELAY HOST, moria)dnl # our smart relay host
define(RELAY MAILER, UUCP-A)dnl # we reach moria via UUCP
RELAY HOST определяет UUCP hostname интеллектуальной соседней
системы (способной послать почты в любую сеть мира).
RELAY MAILER определяет mailer, используемый, чтобы передать туда
сообщения.
Важно обратить внимание, что устанавливающий эти параметры
приводит к посылке вашей почты к этой отдаленной системе, которая
будет воздействовать на загрузку их системы. Убедитесь, что вы
получили явное соглашение отдаленного Постмастера прежде, чем Вы
конфигурируете вашу систему, чтобы использовать другую систему как
универсальный relay host.
- 291 -
16.3.2.8 Различные Таблицы Конфигурации
define(ALIASES, LIBDIR/aliases)dnl # system aliases
define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts
define(PATHTABLE, LIBDIR/pathtable)dnl # paths database
define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses
define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or
domain
define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed
define(UUCPRELAYS, LIBDIR/uucprelays)dnl # short-circuit paths
С этими макркомандами, Вы можете изменять расположение, где
sendmail + IDA ищет различные dbm таблицы, которые определяют
поведение системы. Вообще нужно оставить их в LIBDIR.
16.3.2.9 Главный Файл Sendmail.mc
include(Sendmail.mc)dnl # REQUIRED ENTRY !!!
Авторы sendmail + IDA обеспечивают файл Sendmail.mc, который
содержит "внутренности" того, что становится файлом sendmail.cf.
Периодически выпускаются новые версии, чтобы установить ошибки
или добавлить функциональные возможности без полного выпуска и
перетрансляции sendmail из исходников.
Важно не редактировать этот файл.
16.3.2.10 Так которые Входы Действительно требуются?
Если не используются dbm таблицы, sendmail + IDA передает почту
через DEFAULT MAILER (и возможно RELAY HOST и RELAY
MAILER) определенный в файле sendmail.m4, используемом, чтобы
генерировать sendmail.cf. Легко можно отменить это поведение через
входы в domaintable или uucpxtable.
Виртуально все системы должны установить DEFAULT HOST,
макркоманды PSEUDONYMS, которые определяют каноническиое имя
пункта, и DEFAULT MAILER. Если все что Вы имеете - это relay host и
relay mailer, Вы не должны устанавлвать эти значения по умолчанию,
так как это работает автоматически.
- 292 -
UUCP главные ЭВМ будут возможно также должны установить
UUCPNAME как их официальное имя UUCP. Они также возможно
установят RELAY MAILER, и RELAY HOST, которые дают
возможность маршрутизации smart-host через relay почту. Транспорт
почты, который нужно использовать определен в RELAY MAILER и
должен обычно быть UUCP-A для UUCP абонента.
Если ваш пункт только SMTP и использует "Domain Name Service ",
Вам следует заменить DEFAULT MAILER на TCP-A и возможно
удалить СТРОКИ RELAY HOST и RELAY MAILER.
16.4 Просмотр Sendmail + IDA Таблиц
Sendmail + IDA обеспечивает ряд таблиц, которые позволяют Вам
отменять заданное по умолчанию поведение sendmail (заданное в файле
sendmail.m4) и определять специальное поведение для уникальных
ситуаций, отдаленных систем, и Сетей. Эти таблицы обрабатываются
dbm используя Make-файл, обеспеченный распределением.
Большинство абонентов будет нуждаться в некоторых из этих
таблиц. Если ваш пункт не требует этих таблиц, самая простая вещь,
возможно, сделать их файлами нулевой длины (командой touch) и
использовать заданный по умолчанию Make-файл в LIBDIR, а не
редактировать Make-файл непосредственно.
16.4.1 Mailertable
Mailertable определяет специальное обращение для специфических
главных ЭВМ или областей, основанных на отдаленном host или
сетевом имени. Это часто используется на абоненте Internet, чтобы
выбрать промежуточный relay host для почты или gateway, чтобы
достигнуть отдаленной сети, и определить специфический протокол
(UUCP или SMTP). UUCP абонент вообще не должен использовать
этот файл.
Порядок важен. Sendmail читает файл, нисходяще и обрабатывает
сообщения согласно первому правилу, которому оно соответствует. Так
что вообще нужно поместить наиболее явные правила наверху файла и
более обобщенных правил ниже.
- 293 -
Предположите, что Вы хотите направлять всю почту для отделения
Информатики в Университете Groucho Marx через UUCP relay host ada.
Чтобы сделать так, Вам нужен пункт в mailertable, который походит на
следующее:
# (in mailertable)
#
# forward all mail for the domain .cs.groucho.edu via UUCP to ada UUCP-
A,ada .cs.groucho.edu
Предположите, что Вы хотите чтобы вся почта к groucho.edu
области шла к другому relay host - bighub. Расширенные входы mailertable
выглядели бы подобно:
# (in mailertable)
#
# forward all mail for the domain cs.groucho.edu via UUCP to ada UUCP-A,ada
.cs.groucho.edu
#
# forward all mail for the domain groucho.edu via UUCP to bighub UUCP-
A,bighub .groucho.edu
Как упомянуто выше, порядок важен. Реверсирование порядка из
двух правил, показанных выше приводит к передаче всей почты к
.cs.groucho.edu через более обобщенный bighub путь вместо явного ada
пути, который действительно желателен.
# (in mailertable)
#
# forward all mail for the domain .groucho.edu via UUCP to bighub UUCP-
A,bighub .groucho.edu
#
# (it is impossible to reach the next line because
# the rule above will be matched first)
UUCP-A,ada .cs.groucho.edu
#
В примерах mailertable выше, UUCP-A mailer заставит sendmail
использовать UUCP получение с заголовками области.
- 294 -
Запятая между mailer'ом и отдаленной системой сообщает о
передаче сообщения к ada для получения.
Mailertable входы(пункты) имеют формат:
mailer delimiter relayhost host or domain
Имеется ряд возможных mailer'ов. Различия - вообще в том, как они
обрабатывают адреса. Типичные mailer'ы - TCP-A (TCP/IP с адресами -
стиля Internet), TCP-U (TCP/IP с адресами uucp-стиля), и UUCP-A
(UUCP с адресами -стиля Internet).
Символ, который отделяет mailer от host слева в строке mailertable,
определяет, как адрес изменяется mailertable.
! Отметка восклицания удаляет hostname получателя перед пересылкой
к mailer'у. Это может использоваться, когда Вы хотите послать почту в
неконфигурированный отдаленный пункт.
, Запятая не изменяет адрес всегда. Сообщение просто будет послано
через заданный mailer заданному relay host.
: Двоеточие удаляет hostname получателя только, если имеются
промежуточные главные ЭВМ между Вами и адресатом. Таким образом
из foo!bar!Joe будет удален foo, в то время как xyzzy!Janet останется
неизменным.
16.4.2 Uucpxtable
Обычно, почта на главные ЭВМ с полностью
квалифицированными именами области передается в стиле Internet
(SMTP), используя Domain Name Service (DNS), или через relay host.
Uucpxtable вынуждает получение через маршрутизацию UUCP,
преобразуя имя в отдаленный hostname UUCP-стиля.
Это часто используется, когда ваш узел служит для продвижения
данных почты для пункта или области или когда Вы желаете послать почту
через прямую и надежную связь UUCP, а не через множество абонентов через
заданный по умолчанию mailer и любые промежуточные системы и сети.
Абоненты UUCP, которые разговаривают с соседями по UUCP, которые
используют заголовки почты с определенным именем области, использовали
бы этот файл, чтобы вынудить получение почты через прямую UUCP
двухточечную связь между двумя системами, а не использовали бы менее
- 295 -
прямой маршрут через RELAY MAILER и RELAY HOST или через DEFAULT
MAILER.
Абонент Internet, который не входит в UUCP может не использовать
uucpxtable.
Предположите, что Вы обеспечиваете обслуживание пересылки почты к
системе, называемой sesame.com в DNS и sesame в картах UUCP. Вы
нуждались бы в следующем входе uucpxtable, чтобы вынудить почту для их host
пройти через ваше прямое соединение UUCP.
#============== /usr/local/lib/mail/uucpxtable ============
# Mail sent to joe@sesame.com is rewritten to sesame!joe and
# therefore delivered via UUCP
#
sesame sesame.com
#
#----------------------------------------------------------
16.4.3 pathtable
Pathtable используется, чтобы определить явную маршрутизацию на
отдаленные главные ЭВМ или сети. Файл pathtable должен быть в синтаксисе
pathalias-стиля, сортируемом в алфавитном порядке. Два поля на каждой строке
должны отделиться реальной МЕТКОЙ ТАБУЛЯЦИИ.
Большинство систем не будет нуждаться в любых входах pathtable.
#=============== /usr/local/lib/mail/pathtable ================
#
# this is a pathalias-style paths file to let you kick mail to
# UUCP neighbors to the direct UUCP path so you don't have to
# go the long way through your smart host that takes other traffic
#
# you want real tabs on each line or m4 might complain
#
# route mail through one or more intermediate sites to a remote
# system using UUCP-style addressing.
#
sesame!ernie!%s ernie
#
- 296 -
# forwarding to a system that is a UUCP neighbor of a reachable
# internet site.
#
swim!%s@gcc.groucho.edu swim
#
# The following sends all mail for two networks through different
# gateways (see the leading '.' ?).
# In this example, "uugate" and "byte" are specific systems that serve
# as mail gateways to the .UUCP and .BITNET pseudo-domains respectively
#
%s@uugate.groucho.edu .UUCP
byte!%s@mail.shift.com .BITNET
#
#=================== end of pathtable =======================
16.4.4 domaintable
Domaintable вообще используется, чтобы вынудить некоторое поведение
после того, как поиск DNS произошел. Это разрешает администратору делать
короткие имена доступными для обычно вызываемых систем или областей,
заменяя такое имя на соответствующее автоматически. Это может также
использоваться, чтобы заменить неправильный host или имена области на "
правильные ".
Большинство абонентов не будет нуждаться в любых входах domaintable.
Следующий пример показывает, как заменить неправильные адреса на
правильный адрес:
#============= /usr/local/lib/mail/domaintable =================
#
#
brokenhost.correct.domain brokenhost.wrong.domain
#
#
#=================== end of domaintable ========================
16.4.5 aliases
Aliases(специальные возможности) разрешают ряд вещей:
- 297 -
+ Они обеспечивают короткое имя или общеизвестное имя для почты, которая
будет адресована к одному или большому количеству людей.
+ Они вызывают программу с сообщением почты как ввод для программы.
+ Они посылают почту в файл.
Все системы требуют aliases для Постмастера.
Всегда чрезвычайно важна защита при определении aliases, которые
вызывают программы или запись к программам, так как sendmail вообще
выполняет setuid-root.
Изменения в файле aliases, не воздействуют до команды
# /usr/lib/sendmail -bi
выполняемой, чтобы формировать требуемые dbm таблицы. Это может также
быть выполнено, выполняя команду newaliases, обычно из cron.
#--------------------- /usr/local/lib/mail/aliases ------------------
#
# demonstrate commonly seen types of aliases
#
usenet: janet # alias for a person
admin: joe,janet # alias for several people
newspak-users: :include:/usr/lib/lists/newspak
# read recipients from a file changefeed: | /usr/local/lib/gup
# alias that invokes a program
complaints: /var/log/complaints
# alias that writes mail to a file
#
# The following two aliases must be present to be RFC-compliant.
# It is important to have them resolve to 'a person'
# who reads mail routinely.
#
postmaster: root # required entry
MAILER-DAEMON: postmaster # required entry
#
- 298 -
#-------------------------------------------------------------------
16.4.6 Редко Используемые Таблицы
Следующие таблицы доступны, но довольно нечасто используются.
Консультируйтесь с документацией, которая приходит с sendmail + IDA для
подробностей.
Uucprelays Файл uucprelays используется для определения " короткого " пути
UUCP к особенно хорошо известному абоненту, а не используя путь через ряд
host или ненадежный путь, сгенерированный, обрабатывая карты UUCP с
pathalias.
Genericfrom и xaliases Файл genericfrom скрывает локальные usernames и адреса
от внешнего мира, автоматически преобразуя(конвертируя) локальные
usernames в обобщенные адреса отправителя, которые не соответствуют
внутреннему usernames.
Связанная утилита xalparse автоматизирует порождение файла genericfrom и
файла aliases так, чтобы и входящие и исходящие username трансляции
произошли из главного файла xaliases.
Decnetxtable перезаписывает адреса с определенным именем области в адреса
decnet-стиля, очень похоже на domaintable, может использоваться, чтобы
перезаписать адреса с не определенным именем области в адреса с
определенным именем области smtp-стиля.
16.5 Установка sendmail
В этом разделе, мы рассмотрим как установить типичное двоичное
распределение sendmail + IDA, и что должно быть выполнено, чтобы сделать
его локализованным и функциональным.
Текущее двоичное распределение sendmail + IDA для Linux может быть
получено из sunsite.unc.edu в /pub/Linux/system/Mail. Даже если Вы имеете более
раннюю версию sendmail, я строго рекомендую, чтобы Вы использовали
sendmail5.67b + IDA1.5.
Если Вы формируете sendmail из исходников, Вы должны следовать
советам в README, включенном в исходное распределение. Текущие
исходники sendmail + IDA доступны из vixen.cso.uiuc.edu. Чтобы формировать
- 299 -
sendmail + IDA на Linux, Вы также нуждаетесь в Linux -специфических файлах
конфигурации из newspak-2.2.tar.gz, который является доступным на sun-
site.unc.edu в каталоге /pub/Linux/system/Mail.
Если Вы предварительно установили smail или другое средство получения
почты, вам возможно нужно удалить (или переименовать) все файлы из smail
для безопасности.
16.5.1 Извлечение двоичного распределения
Сначала, Вы должны разпаковать файл архива в некотором безопасном
расположении:
$ gunzip -c sendmail5.65b+IDA1.5+mailx5.3b.tgz | tar xvf -
Если Вы имеете "современный" tar, например из недавнего Slackware, Вы
можете сделать tar -zxvf filename.tgz и получить те же самые результаты.
Распаковка архива создает каталог, именованный sendmail5.65b +IDA1.5+
mailx5.3b. В этом каталоге, Вы находите комплектное оборудование sendmail +
IDA плюс mailx. Весь paths файл ниже этого каталога отражает расположение,
где файлы должны быть установлены, так что безопасно подготовить команду
tar:
# cd sendmail5.65b+IDA1.5+mailx5.3b
# tar cf - . | (cd /; tar xvvpoof -)
16.5.2 Формирование sendmail.cf
Чтобы сформировать файл sendmail.cf, настроенный для вашего пункта, Вы
должны сщздать файл sendmail.m4, и обработать его с m4. В /usr/local/lib/mail/CF,
Вы найдете типовой файл называемый sample.m4. Копируйте его в
yourhostname.m4, и редактируйте, чтобы отразить ситуацию вашего пункта.
В текущем разделе, я буду давать короткий краткий обзор макркоманд,
которые Вы должны изменить. Для полного описания того, что они делают,
пожалуйста, обратитесь к более раннему обсуждению sendmail.m4.
LOCAL MAILER DEF Определяет файл, который определяет mailer для
локального получения почты. См. раздел " Определение Локального Mailer'а "
выше.
- 300 -
PSEUDONYMS Определяет все имена, вашего локального host.
DEFAULT HOST Помещается в ваше полностью квалифицированное имя
области. Это имя появится как ваш hostname во всей выходящей почте.
UUCPNAME Помещается в ваше неквалифицированное hostnmae.
RELAY HOST и RELAY MAILER Если Вы говорите UUCP smart-host
установить RELAY HOST для UUCP имени вашего " интеллектуально
зависимого " uucp соседа. Используйте UUCP-A mailer, если Вы хотите
заголовки с определенным именем области.
DEFAULT MAILER Если Вы находитесь в Internet и используете DNS, Вы
должны установить его как TCP-A. Это сообщает, чтобы sendmail использовал
TCP-A mailer, который передает почту через SMTP используя нормальную RFC
адресацию для конверта. Абонент Internet возможно не должен определять
RELAY HOST or RELAY MAILER.
Чтобы создать файл sendmail.cf, выполните команду
# make yourhostname.cf
Она обработает файл yourhostname.m4 и создаст yourhostname.cf из него.
Затем, Вы должны проверить, делает ли файл конфигурации, который вы
создали, то, что Вы ожидаете. Это объясняется в следующих двух разделах.
Если вы удовлетворены его поведением, скопируйте его на место
командой:
# cp yourhostname.cf /etc/sendmail.cf
Теперь ваша система sendmail готова к действиям. Поместите следующую
строку в соответствующем файле запуска (вообще /etc/rc.inet2). Вы можете
также выполнить ее вручную, чтобы запустить его теперь.
# /usr/lib/sendmail -bd -q1h
16.5.3 Тестирование файла sendmail.cf
- 301 -
Чтобы включить " проверочный " режим, Вы вызываете sendmail с -bt
флагом. Заданный по умолчанию файл конфигурации - файл sendmail.cf,
который установлен на системе. Вы можете проверять альтернативный файл,
используя -Cfilename опцию.
В следующих примерах, мы проверяем vstout.cf файл конфигурации,
сгенерированный из файла vstout.m4.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
>
Следующие тесты гарантируют, что sendmail способен получать всю почту
пользователей вашей системы. Во всех случаях результат теста должен быть
тот же самый и указывать на локальное имя системы с ЛОКАЛЬНЫМ
mailer'ом.
Сначала проверите, как почта была бы передана локальному пользователю.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 me
rewrite: ruleset 3 input: me
rewrite: ruleset 7 input: me
rewrite: ruleset 9 input: me
rewrite: ruleset 9 returns: < me >
rewrite: ruleset 7 returns: < > , me
rewrite: ruleset 3 returns: < > , me
rewrite: ruleset 0 input: < > , me
rewrite: ruleset 8 input: < > , me
rewrite: ruleset 20 input: < > , me
rewrite: ruleset 20 returns: < > , @ vstout . vbrew . com , me
rewrite: ruleset 8 returns: < > , @ vstout . vbrew . com , me
rewrite: ruleset 26 input: < > , @ vstout . vbrew . com , me
rewrite: ruleset 26 returns: $# LOCAL $@ vstout . vbrew . com $: me
- 302 -
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me
Вывод показывает как sendmail обрабатывает адрес внутренне. Он
вручается различным ruleset, которые анализируют его, вызывают другой
ruleset по очереди, и разбивают его в компоненты.
В нашем примере, мы передали мой адрес к ruleset 3 и 0 (это - значение из
3,0 введенное перед адресом). Последняя строка показывает анализируемый
адрес возвращаемый ruleset 0.
Затем, проверите почту пользователя вашей системы с синтаксисом UUCP.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 vstout!me
rewrite: ruleset 3 input: vstout ! me
[...]
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me >
Затем, проверите почту, адресованную пользователю вашей системы с
синтаксисом Internet к вашему полностью квалифицированному hostname.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 me@vstout.vbrew.com
rewrite: ruleset 3 input: me @ vstout . vbrew . com
[...]
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me >
Вы должны повторить вышеупомянутые два теста с каждым из имен,
которые Вы определили в PSEUDONYMS и параметрах DEFAULT NAME в
вашем файле sendmail.m4.
Наконец, проверите что Вы можете отправлять почту вашему relay host.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
- 303 -
Enter
[Note: No initial ruleset 3 call]
> 3,0 fred@moria.com
rewrite: ruleset 3 input: fred @ moria . com
rewrite: ruleset 7 input: fred @ moria . com
rewrite: ruleset 9 input: fred @ moria . com
rewrite: ruleset 9 returns: < fred > @ moria . com
rewrite: ruleset 7 returns: < @ moria . com > , fred
rewrite: ruleset 3 returns: < @ moria . com > , fred
rewrite: ruleset 0 input: < @ moria . com > , fred
rewrite: ruleset 8 input: < @ moria . com > , fred
rewrite: ruleset 8 returns: < @ moria . com > , fred
rewrite: ruleset 29 input: < @ moria . com > , fred
rewrite: ruleset 29 returns: < @ moria . com > , fred
rewrite: ruleset 26 input: < @ moria . com > , fred
rewrite: ruleset 25 input: < @ moria . com > , fred
rewrite: ruleset 25 returns: < @ moria . com > , fred
rewrite: ruleset 4 input: < @ moria . com > , fred
rewrite: ruleset 4 returns: fred @ moria . com
rewrite: ruleset 26 retu rns < @ moria . com > , fred
rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ moria
. com > , fred >
16.5.4 Помещение всего вместе -
Интеграционная проверка sendmail.cf и таблиц
Вы проверили что почта будет иметь желательное заданное по умолчанию
поведение и что вы будете способны и послать и получить законно
адресованную почту. Чтобы завершить установку, может быть необходимо
создать соответствующие dbm таблицы, чтобы получить желательные
конечные результаты.
После создания таблиц, которые требуются для вашего пункта, Вы должны,
обработать их через dbm созданием make в каталоге, содержащем таблицы.
Если Вы являетесь только UUCP узлом, Вы не должны создвать таблицы,
упомянутые в README.linux файле. Вы будете должны только подправить
файлы так, чтобы Make-файл работал.
Если вы в UUCP и Вы разговариваете с абонентами в дополнение к
вашему smart-host, вы будете должны добавить входы uucpxtable для каждого
- 304 -
(или почта к ним также пройдет через smart host) и выполнить dbm для
пересмотренного uucpxtable.
Сначала, Вы должны удостовериться что почта через ваш RELAY HOST,
посылается им через RELAY MAILER.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 fred@sesame.com
rewrite: ruleset 3 input: fred @ sesame . com
rewrite: ruleset 7 input: fred @ sesame . com
rewrite: ruleset 9 input: fred @ sesame . com
rewrite: ruleset 9 returns: < fred > @ sesame . com
rewrite: ruleset 7 returns: < @ sesame . com > , fred
rewrite: ruleset 3 returns: < @ sesame . com > , fred
rewrite: ruleset 0 input: < @ sesame . com > , fred
rewrite: ruleset 8 input: < @ sesame . com > , fred
rewrite: ruleset 8 returns: < @ sesame . com > , fred
rewrite: ruleset 29 input: < @ sesame . com > , fred
rewrite: ruleset 29 returns: < @ sesame . com > , fred
rewrite: ruleset 26 input: < @ sesame . com > , fred
rewrite: ruleset 25 input: < @ sesame . com > , fred
rewrite: ruleset 25 returns: < @ sesame . com > , fred
rewrite: ruleset 4 input: < @ sesame . com > , fred
rewrite: ruleset 4 returns: fred @ sesame . com
rewrite: ruleset 26 returns: < @ sesame . com > , fred
rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ sesame
. com > , fred >
Если Вы имеете UUCP соседей кроме вашего RELAY HOST, Вы должны
гарантировать, что почта к ним имеет соответствующее поведение. Почта,
адресованная с синтаксисом стиля UUCP для host, с которым Вы говорите по
UUCP, должна идти непосредственно к ним (если Вы явно не предотвращаете
это входом domaintable). Примите, что swim host - прямой сосед UUCP ваших
соседей. И при подаче swim!Fred sendmail должен произвести следующий
результат:
- 305 -
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 swim!fred
rewrite: ruleset 3 input: swim ! fred
[...lines omitted...]
rewrite: ruleset 0 returns: $# UUCP $@ swim $: < > , fred
>
Если Вы имеете входы uucpxtable, чтобы вынудить получение по UUCP для
некоторых UUCP соседей, которые посылают почту стиля Internet с
определенным именем области, это также должно быть проверено.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 dude@swim.2birds.com
rewrite: ruleset 3 input: dude @ swim . 2birds . com
[...lines omitted...]
rewrite: ruleset 0 returns: $# UUCP $@ swim . 2birds $: < > , dude >
16.6 Администрирование и Глупые Приемы Почты
Теперь, когда мы обсудили теорию конфигурирования, установки, и
тестирования sendmail + IDA, давайте рассмотрим несколько моментов, чтобы
изучить вещи, которые случаются обычно в жизни администратора почты.
Отдаленные системы иногда ломаются. Ошибка модема или сбой
телефонных линий, определения DNS установлены неправильно из-за
человеческой ошибки. Сети падают неожиданно. В таких случаях,
администраторы почты должны знать, как реагировать быстро, действенно, и
безопасно схранить почту, текущую через альтернативные маршруты, пока
отдаленные системы или поставщики услуг не могут восстановить
нормальные услуги.
Остальная часть этой главы предназначена, чтобы обеспечить Вас
решениями для наиболее частыми " критическми состояниями электронной
почты ".
- 306 -
16.6.1 Пересылка Почты В Отдаленную Систему
Чтобы отправлять почту для специфического host или области в
обозначенную отдаленную систему, Вы вообще используете mailertable.
Например, чтобы отправить почту для backwood.org к их закулисной
системе GATEWAY UUCP, вы поместили следующий вход в mailertable:
UUCP-A,backdoor backwood.org
16.6.2 Почта Для Неконфигурированного Отдаленного Абонена
Часто, главные ЭВМ Internet будут иметь проблему при получении почты в
не-конфигурированном отдаленном абоненте. Имеются отдельные варианты
этой проблемы, но общий признак - почта передается отдаленной системой
или никогда добирается туда вообще.
Эти проблемы могут помещать локального администратора системы в
плохую позицию, потому что ваши пользователи вообще не заботятся о том
что Вы лично не управляете каждой системой во всем мире (или не знаете, как
получить отдаленного администратора, чтобы установить проблему). Они
только знают, что их почта не проходила желательному получателю на другом
конце и что вы являетесь вероятным виновным человеком.
Конфигурация отдаленного пункта - их проблема, не ваша. Во всех случаях,
убедитесь, что ваш пункт способен связаться с не-конфигурированным
отдаленным пунктом. Если Вы не можете войти в контакт с Постмастером в
отдаленном пункте, чтобы установить их конфигурацию своевременным
способом, Вы имеет две опции.
+ Вообще возможно вынудить послать почту в отдаленную систему успешно,
хотя, так как отдаленная система не-конфигурирована, ответы на отдаленном
конце могут не работать ..., но то это - проблема отдаленного администратора.
Вы можете устранить плохие заголовки в конверте на ваших исходящих
сообщениях только используя вход domaintable для их области или host, что
приводит к правке недопустимой информации, при выходе почты из вашего
пункта:
braindead.correct.domain.com braindead.wrong.domain.com
- 307 -
Знак ! в mailertable передает почту их отдаленному пункту, как будто она
инициировалось локально на их системе. Обратите внимание, что это
изменяет только адрес конверта, так что соответствующий адрес возврата
будет все еще обнаруживаться в сообщении.
TCP!braindead.correct.domain.com braindead.wrong.domain.com
16.6.3 Почта, которая будет перемещена через UUCP
В идеальном мире (из перспективы Internet), все главные ЭВМ будут иметь
записи в Domain Name Service (DNS) и посылать почту с полностью
квалифицированными именами области.
Если Вы, случается, передаете через UUCP такому пункту, Вы можете
вынуждать почту пройти двухточечное соединение UUCP, а не через ваш
заданный по умолчанию mailer по существу " опуская область " их hostname
через uucpxtable.
Чтобы вынуждать получение через UUCP для sesame.com, Вы поместили
бы следующее в ваш uucpxtable:
# un-domainize sesame.com to force UUCP delivery
sesame sesame.com
Результат - тот sendmail, то определит (через UUCPNODES в файле
sendmail.m4) что Вы непосредственно соединены с отдаленной системой, и
будет ставить в очередь почту для получения через UUCP.
16.6.4 Предотвращение Передачи Почты через UUCP
Противоположное условие также происходит. Часто системы могут иметь
ряд прямых соединений UUCP, которые редко используются или они не так
надежны и всегда доступны как заданный по умолчанию mailer или relay host.