The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"PostFix + Dovecot 2 и quota_warning"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от sasha73 (ok) on 09-Фев-12, 17:13 
Добрый день!
Подскажите, пожалуйста, уже выбился из сил, закончились идеи.
Не работает quota_warning в Dovecot 2.

Версии:

postfix-2.8.7,1
dovecot-2.0.16_1

Настройки Dovecot:

plugin {
    quota = maildir:User quota
    quota_warning = storage=75%% quota-warning 75 %u
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = root
  unix_listener quota-warning {
    user = root
  }
}
protocol imap {
  imap_client_workarounds = tb-extra-mailbox-sep
  mail_plugins = autocreate quota imap_quota
}
user_query = SELECT CONCAT("/var/mail/",maildir) AS home, 1005 AS uid, 1002 AS gid, CONCAT('*:storage=',  quota , 'B' ) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1'

Сильно не ругайте - это уже последние версии, пробовал уж как угодно...

Log Dovecot-а:

Feb 08 11:24:56 auth-worker: Debug: sql(x.user@domen.ua,192.168.0.5): SELECT CONCAT("/var/mail/",maildir) AS home, 1005 AS uid, 1002 AS gid, CONCAT('*:storage=',  quota , '
Feb 08 11:24:56 auth: Debug: master out: USER   2197946369      x.user@domen.ua    home=/var/mail/domen.ua/x.user/    uid=1005        gid=1002        quota_rule=*:stor
Feb 08 11:24:56 imap: Debug: Loading modules from directory: /usr/local/lib/dovecot
Feb 08 11:24:56 imap: Debug: Module loaded: /usr/local/lib/dovecot/lib10_quota_plugin.so
Feb 08 11:24:56 imap: Debug: Module loaded: /usr/local/lib/dovecot/lib11_imap_quota_plugin.so
Feb 08 11:24:56 imap: Debug: Module loaded: /usr/local/lib/dovecot/lib20_autocreate_plugin.so
Feb 08 11:24:56 imap: Debug: Added userdb setting: plugin/quota_rule=*:storage=4096000B
Feb 08 11:24:56 imap(x.user@domen.ua): Debug: Effective uid=1005, gid=1002, home=/var/mail/domen.ua/x.user/
Feb 08 11:24:56 imap(x.user@domen.ua): Debug: Quota root: name=User quota backend=dirsize args=
Feb 08 11:24:56 imap(x.user@domen.ua): Debug: Quota rule: root=User quota mailbox=* bytes=4096000 messages=0
Feb 08 11:24:56 imap(x.user@domen.ua): Debug: Quota warning: bytes=3072000 (75%) messages=0 reverse=no command=quota-warning 75 x.user@domen.ua
Feb 08 11:24:56 imap(x.user@domen.ua): Debug: maildir++: root=/var/mail/domen.ua/x.user, index=, control=, inbox=/var/mail/domen.ua/x.user, alt=
Feb 08 11:24:56 imap(x.user@domen.ua): Debug: Namespace : Using permissions from /var/mail/domen.ua/x.user: mode=0700 gid=-1
Feb 08 11:24:56 imap-login: Info: Login: user=<x.user@domen.ua>, method=PLAIN, rip=192.168.0.5, lip=192.168.0.20, mpid=9190

Как видно плагин вроде отрабатывает:
Debug: Quota warning: bytes=3072000 (75%) messages=0 reverse=no command=quota-warning 75 x.user@domen.ua
Но скрипт запускать не пытается. В скрипте есть строка для проверки:
echo "`date`   Mail qouta ! ($1 $2)" >>/usr/local/etc/dovecot/tst.quota
Ну что ему еще не хватает?

И попутный вопрос. PostFix не патчил VDA. Это обязательно делать? Что именно этот патч правит? (не нашел ответа) Именно для моей версии патча нет пока, да и PostFix вроде Квоту считает.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от koblin (ok) on 10-Фев-12, 11:34 
Проверьте права на запуск скрипта. И вообще попробуйте его самостоятельно запустить:
/usr/local/bin/quota-warning.sh 75 test@domain

И не знаю критично это или нет, но по документации в sql-запросе должно быть bytes, а не storage.. concat('*:bytes=', quota_bytes) AS quota_rule
http://wiki2.dovecot.org/Quota/Configuration#MySQL

ps на прошлой неделе настраивал тоже самое на centos6, всё работает как часы

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от sasha73 (ok) on 10-Фев-12, 12:14 
> Проверьте права на запуск скрипта. И вообще попробуйте его самостоятельно запустить:
> /usr/local/bin/quota-warning.sh 75 test@domain
> И не знаю критично это или нет, но по документации в sql-запросе
> должно быть bytes, а не storage.. concat('*:bytes=', quota_bytes) AS quota_rule
> http://wiki2.dovecot.org/Quota/Configuration#MySQL
> ps на прошлой неделе настраивал тоже самое на centos6, всё работает как
> часы

Когда писал, что в скрипте есть строка "echo", то это был намек, что скрипт проверен и с правами 777, на всякий, пока что. После запуска вашей строки в tst.quota получаем:

пятница, 10 февраля 2012 г. 09:56:27 (EET)   Mail qouta ! (75 test@domain)

Да, из документации не заметил о "bytes", проверил - результат то же (еще попробовал в очередной раз полный пусть к скрипту в конфиге Dovecot вписать):

Debug: Quota warning: bytes=3072000 (75%) messages=0 reverse=no command=/usr/local/bin/quota-warning.sh 75 x.user@domen.ua

Не пойму, не уже ли никто не пользуется этими предупреждениями о Квоте? Или у всех все работает?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "PostFix + Dovecot 2 и quota_warning"  +1 +/
Сообщение от koblin (ok) on 10-Фев-12, 12:21 
> Не пойму, не уже ли никто не пользуется этими предупреждениями о Квоте?
> Или у всех все работает?

Пользуюсь, работает.

plugin {
  quota_warning = storage=100%% quota-exceeded 100 %u
  quota_warning2 = storage=95%% quota-warning 95 %u
  quota_warning3 = storage=80%% quota-warning 80 %u
}

service quota-warning {
  executable = script /etc/dovecot/bin/quota-warning.sh
  user = virtual
  unix_listener quota-warning {
    user = virtual
  }
}

user_query = \
  SELECT CONCAT('/var/spool/mail/%d/', maildir) as home, 5000 as uid, 5000 as gid, \
  concat('*:bytes=', quota*1024) AS quota_rule \
  FROM mailbox WHERE username = '%u' AND active= ' 1'


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от sasha73 (ok) on 10-Фев-12, 13:21 
>[оверквотинг удален]
>   user = virtual
>   unix_listener quota-warning {
>     user = virtual
>   }
> }
> user_query = \
>   SELECT CONCAT('/var/spool/mail/%d/', maildir) as home, 5000 as uid, 5000 as
> gid, \
>   concat('*:bytes=', quota*1024) AS quota_rule \
>   FROM mailbox WHERE username = '%u' AND active= ' 1'

