приветствую
тут недавно dawnshade сподвиг меня посмотреть на DCC, в том числе
применительно к работе с ним непосредственно из exim.
как оказалось позже, поддержка DCC в exim реализована таким образом, что
решение принимается только на основании $dcc_result, при этом
$dcc_header используется только для добавления полей заголовков.
при этом достаточно большое количество спамовых писем в ходе тестовых
проверок не было опознано как спам.
после изучения механизма взаимодействия SpamAssassin и dccifd путем
анализа исходного текста Mail::SpamAssassin::Plugin::DCC стало ясно, что
принимать решение о том, является ли письмо массовым, имеет смысл только
путем анализа значений параметров Body, Fuz1 и Fuz2 поля
X-DCC-URT-Metrics, значение которого exim присваивает переменной
$dspam_result.
также в ходе тестов стало ясно, что использовать DCC как основной
контент сканер не имеет смысла, т. к. с помощью технологии проверки
контрольных сумм писем можно выявить только действительно массированные
рассылки спамеров.
поэтому можно считать, что поддержка работы с DCC в паровозе реализована
для пополнения коллекции поддерживаемых контент сканеров.
итак, для включения использовании DCC (а точнее dccifd) нужно внести
значение DCC в переменную confCONTENT_SCANNING (можно через пробел
указать это значение после перечисления уже используемых контент сканеров):
define(`confCONTENT_SCANNING', `SPAMASSASSIN KAS3 DCC')
далее следует указать адрес сокета dccifd:
define(`confDCC_ADDRESS', `/usr/local/dcc/dccifd')
по умолчанию в случае временных ошибок dccifd письмо будет принято. если
в таких случаях нужно возвращать отправителю временную ошибку, нужно
указать это в переменной confDCC_DEFER_OK:
define(`confDCC_DEFER_OK', `NO')
действие, которое должен предпринять exim в том случае, если DCC
опознает письмо как массовое, указывается в переменной confDCC_ACTION.
возможные значения этой переменной такие же, как для других контент
сканеров, они приведены в m4/conf.default, поэтому приводить их здесь не
имеет особого смысла.
на этапе тестирования можно использовать значение WARN. оно не
документировано, позволить проверить письмо, результат проверки будет
указан в поле X-DCC-Info.
теперь о том, что касается самой процедуры принятия решения о том,
является ли письмо массовым. пока такое решение принимается в том
случае, если один из трех выше указанных параметров поля
X-DCC-URT-Metrics имеет значение many. значение $dcc_result игнорируется
как бесполезное, ибо в результате достаточно большого количества тестов
мне не удалось получить значения, отличного от "A", предписывающего
принять письмо.
если DCC окажется хоть сколько-нибудь эффективным, процедура будет
усложена путем сравнения значения каждого параметра из поля
X-DCC-URT-Metrics с максимально допустимым значением. максимально
допустимые значения полей можно будет указать в site/conf в качестве
значений переменных confDCC_BODY_MAX, confDCC_FUZ1_MAX, confDCC_FUZ2_MAX.
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694 nic-handle: CRV2-RIPE, CRV-UANIC