В противном случае, данные должны представлять собой список элементов перенаправления (redirection items), разделенных
“,
”, как описано в следующей секции.
Когда сообщение перенаправляется в файл (
“почтовая папка
”), имя файла, описанного в списке перенаправления, не являющимся фильтром, должно быть абсолютным (т.е. до него указан полный путь). Фильтр может генерировать относительный путь - то, как это обрабатывается зависит от конфигурации транспорта. См. секцию 26.1 для описания этой темы, для транспорта
“appendfile
”.
22.4 Элементы списка перенаправления
Если данные перенаправления не являются фильтрами Exim и Sieve, например, если они были получены из файла псевдонимов или файла
“
.forward
”, то они содержат список адресов, имен файлов, конвейерных команд или специальных элементов (см. секцию 22.6 ниже). Эти специальные элементы могут быть индивидуально включены или отключены посредством опций, начинающихся с
“allow_
” или
“forbid_
”, в зависимости от значений по умолчанию. Элементы в списке разделены
“,
” или новыми строками. Если в элементе требуется символ
“,
”, то весь элемент должен быть заключен в двойные кавычки.
Строки, начинающиеся с символа
“#
” являются комментариями и игнорируются, также может встретиться символ
“#
” с последующей
“,
”, в этом случае все, что находится между
“#
” и следующим символом новой строки, игнорируется.
Если элемент целиком заключен в двойные кавычки, то они опускаются. В противном случае, они остаются потому как некоторые формы почтовых адресов требуют их использования (но никогда в кавычки не берется адрес целиком). В следующем описании под
“элементом
” понимается то, что остается после опускания кавычек.
Внимание: Если вы используете преобразование Exim для построения адреса перенаправления, и преобразование содержит ссылку на
“
$local_part
”, то вы должны использовать оператор раскрытия
“quote
”, на случай если локальная часть почтового адреса содержит спецсимволы. Например, чтобы перенаправить всю почту для домена
“obsolete.example
”, оставив неизменным существующую локальную часть адреса, то вы можете использовать такую конструкцию:
data = ${quote:$local_part}@newdomain.example
|
22.5 Перенаправление в локальный почтовый ящик
Элемент в списке перенаправления может быть в точности самим адресом. Это не вызовет зацикливания маршрутизации, потому что роутер автоматически пропускается если родительский адрес обрабатываемого адреса совпадает с ним и обрабатывался он текущим роутером. Далее адрес передается следующим роутерам, таким образом он обрабатывается как будто бы не было никакого перенаправления. В процессе проверки зацикливания используется полная локальная часть почтового адреса, включая префиксы и суффиксы.
Указание той же локальной части почтового адреса без указания домена в персональных файлах фильтров является обычной практикой в том случае, если пользователь хочет, чтобы сообщения доставлялись в локальный почтовый ящик а также перенаправлялись еще куда-нибудь. Например, пользователь с учетной записью
“cleo
” может иметь файл
“
.forward
”, содержащий такую запись:
cleo, cleopatra@egypt.example
|
Для совместимости с другими MTA, такие локальные части могут быть предварены символом
“\
”, но это не является требованием для предотвращения зацикливания. Однако, это дает разницу если таким образом обрабатывается более одного домена.
Если элемент начинается с символа
“\
” и остальная часть его является адресом, соответствующим RFC2822, не включающим в себя домен, то этот элемент дополняется доменом входящего адреса. В отсутствие предшествующего символа
“\
” неполные адреса дополняются используя значение опции
“qualify_recipient
”, но вы можете принудительно изменить входящий домен, используя опцию
“qualify_preserve_domain
”.
Если существуют псевдонимы для локальных пользователей, то нужно быть осторожным. Рассмотрим MTA, обрабатывающий простой локальный домен, где системный файл псевдонимов содержит:
Теперь предположим, что Сэм (чей идентификатор -
“spqr
”) хочет сохранять копии сообщений в локальном почтовом ящике, а также перенаправлять копии куда-либо еще. Он создает такой файл перенаправления:
Sam.Reman, spqr@reme.elsewhere.example
|
С подобными настройками входящее сообщение для
“Sam.Reman
” отклоняется. Роутер redirect для системных псевдонимов не обрабатывает
“Sam.Reman
” второй раз, потому как он уже маршрутизировал его, и следующие роутеры по-видимому тоже не смогут обработать псевдоним. Файл перенаправления должен на самом деле содержать:
spqr, spqr@reme.elsewhere.example
|
но т.к. это распространенная ошибка, то существует опция
“check_ancestor
” (см. ниже) для ее обхода. Обычно она определяется в роутере, обрабатывающем пользовательские файлы
“
.forward
”.
22.6 Специальные конструкции в списках перенаправления
Вдобавок к адресам в списках перенаправления (не являющихся фильтрами) могут быть следующие типы конструкций:
Иногда полезно использовать одноключевой (single-key) тип поиска (см. главу 9) для поиска псевдонимов. Однако, может быть потребность для исключений их этого. Они могут быть обработаны путем псевдонимизации их к:
Отличие от
“:fail:
” состоит в том, что это заставляет роутер
“redirect
” отклонять сообщение, в то время как
“:fail:
” маршрутизацию принудительно завершает неудачно. Поиск, результатом которого является пустой список перенаправления, имеет тот же эффект.
22.7 Дублирование адресов
Exim убирает дублированные адреса из списка адресов, к которым совершается доставка, так что для каждого адреса доставляется только одна копия. Это правило не применяется к доставкам, перенаправляемым в потоки (pipes) различными родительскими адресами, однако непрямая схема псевдонимизации:
pipe: |/some/command $local_part
localpart1: pipe
localpart2: pipe
|
не работает с сообщением, адресуемым обеим локальным частям, потому как когда второй из них ссылается на
“pipe
”, он отбрасывается как уже обработанный. Однако, схема
localpart1: |/some/command $local_part
localpart2: |/some/command $local_part
|
выполнит доставку в различные потоки, т.к. родители потоков различны.
22.8 Повторяющееся преобразование перенаправления
В случае если сообщение не может быть доставлено всем адресатам за несколько попыток, то преобразование перенаправления проводится каждый раз заново для адресов, к дочерним адресам которых доставка не произошла. Если перенаправление используется как список рассылки, то это может привести к тому что новые подписчики получат копии старых сообщений. Опция
“one_time
” может помочь этого избежать.
22.9 Ошибки в списках перенаправления
Если установлена опция
“skip_syntax_errors
”, то неправильно написанный адрес, вызывающий ошибку разбора строки, пропускается, и в в главный лог-файл делается соответствующая запись. Это может быть полезно для автоматических списков рассылки. В любом случае, если в процессе генерации списка новых адресов обнаруживается ошибка, то родительский исходный адрес откладывается. См. также опцию
“syntax_errors_to
”.
22.10 Частные опции роутера
“redirect
”
опция
|
использование
|
тип
|
по-умолчанию
|
allow_defer
|
redirect
|
boolean
|
false
|
|
Установка этой опции позволяет использовать
“:defer:
” в данных перенаправления (не в фильтрах), либо команду
“defer
” в файле фильтров Exim.
опция
|
использование
|
тип
|
по-умолчанию
|
allow_fail
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то элемент
“:fail:
” можно использовать в списке перенаправления, и команда
“fail
” может использоваться в файле фильтров.
опция
|
использование
|
тип
|
по-умолчанию
|
allow_filter
|
redirect
|
boolean
|
false
|
|
Установка этой опции позволяет Exim интерпретировать данные перенаправления,
начинающихся с
“#Exim filter
” или
“#Sieve filter
” как множество инструкций
по фильтрации. Есть несколько свойств файлов фильтров Exim, которые
некоторые администраторы могут захотеть запретить; см. опции
“forbid_filter_xxx
” ниже. Фильтр запускается от имени пользователя и группы, определенных общими опциями
“user
” и
“group
”. Они берут свои умолчательные значения из файла паролей если установлена опция
“check_local_user
”, так что в случае наличия пользовательских файлов фильтров фильтр запускается от имени соответствующего пользователя. Если опция
“allow_filter
” истинна, то Exim требует чтобы была выставлена опция
“check_local_user
” или
“user
”.
опция
|
использование
|
тип
|
по-умолчанию
|
allow_freeze
|
redirect
|
boolean
|
false
|
|
Установка этой опции позволяет использовать команду
“freeze
” в фильтре Exim. Эта команда чаще встречается в системных фильтрах, и выключена по умолчанию для фильтров перенаправления т.к. это не то, что вы бы хотели позволить делать обычным пользователям.
опция
|
использование
|
тип
|
по-умолчанию
|
check_ancestor
|
redirect
|
boolean
|
false
|
|
Эта опция связана с обработкой сгенерированных адресов, которые могут совпадать с некоторыми родительскими адресами в списке перенаправления для текущего адреса. Хотя данная опция по умолчанию выключена в исходном коде, она включается в файл конфигурации по умолчанию для обработки пользовательских файлов
“
.forward
”. Данная опция рекомендуется для подобного использования роутера
“redirect
”.
Если установлена опция
“check_ancestor
”, и если сгенерированный адрес (включая домен) такой же как и родительский адрес текущего адреса, то он заменяется копией текущего адреса. Это помогает в случае когда локальная часть почтового адреса А псевдонимизируется на B, и B имеет файл
“
.forward
”, указывающий обратно на А. Например, внутри домена, локальная часть
“Joe.Bloggs
” псевдонимизируется на
“jb
” и
“
~jb/.forward
” содержит:
\Joe.Bloggs, <other item(s)>
|
Без установки опции
“check_ancestor
” любая из локальных частей почтового адреса (
“jb
” или
“Joe.Bloggs
”) обрабатывается каждым роутером один раз. Если
“jb
” - имя реального почтового ящика, то почта для
“jb
” доставляется (перенаправленная на
“Joe.Bloggs
” в файле
“
.forward
” и обратно на
“jb
” как псевдоним), но почта на
“Joe.Bloggs
” не проходит. Установка
“check_ancestor
” на роутере
“redirect
”, который обрабатывает файл
“
.forward
”, позволяет избежать переопределения
“jb
” обратно в
“Joe.Bloggs
”, если это был оригинальный адрес. См. ниже опцию
“repeat_use
”.
опция
|
использование
|
тип
|
по-умолчанию
|
check_group
|
redirect
|
boolean
|
смотрите ниже
|
|
Если используется опция
“file
”, то группа-владелец файла проверяется только если установлена эта опция. Разрешенные группы - это те, которые перечислены в опции
“owngroups
”, вместе с пользовательской группой по умолчанию в случае если установлена опция
“check_local_user
”. Если файл принадлежит неверной группе, то маршрутизация откладывается. Значение по умолчанию для этой опции - истина в случае если установлена опция
“check_local_user
” и опция
“modemask
” дает права на запись для группы, либо установлена опция
“owngroups
”. В любом другом случае она ложна и никаких проверок группы не выполняется.
опция
|
использование
|
тип
|
по-умолчанию
|
check_owner
|
redirect
|
boolean
|
смотрите ниже
|
|
Если используется опция
“file
”, то владелец файла проверяется только если установлена эта опция. Если установлена
“check_local_user
”, то локальный пользователь получает разрешение; в другом случае владелец должен быть одним из перечисленных в опции
“owners
”. Значение по умолчанию для этой опции - истина если установлены опции
“check_local_user
” или
“owners
”. В противном случае значение по умолчанию - ложь, и никаких проверок владельца не производится.
опция
|
использование
|
тип
|
по-умолчанию
|
data
|
redirect
|
string†
|
unset
|
|
Эта опция является взаимоисключающей с опцией
“file
”. Одна из них должна быть определена, но не обе одновременно. Содержимое опции
“data
” может преобразовываться, и затем использоваться как список элементов перенаправления, или как множество инструкций фильтров. Если преобразование выполняется неудачно или результатом является пустая строка или строка без эффекта (состоящая из комментариев), то роутер отклоняется.
Если используются инструкции фильтров, то строка должна начинаться с
“#Exim filter
”, и все комментарии в строке, включая этот, должны оканчиваться символом новой строки. Например:
data = #Exim filter\n\
if $h_to: contains Exim then save $home/mail/exim endif
|
Если вы читаете данные из базы, где символы новой строки не могут быть включены, то вы можете использовать элемент преобразования
“
${sg}
” для преобразования шаблона строки последовательности в символ новой строки.
опция
|
использование
|
тип
|
по-умолчанию
|
directory_transport
|
redirect
|
string†
|
unset
|
|
Роутер
“redirect
” устанавливает прямую доставку в каталог если путь, оканчивающийся символом
“/
” определяется как новый
“адрес
”. Транспорт для доставки определяется этой опцией, который после преобразования должен быть именем сконфигурированного транспорта. Обычно им является транспорт
“appendfile
”.
опция
|
использование
|
тип
|
по-умолчанию
|
file
|
redirect
|
string†
|
unset
|
|
Данная опция определяет имя файла, содержащего данные для перенаправления. Она является взаимоисключающей с опцией
“data
”. Строка перед использованием преобразуется; если преобразование завершается неудачно - роутер отклоняется. Другие ошибки преобразования ведут к откладыванию доставки. Результатом успешного преобразования должен быть абсолютный путь. Файл читается целиком и используется как данные для перенаправления. Если данные представляют собой пустую строку или строку, состоящую из комментариев, то роутер отклоняется.
Если попытка открыть файл завершается неудачно вследствие того, что файл не существует, Exim выполняет проверку содержимого каталога, если только опция
“ignore_enotdir
” не установлена в истинное значение (см. ниже). Если каталог не существует, то доставка откладывается. Это может произойти в случае если пользовательские файлы
“
.forward
” монтируются по NFS, и если существует проблема монтирования. Если каталог существует а файл - нет, роутер отклоняется.
опция
|
использование
|
тип
|
по-умолчанию
|
file_transport
|
redirect
|
string†
|
unset
|
|
Роутер
“redirect
” устанавливает прямую доставку в файл если имя пути не оканчивающееся
“/
” определено как новый
“адрес
”. Используемый транспорт в данном случае определяется этой опцией, которая после преобразования должна содержать имя сконфигурированного транспорта. Обычно таким транспортом является транспорт
“appendfile
”. В процессе его работы имя файла содержится в переменной
“
$address_file
”.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_blackhole
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то элемент
“:blackhole:
” не может быть указан в списке перенаправления.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_exim_filter
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то только фильтры Sieve разрешены, когда опция
“allow_filter
” истинна.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_file
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то роутер не может генерировать новый адрес, осуществляющий доставку в локальный файл или каталог либо посредством фильтра, либо посредством шаблонного файла пересылки (forward). Эта опция принудительно устанавливается в
“истину
” если установлена опция
“one_time
”. Она применяется как к фильтрам Sieve так и к фильтрам Exim, но если она истинна, то она блокирует возможность
“keep
” Sieve.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_dlfunc
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, расктытию строки в фильре exim`a не позволяется использовать средство раскрытия
“dlfunc
” для выполнения динамически загружаемых функций.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_existstest
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то преобразования строк в фильтрах Exim не разрешаются для использования в условии
“exists
”.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_logwrite
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то использовать логгирование в фильтрах Exim не разрешено. Логгирование в любом случае доступно, если фильтр запускается от имени непривилегированного пользователя (что является нормальным для пользовательских файлов
“
.forward
”).
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_lookup
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то преобразования строк для использования элементов
“lookup
” в фильтрах Exim не разрешается.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_perl
|
redirect
|
boolean
|
false
|
|
Эта опция доступна только в случае если Exim скомпилирован с поддержкой встроенного Perl. Если это так, то преобразования строк для использования встроенного Perl не разрешены.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_readfile
|
redirect
|
boolean
|
false
|
|
Если эта опция истинна, то преобразования строк в файлах фильтров Exim для использования элементов
“readfile
” не разрешены.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_readsocket
|
redirect
|
boolean
|
false
|
|
Если эта опция истинна, то преобразования строк в файлах фильтров Exim для использования элементов
“readsocket
” не разрешены.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_reply
|
redirect
|
boolean
|
false
|
|
Если эта опция истинна, то данный роутер не может генерировать автоматический ответ. Автоответы могут генерироваться только из файлов фильтров Exim, но не из традиционных файлов перенаправления или фильтров Sieve. Данная опция автоматически становится истинной если определена опция
“one_time
”.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_filter_run
|
redirect
|
boolean
|
false
|
|
Если эта опция истинна, то преобразования строк в файлах фильтров Exim для использования элементов
“run
” не разрешены.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_include
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то элементы вида:
запрещены в списках перенаправления, не являющихся фильтрами.
опция
|
использование
|
тип
|
по-умолчанию
|
forbid_pipe
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то роутер не может генерировать новый адрес, определяющий доставку в трубу (pipe), равно как из фильтра Exim, так и из обычного файла перенаправления. Если установлена опция
“one_time
”, то данная опция автоматически становится истинной.
опция
|
использование
|
тип
|
по-умолчанию
|
hide_child_in_errmsg
|
redirect
|
boolean
|
false
|
|
Если данная опция истинна, то она вынуждает Exim скрывать дочерний адрес в случае, если генерируется сообщение об отказе в доставке или о задержке. Вместо этого подставляется адрес генерируемый <родительский адрес>. Конечно, это применимо только к генерируемым локально сообщениям об отказе в доставке. Если сообщение перенаправляется на другой хост, то сообщение об отказе может быть послано на генерируемый адрес.
опция
|
использование
|
тип
|
по-умолчанию
|
ignore_eacces
|
redirect
|
boolean
|
false
|
|
Если эта опция установлена и попытка открыть файл перенаправления вызывает ошибку EACCES (доступ запрещен), то роутер
“redirect
” ведет себя как будто файл не существует.
опция
|
использование
|
тип
|
по-умолчанию
|
ignore_enotdir
|
redirect
|
boolean
|
false
|
|
Если данная опция определена и попытка открыть файл перенаправления вызывает ошибку ENOTDIR (что-либо в пути не является директорией), то роутер ведет себя как будто файл не существует.
Установка
“ignore_enotdir" имеет другой эффект: Когда роутер
“redirect
”, имеющий опцию
“file
”, обнаруживает что данный файл не существует (ошибка ENOENT), он пытается выполнить функцию
“
stat()
” для родительской директории, например при проверке на отмонтированные NFS директории. Если функция возвращает ненулевое значение, то доставка откладывается. Однако, неверно выполнять такую проверку когда установлена опция
“ignore_enotdir
”, потому что эта опция заставляет Exim игнорировать в пути
“то, что не является директорией
” (ошибка ENOTDIR). Это вопрос неоднозначный, потому как некоторые операционные системы выдают ошибку ENOENT, а некоторые - ENOTDIR.
опция
|
использование
|
тип
|
по-умолчанию
|
include_directory
|
redirect
|
string
|
unset
|
|
Если установлена эта опция, пути любых элементов
“:include:
” в списке перенаправления должны начинаться с этой директории.
опция
|
использование
|
тип
|
по-умолчанию
|
modemask
|
redirect
|
octal integer
|
022
|
|
Опция определяет биты режима, которые не должны быть установлены для файла, определенного опцией
“file
”. Если установлен любой из этих битов, то доставка откладывается.
опция
|
использование
|
тип
|
по-умолчанию
|
one_time
|
redirect
|
boolean
|
false
|
|
Иногда факт что Exim перечитывает файл псевдонимов и заново обрабатывает файлы перенаправления каждый раз когда он пытается доставить сообщение, вызывает проблему когда один или несколько сгенерированных адресов не могут быть доставлены с первой попытки. Это не является проблемой повторной доставки - Exim способен это обработать - кроме ситуаций когда список перенаправления меняется во время, когда сообщение находится в очереди Exim'a. Это особенно справедливо в случае списков рассылки, когда новые подписчики могут получить копии сообщений в случае если они были посланы до того как они подписались на рассылку.
Если опция
“one_time
” установлена и любые адреса сгенерированные роутером не удается обработать с первой попытки, то эти адреса добавляются к сообщению как адреса
“верхнего уровня
” (top level) и родительский адрес, который их сгенерировал помечается как
“delivered
”. То есть перенаправление на следующей попытке доставки не происходит.
Замечание 1: Это означает что любое добавление или удаление заголовков, определяемое роутером будет утеряно если доставка не будет произведена успешно с первой попытки. В этом случае когда установлена опция
“one_time
” опции
“headers_add
” и
“headers_remove
” не разрешены.
Замечание 2: Для обеспечения того чтобы роутер генерировал только адреса (в отличие от труб (pipes), доставок в файлы (file deliveries) или авто-ответов (auto-replies)), опции
“forbid_file
”,
“forbid_pipe
” и
“forbid_filter_reply
” принудительно устанавливаются в значение
“истина
” когда установлена опция
“one_time
”.
Изначальный адрес верхнего уровня (top-level) запоминается с каждым из сгенерированных адресов, и выводится во всех записях в логах. Однако, любые промежуточные адреса не записываются. Это вносит различия в лог только если установлен селектор
“all_parents
”. Считается что
“one_time
” будет использоваться как правило в списках рассылки, где обычно используется один уровень преобразования.
Замечание 3: Общий роутер
“unseen
” не может быть задан с
“one_time
”.
Оригинальный адрес верхнего уровня запоминается с каждым из сгенерённых адресов, и выводится в любых логах. Однако, промежуточные адреса на записываются. Это создаёт различие для логов только если селектор логов
“all_parents
” установлен. Ожидается, что обычно
“one_time
” будет использоваться для списка адресатов, где есть лишь один уровень раскрытия.
опция
|
использование
|
тип
|
по-умолчанию
|
owners
|
redirect
|
string list
|
unset
|
|
Это определяет список разрешённых владельцев для файла заданного как
“file
”. Этот список - дополнение к локальному пользователю, когда установлена опция
“check_local_user
”. Смотрите
“check_owner
” ниже.
опция
|
использование
|
тип
|
по-умолчанию
|
owngroups
|
redirect
|
string list
|
unset
|
|
Это определяет список разрешённых групп для файла заданного как
“file
”. Этот список - дополнение к локальной группе, когда установлена опция
“check_local_user
”. Смотрите опцию
“check_group
” выше.
опция
|
использование
|
тип
|
по-умолчанию
|
pipe_transport
|
redirect
|
string†
|
unset
|
|
Роутер
“redirect
” задаёт прямую доставку в трубу, когда строка начинающаяся с
“|
” задана как новый
“адрес
”. Используемый транспорт определён этой опцией, которая, после раскрытия, должна быть названа именем сконфигуренного транспорта. Когда транспорт запущен, команда pipe в
“
$address_pipe
”.
опция
|
использование
|
тип
|
по-умолчанию
|
qualify_domain
|
redirect
|
string†
|
unset
|
|
Если эта опция установлена, и сгенерён неполный адрес (без домена), и в нормальных условиях этот адрес был бы квалифицирован (дополнен доменным именем) по глобальной опции
“qualify_recipient
”, но вместо этого он квалифицируется доменом, содержащимся в этой строке, после раскрытия. Если раскрытие неудачно, маршрутизатор снижается(?). Если вы хотите вернуться к значению по умолчанию, то можно раскрыть
“
$qualify_recipient
”.
Эта опция применяется ко всем неполным адресам сгенерённым фильтрами exim`a, но для традиционных файлов
“
.forward
” это применяется лишь для адресов не предварённых обратным слешем. Фильтры Sieve не могут генерить неполные адреса.
опция
|
использование
|
тип
|
по-умолчанию
|
qualify_preserve_domain
|
redirect
|
boolean
|
false
|
|
Если установлена эта опция, то локальная опция
“qualify_domain
” не должна быть задана (будет ошибка конфигурации, если задать обе). Если генерится неполный адрес (без домена), он дополняется доменом родительского адреса (предыдущий предок), вместо глобального домена из
“qualify_recipient
”. В случае традиционнго файла
“
.forward
” это применяется вне зависмости от того, был ли перед адресом обратный слэш.
опция
|
использование
|
тип
|
по-умолчанию
|
repeat_use
|
redirect
|
boolean
|
true
|
|
Если эта опция установлена в
“false
”, то роутер пропускается для дочерних адресов, предки которых были отроучены (не смог подобрать слово :))) этим роутером. Это проверяется до проверки других предварительных условий. Дефолтовые правила exim`a против зацикливания пропускаются лишь в случае если предок с таким же адресом как и текущий. Смотрите также
“check_ancestor
” и
“redirect_router
” опции.
опция
|
использование
|
тип
|
по-умолчанию
|
reply_transport
|
redirect
|
string†
|
unset
|
|
Роутер
“redirect
” устанавливает автоответ когда в фильтре используются команды
“mail
” или
“vacation
”. Используемый транспорт определяется этой опцией, которая, после раскрытия, должна быть именем сконфигуренного транспорта. Обычно это транспорт
“autoreply
”. Другие транспорты вряд ли смогут принести какую-то пользу.
опция
|
использование
|
тип
|
по-умолчанию
|
rewrite
|
redirect
|
boolean
|
true
|
|
Если эта опция установлена в
“false
”, адреса сгенерённые маршрутизатором не являются объектами для перезаписи адреса. Иначе, они будут обработаны как новые адреса и перезаписаны в соответствии с глобальными правилами перезаписи.
опция
|
использование
|
тип
|
по-умолчанию
|
sieve_subaddress
|
redirect
|
string†
|
unset
|
|
Значение этой опции передаётся фильтру Sieve для задания части адреса :subaddress.
опция
|
использование
|
тип
|
по-умолчанию
|
sieve_useraddress
|
redirect
|
string†
|
unset
|
|
Значение этой опции передаётся фильтру Sieve для задания части адреса :user. Если она не задана, для :user используется оригинальная локальная часть адреса (включая суффикс и преффикс).
опция
|
использование
|
тип
|
по-умолчанию
|
sieve_vacation_directory
|
redirect
|
string†
|
unset
|
|
Для включения расширения
“vacation
” для фильров Sieve, вы должны задать
“sieve_vacation_directory
” в каталог где находятся БД
“vacation
” (больше ничего не помещайте в эту директорию), и гарантировать, что опция
“reply_transport
” относится к транспорту
“autoreply
”. Каждому пользователю необходим собственный каталог; exim создаст их в случае необходимости.
опция
|
использование
|
тип
|
по-умолчанию
|
skip_syntax_errors
|
redirect
|
boolean
|
false
|
|
Если установлена опция
“skip_syntax_errors
”, синтаксически неправильные адреса, в переназначении вне фильтра, пропускаются, и каждый неудачный алрес записывается в логи. Если установлена опция
“syntax_errors_to
”, то сообщение посылается по заданному в ней адресу с подробностями о неудаче. Если утановлена опция
“syntax_errors_text
”, её содержимое раскрывается и помещается в начале сообщения об ошибке, сгенерённого
“syntax_errors_to
”. Обычно, она принудительно устанавливает
“syntax_errors_to
” к тому же адресу, что и общая опция
“errors_to
”. Опция
“skip_syntax_errors
” часто используется для обработки лисов рассылки.
Если все адреса в списке редиректа пропущены из-за ошибок синтаксиса, роутер отказывается обрабатывать оригинальный адрес, и он передаётся последующим маршрутизаторам.
Если опция
“skip_syntax_errors
” установлена при интерпретации фильра exim`a, любые синтаксические ошибки в фильтре вызывают пропуск без предпринятия какого-либо действия. Инцидент записывается, и маршрутизатор отказывается обрабатывать адрес, и адрес передаётся следующим роутерам.
Любые синтаксические ошибки в фильтрах Sieve, повод для действия
“keep
”. Это действие определено RFC3028. Значения
“skip_syntax_errors
”,
“syntax_errors_to
”, и
“syntax_errors_text
” не используются.
Опция
“skip_syntax_errors
” может использоваться для задания тех ошибок в пользовательских списках перенаправления или файлах фильтра, используемых с адресом который не переадресуется, могут быть использованы для уведомления пользователей об этих ошибках, с помощью такого маршрутизатора:
userforward:
driver = redirect
allow_filter
check_local_user
file = $home/.forward
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
no_verify
skip_syntax_errors
syntax_errors_to = real-$local_part@$domain
syntax_errors_text = \
This is an automatically generated message. An error has\n\
been found in your .forward file. Details of the error are\n\
reported below. While this error persists, you will receive\n\
a copy of this message for every message that is addressed\n\
to you. If your .forward file is a filter file, or if it is\n\
a non-filter file containing no valid forwarding addresses,\n\
a copy of each incoming message will be put in your normal\n\
mailbox. If a non-filter file contains at least one valid\n\
forwarding address, forwarding to the valid addresses will\n\
happen, and those will be the only deliveries that occur. \n\
\n\
Честно говоря, ломает перводить чё тут написано, сами напишете \n\
что захотите :))) Общий смысл - про ошибку в фильтре пользователя, \n\
которому эта мессага и пошлётся.
|
Также, вам необходим роутер, чтобы гарантировать, что локальные адреса у которых распознан преффикс
“real-
”, не форвардятся и не фильтруются. Для примера, его можно поместить сразу перед маршрутизатором
“userforward
”:
real_localuser:
driver = accept
check_local_user
local_part_prefix = real-
transport = local_delivery
|
опция
|
использование
|
тип
|
по-умолчанию
|
syntax_errors_text
|
redirect
|
string†
|
unset
|
|
Смотрите выше, опцию
“skip_syntax_errors
”.
опция
|
использование
|
тип
|
по-умолчанию
|
syntax_errors_to
|
redirect
|
string
|
unset
|
|
Смотрите выше, опцию
“skip_syntax_errors
”.
begin translation by http://exim.org.ua/mailman/listinfo/exim-doc-translation
edit, verification and complete translation by lissyara