Используемые термины: Dovecot, PostfixAdmin, Postfix.
При установке почтового сервера на базе Postfix + Dovecot и использовании панели управления почтовыми ящиками PostfixAdmin, по умолчанию, квотирование не настроено — его можно задавать в последней, но работать квоты не будут. Нужна дополнительная настройка…
Открываем конфигурационный файл10-mail.conf:
vi /etc/dovecot/conf.d/10-mail.conf
Находим строку с mail_plugins и приводим ее к виду:
…mail_plugins = $mail_plugins quota…
* данная строка подключает к плагинам дополнительно плагин для управления квотами (quota). Если опция закомментирована, снимаем комментарий.
Открываем конфигурационный файл 20-imap.conf:
vi /etc/dovecot/conf.d/20-imap.conf
Находим опцию protocol imap и добавим в нее также возможность использования плагина с квотами:
protocol imap { mail_plugins = $mail_plugins imap_quota}
* опция mail_plugins может быть закомментирована. Если это так, то коментарий снимаем.
Открываем конфигурационный файл 10-master.conf:
vi /etc/dovecot/conf.d/10-master.conf
Находим опцию service dict, в ней unix_listener dict и приводим ее к виду:
service dict { unix_listener dict { mode = 0660 user = vmail group = vmail }}
Открываем файл 90-quota.conf:
vi /etc/dovecot/conf.d/90-quota.conf
Добавляем:
plugin { quota = dict:User quota::proxy::quota}
* или снимаем комментарий с соответствующей строки quota = dict:User quota::proxy::quota.
Открываем основной конфигурационный файл для dovecot:
vi /etc/dovecot/dovecot.conf
Находим раздел dict и снимаем комментарий или добавляем:
dict { quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext}
Теперь создаем файл для настройки выгрузки квот:
vi /etc/dovecot/dovecot-dict-sql.conf.ext
connect = host=localhost dbname=postfix user=postfix password=postfix123map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes}map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages}
* где host — сервер mysql, к которому будем подключаться; dbname — имя базы данных, в которой находятся пользователи postfix; user — пользователь, под которым мы подключаемся к базе; password — пароль для подключения к базе. В данном примере мы подключимся к СУБД, которая находится на том же сервере (localhost) к базе postfix под пользователем postfix с паролем postfix123.
Откроем наш файл, в котором мы описываем настройки выборки данных по пользователям из базы данных:
vi /etc/dovecot/dovecot-sql.conf.ext
Находим запрос user_query и дописываем в SELECT CONCAT(‘*:bytes=’, quota) AS quota_rule — у меня в итоге получилось:
user_query = SELECT CONCAT(‘/home/mail/’,LCASE(`domain`),’/’,LCASE(`maildir`)), 1024 AS uid, 1024 AS gid, CONCAT(‘*:bytes=’, quota) AS quota_rule FROM mailbox WHERE username = ‘%u’
* если в нашем файле запросов есть несколько строк user_query, то необходимо дописать запрос для последней.
Проверяем конфигурационный файл dovecot:
… и если команда не вернет ошибку, перезапускаем его:
systemctl restart dovecot
Для начала в командной строке вводим:
doveadm quota get -u [email protected]
* [email protected] — почтовый пользователь, для которого нужно показать квоту.
Данная команда отобразит квоту для пользователя, например:
Quota name Type Value Limit %User quota STORAGE 16420 50000 32User quota MESSAGE 14 — 0
* в данном примере почтовый ящик занимает около 16 Мб, а квота около 50 Мб — ящик заполнен на 32%.
Теперь открываем PostfixAdmin — заходим в настройки почтового ящика и ставим небольшой лимит, например, в 5 Мб:
Теперь объем ящика превышает лимит:
Quota name Type Value Limit %User quota STORAGE 16420 5000 328User quota MESSAGE 14 — 0
* объем превышен, почти, втрое.
Некоторые почтовые клиенты покажут превышение лимита, например, Thunderbird:
Открываем конфигурационный файл 90-quota.conf:
Снимаем комментарий или добавляем данные строки:
plugin { quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u}
* в данном примере мы указываем на необходимость делать 2 предупреждения — первое при достижении объема ящика в 80%, второе — 95%. Сервис dovecot, который будет это обеспечивать, называется quota-warning.
Теперь находим раздел service quota-warning и приводим его к виду:
service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = dovecot unix_listener quota-warning { user = vmail }}
* мы создали сервис quota-warning, который будет запускать скрит /usr/local/bin/quota-warning.sh.
Создаем сам скрипт quota-warning.sh:
vi /usr/local/bin/quota-warning.sh
cat << EOF | /usr/libexec/dovecot/dovecot-lda -d $2 -o «plugin/quota=maildir:User quota:noenforcing»Content-Type: text/html; charset=utf-8From: Администратор почты <[email protected]>Subject: Предупреждение о превышении квоты на почтовый ящикX-Priority: 2
<p>Размер Вашего почтового ящика составляет $1% от установленного ограничения.<br>Чтобы уменьшить его размер Вы можете удалить большие письма с вложениями, старые письма или почистить корзину.</p>EOF
* где [email protected] — административный почтовый ящик. Сам текст сообщения можно преобразовать, чтобы оно было более презентабельным.
Задаем права на исполнение скрипта:
chmod +x /usr/local/bin/quota-warning.sh
Проверяем, что нам приходят уведомления, запустив скрипт:
/usr/local/bin/quota-warning.sh 80 [email protected]
* где [email protected] — наш почтовый ящик, на который должно будет отправиться уведомление.
Перезапускаем службу dovecot:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies