The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

DKIM подписание средствами Postfix и Amavisd-new (spam dkim mail freebsd postfix amavis spamassassin)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: spam, dkim, mail, freebsd, postfix, amavis, spamassassin,  (найти похожие документы)
From: SergeySL <sergeysl58@gmail.com.> Date: Mon, 6 Nov 2010 17:02:14 +0000 (UTC) Subject: DKIM подписание средствами Postfix и Amavisd-new Оригинал: http://www.sergeysl.ru/freebsd-dkim-amavisd-new-spamassassin/ Постановка задачи ----------------- Применение DKIM верификации упрощает идентификацию легитимных сообщений и блокировку маскируемого под них СПАМа. Последние версии Amavisd-new и SpamAssassin имеют в своем составе средства DKIM верификации, которые могут использоваться как по отдельности, так и совместно. Также DKIM-Reputation Open Data Project и Mark Martinec предлагают альтернативные плагины DKIM верификации для SpamAssassin, обеспечивающие использование данных о репутации отправителей, получаемых с сервера DKIM-Reputation Open Data Project. Ниже рассмотрена интеграции всех перечисленных способов DKIM верификации в существующую систему защиты от СПАМа. Исходные данные Имеется сервер с FreeBSD, на котором кроме всего прочего развернута почтовая система, имеющая примерно такую же подсистему защиты от СПАМа, как Почтовая система среднего офиса на базе Postfix. Все программное обеспечение установлено из портов, альтернативные модули DKIM загружены с сайтов разработчиков. Во избежание возможных недоразумений отмечу, что я использовал FreeBSD 7.2, Amavisd-new 2.6.4_2,1 и SpamAssassin 3.2.5_4. Все имена папок и файлов соответствуют стандартным значениям, используемым по умолчанию при установке программного обеспечения из портов. DKIM верификация средствами Amavisd-new Для того, чтобы Amavisd-new выполнял DKIM верификацию сообщений, необходимо добавить в файл /usr/local/etc/amavisd.conf строку: $enable_dkim_verification = 1; В зависимости от принадлежности отправителей сообщений, содержащих успешно проверенные сигнатуры DKIM, к тем или иным доменам Amavisd-new позволяет использовать различные банки политик, определяющие процесс обработки сообщений. Например, для отправителей, имеющих безупречную репутацию, можно отключить все проверки (я не рекомендую отключать проверку на вирусы), для относительно надежных отправителей можно определить значения репутаций, которые будут влиять на итоговые оценки, выставляемые сообщениям по результатам проверки на принадлежность к СПАМу, все остальные сообщения можно по-прежнему проверять согласно банку политики по умолчанию. Для понимания сказанного рассмотрим пример, приведенный в документе amavisd-new-2.6.4 release notes: $policy_bank{'WHITELIST'} = { bypass_spam_checks_maps => [[http://www.sergeysl.ru/feed/ ,]] spam_lovers_maps => [[http://www.sergeysl.ru/feed/ ,]] }; $policy_bank{'MILD_WHITELIST'} = { score_sender_maps => [ { '.' => [-1.8] } ], }; $policy_bank{'NOBANNEDCHECK'} = { bypass_banned_checks_maps => [[http://www.sergeysl.ru/feed/ ,]] banned_files_lovers_maps => [[http://www.sergeysl.ru/feed/ ,]] }; @author_to_policy_bank_maps = ( { # 'friends.example.net' => 'WHITELIST,NOBANNEDCHECK', # 'user1@cust.example.net' => 'WHITELIST,NOBANNEDCHECK', '.ebay.com' => 'WHITELIST', '.ebay.co.uk' => 'WHITELIST', 'ebay.at' => 'WHITELIST', 'ebay.ca' => 'WHITELIST', 'ebay.de' => 'WHITELIST', 'ebay.fr' => 'WHITELIST', '.paypal.co.uk' => 'WHITELIST', '.paypal.com' => 'WHITELIST', # author domain signatures './@paypal.com' => 'WHITELIST', # 3rd-party sign. by paypal.com 'alert.bankofamerica.com' => 'WHITELIST', 'amazon.com' => 'WHITELIST', 'cisco.com' => 'WHITELIST', '.cnn.com' => 'WHITELIST', 'skype.net' => 'WHITELIST', 'welcome.skype.com' => 'WHITELIST', 'cc.yahoo-inc.com' => 'WHITELIST', 'cc.yahoo-inc.com/@yahoo-inc.com' => 'WHITELIST', '.linkedin.com' => 'MILD_WHITELIST', 'google.com' => 'MILD_WHITELIST', 'googlemail.com' => 'MILD_WHITELIST', './@googlegroups.com' => 'MILD_WHITELIST', './@yahoogroups.com' => 'MILD_WHITELIST', './@yahoogroups.co.uk' => 'MILD_WHITELIST', './@yahoogroupes.fr' => 'MILD_WHITELIST', 'yousendit.com' => 'MILD_WHITELIST', 'meetup.com' => 'MILD_WHITELIST', 'dailyhoroscope@astrology.com' => 'MILD_WHITELIST', } ); Строки 1-4 определяют банк политики WHITELIST (отменяет проверку сообщений на принадлежность к СПАМу); строки 5-7 - банк политики MILD_WHITELIST (уменьшает итоговую оценку сообщений на 1.8); строки 8-11 - банк политики NOBANNEDCHECK (отменяет проверку на наличие запрещенных по умолчанию типов файлов); строки 12-42 задают соответствие между отправителями сообщений и банками политик. Определения отправителей в списке @author_to_policy_bank_maps должны иметь следующий синтаксис: user@company.com - пользователь user домена company.com; company.com - любой пользователь домена company.com; .company.com - любой пользователь любого субдомена домена company.com, при этом сообщение подписано в субдомене пользователя;.company.com/@company.com - любой пользователь любого субдомена домена company.com, при этом сообщение подписано в родительском домене company.com; ./@company.com - любой пользователь любого домена, при этом сообщение подписано в домене company.com. Список репутаций относительно надежных отправителей может иметь следующий вид (полный список, рекомендуемый разработчиком Amavisd-new, имеется в документе amavisd-new-2.6.4 release notes): @signer_reputation_maps = ( { 'ebay.com' => -8.03, 'ebay.co.uk' => -8.59, 'ebay.at' => -3.59, 'ebay.ca' => -9.57, 'ebay.de' => -3.38, 'ebay.fr' => -10.95, 'email.paypal.co.uk' => -0.67, 'paypal.com' => -6.66, 'alert.bankofamerica.com' => 1.35, 'amazon.com' => 0.09, 'cisco.com' => -4.95, 'mail.cnn.com' => 4.12, 'skype.net' => -1.50, 'welcome.skype.com' => -0.34, 'yahoo-inc.com' => -1.57, 'google.com' => 1.47, 'googlemail.com' => 3.42, 'googlegroups.com' => -3.10, 'yahoogroups.com' => -1.76, 'yousendit.com' => -4.70, 'meetup.com' => -1.94, } ); Изменение оценок вычисляется с учетом значения $reputation_factor (может меняться от 0 до 1, по умолчанию 0.2) следующим способом: adjusted_spam_score = reputation_factor * signer_reputation + (1 - reputation_factor) * spam_score На этом настройка DKIM верификации средствами Amavisd-new заканчивается (не забудьте перезапустить Amavisd-new командой amavisd reload). Теперь в заголовки сообщений, которые содержат DKIM сигнатуры, будут добавляться поля Authentication-Results; для сообщений, отправители которых содержатся в списке @author_to_policy_bank_maps не будут выполняться проверки, отключенные в соответствующих банках политики; у сообщений, для отправителей которых тем или иным способом заданы изменения оценок, в поле X-Spam-Status появится еще одна оценка AM:BOOST, рассчитанная как описано выше. Естественно, предложенные значение параметров придется расширять и/или уточнять экспериментальным путем. На мой взгляд, следует очень внимательно отнестись к этому вопросу, т.к. DKIM верификация средствами Amavisd-new наиболее эффективна с точки зрения экономии системных ресурсов и соответствующего повышения пропускной способности почтовой системы, ведь она позволяет обойтись без выполнения проверок SpamAssassin для значительной части сообщений. DKIM верификация средствами SpamAssassin Настройку DKIM верификация средствами SpamAssassin следует начать с пересборки SpamAssassin c поддержкой DKIM верификации: cd /usr/ports/mail/p5-Mail-SpamAssassin make deinstall make WITH_DKIM=true reinstall clean По умолчанию плагин Mail::SpamAssassin::Plugin::DKIM отключен. Для его активации необходимо раскомментировать строку loadplugin Mail::SpamAssassin::Plugin::DKIM в файле /usr/local/etc/mail/spamassassin/v312.pre, а также закомментировать строку loadplugin Mail::SpamAssassin::Plugin::DomainKeys в файле /usr/local/etc/mail/spamassassin/v310.pre, если она была раскомментирована ранее. При обработке сообщений, содержащих сигнатуры DKIM, SpamAssassin использует следующие правила (в скобках указаны соответствующие оценки по умолчанию): DKIM_SIGNED (0.001) - сообщение содержит сигнатуру DKIM, DKIM_VERIFIED (-0.001) - сигнатура DKIM проверена, DKIM_POLICY_TESTING (0.001) - DKIM подписание в домене отправителя работает в тестовом режиме (ключ DKIM, который был использован для подписания сообщения, имеет дополнительный параметр 't' со значением 'y'), DKIM_POLICY_SIGNSOME (0.001) / DKIM_POLICY_SIGNALL (0.001) - DKIM ADSP в домене отправителя разрешает / запрещает отправку неподписанных сообщений, USER_IN_DKIM_WHITELIST (-100.000) / USER_IN_DEF_DKIM_WL (-7.500) - адрес отправителя содержится в пользовательском / входящем в поставку SpamAssassin белом списке DKIM. Если адрес отправителя в полях Envelope-From: и From: содержится в пользовательском белом списке DKIM, срабатывает дополнительное правило ENV_AND_HDR_DKIM_MATCH, по умолчанию выставляющее оценку -7.500. Использование перечисленных правил можно рассмотреть на примере, приведенном в разделе Putting DKIM verification to good use in SpamAssassin документа amavisd-new documentation bits and pieces: score DKIM_VERIFIED -0.1 score DKIM_SIGNED 0 score DKIM_POLICY_SIGNALL 0 score DKIM_POLICY_SIGNSOME 0 score DKIM_POLICY_TESTING 0 score USER_IN_DKIM_WHITELIST -8.0 score USER_IN_DEF_DKIM_WL -1.5 score ENV_AND_HDR_DKIM_MATCH -0.1 whitelist_from_dkim *@ebay.com whitelist_from_dkim *@*.ebay.com whitelist_from_dkim *@ebay.co.uk whitelist_from_dkim *@*.ebay.co.uk whitelist_from_dkim *@ebay.at whitelist_from_dkim *@ebay.ca whitelist_from_dkim *@ebay.de whitelist_from_dkim *@ebay.fr whitelist_from_dkim *@*.paypal.com whitelist_from_dkim *@paypal.com whitelist_from_dkim *@* paypal.com whitelist_from_dkim *@*.paypal.be whitelist_from_dkim *@cern.ch whitelist_from_dkim *@amazon.com whitelist_from_dkim *@springer.delivery.net whitelist_from_dkim *@cisco.com whitelist_from_dkim *@alert.bankofamerica.com whitelist_from_dkim *@bankofamerica.com whitelist_from_dkim *@cnn.com whitelist_from_dkim *@*.cnn.com whitelist_from_dkim *@skype.net whitelist_from_dkim service@youtube.com whitelist_from_dkim *@welcome.skype.com whitelist_from_dkim *@cc.yahoo-inc.com yahoo-inc.com whitelist_from_dkim *@cc.yahoo-inc.com whitelist_from_dkim rcapotenoy@yahoo.com whitelist_from_dkim googlealerts-noreply@google.com def_whitelist_from_dkim *@google.com def_whitelist_from_dkim *@googlemail.com def_whitelist_from_dkim *@* googlegroups.com def_whitelist_from_dkim *@* yahoogroups.com def_whitelist_from_dkim *@* yahoogroups.co.uk def_whitelist_from_dkim *@* yahoogroupes.fr def_whitelist_from_dkim *@yousendit.com def_whitelist_from_dkim *@meetup.com def_whitelist_from_dkim dailyhoroscope@astrology.com Строка 1 меняет оценку, выставляемую правилом DKIM_VERIFIED; строка 2 отключает правило DKIM_SIGNED, т.к. наличие сигнатуры DKIM не является критерием валидности сообщения; строки 3-5 отключают правила, проверяющие ADSP, т.к., во-первых, не многие задают ADSP, а, во-вторых, пока не существует правила, позволяющего идентифицировать ADSP discardable (разработчики обещают исправить этот момент); строки 6-8 меняют оценки, выставляемые правилами USER_IN_DKIM_WHITELIST, USER_IN_DEF_DKIM_WL и ENV_AND_HDR_DKIM_MATCH, на менее гуманные; строки 9-35 и 36-44 определяют белые списки DKIM. При определении белых списков DKIM используется следующий синтаксис: user@company.com - пользователь user домена company.com; *@company.com - любой пользователь домена company.com; *@*.company.com - любой пользователь любого субдомена домена company.com, при этом сообщение подписано в субдомене пользователя; *@*.company.com company.com - любой пользователь любого субдомена домена company.com, при этом сообщение подписано в родительском домене company.com; *@* company.com - любой пользователь любого домена, при этом сообщение подписано в домене company.com. SpamAssassin позволяет использовать гораздо более сложные правила, предположим, идентифицировать неподписанные сообщения, якобы отправленные из доменов, всегда выполняющих подписание. Рассмотрим пример, приведенный в вышеназванном документе: header __ML1 Precedence =~ m{\b(list|bulk)\b}i header __ML2 exists:List-Id header __ML3 exists:List-Post header __ML4 exists:Mailing-List header __ML5 Return-Path:addr =~ m{^([^\@]+-(request|bounces|admin|owner)|owner-[^\@]+)(\@|\z)}mi meta __VIA_ML __ML1 || __ML2 || __ML3 || __ML4 || __ML5 describe __VIA_ML Mail from a mailing list header __AUTH_YAHOO1 From:addr =~ m{[\@.]yahoo\.com$}mi header __AUTH_YAHOO2 From:addr =~ m{\@yahoo\.com\.(ar|au|br|cn|hk|mx|my|ph|sg|tw)$}mi header __AUTH_YAHOO3 From:addr =~ m{\@yahoo\.co\.(id|in|jp|nz|th|uk)$}mi header __AUTH_YAHOO4 From:addr =~ m{\@yahoo\.(ca|cn|de|dk|es|fr|gr|ie|it|no|pl|se)$}mi meta __AUTH_YAHOO __AUTH_YAHOO1 || __AUTH_YAHOO2 || __AUTH_YAHOO3 || __AUTH_YAHOO4 describe __AUTH_YAHOO Author claims to be from Yahoo header __AUTH_GMAIL From:addr =~ m{\@gmail\.com$}mi describe __AUTH_GMAIL Author claims to be from gmail.com header __AUTH_PAYPAL From:addr =~ /[\@.]paypal\.(com|co\.uk)$/mi describe __AUTH_PAYPAL Author claims to be from PayPal header __AUTH_EBAY From:addr =~ /[\@.]ebay\.(com|at|be|ca|ch|de|ee|es|fr|hu|ie|in|it|nl|ph|pl|pt|se|co\.(kr|uk)|com\.(au|cn|hk|mx|my|sg))$/mi describe __AUTH_EBAY Author claims to be from eBay meta NOTVALID_YAHOO !DKIM_VERIFIED && __AUTH_YAHOO && !__VIA_ML priority NOTVALID_YAHOO 500 describe NOTVALID_YAHOO Claims to be from Yahoo but is not score NOTVALID_YAHOO 2.8 meta NOTVALID_GMAIL !DKIM_VERIFIED && __AUTH_GMAIL && !__VIA_ML priority NOTVALID_GMAIL 500 describe NOTVALID_GMAIL Claims to be from gmail.com but is not score NOTVALID_GMAIL 2.8 meta NOTVALID_PAY !DKIM_VERIFIED && (__AUTH_PAYPAL || __AUTH_EBAY) priority NOTVALID_PAY 500 describe NOTVALID_PAY Claims to be from PayPal or eBay, but is not score NOTVALID_PAY 6 whitelist_from_rcvd abuse@yahoo.com yahoo.com whitelist_from_rcvd MAILER-DAEMON@yahoo.com yahoo.com Строки 1-7 содержат правила, определяющие, что сообщение было отправлено с использованием списков рассылки; строки 8-13 - правила, срабатывающие, если сообщение отправлено пользователем одного из доменов Yahoo; строки 14,15 - правила, срабатывающие, если сообщение отправлено пользователем службы Gmail; строки 16,17 - правила, срабатывающие, если сообщение отправлено пользователем одного из доменов PayPal; строки 18,19 - правила, срабатывающие, если сообщение отправлено пользователем одного из доменов eBay; строки 20-23 - правила, срабатывающие, если в адресе отправителя указан пользователь одного из доменов Yahoo, у сообщения отсутствуют признаки использования списков рассылки и валидная сигнатура DKIM (Yahoo не отправляет такие письма); строки 24-27 - правила, срабатывающие, если в адресе отправителя указан пользователь службы Gmail, у сообщения отсутствуют признаки использования списков рассылки и валидная сигнатура DKIM (Gmail не отправляет такие письма); строки 28-31 - правила, срабатывающие, если в адресе отправителя указан пользователь одного из доменов PayPal, у сообщения отсутствуют признаки использования списков рассылки и валидная сигнатура DKIM (PayPal не отправляет такие письма); строки 32, 33 - разрешают прием сообщений со специальных адресов без DKIM верификации. Более подробная информация о составлении и отладке дополнительных правил SpamAssassin имеется в документе Writing and Testing New Rules. На этом настройка DKIM верификации средствами SpamAssassin заканчивается (не забудьте перезапустить Amavisd-new командой amavisd reload). Как и в случае с Amavisd-new, указанные выше значение параметров придется расширять и/или уточнять экспериментальным путем. Помните, что при совместном использовании DKIM верификации средствами Amavisd-new и SpamAssassin увеличивается количество DNS запросов, которые выполняются при проверке сообщений. Разработчики SpamAssassin обещает исправить этот момент (SpamAssassin будет использовать данные, содержащиеся в полях Authentication-Results, добавленных Amavisd-new в заголовки сообщений). Несколько слов о DKIM-Reputation Open Data Project DKIM-Reputation Open Data Project - проект Мюнхенской компании Agitos Websolutions, который предоставляет публичный список репутаций отправителей, выполняющих DKIM подписание сообщений. Репутации отправителей варьируются от -1000 (лучшая репутация, присвоенная абстрактному отправителю good@example.com) до 1000 (худшая репутация, присвоенная абстрактному отправителю bad@example.com) и хранятся в виде TXT записей на DNS сервере проекта, который имеет имя al.dkim-reputation.org. У данного сервера можно запрашивать два типа TXT записей: как о репутации отправителей (user-level DKIM reputation), так и о репутации доменов, в которых выполняется DKIM подписание (signingdomain-level DKIM reputation), при этом для получения информации о репутации отправителей необходимо запрашивать записи hex(md5(user)).hex(md5(domain)).hex(md5(signdomain)).al.dkim-reputation .org, о репутации доменов, в которых выполняется DKIM подписание, - *.hex(md5(signdomain)).al.dkim-reputation.org. Например, для выяснения репутации абстрактного отправителя bad@example.com, DKIM подписание сообщений которого осуществляется в домене example.com, можно выполнить команду: dig TXT bae60998ffe4923b131e3d6e4c19993e.5ababd603b22780302dd8d83498e5172.5ababd603b22780302dd8d83498e5172.al.dkim-reputation.org которая выведет примерно такое сообщение (строка, содержащая интересующую нас информацию, подсвечена): ; <<>> DiG 9.3.6-P1 <<>> TXT bae60998ffe4923b131e3d6e4c19993e.5ababd603b22780302dd8d83498e5172.5ababd603b22780302dd8d83498e5172.al.dkim-reputation.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16481 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;bae60998ffe4923b131e3d6e4c19993e.5ababd603b22780302dd8d83498e5172.5ababd603b22780302dd8d83498e5172.al.dkim-reputation.org. IN TXT ;; ANSWER SECTION: bae60998ffe4923b131e3d6e4c19993e.5ababd603b22780302dd8d83498e5172.5ababd603b22780302dd8d83498e5172.al.dkim-reputation.org. 86400 IN TXT "rep=1000\;time=20091202010617\;wppd=1" ;; AUTHORITY SECTION: al.dkim-reputation.org. 505131 IN NS dns.dkim-reputation.org. al.dkim-reputation.org. 505131 IN NS ns.heindlnet.de. ;; Query time: 436 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Dec 2 20:30:00 2009 ;; MSG SIZE rcvd: 234 Также репутация отправителя может быть проверена с помощью специальной формы на главной странице официального сайта проекта: Выяснение репутации отправителя Более подробная информация об организации взаимодействия с сервером DKIM-Reputation Open Data Project, имеется в документах Mission of DKIM Reputation project и Implementing your own DKIM Reputation client. В завершение этого раздела добавлю, что в настоящее время большинство СПАМеров имеет репутацию от 50 до 100, при этом зона al.dkim-reputation.org содержит около 135000 записей о репутации, динамику заполнения данной зоны в удобной графической форме можно увидеть странице DNS Reputation Records. И самое главное - Вы можете создать аккаунт и настроить мониторинг корректности DKIM подписания сообщений обслуживаемыми Вами почтовыми системами. DKIM верификация средствами альтернативного плагина DKIM для SpamAssassin DKIM-Reputation Open Data Project предлагает альтернативный плагин DKIM для SpamAssassin, представляющий из себя стандартный плагин Mail::SpamAssassin::Plugin::DKIM, дополненный возможностями получения данных о репутации отправителей в процессе анализа сообщений на принадлежность к СПАМу. Для установки альтернативного плагина DKIM необходимо сохранить "родной" плагин DKIM (он понадобится позже), а затем загрузить, распаковать и переместить в папку плагинов SpamAssassin альтернативный плагин: cd /tmp mv /usr/local/lib/perl5/site_perl/5.8.9/Mail/SpamAssassin/Plugin/DKIM.pm . fetch http://www.dkim-reputation.org/fileadmin/downloads/reputationclient/Mail-SpamAssassin-3.2.5-DKIM-Reputation-Plugin-V3.tgz tar xf Mail-SpamAssassin-3.2.5-DKIM-Reputation-Plugin-V3.tgz cd Mail-SpamAssassin-3.2.5-DKIM-Reputation-Plugin-V3 mv *.pm /usr/local/lib/perl5/site_perl/5.8.9/Mail/SpamAssassin/Plugin После замены плагина необходимо добавить в файл /usr/local/etc/mail/spamassassin/v312.pre строки: full DKIM_VALID eval:check_dkim_valid() full DKIM_VALID_AU eval:check_dkim_valid_author_sig() Следует отметить, что в этом месте я столкнулся с разногласиями: в файле README, входящем в состав дистрибутива плагина, рекомендуется добавить в файл /usr/local/etc/mail/spamassassin/v312.pre строку full DOMAINKEY_DOMAIN eval:check_dkim_verified(), а в исходном тексте плагина (файле DKIM.pm) - строки, предложенные выше. Я сделал свой выбор в связи с тем, что идентификатор DKIM_VALID является синонимом DKIM_VERIFIED, и в слудующих версиях SpamAssassin будут использоваться правила DKIM_VALID (сообщение содержит хотя бы одну валидную сигнатуру DKIM) и DKIM_VALID_AU (сообщение содержит валидную сигнатуру DKIM домена отправителя), а не используемое в настоящее время правило DKIM_VERIFIED. При таком выборе следует отключить правило DKIM_VERIFIED и определить оценки, выставляемые правилами DKIM_VALID и DKIM_VALID_AU, в файле /usr/local/etc/mail/spamassassin/local.cf: score DKIM_VERIFIED 0 score DKIM_VALID -0.1 score DKIM_VALID_AU -0.5 Также в файле /usr/local/etc/mail/spamassassin/local.cf можно изменить коэффициенты dkimrep_maxspamscore (по умолчанию: 15) и dkimrep_maxhamscore (по умолчанию: -15), которые учитываются при расчете оценок, зависящих от репутации отправителей. Эти оценки вычисляются следующим образом (помните, что отрицательная репутация добавлена на перспективу и в настоящее время не используется): score = dkimrep_maxspamscore / 1000 * DKIM-Reputation или score = dkimrep_maxhamscore / 1000 * DKIM-Reputation При использовании значений коэффициентов по умолчанию сообщения от большинства СПАМеров получают оценку от 0,5 до 1. На этом настройка DKIM верификации средствами альтернативного плагина DKIM заканчивается, хотя в большинстве случаев придется уточнять значения коэффициента dkimrep_maxspamscore. На время тестирования и окончательной настройки альтернативного плагина DKIM можно повысить детальность логов Amavisd-new (определяется параметром $log_level в файле /usr/local/etc/amavisd.conf) до значения 5 и запустить Amavisd-new командой amavisd -d all, чтобы отладочная информация записывалась в /var/log/debug.log (учтите, что при этом размер лога начнет резко увеличиваться). Теперь в процессе доставки сообщений, содержащих сигнатуры DKIM, в /var/log/debug.log будут выводиться примерно такие сообщения ("лишняя", на мой взгляд, информация удалена, имя пользователя Gmail и md5-хеш имени заменены на user и ee11cbb19052e40b07aac0ca060c23ee, соответственно): SA dbg: dkim: no wl entries match author user@gmail.com, no need to verify sigs SA dbg: dkim: performing public key lookup and signature verification A dbg: dkim: signing identity: @gmail.com, d=gmail.com, a=rsa-sha256, c=relaxed/relaxed SA dbg: dkim: signing identity: user@gmail.com, d=gmail.com, a=rsa-sha1, c=nofws SA dbg: dkim: signature verification result: PASS SA dbg: DKIMRep: check_dkimreputation SA dbg: DKIMRep: found some valid dkim identities SA dbg: DKIMRep: request to ee11cbb19052e40b07aac0ca060c23ee.f74d39fa044aa309eaea14b9f57fe79c.f74d39fa044aa309eaea14b9f57fe79c.al.dkim-reputation.org SA dbg: dkim: policy: not retrieved, author signature is valid Естественно, мне захотелось проверить, каким образом альтернативный плагин DKIM будет реагировать на сообщения, отправители которых имеют "нехорошую" репутацию, однако, это оказалось невозможным, в связи с чем я задал вопрос разработчикам DKIM-Reputation Open Data Project. Мне ответили, что, к сожалению, в настоящее время не существует каких-либо онлайн-инструментов тестирования работоспособности систем DKIM-верификации, использующих данные о репутации отправителей, получаемые с сервера DKIM-Reputation Open Data Project, но создание соответствующей системы планируется. Еще мне сказали, что можно скормить SpamAssassin сообщение от абстрактного отправителя bad@example.com. Я знаю, как проверить сообщение, хранящееся в тестовом файле, но не догадываюсь, как создать сообщение с валидной сигнатурой DKIM от абстрактного пользователя. В связи с этим остается только экспериментировать и надеяться на дальнейшее развитие проекта DKIM-Reputation Open Data Project. DKIM верификация средствами альтернативного плагина DKIMrep для SpamAssassin Для того, чтобы обзор был полным, необходимо рассказать еще и о плагине DKIMrep для SpamAssasssin, который разработал Mark Martinec. Данный плагин предназначен для совместной работы с "родным" плагином DKIM и разработан на базе альтернативного плагина DKIM от DKIM-Reputation Open Data Project. Для установки плагина DKIMrep необходимо восстановить восстановить "родной" плагин DKIM, если он был заменен альтернативным, и загрузить необходимые файлы в папку, содержащую плагины для SpamAssassin: cd /usr/local/lib/perl5/site_perl/5.8.9/Mail/SpamAssassin/Plugin mv /tmp/DKIM.pm . fetch http://www.ijs.si/software/amavisd/DKIMrep.pm http://www.ijs.si/software/amavisd/effectiveTLDs.pm После замены плагина необходимо привести содержимое файла /usr/local/etc/mail/spamassassin/v312.pre к виду: loadplugin Mail::SpamAssassin::Plugin::DKIM loadplugin Mail::SpamAssassin::Plugin::DKIMrep Затем следует добавить в файл /usr/local/etc/mail/spamassassin/local.cf строки: ifplugin Mail::SpamAssassin::Plugin::DKIM ifplugin Mail::SpamAssassin::Plugin::DKIMrep full DKIM_REPUT eval:check_dkim_reputation() tflags DKIM_REPUT net score DKIM_REPUT 0.1 describe DKIM_REPUT Signing domain reputation according to dkim-reputation.org priority DKIM_REPUT 200 dkimrep_maxspamscore 0.5 dkimrep_maxhamscore -0.5 endif endif На этом настройка DKIM верификации средствами плагина DKIMrep заканчивается, хотя, как и в предыдущем случае, скорее всего придется уточнять значения коэффициента dkimrep_maxspamscore. Процедура настройки и тестирования плагина DKIMrep также не отличается от уже рассмотренной. Теперь в процессе доставки сообщений, содержащих сигнатуры DKIM, в /var/log/debug.log будут выводиться примерно такие сообщения (как и в предыдущем случае, "лишняя" информация удалена, имя пользователя Gmail и md5-хеш имени заменены на user и ee11cbb19052e40b07aac0ca060c23ee, соответственно): SA dbg: dkimrep: check_dkim_reputation SA dbg: dkimrep: found some valid dkim identities SA dbg: dkimrep: request (src) DKIMrep:TXT:(user).(gmail.com).(gmail.com).(al.dkim-reputation.org) SA dbg: dkimrep: request ee11cbb19052e40b07aac0ca060c23ee.f74d39fa044aa309eaea14b9f57fe79c.f74d39fa044aa309eaea14b9f57fe79c.al.dkim-reputation.org SA dbg: dkimrep: request (src) DKIMrep:TXT:(*).(gmail.com).(al.dkim-reputation.org) SA dbg: dkimrep: request *.f74d39fa044aa309eaea14b9f57fe79c.al.dkim-reputation.org SA dbg: dkimrep: DNS query failed: NXDOMAIN, key DKIMrep:TXT:(*).(gmail.com).(al.dkim-reputation.org) SA dbg: dkimrep: DNS query failed: NXDOMAIN, key DKIMrep:TXT:(user).(gmail.com).(gmail.com).(al.dkim-reputation.org) SA dbg: dkimrep: aggregate score: 0 Пусть Вас не пугают сообщения DNS query failed: NXDOMAIN. Они подтверждают, что на сервере al.dkim-reputation.org нет данных ни о домене, в котором было выполнено DKIM подписание, ни об отправителе сообщения (ни домен, ни отправитель не занесены в черный список). Использование плагина DKIMrep кажется мне более удобным, т.к. я являюсь противником замены программных модулей, периодически обновляемых с помощью системы портов. Все остальные проблемы, описанные в предыдущем разделе, присущи и плагину DKIMrep. Заключение Я постарался рассказать все, что смог узнать о DKIM верификации средствами Amavisd-new и SpamAssassin. Бесспорно, на текущий момент поддержка DKIM верификации реализована лишь частично, однако, сама технология имеет огромный потенциал. Уже в ближайших версиях SpamAssassin будут добавлены правила, позволяющие идентифицировать ADSP discardable, которая позволяет отправителям обеспечить однозначную идентификацию валидных сообщений и блокировку маскирующегося под них СПАМа на стороне получателей. Также я уверен, что будут развиваться системы, предоставляющие публичные списки репутаций отправителей, выполняющих DKIM подписание сообщений. Пока же я предлагаю Вам начать тестирование технологии DKIM и по возможности делиться с общественностью своими наработками ;-)

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1, фыфы, 12:15, 08/08/2012 [ответить] [смотреть все]
  • +/
    йф
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor