Когда сообщение было успешно доставлено через TCP/IP соединение, exim смотрит свою БД подсказок (hints), для нахождения - есть ли какие-либо другие сообщения, ожидающие подключения к тому же самому хосту. Если они есть, для одного из них начинается новый процесс доставки, и текущее TCP/IP соединеие передаётся ему. Новый процесс, в свою очередь, может посылать несколько копий, и, возможно, создать ещё один процесс.
Для каждой копии, посланной по одному и тому же TCP/IP соединению, увеличивается счётчик, и, если его значение когда-либо добирается до
“connection_max_messages
”, по этому подключению сообщения более не посылаются.
30.2 Использование переменных
“$host
” и
“$host_address
”
В начале запуска транспорта
“smtp
”, значения
“$host
” и
“$host_address
” - имя и адрес первого хоста в списке хостов переданном роутером. Однако, когда транспорт собирается соединяться с заданным хостом, и в то время, пока он соединён с этим хостом, в
“$host
” и
“$host_address
” содержат данные этого хоста. Также эти значения находятся в силе, когда раскрыты
“helo_data
”,
“hosts_try_auth
”,
“interface
”
“serialize_hosts
” и различные опции TLS.
30.3 Использование
“$tls_cipher
” и
“$tls_peerdn
”
В начале запуска транспорта
“smtp
”, значения
“$tls_cipher
” и
“$tls_peerdn
” - значения установленные при получении сообщения. Эти значения используются для опций раскрываемых до создания любых SMTP соединений. Просто, до создания любых соединений, эти две переменные - пусты. Если впоследствии запускается TLS, они устанавливаются в соответствующие значения для исходящего соединения, и эти значения остаются в силе при работе любых аутентификаторов и при раскрытии опции
“authenticated_sender
”.
30.4 Частные опции для
“smtp
”
Частные опции транспорта
“smtp
” таковы:
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
address_retry_include_sender
|
smtp
|
boolean
|
истина
|
|
Когда доставка откладывается из-за ответа 4хх на команду RCPT, эта комбинация отправителя и получателя задерживается при последующих обработках очереди. Вы можете задержать получателя без ссылки на отправителя (что и делал exim в более ранних версиях), путём установки
“address_retry_include_sender
” в ложь. Однако, это может вызвать проблемы с серверами которые регулярно отвечают 4xx на команды RCPT.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
allow_localhost
|
smtp
|
boolean
|
ложь
|
|
Когда хост, заданный в
“hosts
” или
“fallback_hosts
” (смотрите ниже), оказывается локальным хостом, или перечислен в
“hosts_treat_as_local
”, по умолчанию, доставка задерживается. Однако, если установлена опция
“allow_localhost
”, exim продолжает производить доставку. Это должно использоваться лишь в специальных случаях, когда конфигурация гарантирует, что в результате не будет петель (например, порт, на который посылается сообщение, слушает иначе сконфигурированный exim).
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
authenticated_sender
|
smtp
|
string†
|
незадана
|
|
Когда exim аутентифицирует клиента, или если истинна опция
“authenticated_sender_force
”, эта опция устанавливает значение для элемента
“AUTH=
” в исходящих командах MAIL, перезадавая любое существующее значение аутентифицированного отправителя. Если раскрытие строки принудительно неудачно, опция игнорируется. Иные ошибки раскрытия вызывают задержку доставки. Если результат раскрытия - пустая строка, она также игнорируется.
Раскрытие успешно после создания исходящего соединения и запуска TLS, если это требуется. Это означает, что
“$host
”,
“$host_address
”,
“$tls_cipher
” и
“$tls_peerdn
” устанавливаются в зависимости от конкретного соединения.
Если SMTP-сессия не аутентифицирована, всё равно происходит раскрытие
“authenticated_sender
” (и может вызывать задержку доставки, если оно неудачно), но элемент
“AUTH=
” в команды MAIL не добавляется, исключая случай, когда истинна опция
“authenticated_sender_force
”.
Эта опция позволяет вам использовать транспорт SMTP в режиме LMTP, для доставки почты Cyrus IMAP, и обеспечения надлежащей локальной части как
“authenticated sender
”, с помощью установки типа:
authenticated_sender = $local_part
|
Это удаляет необходимость в субдиректориях IMAP, для назначения специальных ACL, чтобы позволить прямую доставку в эти субдиректории.
Поскольку ожидаемое использование - типа описанного для Cyrus (когда домен не используется), нет проверки на синтаксис предоставляемого значения.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
authenticated_sender_force
|
smtp
|
boolean
|
ложь
|
|
Если эта опция истинна, значение опции
“authenticated_sender
” используется для элемента
“AUTH=
” в исходящих командах MAIL, когда exim не аутентифицирован, как клиент.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
command_timeout
|
smtp
|
time
|
5m
|
|
Эта опция определяет таймаут для получения ответа на отосланную SMTP команду. Также, это значение используется при ожидании начально приветственного сообщения с удалённого хоста. Это значение должно быть ненулевым.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
connect_timeout
|
smtp
|
time
|
5m
|
|
Эта опция определяет таймаут для функции
“connect()
”, устанавливающей TCP/IP вызов к удалённому хосту. Значение нуля разрешает действовать системному таймауту (обычно - несколько минут). Для какого-либо эффекта, это значение должно быть меньше системного таймаута. Однако, на некоторых системах наблюдалось отсутствие какого-либо системного таймаута, поэтому, дефолтовое значение этой опции - 5 минут, это значение рекомендовано RFC1123.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
connection_max_messages
|
smtp
|
integer
|
500
|
|
Эта опция контролирует максимальное число отдельных сообщений, доставялемых через одно TCP/IP соединение. Если значение равно нулю, нет ограничений. В целях тестирования, это значение может быть перезадано опцией командной строки
“-oB
”.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
data_timeout
|
smtp
|
time
|
5m
|
|
Эта опция определяет таймаут для передачи каждого блока, в части данных, сообщения. Как результат, - полный таймаут зависит от размера сообщения. Значение не должно быть нулём. Также смотрите опцию
“final_timeout
”.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
delay_after_cutoff
|
smtp
|
boolean
|
истина
|
|
Эта опция управляет там, что происходит когда все удалённые адреса для данного домена были недоступны так долго, что для них были было превышено количество повторов.
По умолчанию, если в следующее время повтора ни один из них не был достигнут, адрес возвращается (в виде рикошета - прим. lissyara) без дальнейших попыток доставки. Другими словами, exim задерживает повторы IP адресов после финального времени сокращения до достижения нового времени повтора, и поэтому адрес может сорваться без попыток доставки, когда машина недоступна долгое время. Некоторые люди несчастны от этой перспективы, так что...
Если опция
“delay_after_cutoff
” установлена в ложь, exim ведёт себя по другому. Если все адреса проходят их финальное время сокращения, exim пробует доставить тем адресам, которые не были опробованы с моменты прибытия сообщения. Если они отсутствуют, или все они неудачны, адрес срывается (генерится рикошет - прим. lissyara). Другими словами, при прибытии нового сообщения задержки не происходит, немедленно пробуются адреса с истёкшим сроком, которые не пробовались с момента прибытия сообщения. Если существует продолжающийся поток сообщений к мёртвым хостам, незаданная опция
“delay_after_cutoff
” означает, что будет ещё много попыток доставки на них.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
dns_qualify_single
|
smtp
|
boolean
|
ложь
|
|
Если используются опции
“hosts
” и
“fallback_hosts
”, и опция
“gethostbyname
” - ложна, то установлена опция RES_DEFNAMES, резольвера. Для дополнительных деталей, смотрите опцию
“qualify_single
”, в разделе 17.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
dns_search_parents
|
smtp
|
boolean
|
ложь
|
|
Если используются опции
“hosts
” и
“fallback_hosts
”, и опция
“gethostbyname
” - ложна, то установлена опция RES_DNSRCH, резольвера. Для дополнительных деталей, смотрите опцию
“qualify_single
”, в разделе 17.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
fallback_hosts
|
smtp
|
string list
|
незадана
|
|
К этой опции не применяется раскрытие строк. Аргумент должен быть списком имён хостов, или IP-адресов, разделённых двоеточиями, также, опционально, включается номер порта, разделитель может быть изменён, как описано в разделе 6.19. Каждый отдельный элемент списка - тоже самое, что и элемент в установке
“route_list
” для
“manualroute
”, как описано в разделе 20.5.
Аварийные (резервные, чтоли... - прим. lissyara) хосты, также могут быть определены в роутерах, которые ассоциированы с обрабатываемыми адресами. Что используется для опции
“hosts
” без заданных в транспорте
“hosts_override
” и
“fallback_hosts
” лишь если адрес не обладает собственным ассоциированным аварийным списком хостов. В отличие от
“hosts
”, установка для адреса
“fallback_hosts
” не перезадаётся путём
“hosts_override
”. Однако,
“hosts_randomize
” обращается к спискам аварийных хостов.
Если exim не может доставить на любой хост для специфического адреса, и ошибки - не постоянные отклонения, адрес помещается в отдельную транспортную очередь, со своим списком хостов, заменённым аварийными хостами, кроме адресов которые роутятся через MX-записи и текущий хост был в изначальном списке MX. В этой ситуации, список аварийных хостов не используется.
Как только завершены нормальные доставки, аварийная очередь доставляется путем повторного запуска тогоже транспорта с новыми списками хостов. Если несколько неудачных адресов имеют одинаковый аварийный хост (и это разрешается опцией
“max_rcpt
”), посылается одна копия сообщения.
Разрешение имён хостов в аварийном списке контролируется опцией
“gethostbyname
”, как для опции
“hosts
”. Аварийные хосты применяются в обоих случаях, когда список хостов прибывает с адресом, и когда он берётся из
“hosts
”. Эта опция обеспечивает средство
“use a smart host only if delivery fails
” (использовать умные хосты лишь когда неудачна доставка).
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
final_timeout
|
smtp
|
time
|
10m
|
|
Это - таймаут, который применяется когда ожидается заключительная строка, содержащая лишь
“.
”, завершая сообщение. Это значение не должно быть нулём.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
gethostbyname
|
smtp
|
boolean
|
ложь
|
|
Если эта опция истинна, когда используются опции
“hosts
” и/или
“fallback_hosts
”, имена ищутся используя
“gethostbyname()
” (или
“getipnodebyname()
”, когда доступна), вместо использования DNS. Разумеется, эта функция, может, фактически, использовать DNS, но она, также, может консультироваться с другими источниками информации, типа
“/etc/hosts
”.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
gnutls_require_kx
|
smtp
|
string
|
незадана
|
|
Эта опция контролирует механизм обмена ключами при использовании GnuTLS в клиенте exim. За дополнительными деталями обратитесь к секции 39.5.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
gnutls_require_mac
|
smtp
|
string
|
незадана
|
|
Эта опция контролирует алгоритм MAC при использовании GnuTLS в клиенте exim. За дополнительными деталями обратитесь к секции 39.5.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
gnutls_require_protocols
|
smtp
|
string
|
незадана
|
|
Эта опция контролирует протоколы при использовании GnuTLS в клиенте exim. За дополнительными деталями обратитесь к секции 39.5.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
gnutls_compat_mode
|
smtp
|
string
|
незадана
|
|
Эта опция контролирует когда GnuTLS используется в совместимом режиме в сервере exim. Это уменьшает безопасность, но улучшает совместимость со старыми реализациями TLS.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
helo_data
|
smtp
|
string†
|
$primary_hostname
|
|
Зачение этой опции раскрывается после установки подключения к другому хосту. Результат используется как аргумент для команды EHLO, HELO, или LHLO, запускающей исходящую SMTP или LMTP сессии. Значение по умолчанию:
В процессе раскрытия переменные
“$host
” и
“$host_address
” устанавливается данные удалённого хоста, и переменные
“$sending_ip_address
” и
“$sending_port
” устанавливаются в используемые локальный IP адрес и номер порта. Эти переменные могут использоваться для генерации различных значений для различных серверов или различных локальных IP адресов. Например, если вы хотите чтобы строка используемая для
“helo_data
” была получена путём поиска в DNS адреса исходйщего интерфейса, вы можете использовать это:
helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}\
{$primary_hostname}
|
Использование
“helo_data
” применяется в обоих случаях - при отправке сообщений и при выполнении обратных вызовов (callout).
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts
|
smtp
|
string list†
|
незадана
|
|
Хосты ассоциированы с адресом при помощи роутера типа
“dnslookup
”, который ищёт хосты поиском домена адреса в DNS, или путём
“manualroute
”, имеющего списки хостов в конфигурации. Однако, почтовые адреса могут быть переданы транспорту
“smtp
” при помощи любого роутера, и не все они могут обеспечить ассоциированный список хостов.
Опция
“hosts
” задаёт список хостов, используемых если обрабатываемый адрес не имеет связанных с ним ассоциированных хостов. Также, хосты определённые в
“hosts
” используются при заданной опции
“hosts_override
”, независимо от того, заданы ли собственные хосты адреса или нет.
Вначале строка раскрывается, до интерпретации как списка имён хостов, или IP-адресов разделённых двоеточиями, с возможным включением номера порта. Разделитель может быть изменён на что-то иное, чем двоеточие, как описано в разделе 6.19. Каждый отдельный элемент списка - тоже самое, что и элемент в установке
“route_list
” для
“manualroute
”, как описано в разделе 20.5. Однако, отметьте, что средство
“/MX
”, роутера
“manualroute
”, тут недоступно.
Если раскрытие неудачно, доставка задерживается. Исключая ошибку, вызыванную неспособностью завершить поиск, ошибка логгируется в лог паники, также как и в главный лог. Имена хостов ищутся или путём непосредсвенного поиска записи адреса в DNS, или путём вызова
“gethostbyname()
” (или
“getipnodebyname()
”, когда она доступна), в зависимости от установки опции
“gethostbyname
”. Когда exim скомпилен с поддержкой IPv6, если хост, который ищется в DNS, имеет оба адреса - IPv4 и IPv6, используются оба типа адреса.
В процессе доставки, хосты пробуются в порядке подчиняющемся их статусу повтора, если не задана опция
“hosts_randomize
”.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_avoid_esmtp
|
smtp
|
host list†
|
незадана
|
|
Эта опция - для использования с кривыми хостами, которые объявляют средства ESMTP (например PIPELINING), и, затем, не в состоянии осуществить их должным образом. Когда хост совпадает с
“hosts_avoid_esmtp
”, exim посылает HELO, а не EHLO, в начале сеанса SMTP. Это означает, что не могут использоваться какие бы то ни было ESMTP средства, типа AUTH, PIPELINING, SIZE, и STARTTLS.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_avoid_pipelining
|
smtp
|
host list†
|
незадана
|
|
Exim не использует расширение SMTP PIPELINING когда производит доставку на любой хост из этого списка, даже если хост объявлял поддержку PIPELINING.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_avoid_tls
|
smtp
|
host list†
|
незадана
|
|
Exim не пытается начать TLS-сессию, когда происходит доставка на любой хост совпадающий с этим списком. Для получения дополнительных деталей о TLS, смотрите раздел 39.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_max_try
|
smtp
|
integer
|
5
|
|
Эта опция ограничивает число IP-адресов, которые пробуются для любой одной доставки, в случае когда происходят временные ошибки доставки. Раздел 30.5 описывает её использование, и зачем она нужна.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_max_try_hardlimit
|
smtp
|
integer
|
50
|
|
Это - дополнительная проверка на максимальное число IP-адресов, которые exim пробует для любой одной доставки. Раздел 30.5 описывает её использование, и зачем она нужна.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_nopass_tls
|
smtp
|
host list†
|
незадана
|
|
Для любых хостов, которые совпадают с этим списком, соединение на котором была начата TLS-сессия, не будет передаваться новому процессу доставки для посылки иного сообщения в той же самой сессии. Для объяснений, когда это может быть необходимо, смотрите раздел 39.10.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_override
|
smtp
|
boolean
|
ложь
|
|
Если эта опция установлена, и, также, установлена опция
“hosts
”, то любые хосты присоединённые к адресу игнорируются, и вместо них всегда используются хосты заданные в опции
“hosts
”. Эта опция не применяется к
“fallback_hosts
”.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_randomize
|
smtp
|
boolean
|
ложь
|
|
Если эта опция установлена, и, или список хостов взят из опции
“hosts
” или
“fallback_hosts
”, или хосты предоставленные роутером не были получены из MX-записей (это включает аварийные хосты из роутера), и не были рандомизированы (изменён их порядок, случайным образом - прим. lissyara) роутером, то порядок опробования хостов рандомизируется каждый раз при запуске транспорта. Перемешивание порядка списка хостов может использоваться для грубого распределения нагрузки.
Когда опция
“hosts_randomize
” - истинна, список хостов может быть разбит на группы, порядок которых перемешивается отдельно. Это позволяет установить MX-like поведение. Границы между группами обозначены элементом, который просто
“+
” в списке хостов. Например:
hosts = host1:host2:host3:+:host4:host5
|
Порядок трёх первых и порядок последних двух хостов перемешивается для каждого использования, но первые три всегда завершаются до двух последних. Если опция
“hosts_randomize
” не установлена, элемент списка
“+
” - игнорируется.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_require_auth
|
smtp
|
host list†
|
незадана
|
|
Эта опция предоставляет список серверов, для которых должна произойти успешная аутентификация до того, как exim попробует передать сообщение. Если аутентификация неудачна для серверов которые не в этом списке, exim пробует отослать без аутентификации. Если аутентифкация неудачна для одного из серверов в списке, - доставка задерживается. Эта временная ошибка обнаружима в правилах повторов, таким образом, она может быть превращена жёсткую ошибку, если это требуется. Также смотрите опцию
“hosts_try_auth
”, и раздел 33 - для получения дополнительных деталей о аутентификации.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_require_tls
|
smtp
|
host list†
|
незадана
|
|
Exim будет настаивать на использовании сессии TLS, когда доставляет к любому хосту который совпадает с этим списком. Смотрите раздел 39, для получения дополнительных деталей о TLS. Отметьте: Эта опция затрагивает лишь исходящую почту. Для применения TLS ко входящим сообщениям, используйте соответствующую ACL.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
hosts_try_auth
|
smtp
|
host list†
|
незадана
|
|
Эта опция предоставляет список серверов, которым exim пытается аутентифицироваться, когда соединяется как клиент, если эти сервера объявляли о поддержке аутентификации. Если аутентификация неудачна, exim пробует передать сообщение неаутентифицировавшись. Также смотрите опцию
“hosts_require_auth
”, и раздел 33 - для получения дополнительных деталей о аутентификации.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
interface
|
smtp
|
string list†
|
незадана
|
|
Эта опция определяет, какие интерфейсы будут использоваться при создании исходящего SMTP-вызова. Значение - IP адрес, а не имя интерфейса, типа
“xl0
”. Не перепутайте с адресом интерфейса который используется при получении сообщения, находящегося в
“$received_ip_address
”, ранее известной как
“$interface_address
”. Имя было изменено для минимизации путаницы с адресом исходящего интерфейса. Нет переменной которая содержит адрес исходящего интерфейса, по причине что если он не задан этой опцией - его значение неизвестно.
В процессе раскрытия опции
“interface
” переменные
“$host
” и
“$host_address
” ссылаются на хост, к которому будет производиться подключение. Принудительная неудача раскрытия, или результат в виде пустой строки, вызывают игнорирование этой опции. Иначе, после раскрытия, строка должна быть списком IP-адресов, по дефолту разделённых двоеточиями, но разделитель может быть изменён обычным способом. Например:
interface = <; 192.168.123.123 ; 3ffe:ffff:836f::fe86:a061
|
Первый интерфейс корректного типа (IPv4 или IPv6) - используется для исходящего соединения. Если ни один из них не явялется интерфейсом правильного типа, опция игнорируется. Если опция
“interface
” не установлена, или игнорируется, то системные IP-функции выбирают, какой интерфейс использовать, если у хоста их более одного.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
keepalive
|
smtp
|
boolean
|
истина
|
|
Эта опция контролирует установку SO_KEEPALIVE на исходящих сокетах соединения TCP/IP. Когда она установлена, она заставляет ядро периодически исследовать неактивные соединения, путём отправки пакета со
“старым
” номером последовательности. Другой конец подключения должен послать подтверждение, если с подключением всё в порядке, или сброс, если подключение было прервано. Причина этого в том, что оказывается благоприятное воздействие освобождения некоторых типов подключений, которые могут
“застрять
”, когда удалённый хост отключается, не разрывая TCP/IP соединение должным образом. Механизм
“keepalive
” может занять несколько часов, для обнаружения недостижимых хостов.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
lmtp_ignore_quota
|
smtp
|
boolean
|
ложь
|
|
Если эта опция истинна, когда опция
“protocol
” установлена в
“lmtp
”, строка
“IGNOREQUOTA
” добавляется у команде RCPT, при условии, что LMTP-сервер информировал о поддержке IGNOREQUOTA в его ответе на команду LHLO.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
max_rcpt
|
smtp
|
integer
|
100
|
|
Эта опция ограничвает число команд RCPT, которые послылаются в одной SMTP-транзакции. Каждый установленный адрес обрабатывается независимо, и, таким образом, может вызывать параллельные подключения к одному и тому же хосту, если это разрешается опцией
“remote_max_parallel
”.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
multi_domain
|
smtp
|
boolean
|
истина
|
|
Когда эта опция установлена, транспорт
“smtp
” может обрабатывать множество адресов, содержащих смесь различных доменов, если все они резольвятся в один и тот же список хостов. Выключение опции ограничивает транспорт обработкой лишь одного домена одновременно. Это полезно, если вы хотите использовать
“$domain
” в раскрытии для транспотра, поскольку она установлена лишь когда один домен вовлечён в удалённую доставку.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
port
|
smtp
|
string†
|
смтрите ниже
|
|
Эта опция определяет TCP/IP порт на сервере, с котрым соединяется exim.
Примечание: Не перепутайте её с портом который используется при приёме сообщения,
“$received_port
”, ранее известной как
“$interface_port
”. Имя изменено для минимизации ошибок с исходящим портом. Переменная содержащая исходящий порт - остутствует.
Если значение опции начинается с цифры, оно берётся как номер порта; иначе, оно ищется с использованием
“getservbyname()
”. Обычно, дефолтовое значение -
“smtp
”, но, если протокол установлен как
“lmtp
”, значение по умолчанию -
“lmtp
”. Если раскрытие неудачно, или если не может быть найден номер порта, доставка задерживается.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
protocol
|
smtp
|
string
|
smtp
|
|
Если эта опция установлена в
“lmtp
” вместо
“smtp
”, значение по умолчанию для опции
“port
” изменяется на
“lmtp
”, и транспорт опрерирует протоколом LMTP (RFC2033), вместо SMTP. Этот протокол иногда используется для локальных доставок в закрытое хранилища сообщений. Exim, также, поддерживает выполнение LMTP через трубу к локальному процессу - смотрите раздел 28.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
retry_include_ip_address
|
smtp
|
boolean
|
истина
|
|
Exim, обычно, включает оба - имя хоста и IP-адрес в ключ, создаваемый для индексирования данных повторов, после временной неудачи доставки. Это означает, что когда один или несколько IP-адресов для хоста неудачны, он проверяет их периодически (управляемый правилами повторов), но использование других IP-адресов - не затрагивается.
Однако, в некоторых окружающих средах dialup-хостов, назначается другой адрес при каждом соединении. В этой ситуации, использование IP-адреса как части ключа повторов приводит к нежелательным результатам. Установка этой опции в ложь, заставляет exim использовать только имя хоста. Обычно, это должно делаться на отдельном
“smtp
” транспорте, устанавливаемом специально для обработки dialup-хостов.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
serialize_hosts
|
smtp
|
host list†
|
незадана
|
|
Поскольку exim работает в распределённой манере, если несколько сообщений для одного хоста прибывают одновременно, может произойти более одного подключения к удалённому хосту. Обычно, это не проблема, кроме случаев, когда между хостами медленная связь. В этом случае, может быть полезным ограничить exim одним соединением одновременно. Это может быть сделано путём установки опции
“serialize_hosts
”, чтобы она совпадала с этими хостами.
Exim осуществляет упорядочивание посредством базы данных подсказок (hints), в которую вносятся записи каждый раз, когда процесс соединяется с одним из ограниченных хостов. Запись удаляется после завершения соединения. Очевидно, есть возможность для оставления ложных записей, если происходит системный или програмный сбой. Для принятия мер против этого, exim игнорирует любые записи старше шести часов.
Если вы устанавливаете этот вид упорядочивания, вы, также, должны принять меры для удаления БД подсказок (hints) при каждой перезагрузке системы. Имена файлов начинаются с
“misc
”, и они хранятся в директории
“spool/db
”. Могут быть один, или два файла, в зависимости от типа используемой DBM. Те же самые файлы используются для упорядочивания ETRN.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
size_addition
|
smtp
|
integer
|
1024
|
|
Если удалённый сервер SMTP указывает, что он поддерживает опцию SIZE в команде MAIL, exim использует её для передачи размера сообщения, в начале SMTP-транзакции. Этой опцией добавляется значение
“size_addition
” к передаваемому значению, для учёта заголовков и другого текста, который может быть добавлен, в процессе доставки, конфигурационными опциями, или в транспортном фильтре. Может возникнуть необходимость увеличить это значение, если к сообщениям добавляется много текста.
Альтернативно, если установлено отрицательное значение опции
“size_addition
”, оно вообще отключает использование опции SIZE.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
tls_certificate
|
smtp
|
string†
|
незадана
|
|
Значение этой опции должно быть абсолютным путём к файлу, содержащему клиентский сертификат, для возможного использования при посылке сообщения через зашифрованное соединение. В процессе раскрытия, значения
“$host
” и
“$host_address
” устанавливаются в имя и адрес сервера. Смотрите раздел 39, для получения дополнительных деталей о TLS.
Отметьте: Эта опция должна быть задана, если вы хотите, чтобы exim мог использовать TLS-сертификаты при отправке сообщений как клиент. Глобальная опция, с тем же самым именем, задаёт сертификат для exim`a как сервера; не предполагается, автоматически, что тот же самый сертификат должен использоваться при работе exim`a как клиента.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
tls_crl
|
smtp
|
string†
|
незадана
|
|
Эта опция определяет список аннулированных сертификатов. Раскрытое значение должно быть именем файла, содержащего CRL в формате PEM.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
tls_privatekey
|
smtp
|
string†
|
незадана
|
|
Значение этой опции должно быть абсолютным путём к файлу, содержащему частный ключ клиента. Это используется при отправке сообщения через шифрованное соединение, используя клиентский сертификат. В процессе раскрытия, значения
“$host
” и
“$host_address
” устанавливаются в имя и адрес сервера. Если эта опция незадана, или раскрытие принудительно неудачно, или результат - пустая строка, предполагается, что частный ключ находится в том же файле, что и сертификат. Смотрите раздел 39, для получения дополнительных деталей о TLS.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
tls_require_ciphers
|
smtp
|
string†
|
незадана
|
|
Значение этой опции должно быть списком разрешённых наборов шифров, для использования при установке исходящего шифрованного соединения. (Есть глобальная опция, с тем же самым именем, для контроля входящих соединений.) В процессе раскрытия, значения
“$host
” и
“$host_address
” устанавливаются в имя и адрес сервера. Смотрите раздел 39, для получения дополнительных деталей о TLS; отметьте, что эта опция используется по разному OpenSSL и GnuTLS (смотрите разделы 39.4 и 39.5). Для GnuTLS, порядок шифров - предпочтительный порядок.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
tls_tempfail_tryclear
|
smtp
|
boolean
|
истина
|
|
Когда хост сервера не находится в
“hosts_require_tls
”, и есть проблема в установке TLS-сессии, эта опция определяет, должен ли exim пытаться доставить незашифрованное соединение. Если она установлена в ложь, доставка к текущему хосту задержана; если есть другие хосты - пробуются они. Если эта опция установлена в истину, exim пытается доставить нешифрованное сообщение, после 4xx ответа на STARTTLS. Также, если STARTTLS принят, но последующие переговоры TLS неудачны, exim закрывает текущее соединение (поскольку оно находится в неопределённом состоянии), открывает новое, к тому же самому хосту, и пытается осуществить чистую (видимо - нешифрованную - прим. lissyara) доставку.
Имя
|
Использование
|
Тип
|
Дефолтовое значение
|
tls_verify_certificates
|
smtp
|
string†
|
незадана
|
|
Значение этой опции должно быть абсолютным путём к файлу, содержащему разрешённые серверные сертификаты, для использования при установке шифрованного подключения. Альтернативно, если вы используете OpenSSL, вы должны установить
“tls_verify_certificates
” в имя директории, содержащей файлы сертификатов. Это не работает с GnuTLS; эта опция должны быть установлена в имя одного файла, если вы используете GnuTLS. В процессе раскрытия, значения
“$host
” и
“$host_address
” устанавливаются в имя и адрес сервера. Смотрите раздел 39, для получения дополнительных деталей о TLS.
30.5 Как ограничить число хостов используемых для проверки
Есть две опции, которые связаны с числом хостов, которые проверяются при SMTP доставке. Это
“hosts_max_try
” и
“hosts_max_try_hardlimit
”.
Опция
“hosts_max_try
” ограничивает число хостов, которые пробуются за за одну доставку. Однако, несмотря на термин
“хост
” в её названии, опция, фактически, применяется независимо к каждому IP-адресу. Другими словами, многоадресные (тут применялось другое словечко - multihomed, но думаю, так будет ясней - прим. lissyara) хосты обрабатываются как несколько независимых хостов, точно так же как и для повторов.
Многие из больших ISP (Internet Service Provider, провайдеров интернета - прим. lissyara) имеют много MX-записей, часто указвающих на многоадресные хосты. Как результат, список дюжины и более IP-адресов может быть создан в результате маршрутизации одного из этих доменов.
Пробовать каждый отдельный адрес в таком длинном списке - не самая разумная идея; если несколько адресов вверху списка неудачны, разумно предположить, что существует какая-то проблема, затрагивающая их все. Грубо говоря, значние
“hosts_max_try
” - максимальное число, пробуемое до задержки доставки. Однако, логика не может быть простой.
Во-первых, IP-адреса пропускаются, поскольку не пришло их время повтора, и кроме того, адреса, время повтора которых не подошло, также не подсчитываются. Это означает, что когда некоторые адреса доходят до их времени повтора, может быть попробовано более одного значения
“hosts_max_try
”. Причина такого поведения заключается в необходимости гарантировать, что все IP-адреса рассмотрены до таймаута почтового адреса (но, смотрите ниже, для исключений).
Во-вторых, когда достигнут предел
“hosts_max_try
”, exim просматривает вниз список хостов, чтобы найти есть ли последующие хосты с иным (более высоким) значением MX. Если они есть, этот хост рассматривается следующим, и текущий IP-адрес используется, но не подсчитывается. Это поведение - помощь в случае, когда домен с правилами повтора, которые почти никогда не задерживают никакие хосты, как - сейчас будет объяснено:
Рассмотрите случай длинного списка хостов, с одним значением MX, и нескольких с более высоким значением MX. Если
“hosts_max_try
” - маленькое (значение по умолчанию - 5), вначале будут опробованы лишь несколько хостов вверху списка. С дефолтовыми правилами повторов, определяющими увеличивающееся время повтора, в конечном счёте, пробуются более высокие MX-хосты, после того, как те, что наверху списка пропущены, поскольку они не достигли их времени повтора.
Однако, это, - обычная практика для помещения короткого фиксированного времени повтора в доменах крупных ISP, на том основании, что что их сервера редко лежат очень долго. К сожалению, они - как раз те домены, которые имеющеи тенденцию к резольвингу в длинные списки хостов. Короткое время повтора - что самые самые маленькие MX-хосты пробуются чаще всего. Попытки могут быть в различном порядке, из-за случайной сортировки, но без специальной проверки MX, высшие MX-хосты бы никогда не пробовались, до тех пор, пока все низшие MX-хосты имеют таймаут (который может быть несколько дней), поскольку всегда есть каки-либо низшие MX-хосты, с наступившим временем повтора. Со специальной проверкой, exim рассматривает по крайней мере один IP-адрес от каждого значения MX, при каждой попытке доставки, даже если уже был достигнут предел
“hosts_max_try
”.
Вышеупомянутая логика означает, что
“hosts_max_try
” - не является жёстким пределом, и в частности, обычно, exim пробует все адреса, до таймаута адреса электронной почты. Когда
“hosts_max_try
” была осуществлена, это казалось разумной вещью. Однако, недавно, некоторые сумашедшие конфигурации DNS были установлены с сотнями IP-адресов для некоторых доменов. Это, действительно, может занять очень длительное время для таймаута адресов, в этих случаях.
Опция
“hosts_max_try_hardlimit
” была добавлена для помощи при таких проблемах. Exim никогда не пробует больше этого числа IP-адресов; если он достигает этого предела, и у всех них был таймаут, почтовый адрес срывается (генерится рикошет - прим. lissyara), даже несмотря на то, что не все возможные IP-адреса были попробованы.
=============
translated by lissyara
verifying by Gerk
Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.