LINUX.ORG.RU

Плагин Managesieve RoundCube не считывает файл с правилами фильтрации

 , ,


0

1

Добрый вечер.

Установил плагин Managesieve, в RoundCube создал набор фильтров с фильтрами, при этом в директории /var/vmail/почтовый_домен/почтовый_ящик/sieve/ был создан файл название_набора_фильтров.sieve c правильными правилами фильтрации - но они не работают, такое впечатление, что плагин просто правила из данного файла не считывает.

Сделал такой вывод на основании: скопировал правила из /var/vmail/почтовый_домен/почтовый_ящик/sieve/название_набора_фильтров.sieve в глобальный файл /etc/dovecot/sieve/default.sieve, при этом в /etc/dovecot.conf:

plugin {
    sieve = ~/.dovecot.sieve
    sieve_dir = ~/sieve
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}
правила начинают работать из этого глобального файла и фильтровать почту по папкам как надо.

Подскажите пожалуйста в чем может быть проблема, почему Managesieve не видит правила из файла /var/vmail/почтовый_домен/почтовый_ящик/sieve/название_набора_фильтров.sieve который сам-же создает при интерактивном создании правил фильтрации в RoundCube?



Последнее исправление: Nezhnayka28 (всего исправлений: 4)

Ответ на: комментарий от Nezhnayka28

а dоvecot ? У него хватает прав прочитать эти правила ?

посмотри права на файлы с правилами. Да и в логах dovecot скорее всего есть сообщения об ошибках.

vel ★★★★★
()
Ответ на: комментарий от Nezhnayka28

Права на директорию RoundCube и все вложенные папки/файлы apache:apache, httpd и nginx запущены от учетной записи apache.

Уже все перепробовал: и на /var/vmail/почтовый_домен/почтовый_ящик включая вложенные папки/файлы ставил apache:apache - ничего не помогает - глобальные правила работают, правила определенные в RoundCube - нет.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Хотя вот что-то в логе нашел такое:

May 16 09:53:13 sven-soft dovecot: auth: Error: md5_verify(testmail@pachurinka.ru): Not a valid MD5-CRYPT or PLAIN-MD5 password
May 16 09:53:13 sven-soft dovecot: auth: Error: ssha512_verify(testmail@pachurinka.ru): SSHA512 password too short
May 16 10:23:21 sven-soft dovecot: auth: Error: md5_verify(testmail@pachurinka.ru): Not a valid MD5-CRYPT or PLAIN-MD5 password
May 16 10:23:21 sven-soft dovecot: auth: Error: ssha512_verify(testmail@pachurinka.ru): SSHA512 password too short
только не знаю, имеет ли это отношение к проблеме с фильтрацией

Nezhnayka28
() автор топика
Ответ на: комментарий от vel

а dоvecot ? У него хватает прав прочитать эти правила ?

да хватает, на файл /var/vmail/название_почтового_домена/название_почтового_ящика/название_набора_фильтров.sieve назначены рекурсивно vmail:mail начиная от /var/vmail/

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

только не знаю, имеет ли это отношение к проблеме с фильтрацией

С ошибками в логах разобрался, просто в конфигурационном файле Managesieve прописал:

$config['managesieve_auth_type'] = 'CRAM-MD5';

Проблема с нерабочей фильтрацией осталась.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Хотя нет, все таки раз в час пишет в лог ошибку:

May 16 11:23:38 sven-soft dovecot: auth: Error: md5_verify(testmail@pachurinka.ru): Not a valid MD5-CRYPT or PLAIN-MD5 password
May 16 11:23:38 sven-soft dovecot: auth: Error: ssha512_verify(testmail@pachurinka.ru): SSHA512 password too short

Nezhnayka28
() автор топика

С чего вы взяли что ~/sieve это путь к каталогу в почтовом ящике?

Сценарии обычно хранятся отдельно от ящиков и для определения этого места есть специальная директива обычно указываемая как часть userdb { }. Roundcube тут не причем как и managesive собственно.

trancefer ★★
()
Ответ на: комментарий от trancefer

Да, вы правы, я уже понял это - то что на самом деле managesieve на самом деле только создает файлы правил фильтрации, ну и соответственно обеспечивает интерфейс в RoundCube для их создания. И то что надо как-то из dovecot.conf сказать где эти правила забирать, но не знаю как это сделать.

Пока что додумал такой вариант - в RoundCube создаю набор правил «my» с определенными правилами, при этом создается файл:

/var/vmail/имя_домена/имя_ящика/sieve/my.sieve
Далее в dovecot.conf:
plugin {
    # Указываю на файл конкретного набора правил 
    sieve = /var/vmail/%d/%n/sieve/my.sieve
    sieve_dir = /var/vmail/%d/%n/sieve/
    # Глобальные правила
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}
- начинает работать. Но как указать, чтобы он правила из всех файлов с расширением .sieve считывал, либо как правильно это делается?

Сценарии обычно хранятся отдельно от ящиков и для определения этого места есть специальная директива обычно указываемая как часть userdb { }.

Подскажите пожалуйста как именно это делается?

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Но как указать, чтобы он правила из всех файлов с расширением .sieve считывал, либо как правильно это делается?