Не пойму, почему у меня не работает? Вроде бы все так же.
Не совсем понятен смысл строки "executable = script", ведь путь к скрипту quota-exceeded все равно не указан.
Тоже не понял умножение в "quota*1024" . По идее мне не нужно, PostfixAdmin ложит квоту как раз в байтах.
Остальное все один в один почти.
А что у Вас в "protocol imap {}" ?
Какая версия Dovecot-а и можно кусок его лог-а ?
Еще идеи у кого-то будут?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от koblin (ok) on 10-Фев-12, 14:35 
Посмотрел свой лог, там тоже есть сообщения, причем сразу по три
Debug: Quota warning: bytes=524288000 (100%) messages=0 reverse=no command=quota-exceeded..
Debug: Quota warning: bytes=498073600 (95%) messages=0 reverse=no command=quota-warning...
Debug: Quota warning: bytes=419430400 (80%) messages=0 reverse=no command=quota-warning...
Я так понял они информационные, появляются каждый раз когда пользователь логинится на сервер и не имеют отношения к реальному срабатыванию лимитов.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от sasha73 (ok) on 10-Фев-12, 17:06 
> Посмотрел свой лог, там тоже есть сообщения, причем сразу по три
> Debug: Quota warning: bytes=524288000 (100%) messages=0 reverse=no command=quota-exceeded..
> Debug: Quota warning: bytes=498073600 (95%) messages=0 reverse=no command=quota-warning...
> Debug: Quota warning: bytes=419430400 (80%) messages=0 reverse=no command=quota-warning...
> Я так понял они информационные, появляются каждый раз когда пользователь логинится на
> сервер и не имеют отношения к реальному срабатыванию лимитов.

Это понятно, я с Вами согласен! А Вы не могли бы воспроизвести срабатывание и дать этот лог? Проще это сделать временным понижением квоты юзеру.

Просто я давал вариант, где лимит реально должен был срабатывать:
Debug: Quota rule: root=User quota mailbox=* bytes=4096000 messages=0
Debug: Quota warning: bytes=3072000 (75%) messages=0 reverse=no command=quota-warning 75 x.user@domen.ua

