Опишем настройку квоты почтовых ящиков, возможность указывать квоту, представленная в postfixadmin по умолчанию не работает и требует настройки. В нашем случае мы настраиваем ее на почтовом сервере Ubuntu\Debian для службы Dovecot. Данная конфигурация позволяет задать лимит почтового ящика, чтобы не превысить размер ssd диска vps сервера, так как любой корпоративный ящик можно забить тяжелыми вложениям, спамом, что может привести в значительному расходу дискового пространства.
В данном руководстве предполагается, что сам почтовый сервер у Вас уже настроен и необходимо произвести настройку квот почтовых ящиков. Подробнее про настройку почтового сервера можно посмотреть тут:
Вы также можете заказать VPS с уже преднастроенной операционной системой и получить готовый корпоративный почтовый сервер по цене VPS сервера.
1. Настройка службы Dovecot
vi /etc/dovecot/conf.d/10-mail.conf
mail_plugins = $mail_plugins quota
Сохраним файл.
vi /etc/dovecot/conf.d/20-imap.conf
protocol imap {
mail_plugins = $mail_plugins imap_quota
}
Сохраним файл.
vi /etc/dovecot/conf.d/10-master.conf
service dict {
unix_listener dict { mode = 0660 user = vmail group = vmail } }
Сохраним файл.
vi /etc/dovecot/conf.d/90-quota.conf
plugin {
quota = dict:User quota::proxy::quota
}
Сохраним файл.
vi /etc/dovecot/dovecot.conf
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=postfix123
map {
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
}
В самой первой строке необходимо указать существующие данные для подключения к базе данных, заданные при настройке почтового сервера.
vi /etc/dovecot/dovecot-sql.conf.ext
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'
Сохраним файл.
Перезапустим службу:
systemctl restart dovecot
Работу квоты можно проверить в консоли командой, указав существующий почтовый ящик с заданной квотой в postfixadmin:
doveadm quota get -u user@domain.tld
2. Настроим уведомления о превышении квоты
vi /etc/dovecot/conf.d/90-quota.conf
Добавляем в конфигурацию строки:
plugin {
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=80%% quota-warning 80 %u
}
В этом же файле приводим раздел service quota-warning к виду:
service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
user = dovecot
unix_listener quota-warning {
user = vmail
}
}
Создадим сам скрипт для отправки уведомлений:
vi /usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" From: postmaster@domain.tld Subject: quota warning
Your mailbox is now $PERCENT% full.
EOF
Сохраним файл. Измените в нем адрес почты, с которого будет происходить отправка на свой. Назначим права на выполнение и применим настройки:
chmod +x /usr/local/bin/quota-warning.sh
systemctl restart dovecot
Проверим работу скрипта в консоли:
/usr/local/bin/quota-warning.sh 85 user@domain.tld
Измените почтовый ящик на существующий, на него должно будет прийти письмо.
Настройка квот завершена, если на почтовый ящик будет отправлено письмо с вложением большего объема чем сам почтовый ящик, письмо не будет доставлено, а отправитель получит сообщение о том, что ящик переполнен. Теперь квоты заданные в postfixadmin настроены и работают.