Никак, т.к. то что вы создаете это ruleset, вы можете создать их сколько угодно, только в конкретный момент времени будет применяться только один из них, тот который помечен как 'active'. Если вам требуется запуск нескольких .sieve сценариев один за другим - посмотрите здесь как это делается: http://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration#multiscript

Подскажите пожалуйста как именно это делается?

Дайте содержимое вашего /etc/dovecot/dovecot-sql.conf

Вообще для этого предназначена директива home, значение которой формируется исходя из вашего userdb. В вашем случае информация о расположении home-каталогов должна браться из БД. Конструкция «~/sieve» указывает на каталог sieve который размещается в home-каталоге пользователя, а не в maildir.

trancefer ★★
()
Ответ на: комментарий от trancefer

У меня в dovecot.conf указано:

mail_location = maildir:/var/vmail/%d/%u
Поэтому хоть так:
plugin {
    # Указываю на файл конкретного набора правил 
    sieve = /var/vmail/%d/%n/sieve/my.sieve
    sieve_dir = /var/vmail/%d/%n/sieve/
    # Глобальные правила
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}
хоть так:
plugin {
    # Указываю на файл конкретного набора правил 
    sieve = ~/sieve/my.sieve
    sieve_dir = ~/sieve
    # Глобальные правила
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}
у меня правила из конкретного набора (созданного в RoundCube, в данном случае набор правил с названием my) зачитывает, но!

Не пойму: во-первых если указывать конкретный файл набора правил, созданный в RoundCube, то он после этого начинает работать, но при этом-же этот набор пропадает из списка наборов правил в RoundCube, а во-вторых как-же пользователям быть? Ведь если пользователь в какой-то момент захочет добавить еще одно правило в данный набор, то он из RoundCube уже не сможет этого сделать, потому что в списке наборов правил активный набор правил (активный файл указанные в sieve) не сможет?

Я почему-то думал, что dovecot должен считывать все файлы с расширением .sieve (т.е. все наборы правил определенные в RoundCube) из определенного в dovecot.conf -> sieve_dir =

Дайте содержимое вашего /etc/dovecot/dovecot-sql.conf

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=pass@word
default_pass_scheme = CRAM-MD5
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'

Вот пожалуйста, спасибо за помощь.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Наверное запутанно объяснил, еще раз по-шагам как оно работает сейчас: 1. Захожу в RoundCube и в Фильтры создаю новый «набор фильтров» с названием «my» - в этом наборе создаю несколько активных фильтров (правил). После этого смотрю в директорию

/var/vmail/имя_текущего_домена/имя_текущего_почтового_ящика 
и вижу что там создался одноименный файл набору правил my.sieve - смотрю в этот файл вижу все те правила, которые определил из RoundCube.

2. Пробую отправить письмо под эти созданные правила и вижу что правила не отрабатывают, при этом в dovecot.conf:

plugin {
    sieve = ~/sieve/.dovecot.sieve
    sieve_dir = ~/sieve
    # Глобальные правила
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}

3. Тогда меняю в dovecot.conf на:

plugin {
    # Указываю на файл конкретного набора правил 
    sieve = ~/sieve/my.sieve
    sieve_dir = ~/sieve
    # Глобальные правила
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}
после чего отправляю повторно почту, правила из my.sieve начинают работать, но при этом же вижу что в RoundCube нет в списке наборов фильтров моего набора my - т.е. как-будто от заблокировался и недоступен для редактирования.

4. Теперь хочу в ранее созданный набор фильтров добавить еще один фильтр (правило), но этот набор не доступен теперь в RoundCube.

Т.е. пользователям то надо дать возможность спокойно добавлять несколько наборов фильтров или хотя бы один набор, но чтобы они в любое время могли добавить/отредактировать в этом наборе фильтры (правила).

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Не пойму: во-первых если указывать конкретный файл набора правил, созданный в RoundCube, то он после этого начинает работать, но при этом-же этот набор пропадает из списка наборов правил в RoundCube

Так не должно быть, штатно когда вы создаете ruleset с именем 'foobar' через RC у вас в каталоге определенном в директиве sieve_dir должен появляться сценарий foobar.sieve, если вы делаете его активным через RC - то правила будут применяться для фильтрации почты. Такое поведение характерно для dovecot/pigeonhole 2.0.X с отдельными home для пользователей. Кстати вы не сказали что у вас за версия, дистрибутив.

Попробуйте сделать так, в dovecot.conf:


userdb {
  driver = static
  args = uid=1150 gid=12 home=/var/vmail/home/%d/%n mail=maildir:/var/vmail/%d/%n
}

Ясен пень что в каталоги /var/vmail/home/* должнен иметь право R+W пользователь с правами которого запущен managesive, и R - пользователь от которого выполняется LDA.

trancefer ★★
()
Ответ на: комментарий от Nezhnayka28
plugin {
    sieve = ~/sieve/.dovecot.sieve
    sieve_dir = ~/sieve
    # Глобальные правила
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_global_dir = /etc/dovecot/sieve/
}

Этот вариант у меня работает.

trancefer ★★
()
Ответ на: комментарий от trancefer

Большое вам спасибо, не знаю каким чудом, но все заработало! Ура!

Nezhnayka28
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.