Интересно должен ли messages=1, а не 0 ?
И можете чуть шире дать лог Dovecot-а? Не вижу, что бы вообще он подсчитывал реальную квоту. Он отображает ограничение=4096000 лимит Варнинга=3072000, а вот текущей цифры в логе нет. Хотя в свойствах папки в Thunderbird-е видно, что занято 101%

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от sasha73 (ok) on 20-Фев-12, 10:45 
> Интересно должен ли messages=1, а не 0 ?
> И можете чуть шире дать лог Dovecot-а? Не вижу, что бы вообще
> он подсчитывал реальную квоту. Он отображает ограничение=4096000 лимит Варнинга=3072000,
> а вот текущей цифры в логе нет. Хотя в свойствах папки
> в Thunderbird-е видно, что занято 101%

Вопросы до сих пор актуальны. Болел, потому не поднимал тему...

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от кегна on 20-Фев-12, 22:08 
>> Интересно должен ли messages=1, а не 0 ?
>> И можете чуть шире дать лог Dovecot-а? Не вижу, что бы вообще
>> он подсчитывал реальную квоту. Он отображает ограничение=4096000 лимит Варнинга=3072000,
>> а вот текущей цифры в логе нет. Хотя в свойствах папки
>> в Thunderbird-е видно, что занято 101%
> Вопросы до сих пор актуальны. Болел, потому не поднимал тему...

dovecot.conf:
plugin {
    quota = maildir
    quota_rule2 = Trash:storage=500M
    quota_warning = storage=95%% /usr/local/bin/quota-warning.sh 95
    quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90
    quota_warning3 = storage=80%% /usr/local/bin/quota-warning.sh 80
    sieve_global_path = /var/sieve/spam.sieve
}

$ cat /usr/local/bin/quota-warning.sh
#!/bin/sh
PERCENT=$1
cat << EOF | /usr/lib/dovecot/deliver -d $USER -c /usr/local/bin/warning.conf
From: abuse@xxx.ru
Subject: quota warning
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
To: $USER

Внимание!
Ваш ящик заполнен на $PERCENT%.

Пожалуйста удалите часть ненужной почты!

С уважением, системный администратор.


$ cat /usr/local/bin/warning.conf | grep -v '^#'
postmaster_address = abuse@xxx.ru
mail_location = maildir:/var/mail/%u

driver = mysql
connect = host=/var/run/mysqld/mysqld.sock dbname=.... user=..... password=.....
default_pass_scheme = MD5

password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' and active='1'
user_query = SELECT CONCAT('/var/spool/mail/', `maildir`) AS `home`, 1981 AS uid, 1981 AS gid, concat('*:storage=', quota, 'B') as quota_rule FROM `mailbox` WHERE `username` = '%u'

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от Veter111 (ok) on 20-Фев-15, 10:33 
Поимел точно такую же проблему. Голову сломал, решения не нашел :(
Может здесь добрые люди в конце концов нашли решение трабла?
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "PostFix + Dovecot 2 и quota_warning"  +/
Сообщение от Nnin (ok) on 08-Апр-15, 14:53 
> Поимел точно такую же проблему. Голову сломал, решения не нашел :(
> Может здесь добрые люди в конце концов нашли решение трабла?

Сегодня опробовал подключение Довекот квот из АД. Работает нормально. Пишу большую памятку сейчас на будущее.

А если коротко, то необходимо файл подключения к АД /etc/dovecot/dovecot-ldap.conf привести к виду:

hosts           = 192.168.111.2:389
ldap_version    = 3
auth_bind       = yes
dn              = user@developer.com
dnpass          = 123qwe
base            = ou=Структура,dc=developer,dc=com
scope           = subtree
deref           = searching
user_filter     = (&(mail=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter     = (&(mail=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/,=quota_rule=*:bytes=%{ldap:st}
debug_level = 0

Важное для нас это строка с параметрами user_attrs, и в ней это =quota_rule=*:bytes=%{ldap:st}, в этой строке самый важный параметр это st. Так вот, st, это есть, не что иное как поле в свойства юзера находящегося в АД.

Почему именно поле st?

Да просто мне так удобно.

Поле st принадлежит свойствам юзера живущего в АД, это поле "Область, край" в закладке "Адрес". Так вот, сюда в это поле забиваем нужный размер ящика в числовом виде, размерность байты. Т.е. если необходимо пользователю сделать объем ящика 10мб, то вбиваем 10000000.

Поле для использования в качестве квоты каждый выбирает сам.

Теперь в конфиге /etc/dovecot/dovecot.conf

В секции plugin, приводим параметр quota к виду:

plugin {
  quota = maildir:User quota
}


с картинками http://forum.lissyara.su/viewtopic.php?p=371134#p371134

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру