В данном руководстве мы рассмотрим процесс настройки квот пользователей в Dovecot и PostfixAdmin.

Содержание статьи
Начальные условия
Для выполнения этого руководства предполагается, что на вашем почтовом сервере уже установлены Postfix SMTP и Dovecot IMAP. Если они не установлены, рекомендуем воспользоваться следующими инструкциями.
- Установка и настройка основного SMTP-сервера Postfix на Ubuntu
- Настройка IMAP сервера Dovecot на Ubuntu с активацией TLS-шифрования
- Установка и настройка базового SMTP сервера Postfix на CentOS 8/RHEL 8
- Настройка IMAP-сервера Dovecot на CentOS 8/RHEL 8 с активацией TLS-шифрования.
Предполагается, что на вашем почтовом сервере уже установлен PostfixAdmin, веб-интерфейс для управления почтовыми сервисами.
- PostfixAdmin – Настройка виртуальных почтовых ящиков на почтовом сервере Ubuntu 18.04
- PostfixAdmin – Настройка виртуальных почтовых ящиков на сервере Ubuntu 20.04.
- PostfixAdmin – Настройка виртуальных почтовых ящиков на почтовом сервере CentOS 8/RHEL 8
Имейте в виду, что если вы ранее настраивали свой почтовый сервер с помощью iRedMail, квоты для пользователей уже установлены на вашем сервере, и следовать этому руководству не требуется.
Конфигурация пользовательских квот в Dovecot через командную строку.
Для начала необходимо активировать плагин квот. Используйте текстовый редактор командной строки, такой как Nano, чтобы внести изменения в файл Dovecot 10-mail.conf.
sudo nano /etc/dovecot/conf.d/10-mail.conf
Откройте параметр mail_plugins, уберите комментарий и задайте его значение следующим образом:
mail_plugins = quota
Это общая настройка для mail_plugins. Сохраните изменения и закройте файл. Затем необходимо активировать плагин квот для LMTP и IMAP. Отредактируйте файл Dovecot 20-lmtp.conf.
sudo nano /etc/dovecot/conf.d/20-lmtp.conf
Включите квоту в перечень mail_plugins.
protocol lmtp < mail_plugins = $mail_plugins sieve quota >
Сохраните файл и закройте его. После этого внесите изменения в файл 20-imap.conf.
sudo nano /etc/dovecot/conf.d/20-imap.conf
Активируйте плагин imap_quota для протокола IMAP.
protocol imap < mail_plugins = $mail_plugins sudo chmod +x /usr/local/bin/quota-warning. sh
Внесите изменения в файл /etc/dovecot/conf.d/10-master.conf.
sudo nano /etc/dovecot/conf.d/10-master.conf
Прокрутите вниз до самого конца этого документа. Настройте службу dict следующим образом.
service dict < unix_listener dict < mode = 0660 user = vmail group = vmail >>
Сохраните файл и завершите его редактирование.
Настройка соединения Dovecot с PostfixAdmin
Теперь, когда квота активирована в Dovecot, необходимо интегрировать её с PostfixAdmin. Для этого внесите изменения в файл dovecot-sql.conf.ext.
sudo nano /etc/dovecot/dovecot-sql.conf.ext
Установите следующую строку.
user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'
Необходимо заменить её на:
user_query = SELECT CONCAT('/var/vmail/', maildir) AS home, 2000 AS uid, 2000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
Таким образом, Dovecot будет иметь возможность извлекать данные о квоте каждого пользователя из базы данных MySQL/MariaDB. Не забудьте сохранить и закрыть файл. После этого перейдите к редактированию основного конфигурационного файла Dovecot.
sudo nano /etc/dovecot/dovecot.conf
Откройте раздел, посвящённый словарю.<>и уберите комментарий с словаря quota.
dict < quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext >
Сохраните изменения и закройте файл. После этого внесите правки в файл /etc/dovecot/dovecot-dict-sql.conf.ext. (Учтите, что на CentOS 8/RHEL 8 данный файл отсутствует. Вам потребуется самостоятельно добавить указанные ниже строки.)
sudo nano /etc/dovecot/dovecot-dict-sql.conf.ext
Вставьте следующую строку в начале, чтобы Dovecot получил доступ к базе данных postfixadmin в MySQL или MariaDB. Если вы забыли пароль базы данных postfixadmin, его можно обнаружить в файле /etc/dovecot/dovecot-sql.conf.ext.
connect = host=localhost dbname=postfixadmin user=postfixadmin password=postfixadmin_password
В этом документе представлены две карты. Необходимо заменить quota на quota2.
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 >
После этого закомментируйте третье определение карты, поскольку PostfixAdmin не задействует таблицу expire.
Сохраните изменения и закройте файл. Затем перезапустите Dovecot, чтобы они были применены.
sudo systemctl restart dovecot
Проверьте текущее состояние. Убедитесь, что он функционирует.
sudo systemctl status dovecot
Для отображения данных о квоте в PostfixAdmin необходимо внести изменения в файл конфигурации PostfixAdmin.
sudo nano /usr/share/postfixadmin/config.local.php
Apache на CentOS 8/RHEL 8
sudo nano /var/www/postfixadmin/config.local.php
Nginx на CentOS 8/RHEL 8
sudo nano /usr/share/nginx/postfixadmin/config.local.php
Вставьте эти две строки в конец файла, чтобы активировать квоту в PostfixAdmin.
$CONF['quota'] = 'YES'; $CONF['used_quotas'] = 'YES'; //разрешить максимум 100 почтовых ящиков для каждого домена $CONF['mailboxes'] = '100'; //по умолчанию 10240МБ квота для каждого пользователя $CONF['maxquota'] = '10240'; //по умолчанию 102400МБ квота для каждого домена $CONF['domain_quota_default'] = '102400';
Сохраните файл и завершите его редактирование.
Проведение тестирования через командную строку.
Теперь у вас есть возможность ознакомиться с квотами и использованием ресурсов всех пользователей через:
sudo doveadm quota get - A
Вы можете также выполнить пересчет текущего потребления квоты, используя следующую команду.
sudo doveadm quota recalc - A
Если вам поступило уведомление об ошибке, например
Fatal: Unknown command 'quota', but plugin quota exists. Try to set mail_plugins=quota
Это указывает на то, что в файле /etc/dovecot/conf.d/10-mail.conf вы не задали значение для mail_plugins в разделе quota.
Если при перечислении квот пользователей вам встретится следующая ошибка,
Ошибка: stat(/var/vmail/yourdomain.com/user/.dovecot. sieve/tmp) не удалось выполнить: Не является директорией
Добавьте указанную строку в файл /etc/dovecot/conf.d/10-mail.conf и перезапустите Dovecot.
maildir_stat_dirs = yes
Настройка квоты через веб-интерфейс PostfixAdmin.
Теперь у вас есть возможность войти в веб-интерфейс PostfixAdmin, чтобы задать квоты для домена и пользователей.
Стандартная квота в PostfixAdmin оказалась недостаточной. Если домен был добавлен до активации квоты, необходимо изменить его параметры в PostfixAdmin для увеличения лимита. Для новых доменов квота будет определяться в файле config.local.php.
Заключение
Надеюсь, этот гайд стал полезным для вас в процессе настройки квоты пользователя в Dovecot и PostfixAdmin. Если вам понравился этот материал, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций.

