Image

База знаний → Установка и настройка квот почтовых ящиков на почтовом сервере Dovecot

[Виртуальные сервера]
Дата публикации: 09.06.2023

Опишем настройку квоты почтовых ящиков, возможность указывать квоту, представленная в 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 настроены и работают.





Нет комментариев