25. Группировка адресов в локальных транспортах


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

  • В транспорте appendfile , когда сообщение сохраняется в файл для дальнейшей доставки какими-то другими средствами, сохраняется одна копия сообщения с несколькими адресатами, для экономии места.
  • В транспорте lmtp , при доставке через локальный SMTP другим процессам, сохраняется время, путём доставки одной копии сообщения, и это обычно ожидаемый способ работы LMTP.
  • В транспорте pipe , при передаче сообщения сканирущей программе, или иному доставляющему механизму, типа UUCP, могут быть приемлимы несколько получателей.
       Эти три локальных транспорта имеют те же самые опции для контроля многочисленных (
    batched - пакетных) доставок, именуемых batch_max и batch_id . Для сохранения повторения информации для каждого транспорта, эти опции описаны тут.
       Опция
    batch_max определяет максимальное число адресов, которые могут быть доставлены вместе, в одном запуске транспорта. Её дефолтовое значение - единица (нет пакетной передачи). Когда более одного адреса роутится на транспорт, имеющий значение batch_max больше единицы, адреса доставляются пакетно (т.е. в одном запуске транспорта, с многочисленными получателями), подчиняясь определённым условиям:
  • Если любая опция транспорта содержит ссылку на $local_part - пакетная передача невозможна.
  • Если любая опция транспорта содержит ссылку на $domain , передаются пакетно лишь те адреса, у которых одинаковый домен.
  • Если batch_id установлена, она раскрывается для каждого адреса, и передаются пакетно лишь те адреса, у которых, в результате раскрытия, одинаковое значение. Это позволяет задавать ручные настройки пакетной передачи. Ошибка раскрытия, в любом случае, включая принудительную неудачу, отключает пакетную передачу, но не останавливает доставку.
  • Пакетные адреса также должны иметь одинаковый обратный адрес (для возврата ошибок доставки), одинаквые добавления и удаления заголовков, одного и того же пользователя и группу для транспорта, и если представлен список хостов, первый хост должен быть тем самым хостом.
       В случае транспортов
    appendfile и pipe , пакетная передача применяется к ним обоим, когда файл или команда трубы (pipe command) задана в транспорте, и когда это определено роутером redirect , но, разумеется, все пакетные адреса должны быть направлены в один и тот же файл или команду трубы. Эти два транспорта имеют опцию называемую use_bsmtp , заставляющую их доставлять сообщение в формате пакетного SMTP, с конвертом представленным в команде SMTP. Опции check_string и escape_string приводятся к значениям
    check_string = "."
    escape_string = ".."
    
    
    

    когда используется пакетная SMTP-передача. Полное описание механизма пакетного SMTP дано в разделе 44.10. Транспорт lmtp не имеет опции use_bsmtp , поскольку он всегда доставляет используя SMTP-протокол.
       Общая опция
    envelope_to_add установлена для пакетного транспорта, заголовок Envelope-to: , добавляющийся к сообщению, содержит все адреса, которые обрабатываются вместе. Если вы используете пакетный транспорт appendfile без use_bsmtp , единственный способ сохранить адрес получателя - установить опцию envelope_to_add .
       Если вы используете транспорт
    pipe без BSMTP, и устанавливаете транспортную опцию command , вы должны включить $pipe_addresses как часть команды. Это не истинная переменная, это немного шаманства, позволяющего подставить адреса получателей как раздельные аргументы. Этим предоставляется способ обратиться ко всем адресам, доставляемым в пакете. Отметтьте: Это невозможно для команды трубы, заданной путём роутера redirect .




    =============
    Автор перевода: lissyara, оригинал: http://www.lissyara.su/?id=1200