Настройка пользовательских квот в Dovecot и PostfixAdmin

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

dovecot администрирование почтовых ящиков с помощью Postfix и настройка квот.

Начальные условия

Для выполнения этого руководства предполагается, что на вашем почтовом сервере уже установлены 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.

Читайте также:  Как включить или отключить модули PHP на Ubuntu

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