Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
FreeBSD
man
EXIM
  4.62
  4.70
  часть 1
  часть 2
  часть 3
  часть 4
  часть 5
  часть 6
  часть 7
  часть 8
  часть 9
  часть 10
  часть 11
  часть 12
  часть 13
  часть 14
  часть 15
  часть 16
  часть 17
  часть 18
  часть 19
  часть 20
  часть 21
  часть 22
  часть 23
  часть 24
  часть 25
  часть 26
  часть 27
  часть 28
  часть 29
  часть 30
  часть 31
  часть 32
  часть 33
  часть 34
  часть 35
  часть 36
  часть 37
  часть 38
  часть 39
  часть 40
  часть 41
  часть 42
  часть 43
  часть 44
  часть 45
  часть 46
  часть 47
  часть 48
  часть 49
  часть 50
  часть 51
  часть 52
  часть 53
  часть 54
  часть 55
  filter facility


www.lissyara.su —> документация —> EXIM —> 4.70 —> часть 6

6. Конфигурационный файл exim во время выполнения


    Во время выполнения, exim использует один конфигурационный файл (run time configuration file), читаемый каждый раз при выполнении двоичного файла exim`a. Обратите внимание, что в нормальных условиях, это происходит часто, поскольку exim спроектирован для работы распределённым способом, без центрального контроля.
   Если при чтении конфигурационного файла обнаруживается синтаксическая ошибка, exim записывает сообщение на стандартный поток ошибок, и выходит с ненулевым кодом возврата. Также записывается сообщение в лог паники. Примечание: В это время могут быть детектированы лишь простые синтаксические ошибки. Значения любых раскрываемых опций не проверяются, пока не произойдёт раскрытие, даже когда раскрытие не изменяет строку.
   Имя файла рабочей конфигурации (
run time configuration file) вкомпилено в бинарник по соображениям безопасности, и указывается компиляционной опцией CONFIGURE_FILE. В большинстве конфигураций, она задаёт единственный файл. Однако, разрешается задать список имён файлов, разделённых двоеточиями, в этом случае exim использует первый существующий файл из списка.
   Файл рабочей конфигурации должен принадлежать пользователю root, или пользователю, заданному во время компиляции опцией
CONFIGURE_OWNER (если установлено). Конфигурационный файл не должен быть читаемым для всех или для группы, исключая группу указанную при компиляции в опции EXIM_GROUP или в опции CONFIGURE_GROUP.
   Предупреждение: В обычной конфигурации, где бинарный файл exim`a - setuid root`a, любой кто имеет право редактировать файл рабочей конфигурации, обладает простым способом запускать команды от root`a. Если вы делаете ваших почтовых администраторов членами группы exim, но не доверяете им права root, убедитесь, что рабочая конфигурация не доступна на запись группе.
   Дефолтовый конфигурационный файл, который будет корректно работать в простых ситуациях, предоставлен в файле
src/configure.default. Eсли опция CONFIGURE_FILE задаёт лишь одно имя файла, инсталляционный процесс копирует дефолтовый конфигурационный файл в новый файл, если он не существовал (т.е. существующий файл не будет перезаписан - прим. lissyara). Если CONFIGURE_FILE - список, он не инсталлируется автоматически. Раздел 7 - обсуждение сквозного контроля заданной по дефолту конфигурации.

6.1 Использование иного конфигурационного файла

   Одноразовая альтернативная конфигурация может быть задана использованием опции -C командной строки, которая может задать единственный файл, или список файлов. Однако, когда используется опция -C, exim отменяет свои root`овые привилегии, за исключением запуска его root`ом или пользователем exim`a (или, если параметр для -C идентичен со встроенным значением из CONFIGURE_FILE). Опция -C, главным образом, полезна для проверки синтаксиса конфигурационного файла до его инсталляции. Проверки владельца и группы, для конфигурационного файла заданного опцией -C, не проводятся.
   Привелегированное использование опции
-C пользователем exim`a может быть заблокировано установкой ALT_CONFIG_ROOT_ONLY в Local/Makefile, при сборке exim`a. Однако, если вы это сделаете, вы также заблокируете возможность тестирования конфигурационного файла с использованием опции -C, на приём сообщений и доставку, даже если exim будет вызван от пользователя root. Приём работает, но к тому времени exim работает от своего пользователя, таким образом когда он перезапускает себя для возвращения root`овых привилегий, для доставки, использование опции -C заставляет его потерять права доступа. Однако root может тестировать приём и доставку, используя две разные команды (одна для помещения сообщения в очередь - -odq, и другая для доставки - -M).
   Если
