|
|
www.lissyara.su
—> документация
—> EXIM
—> 4.62
—> часть 21
21. РОУТЕР QUERYPROGRAM.
Роутер “queryprogram ” маршрутизирует адрес путем вызова внешней команды и после действует в соответствии с ее выводом. Это достаточно тяжеловесный способ маршрутизации и предназначен он главным образом для несильно нагруженных систем или для экспериментов. Однако, если есть возможность использовать опции предусловий ( “domains ”, “local_parts ”, и т.д. ), чтобы пропускать этот роутер для большинства адресов, то он может использоваться в специальных целях даже на загруженном узле. Ниже перечислены следующие частные опции роутера:
command
|
Use: queryprogram
|
Type: string†
|
Default: unset
|
|
Данная опция должна быть обязательно установлена. Она определяет команду, которая должна запускаться. Команда разделяется на имя команды и ее аргументы, и затем каждый из них преобразуется отдельно (точно так же как и для транспорта “pipe ”, описанного в главе 29).
command_group
|
Use: queryprogram
|
Type: string
|
Default: unset
|
|
Эта опция определяет групповой идентификатор (gid) для запуска команды. Она должна быть установлена в том случае, если опции “command_user ” присвоено числовое значение идентификатора пользователя (uid). Если данная опция начинается с цифры, то она интерпретируется как числовое значение группового идентификатора (gid). В противном случае, поиск ее значения выполняется путем вызова функции “getgrnam() ”.
command_user
|
Use: queryprogram
|
Type: string
|
Default: unset
|
|
Данная опция должна быть обязательно установлена. Она определяет идентификатор пользователя (uid), от имени которого должна быть выполнена команда. Если опция начинается с цифры, то она интерпретируется как числовое значение идетификатора пользователя. В противном случае, поиск ее значения выполняется при помощи функции “getpwnam() ”, а если не определена опция “command_group ”, то также происходит и поиск значения группового идентификатора gid.
Внимание: Изменение uid и gid возможно лишь когда exim запущен от пользователя root, что происходит, в нормальной конфигурации, во время доставки. Однако, во время проверки адреса, в процессе приёма сообщения, exim, обычно работает не от пользователя root. Если маршрутизатор “queryprogram ” вызывается не от root, то exim не может изменить uid или gid до выполнения команды. В таких обстоятельствах, команда выполняется с текущими gid и uid.
current_directory
|
Use: queryprogram
|
Type: string
|
Default: /
|
|
Эта опция определяет абсолютный путь, куда происходит переход перед запуском команды.
timeout
|
Use: queryprogram
|
Type: time
|
Default: 1h
|
|
Если команда не завершается в течение периода таймаута, то ее группа процессов уничтожается и сообщение замораживается. Нулевое значение времени указывает на отсутствие таймаута.
Стандартный вывод команды направляется в конвейер (pipe), чтение из которого производится когда команда завершается. Он должен состоять из одной строки вывода, содержащей до 5 полей, разделенных пробелами. Максимальная длинна строки 1923 символа. Более длинные линии укорачиваются. Первое поле является одним из нижеперечисленных слов (независимо от регистра):
“Accept ”: маршрутизация выполнена успешно; остальные поля определяют какие действия выполнять (см. ниже).
“Decline ”: роутер отклоняется; передать адрес на следующий роутер, если только не установлена опция “no_more ”
“Fail ”: маршрутизация завершилась неудачно; больше не передавать этот адрес роутерам. Весь следующий за этим текст является сообщением об ошибке. Если запуск роутера выполняется как часть проверки адреса во время входящего SMTP сообщения, то сообщение включается в SMTP-ответ.
“Defer ”: в данный момент маршрутизация не может быть завершена; попробуйте позже еще раз. Весь следующий за этим текст в строке является сообщением об ошибке, которое записывается в журнал. Сообщение не вклчается в SMTP-ответ.
“Freeze ”: то же что и “defer", за исключением того, что сообщение замораживается.
“Pass ”: передать адрес на следующий роутер (или на роутер, определенный опцией “pass_router ”), перекрывая опцию “no_more ”.
“Redirect ”: сообщение перенаправляется. Оставшаяся часть строки представляет собой список новых адресов, маршрутизируемых независимо друг от друга, начиная с первого роутера, либо с роутера, определенного опцией “redirect_router ”.
Если первым словом является “accept ”, то остаток строки состоит из некоторого количества ключевых слов и их значений, например так (строка разделена на две, для того, чтобы уместить по ширине страницы):
ACCEPT TRANSPORT=<transport> HOSTS=<list of hosts>
LOOKUP=byname|bydns DATA=<text>
| Данные могут быть указаны в произвольном порядке, к тому же все они являются необязательными. Если не определен транспорт, то используется транспорт, описанный общей опцией “transport ”. Список узлов и тип поиска необходимы только в том случае, если транспортом является транспорт smtp, который не может самостоятельно определить список узлов.
Формат списка узлов такой же как и для роутера manualroute. Он может содержать как IP-адреса и имена узлов, так и имена с последующим суффиксом “/MX ” для определения подсписков узлов, полученных путем поиска MX-записей.
Если тип поиска не определен, то Exim ведет себя следующим образом во время попыток нахождения IP-адреса для каждого узла: Сначала выполняется DNS-запрос. Если в результате возвращается что-либо, отличное от HOST_NOT_FOUND, то используется этот результат. В противном случае, Exim вызывает функцию “getipnodebyname() ” или “gethostbyname() ”, и результатом поиска в этом случае является результат этого вызова.
Если установлено поле DATA, то его значение помещается в переменную “$address_data ”. Например, данная возвращенная строка
accept hosts=x1.y.example:x2.y.example data="rule1"
| маршрутизирует адрес на транспорт по умолчанию, список узлов состоит из двух узлов. Если транспорт запускается, то строка “rule1 ” помещается в переменную “$address_data ”.
=============
translated by http://exim.org.ua/mailman/listinfo/exim-doc-translation
edit, verification and actuality by lissyara
Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
|
Статистика сайта
|
Сейчас на сайте находится: 16 чел.
|
За последние 30 мин было: 77 человек
|
За сегодня было 8606 показов, 1019 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
|