URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 92678
[ Назад ]

Исходное сообщение
"Dovecot sieve перемещение спам письма в папку Spam"

Отправлено Sk.Avenger , 30-Ноя-11 15:16 
вопрос встал с автоматическим перемещением спама в каталог .Spam.

/etc/postfix/main.cf
Код:
mailbox_command = /usr/local/libexec/dovecot/deliver

/etc/dovecot/dovecot.conf
Код:
protocol lda {
  mail_plugins = sieve
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  global_script_path = /home/vmail/spam.sieve
}

/home/vmail/spam.sieve
Код:
require "fileinto";
if header :comparator "i;ascii-casemap" :contains "subject" "*****SPAM*****" {
  fileinto ".Spam";
  stop;
} else {
   keep;
}

Но почему-то не работает


Содержание

Сообщения в этом обсуждении
"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено McLeod095 , 30-Ноя-11 15:21 
>[оверквотинг удален]
> /home/vmail/spam.sieve
> Код:
> require "fileinto";
> if header :comparator "i;ascii-casemap" :contains "subject" "*****SPAM*****" {
>   fileinto ".Spam";
>   stop;
> } else {
>    keep;
> }
> Но почему-то не работает

А используются ли sieve фильтры у пользователя?
Если да то работать не будет, читайте внимательнее когда работает global_script_path.

Ну и читайте в dovecot про
sieve_before
sieve_after


"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено DeadLoco , 30-Ноя-11 21:54 
> mailbox_command = /usr/local/libexec/dovecot/deliver

В эту команду пайпится письмо, но при этом опциями следует указывать получателя и отправителя письма. Получателя, чтобы деливером был выбран правильный мейлбокс для доставки, а отправителя - чтобы правильно отослать баунс в случае ошибки. Поэтому пишем нечто вроде:

mailbox_command = /usr/local/libexec/dovecot/deliver  -d адрес@получателя -f адрес@отправителя

В экзиме туда можно поставить переменные, содержащие нужные значения, как в постфиксе - не знаю.


>   global_script_path = /home/vmail/spam.sieve

Глобал-скрипт запускается тогда и только тогда, когда у пользователя нет никакого другого скрипта. Если другой скрипт есть - глобальный не запускается.


>   fileinto ".Spam";

Ну, начнем с того, что в мейлдире довекот заводит папки с точками, но адресовать их надо без точек. А во-вторых, спамовая папка в мейлдире у юзера называется не Spam, а Junk. Отсюда:

require "fileinto";
if header :comparator "i;ascii-casemap" :contains "subject" "*****SPAM*****" {
  fileinto "Junk";
  stop;
} else {
  keep;
}


"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено McLeod095 , 30-Ноя-11 22:07 
>> mailbox_command = /usr/local/libexec/dovecot/deliver
> В эту команду пайпится письмо, но при этом опциями следует указывать получателя
> и отправителя письма. Получателя, чтобы деливером был выбран правильный мейлбокс для
> доставки, а отправителя - чтобы правильно отослать баунс в случае ошибки.
> Поэтому пишем нечто вроде:
> mailbox_command = /usr/local/libexec/dovecot/deliver  -d адрес@получателя -f адрес@отправителя

полностью согласен


> В экзиме туда можно поставить переменные, содержащие нужные значения, как в постфиксе
> - не знаю.
>>   global_script_path = /home/vmail/spam.sieve
> Глобал-скрипт запускается тогда и только тогда, когда у пользователя нет никакого другого
> скрипта. Если другой скрипт есть - глобальный не запускается.

Именно к этому я и клонил, просто хотел что бы ТС все таки хоть немного прочитал коммент в конфиге dovecot, который идет перед объявлением этого параметра.

>>   fileinto ".Spam";
> Ну, начнем с того, что в мейлдире довекот заводит папки с точками,
> но адресовать их надо без точек. А во-вторых, спамовая папка в
> мейлдире у юзера называется не Spam, а Junk. Отсюда:

А вот здесь Вы я с Вами не согласен. По умолчанию dovecot создает только INBOX. Никаких больше папок нет. Все остальные мне приходится создавать плагином autocreate и сразу подключать пользователю плагином autosubscribe.

> require "fileinto";
> if header :comparator "i;ascii-casemap" :contains "subject" "*****SPAM*****" {
>   fileinto "Junk";
>   stop;
> } else {
>   keep;
> }


"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено Sk.Avenger , 01-Дек-11 15:24 
Нашел на вики довекота про sieve-after, sieve-before http://www.dovecot.org/list/dovecot/2010-August/051987.html

Сделал как тут написано:
/etc/dovecot/dovecot.conf

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
  sieve_before = /var/mail/sieve-before
  sieve_after = /var/mail/sieve-after
}

/var/mail/sieve-before/spam.sieve

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Spam";
}

Но чето не хочет работать.

Почта лежит тут /var/mail/domain.ws/user


"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено mckoris , 05-Дек-11 20:42 
есть мысли?

"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено DeadLoco , 06-Дек-11 04:15 
> есть мысли?

Мыслей есть масса, и все в сторону чтения логов. Мне почему-то кажется, что компилеру сива не хватает прав, чтобы записать в каталог полученный бинарник.


"Dovecot sieve перемещение спам письма в папку Spam"
Отправлено Sk.Avenger , 06-Дек-11 15:59 
>> есть мысли?
> Мыслей есть масса, и все в сторону чтения логов. Мне почему-то кажется,
> что компилеру сива не хватает прав, чтобы записать в каталог полученный
> бинарник.

Может быть, но я вроде пробовал дать права, но 0 эмоций. Результата никакого.
В логах ничего подозрительного не было.