Sendmail Installation and Operation Guide


K - Определение Файла Ключей


Специальные преобразования могут быть определены использованием строки: Kmapname mapclass arguments

Где mapname - имя, под которым это преобразование используется в правилах перезаписи; mapclass - имя типа преобразования (эти имена вкомпилированы в sendmail); arguments интерпретируются в зависимости от класса; обычно, используется один аргумент, указывающий на файл, содержащий преобразование.

На преобразования ссылаются, используя синтаксис: $( ключ преобразования $@ аргументы $: умолчание $)

где и аргументы и умолчание могут быть опущены. $@ аргументы могут встречаться много раз. Указанный ключ и аргументы передаются в соответствующую преобразующую функцию. Если она возвращает значение, то оно замещает ввод. Если она не возвращает значение и имеется определенное умолчание, the умолчание заменяет ввод. Иначе ввод не изменяется.

Аргументы передаются в преобразование для произвольного использования. Большинство классов преобразований могут интерполировать эти аргументы в их значения используя для указания соответствующего аргумента синтаксис "%n" (где n - цифра).

Аргумент "%0" обозначает ключ базы данных. Например, правило R$- ! $+ $: $(uucp $1 $@ $2 $: %1 @ %0 . UUCP $)

Просматривает имя UUCP в (определенном пользователем) преобразовании UUCP; если не найдено, превращает его в форму ".UUCP". База данных должна содержать записи типа: decvax %1@%0.DEC.COM research %1@%0.ATT.COM

Отметьте, что операторы умолчания никогда не делают этого преобразования.

Встроенное преобразование с именем и классом "host" - это просмотр канонизации имени хоста. Таким образом, синтаксис: $(host hostname$)

эквивалентен: $[hostname$]

Существует множество определенных классов.

dbm Просмотр базы данных, используя библиотеку ndbm(3). Sendmail должен быть скомпилирован с определенной NDBM.
btree Просмотр базы данных с использованием интерфейса btree к библиотеке Berkeley db(3). Sendmail должен быть скомпилирован с определенной NEWDB.
hash Просмотр базы данных с использованием хэш-интерфейса к библиотеке Berkeley db(3). Sendmail должен быть скомпилирован с определенной NEWDB.
nis Просмотры NIS. Sendmail должен быть скомпилирован с определенной опцией NIS.
nisplus Просмотры NIS+. Sendmail должен быть скомпилирован с определенной опцией NISPLUS. Аргумент - имя таблицы, используемой для просмотров, а флаги -k и -v могут быть использованы для установки столбцов ключа и значения соответственно.
hesiod Просмотры Hesiod. Sendmail должен быть скомпилирован с определенной опцией HESIOD.
ldapx Просмотры каталогов LDAP X500. Sendmail должен быть скомпилирован с определенной опцией LDAPMAP. Преобразование поддерживает большинство стандартных аргументов и большинство аргументов командной строки программы ldapsearch.
netinfo Просмотры NeXT NetInfo. Sendmail должен быть скомпилирован с определенной опцией NETINFO.
text Просмотры текстовых файлов. Формат текстового файла определяется флагами -k (число ключевых полей), -v (число поля значений), и -z (разделитель полей).
stab Просмотры внутренней таблицы символов. Используется внутри для псевдонимизирования.
implicit По-настоящему должно бы называться "alias" - используется для просмотра файлов псевдонимов по умолчанию, и используется по умолчанию, если не определен класс для файлов псевдонимов.
user Просматривает пользователей, используя getpwnam(3). Для указания имени возвращаемого поля может быть использован флаг -v (хотя обычно используется только для проверки существования пользователя).
host Канонифицирует доменные имена хостов. Получив имя хоста, вызывает сервер имен для поиска канонического имени для этого хоста.
bestmx Возвращает лучшую запись MX для заданного в качестве ключа имени хоста. Всегда предпочитается текущая машина- то есть, текущая машина является одним из хостов, перечисленных в качестве записи MX с самым низким значением предпочтения, следовательно, имеется гарантия его возврата. Это может использоваться для определения, является ли эта машина целью записи MX, и почта может быть принята на этом основании. Если задан флаг -z, то возвращаются все имена MX, разделенные заданным разделителем.
sequence Аргументы в строке "K" - список преобразований; результирующее преобразование просматривает аргументы-преобразования, пока не найдет совпадение для указанного ключа. Например, если определение ключа: Kmap1 ... Kmap2 ... Kseqmap sequence map1 map2тогда просмотр "seqmap" сначала производится в map1. Если найдено, то происходит немедленный возврат. Иначе, тот же ключ используется для map2.
switch Прямо как преобразование "sequence", за исключением того, что порядок преобразований определяется сервисным переключателем. Аргумент - имя сервиса для просмотра; значения из сервисного переключателя добавляются к имени преобразования для создания новых имен преобразований. Например, рассмотрим определение ключа: Kali switch aliasesвместе с вхождением сервисного переключателя: aliases nis files

Это вызовет запрос по преобразованию "ali" для поиска преобразований с именами "ali.nis" и "ali.files" в этом порядке.

dequote Обрезает у имени двойные кавычки ("). Не обрезает обратные слеши, и не будет обрезать кавычки, если результирующая строка будет содержать не возможный для просмотра синтаксис (то есть, основные ошибки типа незакрытых угловых скобок; более сложные ошибки типа неизвестных хостов не проверяются). Предназначается для приема почты из систем типа DECnet, квотирующих странный синтаксис типа "49ers::ubell"Обычное использование - что-то типа: Kdequote dequote ... R$- $: $(dequote $1 $) R$- $+ $: $>3 $1 $2Для предотвращения неожиданных результатов необходима осторожность; например, "|someprogram < input > output"потеряет свои кавычки, но результат, скорее всего, будет отличаться от ожидаемого. К счастью, такие случаи достаточно редки.
Regex Определение преобразования в строке K содержит регулярное выражение. Любой ключевой ввод сравнивается с этим выражением, используя программы регулярных выражений стандарта POSIX regcomp(), regerr(), и regexec(). Если вам нужно узнать больше информации о сравнении регулярных выражений, смотрите документацию на эти программы. Если не определен флаг -m не производится никакой перезаписи ключа. Без него, если ключ отвергнут или использован -s, то он замещается подходящими подстроками,разделенными $| или строкой, определенной флагом -d. Флаги, имеющиеся в преобразовании:

  • n не
  • f чувствительность к регистру
  • b основные регулярные выражения (по умолчанию развернуто)
  • s совпадение подстроки
  • d устанавливает разделитель, используемый для -s
  • a добавить строку к ключу
  • m только проверка совпадения, не принимать/отказывать значение

Флаг -sflag выбыирает подстроки в результате просмотра. Например, -s1,3,4

program Аргументы в строке K являются путями к программам и любые начальные параметры будут пропущены. При вызове преобразования, к начальным параметрам добавляется ключ, а программа запускается с от пользователя и группы по умолчанию. Первая строка стандартного вывода возвращается как значение просмотра. Это все имеет множество потенциальных проблем безопасности, и жутко тормозит, поэтому использоваться должно только тогда, когда действительно необходимо.
<


Начало  Назад  Вперед



Книжный магазин