Первая строка раздела локальной информации файла настройки содержит определение класса w.

Класс w хранит полный набор имен узлов, для которых принимает почту эта система. Используйте команду С или F для добавления имен узлов к этому набору, sendmail инициализирует этот класс значением макроопределения w ($w) , которое соответствует имени данного компьютера. Для многих систем этого достаточно. Но иногда сервер sendmail выступает в роли сервера почтовых ящиков: принимает и хранит почту для клиентов, не получающих SMTP-почту напрямую. В классе w должны быть указаны системы, для которых этот узел принимает почту. Для каждого клиента почтового ящика следует добавить имя узла в класс w.

В рассматриваемом примере мы принимаем команду Cw в ее исходном виде и разрешаем sendmail определять значение w самостоятельно. Это наиболее распространенное решение для рабочих станций вроде rodent. В системе crab, известной также под именем wtb-gw, мы добавим значения в класс w следующим образом:

Cwlocalhost wtb-gw wtb-gw.wrotethebook.com

Теперь почта, адресованная пользователям Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., будет принята узлом crab, а не отвергнута как адресованная не тому узлу. Некоторые почтовые серверы требуют настройки для приема почты, адресованной узлам с различными именами. В таком случае может быть удобно загружать класс w из файла, содержащего имена всех узлов, при помощи команды F. В файле generic-linux.cf команда F уже существует, поэтому достаточно будет поместить имена узлов-клиентов в файл /etc/mail/local-host-names.

Макроопределение j не требует изменений, поскольку в данной системе sendmail получает абсолютное доменное имя для j из DNS. Так же обстоят дела в большинстве систем; в других системах sendmail извлекает имя узла без доменного расширения. Если j не содержит полного имени, инициализируйте макроопределение именем узла ($w) и именем домена. В файле примера с этой целью мы раскомментировали бы команду Dj и изменили бы строку домена на wrotethebook.com. Впрочем, делать это нет необходимости, поскольку j хранит верное значение.


Чтобы проверить, верно ли значение j для вашей системы, выполните sendmail с ключом -bt и уровнем отладки 0.4. В результате sendmail выводит несколько строк информации, включая и значение j. В следующем примере sendmail отображает для j значение rodent.wrotethebook.com. Получив результат rodent, мы отредактировали бы sendmail.cf с целью корректировки значения j.

n sendmail -bt -d0.4
Version 8.11.3
Compiled with: LOG MATCH6EC0S MIME8T07 NAMED.BIND NDBM
NETINET NETUNIX NEWDB SCANF USERDB XOEBUG
canonical name: rodent.wrotetHebook.com
UUCP nodename: rodent
a.k.a.: rodent.wrotethebook.com
a.k.a.: [172.16.12.2]
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = rodent
(canonical domain name) $j = rodent.wrotethebook.com
(subdomain name) $m = wrotethebook.com
(node name) $k = rodent
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address> > ^D

Следующая строка раздела локальной информации содержит определение класса Р. В нашем примере файла настройки класс Р хранит имена двух псевдодоменов: «.» и REDIRECT. Псевдодомен «точка» (.) используется для идентификации канонических доменных имен. Псевдодомен REDIRECT используется возможностью redirect, описанной в приложении Е. Класс Р может содержать и другие псевдодомены, позволяющие обращаться к пользователям, не подключенным к сети Интернет, по адресам электронной почты в интернет-стиле. Например, можно добавить UUCP в класс Р, что позволит адресовать почту посредством старого UUCP-синтаксиса с восклицательным знаком, например ora.'loslcraig, либо в формате псевдо-интернет-адреса: era Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.. Эти домены маршрутизации почты упрощают адрес, вводимый пользователем, и передают почту нужному узлу пересылки. Однако потребность в дополнительных псевдодоменах возникает редко, поскольку сегодня большинство почтовых программ поддерживают стандартные адреса в интернет-стиле. Определение класса Р в файле generic-linux.cf не требует изменений.


