приветствую
в рамках доработки поддержки персональных каратинов добавлен роутер
dnslookup_skip_quarantined, с помощью которого будут игнорироваться
попытки переслать на нелокальные адреса письма, получившие высокие
оценки контент сканера, и направленные на алиасы, разворачивающиеся во
внешние адреса.
также добавлена переменная confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE,
отличающаяся от confVIRT_MDIR_PIPE тем, что в ней нужно указать путь к
внешнему LDA и параметры доставки письма в персональный карантин.
пример:
define(`confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE',
`/usr/local/libexec/dovecot/deliver -d $local_part@$domain -m Junk')dnl
похоже, что значение параметра command в транспортах экспандится как-то
криво, поэтому не удалось при использовании PIPE в confDELIVERY_TO в
одном транспорте delivery_to_virt_domain использовать условие для выбора
значения confVIRT_MDIR_PIPE или confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE.
пришлось создать отдельный транспорт
delivery_to_virt_domain_personal_quarantine, который используется только
при указании PIPE в confDELIVERY_TO при необходимости доставить спамовое
письмо в персональный карантин.
дополнительные варианты доставки писем в виртуальные мейлдиры с помощью
procmail и пользовательских фильтров exim'а игнорируется для спамовых
писем, предназначенных для доставки в персональные карантины.
также в системном фильтре (если быть точнее, то в
site/system_filter_quarantine_content_scaned) нужно после доставки копий
писем в общесистемные каратины (если одновременно используются и
общесистемные и персональные карантины) не выполнять seen finish, т. к.
в противном случае уже нЕчего будет доставлять в персональный карантин.
пример можно найти тут:
http://mta.org.ua/exim-4.76-conf/samples/site/system_filter_quarantine_personal_content_scaned
имя файла дано для примера. в рабочей ситуации этот код должен
находиться в файле site/system_filter_quarantine_content_scaned
при этом для писем, предназначенных для доставки в общесистемные
карантины, нужно делать опциональную доставку в /dev/null для адресов
получателей, которые тем или иным способом (virt_aliases, virtusertable)
разворачиваются не в другие адреса, а в команды. например, это касается
алиасов, применяемых для списков рассылок менеджера рассылок mailman. в
противном случае письма, получившие высокую оценку контент сканера, все
равно будут доставлены в списки рассылки и на служебные адреса списков
(подписка, отписка, адрес владельца рассылки и т. д.)
проще всего игнорирование штатной доставки в такие адреса делать с
помощью примерно такой конструкции:
ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL', `
if $h_X-Spam-Action: contains "quarantined" then
if foranyaddress $recipients (
"${lookup{$thisaddress}wildlsearch{confCONFDIR/recipients_no_personal_quarantine}{yes}{no}}"
is "yes" ) then
seen save /dev/null
finish
endif
endif
')dnl ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL', `')
при этом в файле recipients_no_personal_quarantine нужно перечислить
адреса получателей, которые не являются почтовыми ящиками. пример,
касающийся этого списка рассылки:
# cat recipients_no_personal_quarantine
exim-conf на mta.org.uaexim-conf-admin на mta.org.uaexim-conf-bounces на mta.org.uaexim-conf-confirm на mta.org.uaexim-conf-join на mta.org.uaexim-conf-leave на mta.org.uaexim-conf-owner на mta.org.uaexim-conf-request на mta.org.uaexim-conf-subscribe на mta.org.uaexim-conf-unsubscribe на mta.org.ua
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC