алифицированных имен области. На Internet -UUCP реле, такие hostname должны быть отображены в uucp область по умолчанию. Другие изменения адреса - 283 - сомнительны. Файл /usr/lib/smail/qualify сообщает smail, которая область определяет путь на который hostname. Входы в файле qualify состоят из hostname в перевом столбце, сопровождаемым именем области. Строки, содержащие знак мусора как первый символ рассматриваются комментариями. Входы ищутся в порядке, в котором они появляются. Если никакого файла qualify не существует, никакая hostname квалификация не выполняется вообще. Специальный hostname * соответствует любому hostname, таким образом допуская Вам отобразить все главные ЭВМ, не упомянутые прежде в заданную по умолчанию область. Это должно использоваться только как последний вход. В Виртуальном Пивоваренном заводе, все главные ЭВМ были установлены так, чтобы использовать полностью квалифицированные имена области в адресах отправителя. Неквалифицированные адреса получателя, как рассматривается, находятся в uucp области, так что необходим только одиночный вход в файле qualify. # /usr/lib/smail/qualify, last changed Feb 12, 1994 by janet # * uucp 16. Sendmail + IDA 16.1 Введение в Sendmail + IDA Уже упоминалось, что Вы не реальный администратор системы Unix, пока вы не редактировали sendmail.cf файл. Также скажут что вы сумасшедший, если вы попытаетесь сделать это дважды :-) Sendmail - невероятно мощная программа. Также невероятно трудно узнавать и понимать ее для большинства людей. Любая программа, чье окончательное руководство (Sendmail, изданный O'Reilly and Associatеs) состоит из 792 страниц, отпугивает большинство людей. Sendmail + IDA - это другое. Это удаляет потребность редактировать всегда загадочный sendmail.cf файл и позволяет администратору определять пункт-специфическую маршрутизацию и конфигурацию адресации через относительно простые для понимания файлы - 284 - поддержки, называемые таблицами. sendmail + IDA может сохранять Вам много часов работы и спокойствия. Сравниваясь с другими главными средствами транспорта почты, не имеется ничего, что не может быть выполнено быстрее и проще с sendmail + IDA. Типичные вещи, которые необходимы, чтобы реализовать UUCP или Internet узел, станут простыми для выполнения. Конфигурации, которые обычно являются чрезвычайно трудными, просто создавать и поддержать. В этой запииси, текущая версия sendmail5.67b + IDA1.5 доступен через анонимный FTP из vixen.cso.uiuc.edu. Она компилируется без любого внесения исправлений, требуемого под Linux. Все файлы конфигурации, требуемые, чтобы получить исходники sendmail + IDA, чтобы компилировать, устанавливать, и выполнять под управлением Linux включены в newspak-2.2.tar.gz, который является доступным через анонимный FTP на sunsite.unc.edu в каталоге /pub/Linux/system/Mail. 16.2 Файлы Конфигурации --- Краткий обзор Традиционный sendmail установлен через файл конфигурации системы (обычно /etc/sendmail.cf или /usr/lib/sendmail.cf), который - не относится к любому языку, который вы видели прежде. Редактирование sendmail.cf файла, чтобы обеспечить настроенное поведение может быть хорошим опытом. Sendmail + IDA делает такую работу по существу делом прошлого при наличии всех опций конфигурации, с формированием изображений при помощи таблицы с довольно простым, чтобы понять синтаксис. Эти опции конфигурируются, выполнением m4 (процессора макркоманд) или dbm (процессора базы данных) в ряде файлов данных через Make-файлы, обеспеченные исходниками. Sendmail.cf файл определяет только заданное по умолчанию поведение системы. Виртуально вся специальная настройка выполнена через ряд необязательных таблиц а не непосредственно редактируя sendmail.cf файл. - 285 - 16.3 Sendmail.cf Файл Sendmail.cf файл для sendmail + IDA не редактируется непосредственно, а генерируется из m4 файла конфигурации, обеспеченного локальным администратором системы. В следующем, мы обратимся к нему как к sendmail.m4. Этот файл содержит несколько определений и иначе просто указывает на таблицы, где выполняется реальная работа. Вообще, необходимо определить только: + Имена путей и имена файлов, используемые в локальной системе. + Имена пункта электронной почты. + Который заданный по умолчанию mailer (и возможно smart host) желателен. Имеется большое разнообразие параметров, которые могут быть определены, чтобы установить поведение локального пункта сети. Эти опции конфигурации идентифицированы в файле ida/cf/OPTIONS в исходном каталоге. Файл sendmail.m4 для минимальной конфигурации (UUCP или SMTP со всей не-локальной почтой, передаваемой непосредственно соединенному smart-host) может быть в 10 или 15 строк, исключая комментарии. Mailertable определяет специальное поведение для отдаленных главных ЭВМ или областей. Uucpxtable включает получение почты UUCP на главные ЭВМ, которые находятся в формате DNS. Pathtable определяет UUCP пути на отдаленные главные ЭВМ или области. Uucprelays замыкает pathalias путь на общеизвестные отдаленные главные ЭВМ. Genericfrom преобразовывает внутренние адреса в обобщенные, видимые внешнему миру. Xaliases преобразовывает обобщенные адреса на\из допустимых внутренних. Decnetxtable преобразовывает RFC-822 адреса в адреса DECnet-стиля. - 286 - 16.3.1 Пример Файла Sendmail.m4 Файл sendmail.m4 для vstout на Виртуальном Пивоваренном заводе показывается ниже. Vstout использует SMTP, чтобы разговаривать со всеми главными ЭВМ на LAN Пивоваренного завода, и посылает всю почту для других адресатов к moria, host реле Internet, через UUCP. 16.3.2 Обычно Используемые sendmail.m4 Параметры Нескоторые предметы в файле sendmail.m4 требуются всегда; другие могут игнорироваться, если Вы можете избежать неприятностей со значениями по умолчанию. Следующие разделы описывают каждые из предметов в файле sendmail.m4 более подробно. dnl #------------------ SAMPLE SENDMAIL.M4 FILE ------------------ dnl # (the string 'dnl' is the m4 equivalent of commenting out a line) dnl # you generally don't want to override LIBDIR from the compiled in paths dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go define(LOCAL MAILER DEF, mailers.linux)dnl # mailer for local delivery define(POSTMASTERBOUNCE)dnl # postmaster gets bounces define(PSEUDODOMAINS, BITNET UUCP)dnl # don't try DNS on these dnl #------------------------------------------------------------- dnl # 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 define(UUCPNAME, vstout)dnl # our uucp name dnl # dnl #------------------------------------------------------------- dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors define(BANGIMPLIESUUCP)dnl # make certain that uucp define(BANGONLYUUCP)dnl # mail is treated correctly define(RELAY HOST, moria)dnl # our smart relay host define(RELAY MAILER, UUCP-A)dnl # we reach moria via uucp - 287 - dnl # dnl #--------------------------------------------------------------------dnl # dnl # the various dbm lookup tables dnl # 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 dnl # dnl #--------------------------------------------------------------------dnl # dnl # include the 'real' code that makes it all work dnl # (provided with the source code) dnl # include(Sendmail.mc)dnl # REQUIRED ENTRY !!! dnl # dnl #------------ END OF SAMPLE SENDMAIL.M4 FILE ------- 16.3.2.1 Предметы, которые Определяют Пути dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go LIBDIR определяет каталог, где sendmail + IDA ожидает находить файлы конфигурации, различные dbm таблицы, и специальные локальные определения. В типичном двоичном распределении, это компилируется в sendmail binary и не должно быть явно установлено в файле send-mail.m4. Вышеупомянутый пример содержит dnl, который означает что эта строка - по существу только для уточнения инфрмации комментария. Чтобы изменить расположение файлов поддержки на другое, удалите dnl из вышеупомянутой строки, установите путь к желательному расположению, и восстановите, и повторно установите sendmail.cf файл. - 288 - 16.3.2.2 Определение Локального Mailer'а define(LOCAL MAILER DEF, mailers.linux)dnl # mailer for local delivery Большинство операционных систем обеспечивает программу для обработки локального получения почты. Программы такого рода для многих из главных вариантов Unix уже встроены в sendmail binary. В Linux, необходимо явно определить соответствующий локальный mailer, так как такая локальная программа не обязательно предоставлена в распределении, которое вы установили. Это определяется LOCAL MAILER DEF в файле sendmail.m4. Например, можно установить LOCAL MAILER DEF как mailers.linux. Следующий файл должен то быть установлен как mailers.linux в каталоге, указанном LIBDIR. Это явно определяет программу в Mlocal mailer с соответствующими параметрами, чтобы sendmail правильно принимал почту, направленную для локальной системы. Если Вы не эксперт sendmail, Вы возможно не захотите изменять следующий пример. # -- /usr/local/lib/mail/mailers.linux -- # (local mailers for use on Linux ) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u Имеется также встроенное значение по умолчанию для deliver в Sendmail.mc файле, который включается в файл sendmail.cf. Чтобы определить его, Вы не должны использовать mailers.linux файл и взамен определить следующее в вашем файле sendmail.m4: dnl --- (in sendmail.m4) --- define(LOCAL MAILER DEF, DELIVER)dnl # mailer for local delivery К сожалению, Sendmail.mc принимает, что deliver установлен в /bin, что не так в Slackware1.1.1 (который устанавливает это в /usr/bin). В том случае вы нуждаетесь в фальшивке со связью или переустановить deliver из исходников в /bin. - 289 - 16.3.2.3 Обработка Bounced-почты define(POSTMASTERBOUNCE)dnl # postmaster gets bounces Многие абоненты находят, что важно гарантировать, что бы почта посылалась и получалась с гарантией 100 %. При исследовании sys-logd файлов регистрации полезен локальный администратор почты чтобы определить, была ли почта испорчена из-за ошибки пользователя или ошибки конфигурации на одной из включаемых систем. Определение POSTMASTERBOUNCE приводит к копии каждого плохого сообщения человеку, определенному как Постмастер системы. К сожалению, установка этого параметра также приводит к рассекречиванию текста сообщения, посылаемого Постмастеру. 16.3.2.4 Возможности Имени Области define(PSEUDODOMAINS, BITNET UUCP)dnl # don't try DNS on these Имеются отдельные известные сети, которые обычно указаны в адресах почты по историческим причинам, но это не допустимо для целей DNS. Определение PSEUDODOMAINS предотвращает бесполезные DNS попытки поиска, которые будут всегда терпеть неудачу. 16.3.2.5 Определение Локальной Системы 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, вы поместили