Файл настройки содержит макроопределения ряда узлов пересылки почты. Ни одному из определений не присвоено значение в нашем файле примера. Узел пересылки требуется только в том случае, если ваша система неспособна доставить почту из-за отсутствия подключения или нужной функциональности. Функциональность в Unix-системах присутствует, однако сетевые взаимодействия могут ограничиваться брандмауэрами. Некоторые сетевые площадки используют узел пересылки, чтобы минимизировать число систем, требующих полноценной настройки в файле sendmail.cf. Прочие узлы площадки просто передают свою почту «умному» узлу для доставки. Если такова архитектура вашей площадки, укажите имя узла пересылки. Например, так:

DSrelay.wrotethebook.com

Для узла rodent мы оставляем все настройки узлов пересылки без изменений. Данная рабочая станция самостоятельно будет работать со своей почтой. Собственно, ради этого мы и работаем с Unix!

Раздел локальной информации в нашем файле содержит также пять определений файлов ключей. Две из этих К-команд определяют псевдобазы данных - внутренние подпрограммы sendmail используют их в правилах подстановки, как если бы это были реально существующие базы данных. База данных arith - это внутренняя подпрограмма, выполняющая определенные арифметические функции. База данных dequote - внутренняя подпрограмма sendmail, удаляющая кавычки из адресов электронной почты. Три других команды К определяют реальные базы данных: mailertable, virtuser, access. Базы данных реальные, однако файлы баз данных существуют только в случае, если администратор создаст их. База mailertable используется для отправки почты, адресованной в определенный домен, посредством определенной почтовой программы конкретному удаленному узлу. База virtuser реализует маршрутизацию почты для виртуальных почтовых доменов, существующих только в пределах сервера sendmail. База данных access реализует управление доступом для пересылки почты и контроля за спамом.

Номер версии не требует изменений, однако неплохо бы отслеживать изменения, внесенные в файл sendmail.cf, и номер версии позволяет это делать. Каждый раз, внося изменения в настройки, изменяйте номер версии. В то же время создавайте сопутствующий версии комментарий, описывающий внесенные изменения.


Обычно правка номера версии производится после всех прочих изменений, так что комментарий отражает все внесенные изменения. Например, исходный раздел номера версии в файле generic-linux.cf выглядит так:

###################### 
# Version Numbe r # 
###################### 
DZ8.11.3

После всех внесенных нами изменений он примет вид:

###################### 
# Version Numbe r # 
######################
#    R1.0 - изменения для rodent, автор Craig
#    - уточнение комментариев в разделе локальной информации
#    R1.1 - изменилось макроопределение М: в исходящей почте используется
#    wrotethebook.com вместо имени узла
#    R2.0 - добавлено правило в SEnvFromSMTP и S HdrFromSMTP с целью переписывания
в исходящей почте идентификатора пользователя в формат имя.фамилия
DZ8.11.3R2.0

Наконец, необходимо разобраться с назначением ряда других классов и макроопределений из этого раздела. Макроопределение М используется для изменения адреса узла отправителя. Определите значение М, чтобы скрыть имя локального узла в исходящих сообщениях. Классы Е и М связаны с макроопределением М. Класс Е указывает имена пользователей, для которых не производится замена имени узла даже в присутствии макроопределения М. Например, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. не переписывается в виде Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., даже если М определено как DMwrotethebook. сот . Класс М определяет прочие имена узлов, помимо локального, для которых следует выполнять подстановку значения макроопределения М. Это используется на почтовых серверах при необходимости переписывать адреса отправителей для клиентов. Например:

# who I masquerade as (null for no masquerading) (see also $=M)
DMwrotethebook.com
# class M: domains that should be converted to $M CM24seven.wrotethebook.com
brazil.wrotethebook. com ora.wrotethebook.com

С учетом приведенных выше определений макроопределения М и класса М, данный узел будет изменять адреса вида Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. и Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. на адреса вида Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.. rodent сервером не является, и потому мы не используем класс М. Однако макроопределение М мы еще задействуем в настройках. Мы потратили массу времени на изучение раздела локальной информации потому, что практически все действия по настройке системы могут выполняться в этом разделе. Мы быстро обсудим прочие разделы, прежде чем перейти к действительно серьезной задаче работы с правилами подстановки.