Секция [Sender]

В секции [Sender] собраны настройки компонента Sender, отвечающего за отправку сообщений. Этой секции конфигурационного файла нет в дистрибутиве программного комплекса, предназначенного для работы с почтовой системой CommuniGate Pro.

UseSecureHash = {логический}

Предписание добавлять к письмам, отправляемым назад в почтовую систему, заголовка-«пометки» X-DrWeb-Hash.

Используется, когда Dr.Web MailD вынужден при модификации писем выполнять процедуру отвергания старого письма с добавлением во входную очередь почтовой системы модифицированной версии письма. В этом случае письмо, поступившее на вход в Dr.Web MailD из почтовой системы и уже имеющее этот заголовок, сразу же, без проверки, отправляется на доставку, а в противном случае оно поступает на проверку. Прохождение повторных проверок может породить зацикливание письма и отказ от его доставки.

Параметр должен использоваться только при работе с почтовыми системами Postfix, Qmail, Sendmail и Zmailer:

При работе Dr.Web MailD с почтовой системой Postfix значение Yes должно быть указано, только если взаимодействие с почтовой системой производится по протоколу Milter (используется модуль drweb-milter). В этом случае все сообщения, сформированные модулем drweb-sender, обрабатываются модулем drweb-milter.

Значение по умолчанию: No

При работе Dr.Web MailD с почтовой системой Qmail или Sendmail значение Yes должно быть указано, если для получения и отправки сообщений используется одна и та же почтовая система.

Значение по умолчанию: Yes

При работе Dr.Web MailD с почтовой системой Zmailer значение Yes должно быть указано, только если drweb-zmailer используется на стадии маршрутизации (например, запускается из process.cf). В этом случае все сообщения, сформированные модулем drweb-sender, обрабатываются модулем drweb-zmailer.

Значение по умолчанию: No

SecureHash = {текст}

Параметр задает содержимое заголовка X-DrWeb-Hash.

Значением параметра может быть произвольная строка, рекомендуемая длина строки – не менее 10 символов. Для повышения безопасности настоятельно рекомендуется изменить значение по умолчанию, указанное для данного параметра.

При работе Dr.Web MailD с почтовой системой Zmailer значение параметра должно совпадать со значением параметра --hash, задаваемого при запуске модуля drweb-zmailer в случае, если эта почтовая система используется на этапе маршрутизации.

Значение по умолчанию:

SecureHash = !!!---------___EDIT_THIS___!!!

StalledProcessingInterval = {время}

Определяет периодичность, с которой компонент Sender проверяет базу данных сообщений на предмет "потерянных" писем с целью их доставки получателю.

"Потерянные" письма – это сообщения, которые были получены и обработаны, но по каким-либо причинам не переданы компоненту Sender на отправку. Такая ситуация может случиться при возникновении проблем с сетью или питанием. При нахождении таких писем компонент Sender ставит их в очередь на отправку.

Также этот тайм-аут используется для повторных запросов к источникам данных из Lookup, используемых в параметре Router (см. ниже), если источники данных оказались недоступны и письмо вследствие этого не может быть доставленным (не может быть получен целевой адрес доставки).

Значение по умолчанию:

StalledProcessingInterval = 10m

SendingIntervals = {время}

Промежутки времени между попытками отправить письма и уведомления, которые не удалось отправить с первой попытки (например, проблемы с сетью, ошибки на принимающей стороне и т.п.)

При работе Dr.Web для почтовых серверов UNIX в синхронном режиме, Sender производит попытку отправки сразу после получения обработанного письма вне зависимости от установленого значения первого интервала. В случае неудачи Sender перейдет к отложенной отправке спустя SendingIntervals. Если в качестве первого значения параметра используется 0, он будет проигнорирован, поскольку попытка отправки письма уже была.

Если Dr.Web для почтовых серверов UNIX работает в асинхронном режиме, попытка отправки письма всегда будет осуществляться согласно интервалам, заданым в значении данного параметра.

