Иллюстрированный самоучитель по электронной почте

Настройка программы sendmail

Теперь разберем более подробно некоторые команды и секции файла настроек sendmail. Лучше всего это сделать на основе реального файла. Начнем с секции описания локальных параметров:

##################
# local info
##################
Cwlocalhost
CP.
# UUCP relay host
DYucbvax.Berkeley.EDU
CPUUCP
# BITNET relay host
# DBmailhost.Berkeley.EDU
DBrelay.kiae.su
CPBITNET
#"Smart" relay host (may be null)
DSrelay.kiae.su
# who I send unqualified names to (null means
deliver locally)
DR
# who gets all local email traffic ($R has
precedence for unqualified names)
DH
# who I masquerade as (null for no masquerading)
DM
# class L: names that should be delivered locally,
even if we have a relay
# class E: names that should be exposed as from
this host, even if we masquerade
#CLroot
CEroot
ft operators that cannot be in local usernames
(i.e., network indicators)
CO @ %!
# a class with just dot (for identifying canonical
names)
C..
# dequoting map Kdequote dequote

Как видно из этого листинга, в данной секции описаны имя данной машины (Cwlocalhost), а также класс машин-шлюзов в другие почтовые системы (СР….). При этом наращивание класса происходит по мере описания шлюза для каждого из видов почтовых служб. В конце секции описаны символы, которые не могут использоваться в качестве имен пользователей или доменов.

Следующая секция – определение макросов send – mail:

##############
# Special macros #
##############
# SMTP initial login message De$j Sendmail $v/$Z ready at $b
# UNIX initial From header format DIFrom $g $d
# my name for error messages DnMAILER-DAEMON
# delimiter (operator) characters
Do.:%§!^/[]
# format of a total name
Dq$?x$x <$g>$|$g$.
# Configuration version number
DZ8.6.6

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

q$?x$x <$g>$|$g$.

Здесь описана условная подстановка значения. Все предложение можно описать следующей фразой: "Если значение переменной х установлено, то: q = значение_х <значение_g>, иначе: q=значение_g".

То же самое можно записать и по-другому:

if (x != NULL) {
    strcpy(q, x);
    strcat(q, "<");
    strcat(q, g);
    strcat(q, ">");
}
else {
    strcpy(q, g);
}

То есть, $? соответствует оператору if, $| – else, а $. – конец условного оператора.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.