Добрый день!
Подскажите, пожалуйста, уже выбился из сил, закончились идеи.
Не работает 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 вроде Квоту считает.
Проверьте права на запуск скрипта. И вообще попробуйте его самостоятельно запустить:
/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#MySQLps на прошлой неделе настраивал тоже самое на centos6, всё работает как часы
> Проверьте права на запуск скрипта. И вообще попробуйте его самостоятельно запустить:
> /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Не пойму, не уже ли никто не пользуется этими предупреждениями о Квоте? Или у всех все работает?
> Не пойму, не уже ли никто не пользуется этими предупреждениями о Квоте?
> Или у всех все работает?Пользуюсь, работает.
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'
>[оверквотинг удален]
> 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-а и можно кусок его лог-а ?
Еще идеи у кого-то будут?
Посмотрел свой лог, там тоже есть сообщения, причем сразу по три
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 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%
> Интересно должен ли messages=1, а не 0 ?
> И можете чуть шире дать лог Dovecot-а? Не вижу, что бы вообще
> он подсчитывал реальную квоту. Он отображает ограничение=4096000 лимит Варнинга=3072000,
> а вот текущей цифры в логе нет. Хотя в свойствах папки
> в Thunderbird-е видно, что занято 101%Вопросы до сих пор актуальны. Болел, потому не поднимал тему...
>> Интересно должен ли 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/%udriver = mysql
connect = host=/var/run/mysqld/mysqld.sock dbname=.... user=..... password=.....
default_pass_scheme = MD5password_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'
Поимел точно такую же проблему. Голову сломал, решения не нашел :(
Может здесь добрые люди в конце концов нашли решение трабла?
> Поимел точно такую же проблему. Голову сломал, решения не нашел :(
> Может здесь добрые люди в конце концов нашли решение трабла?Сегодня опробовал подключение Довекот квот из АД. Работает нормально. Пишу большую памятку сейчас на будущее.
А если коротко, то необходимо файл подключения к АД /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