27. Транспорт autoreply

Перевод выполнен Алексеем Паутовым в рамках некоммерческого проекта RussianLDP (http://www.rldp.ru/). Именно на этом сайте и надлежит искать новые версии, если таковые будут.

27. Транспорт autoreply

Транспорт autoreply не истинный транспорт, в нём не происходит передачи сообщения. Вместо этого генерится новое почтовое сообщение, как автоматический ответ на входящее сообщение. Включаются строки заголовков References: и Auto-Submitted:. Они создаются согласно правилам RFC 2822 и RFC 3834, соответственно.

Если в роутере, передающем сообщение этому транспорту, не установлена опция unseen, оригинальное сообщение (для текущего получателя) не доставляется куда-либо. Однако, когда в роутере, передающем сообщение этому транспорту, установлена опция unseen, роутинг адреса продолжается таким образом, чтобы другой маршрутизатор мог выполнить нормальную доставку.

Транспорт autoreply обычно запускается как результат почтовой фильтрации, отпускные сообщения являются стандартным примером. Однако, также он может быть выполнен напрямую из роутера, как и любой другой транспорт. Для уменьшения возможных каскадов сообщения, созданные транспортом autoreply, всегда имеют пустого отправителя, как и рикошеты.

Параметры посылаемого сообщения могут быть заданы в конфигурации путём описанных ниже опций. Однако, они используются лишь когда адрес, передаваемый транспорту, не содержит собственной информации ответа. Когда транспорт выполняется как следствие команды mail или vacation в файле фильтра, параметры сообщения, переданные фильтром, передаются вместе с адресом. Транспортные опции, определяющие сообщение, в таком случае игнорируются (таким образом, обычно в этом случае они не устанавливаются). Сообщение полностью определено фильтром или транспортом: они никогда не состоят из смеси этих опций. Однако, опции file_optional, mode и return_message применяются во всех случаях.

Транспорт autoreply осуществляется как локальный транспорт. При использовании его как результат команды в пользовательском файле фильтра, autoreply обычно работает под uid и gid пользователя и с соответствующими текущим и домашним каталогами (смотрите раздел 23).

Есть трудноуловимое различие между роутингом сообщения в транспорт pipe, который генерирует некий текст для возвращения отправителю, и роутингом его в транспорт autoreply. Это различие заметно лишь если обрабатывается более одного адреса в одном сообщении. В случае pipe раздельные выводы от различных адресов собираются и возвращаются отправителю в одном сообщении, тогда как при использовании autoreply для каждого адреса генерируются различные сообщения для передачи.

Непечатные символы не разрешены в строках заголовков, сгенерированных для сообщения, созданного autoreply, за исключением символа новой строки, немедленно сопровождаемого пробелом. Если найдены любые непечатные символы, транспорт задерживается. Глобальная опция print_topbitchars управляет, считать ли символы с установленным высшим битом как печатные или нет. Они не применяются непосредственно к сгенерированному сообщению.

Если любые из общих опций для манипуляции заголовками (например, headers_add) установлена в транспорте autoreply, они применяются к копии оригинального сообщения, включённой в сгенерированное сообщение, когда установлена return_message. Они не применяются непосредственно к сгенрированному сообщению.

Если транспорт autoreply получает от exim код возврата 2 при предоставлении сообщения, указывая, что не было получателей, это не обрабатывается как ошибка. Это означает, что автответы посылались на $sender_address, когда она была пуста (поскольку входящее сообщение рикошет), не вызывая проблем. Они лишь отбрасываются.

27.1. Частные опции для autoreply

Имя
Использование
Тип
Значение по умолчанию
bcc autoreplystring† не задана

Этим определяются адреса, которые должны получать невидимые копии (blind carbon copies) сообщений, когда сообщение определено транспортом.

Имя
Использование
Тип
Значение по умолчанию
ccautoreply string†не задана

Этим определяются получатели сообщения и содержимое заголовка Cc:, когда сообщение определено транспортом.

Имя
Использование
Тип
Значение по умолчанию
file autoreplystring† не задана

Содержимое файла посылается как тело сообщения, когда сообщение определно транспортом. Если установлены обе опции (file и text), более важна текстовая строка.

Имя
Использование
Тип
Значение по умолчанию
file_expand autoreplyboolean ложь

Если это установлено, содержимое указанного опцией file файла подвергается раскрытию строк, и они добавляются в сообщение.

Имя
Использование
Тип
Значение по умолчанию
file_optional autoreplyboolean ложь

Если эта опция истинна, не генерируется ошибка, если файл, названный в опции file или пришедший с адресом, не существует или не читаем.

Имя
Использование
Тип
Значение по умолчанию
from autoreplystring† не задана

Этим определяется содержимое заголовка From:, когда сообщение определено транспортом.

Имя
Использование
Тип
Значение по умолчанию
headers autoreplystring† не задана

Этим определяются дополнительные заголовки, согдасно RFC 2822, которые должны быть добавлены к сообщению, когда сообщение определено транспортом. Можно задать несколько, путём использования \n для их разделения. Проверка их формата отсутствует.

Имя
Использование
Тип
Значение по умолчанию
log autoreplyboolean не задана

Имя этой опции файл, в который записывается каждое посланное сообщение, когда сообщение определено транспортом.

Имя
Использование
Тип
Значение по умолчанию
mode autoreplyoctal integer 0600

Этот режим используется, если создаётся файл протоколов или файл once.

Имя
Использование
Тип
Значение по умолчанию
never_mail autoreplyaddress list† не задана

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

Имя
Использование
Тип
Значение по умолчанию
once autoreplystring† не задана

Эта опция имя файла или БД, в которой сохраняются записи каждого To: получателя, когда сообщение определено транспортом. Отметьте: Это не применяется к получателям Cc: и Bcc:. Если once не задана или установлена в пустую строку, сообщение всегда шлётся. По умолчанию, если once установлена в непустое имя файла, сообщение не шлётся, если потенциальный получатель уже перечислен в БД. Однако, если опция once_repeat определяет время более нуля, сообщение посылается, если прошло столько времени с тех пор, как было послано последнее сообщение этому получателю. Установка нулевого времени в once_repeat (по умолчанию) препятствует повторной отсылке сообщения: в этом случае, ноль указание бесконечности.

Если once_file_size установлена в ноль, база данных DBM используется для запоминания получателей, и этим ей позволяется быть любого необходимого размера. Если once_file_size установлена более нуля, это изменяет способ, которым exim осуществляет опцию once. Вместо использования DBM базы для записи каждого получателя, он использует регулярный файл, который никогда не будет больше установленного размера.

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

Имя
Использование
Тип
Значение по умолчанию
once_file_size autoreplyinteger 0

Смотрите выше опцию once.

Имя
Использование
Тип
Значение по умолчанию
once_repeat autoreplytime† 0s

Смотрите выше опцию once. После раскрытия значение это опции должно быть допустимым значением времени.

Имя
Использование
Тип
Значение по умолчанию
reply_to autoreplystring† не задана

Этой опцией определяется содержимое заголовка Reply-To:, когда сообщение определено транспортом.

Имя
Использование
Тип
Значение по умолчанию
return_message autoreplyboolean ложь

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

Имя
Использование
Тип
Значение по умолчанию
subject autoreplystring† не задана

Эта опция определяет содержимое заголовка Subject:, когда сообщение определено транспортом. Это позволяет указывать оригинальную тему сообщения в автоматических ответах. Например:

subject = Re: $h_subject:

Однако, при выполнении этого существует опасность. Это может позволить третьему лицу подписать Ваших пользователей на списки рассылки при условии, что список принимает рикошеты как подтверждение подписки. Хорошие списки требуют, чтобы подписка подтверждалась не сообщением рикошета, таким образом, опасность относительно невелика.

Имя
Использование
Тип
Значение по умолчанию
text autoreplystring† не задана

Этой опцией определяется одна строка, которая будет использоваться как тело сообщения, когда сообщение определено транспортом. Если заданы text и file, вначале используется text.

Имя
Использование
Тип
Значение по умолчанию
toautoreply string†не задана

Этой опцией определяются получатели сообщения и содержимое заголовка To:, когда сообщение определено транспортом.