Victor Ustugov wrote:
>> пришлось создать отдельный транспорт
>> delivery_to_virt_domain_personal_quarantine, который используется только
>> при указании PIPE в confDELIVERY_TO при необходимости доставить спамовое
>> письмо в персональный карантин.
>> данный транспорт не генерируется в configure, если значение
> confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE будет пустое или этой переменной
> не будет существовать. сделано это для случаев, когда доставка писем
> производится средствами внешнего LDA, но принятие решения о доставке
> письма в персональный карантин принимает сам LDA.
>>> дополнительные варианты доставки писем в виртуальные мейлдиры с помощью
>> procmail и пользовательских фильтров exim'а игнорируется для спамовых
>> писем, предназначенных для доставки в персональные карантины.
>> сегодня данное игнорирование доставки спамовых писем с помощью procmail
> и пользовательских фильтров exim'а сделано опциональным на случай, если
> необходимо каким-либо специальным образом доставлять спамовые письма в
> персональные карантины с помощью этих procmail и персональных фильтров
> exim'а.
>> игнорирование доставки спамовых писем регламентируется двумя переменными:
>> dnl игнорирование доставки с помощью procmail писем, предназначенных
> dnl для доставки в персональный карантин
> define(`confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE', `YES')
>> dnl игнорирование доставки с помощью пользовательских фильтров exim
> dnl писем, предназначенных для доставки в персональный карантин
> define(`confVIRT_MDIR_FILTERS_IGNORE_PERSONAL_QUARANTINE', `YES')
>> значения обеих переменных по умолчанию равно YES, т. е. доставка
> спамовых писем дополнительными средствами доставки игнорируется
в продолжении темы работы с персональными карантинами реализована
доставка в персональные карантины писем, для которых в разных фильтрах
применяется значение quarantine
при доставке спамовых писем в персональные карантины обнаружилась
проблема работы автоответчиков, реализованных с использованием sieve.
т. к. для создания sieve скриптов сейчас используются разнообразные
плагины к почтовым клинтам и веб мейлам, нужно в них предусмотреть
игнорирование спамовых писем и писем, к которым применено действие
quarantine.
спамовые письма можно отличить по полю X-Spam-Flag, в котором
присутствует подстрока YES.
письма, к которым применено действие quarantine, можно отличить по полю
X-Quarantined со значением YES. добавление этого поля реализовано в
системно фильтре.
ниже несколько примеров.
1. roundcube + managesieve plugin
при реализации автоответчика с помощью плагина managesieve для roundcube
нужно добавить пару условий - X-Quarantined не содержит YES и
X-Spam-Flag не содержит YES
содержимое sieve скрипта будет выглядеть примерно так:
require ["vacation"];
# rule:[автоответчик]
if allof (header :contains "To" "corvax на mx.org.ua", not header :contains
"X-Quarantined" "YES", not header :contains "X-Spam-Flag" "YES")
{
vacation :subject "Автоответчик" text:
Меня сейчас нет на рабочем месте.
Я прочту Ваше сообщение как только смогу.
Спасибо за понимание.
.
;
}
2. roundcube + vacation plugin
последний vacation plugin, до которого удалось добраться, был версии 1.9.9
пришлось его немного допилить. вот патч:
http://mta.org.ua/roundcube/patches/vacation-1.9.9/patch-vacation-1.9.9-sieve.patch
содержимое sieve скрипта автоответчика будет выглядеть примерно так:
require ["fileinto", "reject", "vacation", "copy"];
# rule:[vacation]
if allof (header :contains "X-Spam-Flag" "YES") {
keep;
} elsif allof (header :contains "X-Quarantined" "YES") {
keep;
} elsif allof (header :contains [ "To", "Cc" ] "corvax на mx.org.ua") {
vacation :subject "Автоответ" "Приветствую.
Меня сейчас нет на рабочем месте.
Я прочту Ваше сообщение как только смогу.
Спасибо за понимание.
";
keep;
} else {
keep;
}
3. написанный вручную sieve скрипт.
при написании sieve скрипта вручную можно доставить спамовые письма в
персональный карантин самостоятельно:
require ["fileinto", "vacation"];
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
stop;
}
if header :contains "X-Quarantined" "YES" {
fileinto "Junk";
stop;
}
# rule:[автоответчик]
vacation :subject "Автоответчик" text:
Меня сейчас нет на рабочем месте.
Я прочту Ваше сообщение как только смогу.
Спасибо за понимание.
.
;
письма с полями X-Spam-Flag и X-Quarantined, в значении которых есть
слово "YES", можно и не доставлять самостоятельно в фолдер Junk, т. к.
этот фолдер будет указан exim'ом доставщику.
пример значения confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE для dovecot'а на
FreeBSD:
define(`confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE',
`/usr/local/libexec/dovecot/deliver -d $local_part@$domain -m Junk')dnl
--
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