Обратите внимание, что все генерируемые уведомления и DSN отправляются только в асинхронном режиме, вне зависимости от того, в каком режиме работает Dr.Web MailD. Поэтому отложенная отправка уведомлений и DSN будет всегда стартовать по времени с первого интервала, указанного в списке SendingIntervals. Поэтому желательно первым интервалом в списке всегда иметь 0s.

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

Если параметр имеет только значение 0s, попытки отложенной отправки осуществляться не будут, а письмо будет сразу перемещено в каталог /out/failed. Также см. замечание в конце раздела.

Значение по умолчанию:

SendingIntervals = 0s, 30s, 60s, 10m, 30m, 2h, 8h, 1d, 1d

Method = {SMTP | LMTP | pipe}

Метод, используемый компонентом Sender для доставки сообщения.

SMTP - сообщения отправляются по протоколу SMTP;

LMTP - сообщения отправляются по протоколу LMTP;

pipe - сообщения отправляются по программному каналу (pipe) внешней почтовой программе.

Значение по умолчанию:

зависит от дистрибутива.

MailerName = {SMTP | Sendmail |
Postfix | CommuniGate |
Qmail | Exim |
Zmailer | Courier}

Имя почтовой системы, работающей совместно с Dr.Web для почтовых серверов UNIX.

Данный параметр используется, если Method = pipe.

Значение по умолчанию:

зависит от дистрибутива.

Address = {адрес}

Адрес MTA, на который компонентом Sender будут отправляться сообщения после проверки.

Если Method = pipe, то в данном параметре следует указать полный путь к внешней почтовой системе, получающей сообщения. При других значениях параметра Method в параметре Address задается сокет, через который отправляются сообщения.

При работе программного комплекса в режиме SMTP/LMTP-прокси кроме стандартных типов адресов, можно также использовать тип mx:HOSTNAME, где HOSTNAME - имя хоста. В случае использования такого типа программный комплекс получает для HOSTNAME все MX-записи и отправляет сообщение в соответствии с ними.

Если указать только префикс mx: без указания имени хоста, то программный комплекс получит и использует для отправки письма MX-записи домена получателя письма (из поля TO конверта письма).

Можно указать несколько адресов для отправки сообщений. Значения разделяются запятой (",").

Значение параметра не может быть пустым даже при использовании маршрутизации (см. параметр Router).

Пример:

Address = inet:25@10.4.0.90, inet:25@10.4.0.91, inet:25@10.4.0.92

В данном примере, в случае если MTA, находящийся по адресу 10.4.0.90, перестанет отвечать, Sender предпримет попытку отправить письмо на адрес 10.4.0.91. В случае неудачной передачи, письмо будет передано на адрес 10.4.0.92.

При большом количестве адресов рекомендуется увеличить значения параметров MaxTimeoutForThreadActivity и IpcTimeout в секции [General] до величины не менее 5 минут, чтобы Sender успел переключиться к последнему адресу в случае отсутствия ответа от предыдущих адресов.

Значение по умолчанию:

зависит от дистрибутива.

PipeTimeout = {время}

Максимальный промежуток времени на получение ответа при использовании pipe.

Значение по умолчанию:

PipeTimeout = 2m

Options = {текст}

Дополнительные параметры для метода pipe. Они передаются почтовой системе, которая получает сообщения.

Значение по умолчанию:

Options =

InPoolOptions = {настройки пула}

Настройки пула потоков для обработки перед очередью.

Обратите внимание, что это параметр устарел и более не используется (изменение его значения не влияет на работу Dr.Web MailD)!

Значение по умолчанию:

InPoolOptions = auto

OutPoolOptions = {настройки пула}

Настройки пула потоков для обработки после очереди.

Значение по умолчанию:

OutPoolOptions = auto

Следующие параметры данной секции конфигурационного файла задаются только при работе программного комплекса с почтовыми системами Exim и Postfix, а также при работе в режиме SMTP/LMTP-прокси:

HeloCmdTimeout = {время}

Максимальный промежуток времени на выполнение команд HELO/EHLO

Значение по умолчанию:

HeloCmdTimeout = 5m

MailFromCmdTimeout = {время}

Максимальный промежуток времени на выполнение команды MAIL.

Значение по умолчанию:

MailFromCmdTimeout = 5m