ALT_CONFIG_PREFIX задан в Local/Makefile, он определяет строку префикса, с которой должен начинаться любой файл в опции командной строки -C. Кроме того, имя файла не должно содержать последовательность /../. Нет дефолтовой настройки для ALT_CONFIG_PREFIX; когда он не задан, любое имя файла может использоваться с опцией -C.
   Одноразовые изменения конфигурации могут быть заданы опцией командной строки
-D, определяющей и отменяющей значения для макросов используемых в конфигурационном файле. Однако, как и -C, использование этой опции непривилегированными пользователями вынуждает exim отменить свои root`овые права. Если в Local/Makefile задана опция DISABLE_D_OPTION, использование опции -D полностью отключено, и попытка её использования вызывает немедленный выход с ошибкой.
   Некоторые серверы могут использовать один и тот же бинарник exim`a на различных машинах с совместно используемой файловой системой, но используя разные конфигурационные файлы на каждой машине. Если в
Local/Makefile задана опция CONFIGURE_FILE_USE_NODE, exim вначале ищет конфигурационный файл с именем конфигурационного файла, сопровождаемого точкой и именем узла машины, полученным из функции uname(). Если файл не существует, используется стандартное имя. Эта обработка происходит для каждого имени файла из списка заданного CONFIGURE_FILE или -C.
   В некоторых тайных(?) ситуациях различные версии exim`a могут быть запущены под разными эффективными uid и определена опция
CONFIGURE_FILE_USE_EUID чтобы помочь с этому. Смотрите комментарии в src/EDITME для деталей.

6.2 Формат конфигурационного файла

   Файл конфигурации exim`a разделён на множество частей. Общие параметры настройки должны всегда быть в начале файла. Другие части являются опциональными и могут фигурировать в любом порядке. Каждая часть, кроме первой, вводится словом начинающимся с begin, сопровождаемым именем части. Опциональные части:

  • ACL: Списки контроля доступа для контроля входящей SMTP почты (смотрите часть 40).
  • authenticators: Конфигурационные настройки для драйверов аутентификации. Они связаны с командой SMTP AUTH (смотрите раздел 33).
  • routers: Конфигурационные настройки для драйверов роутеров. Маршрутизаторы обрабатывают адреса и определяют как сообщение необходимо доставлять (смотрите части 15-22).
  • transports: Конфигурационные настройки для драйверов транспортов. Транспорты задают механизмы для копирования сообщения в места назначения смотрите части 24-30).
  • retry: Правила повторов, для использования когда сообщение не может быть доставлено немедленно. Если секция повторов отсутствует, или если она пустая (т.е. - правил повторов не задано), exim не повторяет доставки. В этой ситуации, временные ошибки обрабатываются как постоянные. Правила повторов рассматриваются в секции 32.
  • rewrite: Правила глобальной перезаписи адресов, для использования когда сообщение приходит и когда новые адреса сгенерированы во время доставки. Перезапись рассмотрена в главе 31.
  • local_scan: Частная опция для функции local_scan(). Если вы хотите использовать эту возможность, вы должны задать
    LOCAL_SCAN_HAS_OPTIONS=yes
    

    в Local/Makefile до сборки exim. Детали о local_scan() даны в разделе 42.
       Начальные и замыкающие пробелы в строках конфигурации всегда игнорируются.
       Пустые строки в файле, и строки начинающиеся с символа
    # (игнорируя начальное пустое пространство) обрабатываются как комментарии и игнорируются. Примечание: Символ # кроме как в начале строки не обрабатывается специальным образом, и не является комментарием.
       Любая строка не являющаяся комментарием может быть продолжена, если её завершить символом обратного слэша (
    \). Обратите внимание, что общее правило, для пустого пространства, означает, что появление пробелов после обратного слэша и начальных пробелов в начале строк продолжения игнорируется. Строки комментариев, начинающиеся с # (но не пустые строки), могут появиться в середине последовательности строк продолжения.
       Удобный способ создания конфигурационного файла заключается в том, чтобы начать с дефолтового, представленного в
    src/configure.default, и добавлять, удалять или изменять настройки как требуется.
       ACL`ы, правила повторов, и правила перезаписи имеют их собственный синтаксис, который описан в разделах 40, 32 и 31 соответственно. Другие части конфигурационного файла имеют некоторые общие синтаксические пункты, и они описаны ниже, от раздела 6.10 и далее. До этого описаны средства включения, макрокоманд и условий средств.

    6.3 Включения файлов в конфигурационный файл

       Вы можете включать другие файлы внутри файла рабочей конфигурации exim`a, используя этот синтаксис:
    .include <file name>
    .include_if_exists <file name>
    

    в отдельных строках. Двойные кавычки вокруг имени файла - опциональны. Если вы используете первую форму, если файл не существует, происходит ошибка конфигурации; вторая форма, ничего не делает, в случае несуществующих файлов. Во всех случаях, требуются абсолютные имена.
       Включенный файл может быть на любой глубине вложенности, но помните, что exim часто читает конфигурационный файл, поэтому хорошей идеей будет хранить их на минимальной глубине. Если вы меняете содержимое инклюженного файла, вы должны дать даемону сигнал HUP, поскольку заинклюженный файл в момент чтения конфигурации в режиме доступа - только на чтение.
       Обработка включений происходит рано, на физическом уровне строки, таким образом, как и строки комментариев, включения могут использоваться в середине параметра настройки, например:
    hosts_lookup = a.b.c \
                   .include /some/file
    

       Процесс включения происходит после обработки макрокоманд (смотрите ниже). Этот эффект обрабатывает включенные строки так, как будто они находятся в месте, где произошло включение.

    6.4 Макросы в конфигурационном файле

       Если строка, в основной части конфигурации (т.е. до первой строки begin), начинается с символа верхнего регистра, она берётся как макроопределение, и должна иметь форму:
    <name> = <rest of line><name> = <rest of line>
    

       Имя должно состоять из букв, цифр и символов подчёркивания, и нет необходимости, чтобы все они были в верхнем регистре, хотя это рекомендуется. Оставшаяся часть строки, включая любое продолжение, является текстом замены, и из неё удаляется начальное и завершающее пустое пространство. Кавычки не удаляются. Текст замены не может завершаться символом обратного слэша, но это несерьёзное ограничение.
       Макрос, также может быть задан между роутером и транспортом, аутентификатором, или определением ACL. Однако, они не могут быть определены внутри определённых драйверов или ACL, или в
    local_scan, или секции повторов конфигурации.

    6.5 Макроподстановка

       Как только макрос определён, все последующие строки файла (и любых заинклюженных файлов) сканируются на предмет имени макроса; если есть несколько макросов, строки сканируются по очереди их опредления, для каждого макроса. Текст замены не сканируется повторно, для текущей макрокоманды, хотя он сканируется для впоследствии заданных макросов. Поэтому, имена макрокоманд, не могут содержать, как подстроку, имя ранее заданного макроса. Например, вы могли бы задать
    ABCD_XYZ = <something>
    ABCD = <something else>
    

    но помещение объявлений в обратном порядке, вызвало бы конфигурационную ошибку. Раскрытие макросов применяется к индивидуальным физическим строкам файла, до проверки продолжения строки или включений (смотрите выше). Если строка состоит лишь из имени макроса, и раскрытие макроса пустое, строка игнорируется. Макрос, в начале строки, может превратить строку в строку комментария, или в строку .include.

    6.6 Переопределение макроса

       После определения, значение макроса может быть переопределено позднее, в конфигурации (или в заинклюженом файле). Переопределение задаётся использованием == вместо =. Например:
    MAC =  initial value
    ...
    MAC == updated value
    

       Переопределение не меняет порядок в котором макрос применяется к последующим строкам конфигурации. Порядок остаётся тем же самым, в котором макросы были изначально заданы. Всё, что изменяется, - значение макроса. Переопределение позволяет накапливать значения. Например:
    MAC =  initial value
    ...
    MAC == MAC and something added
    

       Это может быть полезным в ситуации, когда конфигурационный файл собирается из множества других файлов.

    6.7 Отмена значения макроса

       Набор значений для макроса, в конфигурационном файле, может быть отменён опцией -D командной строки, но при её использовании, exim снимает свои root`овые права, если он вызван не root`ом или пользователем exim`a. Задание опции -D, в командной строке, заставляет игнорироваться все определения и переопределения в пределах файла.

    6.8 Пример использования макроса

       Как пример макроса, рассмотрим конфигурацию, где альясы ищутся в ДБ MySQL. Это помогает оставить файл менее беспорядочным, если длинные строки, например SQL-запросы, определены отдельно, как макрос, например:
    ALIAS_QUERY = select mailbox from user where \
                  login='${quote_mysql:$local_part}';
    

       Тогда это может использоваться в роутере redirect, устанавливаемом примерно так:
    data = ${lookup mysql{ALIAS_QUERY}}
    

       В более ранних версиях exim, макрос, иногда, использовался для списков доменов, хостов, или адресов. В exim v4 они лучше обрабатываются именованными списками - смотрите раздел 10.5.

    6.9 Условные пропуски в конфигурационном файле

       Вы можете использовать директивы .ifdef, .ifndef, .elifdef, .elifndef, .else и .endif для динамического включения или исключения частей конфигурационного файла. Обработка происходит каждый раз, когда файл читается (т.е. когда запускается бинарник exim).
       Реализация очень проста. Примеры четырёх первых директив должны сопровождаться текстом, включающим имена одного и более макросов. Условие проверяется, действительно ли происходила подстановка макроса в строке. Таким образом:
    .ifdef AAA
    message_size_limit = 50M
    .else
    message_size_limit = 100M
    .endif
    

    устанавливает ограничение размера сообщения в 50mb, если задан макрос AAA, и 100mb в ином случае. Если задано более одного имени макроса в строке, условие истинно, если задано любое из них. Таким образом, это условие or (или). Чтобы получить условие and, вам необходимо использовать вложенное .ifdefs.
       Хотя вы можете использовать макрораскрытие для создания одной из этих директив, это не очень полезно, поскольку условие
    в этой строке была макроподстановка (there was a macro substitution in this line) будет всегда истинным.
       Текст следующий за
    .else и .endif игнорируется, и может использоваться как комментарий, чтобы сделать пояснения к сложным вложениям.

    6.10 Общий синтаксис опции

       Для основного набора опций, опций драйвера и опции local_scan(), каждая настройка находится на отдельной строке, и начинается с имени, состоящего из символов в нижнем регистре, и символов подчёркивания. Многие опции требуют значение с данными, и в этом случае, имя должно сопровождаться символом равно (=), с опциональными пробелами, и затем значение. Например:
    qualify_domain = mydomain.example.com
    

       Некоторые параметры настройки могут содержать уязвимые данные, например, пароль для доступа к базам данных. Для недопущения прочтения этих значений неадминистративными пользователями, используя опцию командной строки -bP, вы можете предварять их словом hide (скрыть). Например:
    hide mysql_servers = localhost/users/admin/secret-password
    

       Для неадминистративных пользователей, такие опции отображаются как в примере:
    mysql_servers = <value not displayable>
    

       Если hide используется в опции драйвера, оно скрывает значение этой опции во всех проявлениях этого драйвера.
       Следующие разделы описывают синтаксис используемый для различных типов данных, находящихся в параметрах настроек.

    6.11 Булевы опции

       Опции, тип которых даётся как булева переменная (логическая переменная - прим. lissyara) -  переключатели on/off. Возможны два способа определить такие опции: с и без значением данных. Если имя опции указано само по себе, без данных, - это значит on; если ему предшествует no_ или not_ - это значит off. Однако, булевы опции могут быть сопровождены символом равно =, и одним из слов true, false, yes, или no, как альтернативный синтаксис. Например, следующие два параметра настройки, будут иметь одинаковый эффект:
    queue_only
    queue_only = true
    

       Следующие две строки, также, имеют одинаковый (обратный) эффект:
    no_queue_only
    queue_only = false
    

       Вы можете использовать тот синтаксис, который предпочитаете.

    6.12 Целочисленные значения

       Если тип опции дан как целочисленное (integer), значение может быть задано в десятичном, шестнадцатеричном, или восьмеричном представлении. Если оно начинается с цифры больше нуля, предполагается десятичное число. Иначе, оно обрабатывается как восьмеричное число, за исключением случая когда оно начинается с символов 0x, тогда оно обрабоатывается как шестнадцатеричное число.

       Если целочисленное значение сопровождается символом
    K, оно умножается на 1024; если оно сопровождается символом M, оно умножается на 1024x1024. Когда выводятся значения целочисленных опций, значения, являющиеся точным множителем 1024 или 1024x1024, иногда, но не всегда, печатаются с использованием символов K и M. Стиль печати независим от использовавшегося, фактического, входного формата.

    6.13 Целочисленные восьмеричные значения

       Если тип опции дан как восьмеричное целое число, её значение всегда интерпретируется как восьмеричное число, вне зависмости - начинается оно с нуля или нет. Такие опции всегда выводятся в восьмеричном виде.

    6.14 Числа с фиксированной точкой

       Если тип опции дан как fixed-point, её значение должно быть десятичным числом, опционально сопровождаемым десятичной точкой, вплоть до трёх цифр после неё.

    6.15 Временные интервалы

       Интервал времени указывается как последовательность чисел, каждое сопровождаемое буквой, без пробелов:
    буква
    значение
    s секунды
    м минуты
    h часы
    d дни
    w недели


       Например,
    3h50m задаёт 3 часа и 50 минут. Значения временных интервалов выводятся в таком же формате. Exim не ограничивает значения; он допускает, например, указать 90m вместо 1h30m.

    6.16 Строковые значения

       Если тип опции определён как строка, значение может быть определено с двойными кавычками, или без них. Если оно не начинается с двойной кавычки, оно берётся как состоящее из остатка строки, плюс любые строки продолжения, начинающиеся с первого символа после любых начальных пробелов, с удалением пробелов в конце, и без интерпретации символов в строке. Поскольку exim удаляет строки комментариев (т.е. начинающиеся с #) на ранней стадии, они могут появляться в середине многостроковых строк. Поэтому следующие настройки эквивалентны:
    trusted_users = uucp:mail
    trusted_users = uucp:\
                    # This comment line is ignored
                    mail
    

       Если строка начинается с символа двойной кавычки, она должна завершаться заключительной двойной кавычкой, и любые символы обратного слэша, кроме как используемые для продолжения строки, интерпретируются как специальные символы (escape-последовательность), следующим образом:
    последовательность
    значение
    \\ одиночный обратный слэш
    \n символ новой строки
    \r символ возврата каретки
    \t символ табуляции (TAB)
    \<octal digits> до трёх восьмеричных цифр определяющих один символ
    \x<hex digits> до двух шестнадцатеричных цифр определяющих один символ


       Если обратные слэш сопровождается какими-то другими символами, включая двойные кавычки, этот символ заменяет пару (пару обратный слэш и символ - прим. lissyara).
       Квотирование (помещение в двойные кавычки - прим. lissyara) необходимо лишь если вы хотите использовать escape-последовательности для вставки специальных символов, или необходимо определить значение с начальными и конечными пробелами. Эти случаи редки, таким образом использование двойных кавычек почти не необходимо в текущих версиях exim`a. В версиях exim до 3.14, двойные кавычки требовались для продолжения строки, таким образом, вы можете натолкнуться на старые конфигурационные файлы, и примеры, в которых применяется излишнее использование двойных кавычек.

    6.17 Раскрытие строк

       Некоторые строки в конфигурационном файле подвергаются раскрытию строки (string expansion), при помощи которого различные части строки могут быть заменены, по обстановке (смотрите раздел 11). Входной синтаксис для таких строк лишь описан; в частности, обработка обратных слэшей внутри квотированных (находящихся внутри двойных кавычек - прим. lissyara) строк производится как часть входного процесса, до того как имеет место раскрытие. Однако, обратный слэш - также символ экранировки для раскрытия, таким образом, любые требуемые обратные слэши должны быть удвоены, если они в пределах конфигурационной строки в кавычках.

    6.18 Имена пользователей и групп

       Имена пользователей и групп задаются как строки, с использованием синтаксиса описанного выше, но строки интерпретируются специальным образом. Имя пользователя или группы должно состоять полностью из цифр, или именем, которое может быть найдено функциями getpwnam() или getgrnam() соответственно.

    6.19 Построение списков

       Данные для некоторых конфигурационных опций - список элементов, с двоеточием в качестве дефолтового разделителя. Многие из этих опций оказываются типом список строк (string list) в описаниях, позже, в этом документе.Другие перечислены как domain list, host list, address list, или local part list. Синтаксически, они все одинаковы; однако, все, кроме string list, являются объектами для интерпретации, как описано в разделе 10.
       Во всех случаях, весь список обрабатывается как единая длинная строка, как того требует синтаксис. Пример - установка опции
    trusted_users, выше, в секции 6.16. Если реально необходимо использовать двоеточие как элемент в списке, оно должно быть введено как два двоеточия. Начальные и конечные пробелы, в каждом элементе списка, игнорируются. Это позволяет включать элементы начинающиеся с двоеточия, в частности, определённые формы адресов IPv6. Например, список:
    local_interfaces = 127.0.0.1 : ::::1
    

    содержит два IP адреса, адрес IPv4 127.0.0.1 и адрес IPv6 ::1.
       Примечание: Несмотря на то, что начальные и конечные пробелы игнорируются в списке индивидуальных элементов, они не игнорируются при парсинге списка. Пробел после первого двоеточия, в примере выше, необходим. Если бы его там не было, то список интерпретировался бы как два элемента
    127.0.0.1:: и 1.

    6.20 Смена разделителя списка

       Удвоение двоеточий в адресах IPv6 - неприятная рутинная операция, таким образом был предоставлен механизм позволяющий изменить разделитель списка. Если список начинается с левой угловой скобки, сопровождаемой каким-либо символом пунктуации, этот символ используется, вместо двоеточия, как разделитель элементов списка. Для примера, список выше, может быть переписан с использованием точки с запятой в качестве разделителя:
    local_interfaces = <; 127.0.0.1 ; ::1
    

       Это средство применяется ко всем спискам, за исключением списка в log_file_path. Рекомендуется, использовать иные символы, кроме двоеточия, было ограничено обстоятельствами, где они реально необходимы.
       Также, возможно использовать символ новой строки и другие контрольные символы (те, чьи значения кода меньше 32, плюс
    DEL) как разделитель в списках. Такие разделители должны быть представлены буквально, во время обработки списка. Для опций где строки раскрываются, вы можете записать разделитель используя обычную экранированную последовательность. Это будет обработано раскрытием до интерпретации строки как списка. Например, список доменов, разделённый символами новой строки, генерируемый поиском, вы можете обработать напрямую по строкам, как тут:
    domains = <\n ${lookup mysql{.....}}
    

       Это позволяет уклониться от изменения разделителя списка в некоторых данных. Врятли вы захотите использовать управляющий символ как разделитель в опциях которые не раскрываются, поскольку значение - буквальный текст. Однако, это может быть сделано путём задания значения в кавычках. Например:
    local_interfaces = "<\n 127.0.0.1 \n ::1"
    

       В отличие от печатных символов разделителей, которые могут быть включены в список элементов путём удвоения, невозможно включить управляющие символы как данные. когда они заданы как разделитель. Два таких символа подряд интерпретируются как содержащие пустой элемент списка.

    6.21 Пустые элементы в списках

       Пустые элементы в конце списков всегда игнорируются. Другими словами, конечный символ разделителя игнорируется. Таким образом, список в
    senders = user@domain :
    

    содержит лишь один элемент. Если вы хотите включить пустую строку в качестве одного из элементов списка, она не должна быть последним элементом списка. Например, этот список содержит три элемента, второй из которых пустой:
    senders = user1@domain : : user2@domain
    

       Примечание: Должно быть пустое пространство, между этими двумя двоеточиями, иначе они будут интерпретированы как один символ двоеточия (и тогда список содержал бы лишь один элемент). Если вы хотите задать список, содержащий лишь один пустой элемент, вы можете сделать это, как в этом примере:
    senders = :
    

       В этом случае, первый элемент пуст, и второй игнорируется, поскольку он в конце списка.

    6.22 Формат конфигурации драйвера

       Есть отдельные части в конфигурации, для определения роутеров, транспортов и аутентификаторов. В каждой части, вы определяете множество примеров драйверов, каждый с его собственным набором опций. Каждый пример драйвера задаётся последовательностью строк, такого типа:
    <instance name>:
      <option>
      ...
      <option>
    

       В следующем примере, имя образца - localuser, и он сопровождается тремя опциями:
    localuser:
      driver = accept
      check_local_user
      transport = local_delivery
    

       Для каждого образца драйвера, вы определяете, какой модуль кода exim он использует - путём установки опции driver, и, опционально, некоторые параметры конфигурации. Например, в случае транспортов, если вы хотите чтобы транспорт доставлял по SMTP, вы бы использовали драйвер smtp; если вы хотите доставлять в локальный файл, вы бы использовали драйвер appendfile. Каждый из драйверов подробно описан в его собственной главе, позже, в этом руководстве.
       Вы можете иметь несколько роутеров, транспортов или аутентификаторов которые основаны на одном и том же основном драйвере (каждый должен иметь своё имя).
       Порядок, в котором определены роутеры, важен, потому что адреса передаются на индивидуальные маршрутизаторы по одному, по порядку. Порядок в котором заданы транспорты, не имеет значения. Порядок в котором определены аутентификаторы, используется только когда exim, как клиент, ищет их, чтобы найти тот, который соответствует предлагаемому сервером механизму аутентификации.
       В пределах определения образца драйвера, есть два вида опций:
    универсальный (generic) и частный (private). Общие опции - те, которые применяются ко всем драйверам,  одного типа (т.е. все роутеры, все транспорты, или все аутентификаторы). Опция driver - общая опция, которая должна появляться в каждом определении. Частные опции являются специальными для каждого драйвера, и ни одна не должна появляться, поскольку все они имеют значения по умолчанию.
       Опции могут появляться в любом порядке, за исключением, что опция
    driver должна предшествовать частным опциям, поскольку они зависимы от неё. Поэтому, рекомендуется, чтобы опция driver всегда была первой.
       Имена экземпляров драйверов, которые используются для ссылок в логах, и других местах, могут быть любой последовательностью букв, цифр, и подчёркиваний (начинающихся с буквы), и должны быть уникальными среди драйверов того же типа. Роутер и транспорт (для примера), могут иметь одинаковое имя, но никакие два маршрутизатора не могут быть с одним именем. Имя экземпляра драйвера не должно быть перепутано с именем базового модуля драйвера. Например, конфигурационные строки:
    remote_smtp:
      driver = smtp
    

    создают экземпляр драйвера транспорта smtp, имя которого remote_smtp. Тот же самый код драйвера может использоваться более одного раза, с различными именами экземпляров и различными параметрами настроек, в каждом случае. Второй экземпляр транспорта smtp, с другими опциями, может быть задан таким образом:
    special_smtp:
      driver = smtp
      port = 1234
      command_timeout = 10s
    

       Имена remote_smtp и special_smtp использовались бы для ссылки на эти экземпляры транспорта из маршрутизаторов, и эти имена фигурировали бы в строках логов.
       Строки комментариев могут присутствовать в середине спецификации драйвера. Полный список опций настройки для любого частного драйвера, включая все дефолтовые значения, может быть создан, используя опцию командной строки
    -bP.


    =============
    translated by lissyara
    verifying by Gerk



    Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.



  • Хостинг HOST-FOOD

    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 настройка и одаптация плюс личные размышления…
    2011-02-04, BlackCat
    Восстановление ZFS

    История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
    2011-02-03, Капитан
    1-Wire

    Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
    2011-01-28, Капитан
    Температура в серверной

    Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
    2011-01-21, m4rkell
    Syslog server

    Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
    2011-01-07, lissyara
    Canon/gphotofs

    Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
    2010-12-13, Al
    IPSec

    Описание принципов работы IPSEC и способов аутентификации.
    2010-12-07, manefesto
    FreeBSD on flash

    Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
    2010-12-05, Fomalhaut
    root ZFS, GPT

    Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
    2010-09-05, Cancer
    Настройка аудиоплеера на ximp3

    Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
    2010-08-31, Cancer
    Установка и настройка OpenVPN

    На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
    2010-08-25, manefesto
    freebsd lvm

    Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
    2010-04-30, gonzo111
    proftpd file auth&quota

    Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
    2010-04-22, lissyara
    tw_cli

    Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
    2010-04-14, fox
    MySQL Master+Master

    MySQL (Master Master) and (Master Slave) Как настроить репликацию…
    2010-03-09, terminus
    DNS zones

    Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
    2010-03-09, aspera
    Squid+AD (group access)

    Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
    2010-03-02, BlackCat
    Шлюз: Часть 4

    Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
    2010-03-01, BlackCat
    Шлюз: Часть 3

    Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
    2010-03-01, BlackCat
    Шлюз: Часть 2

    Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
    2010-03-01, BlackCat
    Шлюз: Часть 1

    Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
    2010-02-23, Morty
    darkstat

    Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
    2010-01-23, gonzo111
    squid+sams+sqstat

    Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
    2009-12-19, schizoid
    mpd5 + radius + ng_car + Abills

    Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
    2009-11-16, lissyara
    UFS->ZFS

    Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
    2009-11-13, gx_ua
    fusefs-ntfs

    Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
    2009-11-12, Morty
    LiveCD

    Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
    2009-09-27, lissyara
    Samba как PDC

    Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
    2009-08-30, terminus
    ipfw nat

    Подробное руководство по ipfw nat, сложные случаи конфигурации.
    2009-08-24, levantuev
    HotSpot

    Установка Hotspot системы в общественное заведение.
    2009-08-18, lissyara
    diskless

    Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
    2009-07-29, BAV_Lug
    Видеонаблюдение

    Настройка бюджетного варианта видеонаблюдения на удаленном объекте
    2009-07-22, Cancer
    OpenLDAP адресная книга

    Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
    2009-06-30, SergeySL
    AimSniff

    Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
    2009-06-25, atrium
    Управление правами доступа

    Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
    2009-06-16, DNK
    Exim+PgSQL

    Установка почтовой системы exim+pgsql на FreeBSD 7.1
    2009-05-30, mvalery
    HDD(mbr) -> HDD(gpt)

    Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
    2009-05-22, Cancer
    SendXMPP

    Отправка сообщений на Джаббер сервер по средствам SendXMPP
    2009-05-11, Raven2000
    Network UPS Tools

    Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
    2009-04-29, m0ps
    IPSEC over GRE with RIP

    Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
    2009-04-24, WhiteBear777
    qemu network

    Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
    2009-04-22, vp
    freebsd + huawei 162 gsm modem

    В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
    2009-04-12, mvalery
    Мониторинг RAID

    Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
    2009-04-09, texnotronic
    RAID1 via LAN

    Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
    2009-04-03, Raven2000
    Оптимизация хоста для CMS

    В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
    2009-04-01, atrium
    VSFTPD + AD && MySQL

    Настройка самого безопасного сервера FTP - vsftpd.
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 25 чел.
    За последние 30 мин было: 111 человек
    За сегодня было
    13725 показов,
    902 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0459 секунд
    Из них PHP: 41%; SQL: 59%; Число SQL-запросов: 56 шт.
    Исходный размер: 203977; Сжатая: 35739