RcptToCmdTimeout = {время}

Максимальный промежуток времени на выполнение команды RCPT.

Значение по умолчанию:

RcptToCmdTimeout = 5m

DataCmdTimeout = {время}

Максимальный промежуток времени на выполнение команд DATA/BDAT.

Значение по умолчанию:

DataCmdTimeout = 2m

DataBlockTimeout = {время}

Максимальный промежуток времени на отправку тела сообщения.

Значение по умолчанию:

DataBlockTimeout = 3m

EndOfDataTimeout = {время}

Максимальный промежуток времени на получение подтверждения о доставке сообщения.

Значение по умолчанию:

EndOfDataTimeout = 10m

OtherCmdsTimeout = {время}

Максимальный промежуток времени на выполнение остальных команд по протоколу SMTP/LMTP.

Значение по умолчанию:

OtherCmdsTimeout = 2m

SendDSN = {логический}

Разрешает или запрещает отправку DSN в случае возникновения проблем с доставкой письма.

Пожалуйста, обратите внимание, что если Dr.Web MailD работает через Sender не в режиме SMTP/LMTP-прокси, а в режиме интеграции с MTA (Exim, Postfix, Zmailer), нужно быть осторожным при использовании DNS, поскольку в этом случае при задержке отправки письма DSN может быть сгенерирована как Dr.Web MailD (после всех неудачных попыток отправки), так и самим MTA (после истечения тайм-аута ожидания обработанного письма от Dr.Web MailD). В этом случае отправитель письма может получить при возникновении проблем сразу два DSN.

DSN отправляется на доставку в компонент Sender в случае, когда невозможно передать его непосредственно в MTA (к примеру, если в адресе отправителя указано неполное доменное имя) и код возврата невозможно вернуть компоненту Receiver.

Значение по умолчанию:

SendDSN = No

Router = {Lookup}

Правила маршрутизации сообщений в зависимости от доменов, которым принадлежат получатели, используемые при работе Dr.Web MailD в режиме SMTP/LMTP-прокси.

Сообщения, адресованные получателям, находящимся в разных доменах, могут быть отправлены на доставку по разным маршрутам. В данном параметре указывается, на какие адреса следует отправлять письма в различные домены.

Значения параметра задаются в формате DOMAIN ADDRESS, где:

DOMAIN - подстрока, которая должна целиком входить в конверты получателей (конверт имеет вид <user@host>). Осуществляется поиск частичного соответствия, не чувствительный к регистру. Например, подстрока @localhost будет входить в конверты <test@LocalHost> и <yy@localhost.localdomain>, а подстрока @localhost> – только в конверт <test@LocalHost>.

ADDRESS - адреса, на которые будут отправляться сообщения, если подстрока DOMAIN будет целиком найдена в конверте. Формат ADDRESS аналогичен формату параметра Address в данного конфигурационного файла. Возможно указание нескольких адресов с разделением их символом "|", тогда письмо будет доставлено по первому адресу, с которым удалось установить соединение.

Обратите внимание, что порядок указания адресов в списке существенен, поскольку ищется первое подходящее совпадение.

Если для письма, подлежащего отправке, не нашлось соответствия DOMAIN в приведенном списке, для его отправки будет использоваться адрес, указанный в параметре Address. Поэтому значение параметра Address не должно быть пустым (см. замечание ниже, в подразделе Использование Router).

Обратите внимание, что если источники данных, используемые в Lookup, оказались недоступны и письмо вследствие этого не может быть доставленным (не может быть получен целевой адрес отправки), такое письмо окажется "потерянным", и компонент Sender будет совершать повторные попытки его отправки через период StalledProcessingInterval.

Пример:

Router = @main.server.com> mx:main.server.com|inet:25@backup.server.com

В этом случае письма, получатели которых принадлежат домену main.server.com, будут отправлены на адреса, указанные в MX-записи для main.server.com. Если доставить письма не удастся, то система попытается отправить письмо по адресу backup.server.com  на порт 25.

Обратите внимание, что значение параметра – Lookup.

Значение по умолчанию:

Router =

Использование Router

Параметр Router позволяет использовать Lookup (за исключением типов regex, wildcard и rfile).

Пример:

Router = "mysql:select address from senders where user='$u'"

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

Пример:

Router = "ldap:///description?sub?(cn='$d')", domain1.com inet:25@example.com | inet:1025@example.com | inet:2025@example.com, mail.com mx: | inet:25@mail.backup, domain2.com mx:mail.ru | inet:25@mail.backup, "file:/path/to/routers.list"

В данном случае письма будут отправляться на доставку следующим образом:

1)Сначала будет производиться поиск доменного имени отправителя через LDAP (используется атрибут cn, в случае обнаружения параметры перенаправления берутся из поля description).

2)Письма, получатели которых имеют домен domain1.com, будут отправлены по адресу example.com на порт 25. В случае неудачи, будет предпринята попытка передать письма на тот же адрес на порт 1025, а затем на порт 2025.

3)Письма, отправленные адресованные домену mail.com, будут пересылаться  на адреса, соответствующие MX-записи mail.com.

4)Письма, адресованные домену domain2.com, будут перенаправляться на адреса, указанные для MX-записи mail.ru, либо на порт 25 сервера mail.backup.

5)Если адрес отправителя не совпал ни с одним из описанных ранее в правилах, соответствие будет проверено в файле /path/to/routers.list.

Обратите внимание, что каждому конкретному домену в соответствие ставится один адрес, поэтому конструкции подобного вида недопустимы:

Router = domain, domain2 25@host

Перед использованием Lookup в параметре Router рекомендуется проверить его корректность (используйте утилиту drweb-lookup), а также убедиться в доступности используемого источника данных. Если в качестве значения параметра Router используется Lookup с режимом обработки ошибок OnError=exception (определенном либо в настройках используемого источника данных или переопределенном локально, в значении Lookup), то, в случае если будет невозможно получить нужный маршрут из источника данных, эта ситуация будет обработана как ошибка в компоненте Sender, запись о чем будет зафиксирована в журнале. При этом в синхронном режиме компонент Receiver всегда возвращает отправителю письма код SMTP 451 (Requested action aborted: local error in processing), а обработанное письмо будет удалено из всех очередей. В асинхронном режиме письмо будет помечено как "потерянное" и Sender будет пытаться его отправлять с периодичностью, указанной в параметре StalledProcessingInterval.

В случае если письмо не удалось отослать ни на один из найденных адресов, то в зависимости от кода ответа SMTP, который вернет последний MTA:

Sender перейдет к отложенной отправке спустя интервал, указанный в значении параметра SendingIntervals. При отложенной отправке также действуют правила определения целевого MTA, указанные в параметре Router. Если отложенная отправка закончится неудачей, то (если это разрешено в параметре SendDSN) компонент Notifier сгенерирует DSN. Если для домена отправителя, указанного в конверте недоставленного письма, не заданы специальные маршруты (в параметре Router или в Правилаx обработки почты), то данный DSN будет отправлен на адрес, указанный в значении параметра Address.

если последний MTA ответит кодом ошибки SMTP 5**, то DSN будет сгенерирована сразу, а письмо будет удалено из out-очередей. Схема отправки DSN в этом случае аналогична вышеописанному. Если DSN не может быть доставлен, то он будет удален спустя интервал, указанный в значении параметра SendingIntervals.

При определении разных маршрутов для одного и того же домена в Правилаx обработки почты и в параметре Router, будут действовать только маршруты, определенные в Правилах обработки почты.

warning

Даже при настройке маршрутизации всей почты с помощью параметра Router значение параметра Address не должно быть пустым, поскольку в противном случае при старте компонет Sender выведет сообщение об ошибку и завершит свою работу. Это связано с тем, что адрес, указанный в значении параметра Address, используется, если для получателя не будет найдено соответствия в таблице маршрутизации или в Правилах обработки почты.

После того, как компонент Sender исчерпает все попытки отложенной отправки письма, "потерянное" письмо остается в подкаталоге /out/failed каталога хранилища писем навечно, и в дальнейшем его требуется либо явно отправить при помощи утилиты drweb-inject, либо удалить средствами ОС.