Архивирование почты на отдельном диске с помощью Dovecot

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: Dovecot, IMAP, Linux, NFS.

Создать архив почты на отдельном диске может понадобиться для хранения большей части данных на дешевых носителях, в роли которых могут выступать HDD или сетевые накопители. Мы рассмотрим пример конфигурации Dovecot, с помощью которой пользователи в своих почтовых клиентах будут видеть архивную папку, при помещении почты в которую файлы писем будут помещаться на отдельном носителе.

Настройка Dovecot

Необходимая нам настройка задается с помощью контекстов (пространств имен) или Namespaces. Данные пространства позволяют разделить настройки папок, которые доступны почтовым клиентам по протоколу IMAP.

В зависимости от версии dovecot и типа Linux расположение конфигурационного файла с нужными настройками может быть разным. Классически, все настройки хранятся в файле:

vi /etc/dovecot/dovecot.conf

В более современных версиях:

vi /etc/dovecot/conf.d/15-mailboxes.conf

Добавим строки:

...

namespace archive {
    type = private
    disabled = no
    hidden = no
    list = yes
    inbox = no
    prefix = Архив/
    separator = /
    subscriptions = yes
    location = maildir:/mnt/archive/%d/%u:LAYOUT=maildir++

    mailbox Входящие {
        auto = subscribe
    }
    mailbox Отправленные {
        auto = subscribe
    }
}

* где для нас наибольшее значение имеют опции:

  • prefix — задает имя, которое будет отображаться в почтовом клиенте для данного контекста.
  • location — путь до каталога, где будут размещаться файлы почты, когда мы будем переносить их в архивную папку. Опция LAYOUT гарантирует совместимость с клиентами, создавая иерархию cur/new/tmp.
  • mailbox — настройка каталогов в контексте. В нашем примере мы создадим две папки Входящие и Отправленные, которые будут автоматически создаваться для всех почтовых ящиков (опция auto).

В нашем примере мы указали путь до каталога хранения — /mnt/archive/%d/%u. Где %d является переменной домена, а %u — имени почтового ящика. Когда dovecot впервые будет отдавать клиенту информацию об архивном каталоге, он автоматически создаст каталога, указанные как переменные. А корневой раздел (в нашем случае, /mnt/archive) необходимо создать самостоятельно. Выполним команду:

mkdir -p /mnt/archive

* для монтирования каталогов будет полезна инструкция Как настроить автоматическое монтирование дисков в системах Linux. При использовании сетевых дисков имейте ввиду, что dovecot корректно работает только с шарами NFS.

Разрешим только владельцу пользоваться каталогом:

chmod 700 /mnt/archive

Назначим в качестве владельца пользователя vmail (от которого работают процессы dovecot):

chown vmail:vmail /mnt/archive

* очень часто, dovecot настраивается на работу от пользователя vmail, но это не обязательно будет так в вашем случае. Уточнить пользователя можно в конфигурационном файле. Ищите раздел service lmtp, а в нем директиву user.

Если в нашей системе работает SELinux, то необходимо задать политику назначения контекста:

semanage fcontext -a -t mail_home_t "/mnt/archive(/.*)?"

restorecon -Rv /mnt/archive

Проверяем корректность настройки:

dovecot -n

Если она ничего не вернет, то мы допустили ошибку при конфигурировании сервера почтовых ящиков.

Если конфигурация прошла проверку, перезапускаем dovecot:

systemctl restart dovecot

Для проверки открываем почтовый клиент. Если все настроено верно, мы должны увидеть дополнительный контекст с созданными в нем каталогами. В моем случае так:

В почтовом клиенте мы видем созданный контекст dovecot с каталогами

Попробуйте перенести в каталог несколько писем — они должны оказаться в отдельном каталоге, в нашем примере, расположенном в /mnt/archive.

Возможные проблемы

Рассмотрим ошибки, с которыми мы можем столкнуться.

Namespaces must use the same separator

Dovecot перестает корректно работать, а в логах мы можем увидеть сообщение:

Error: namespace configuration error: All list=yes namespaces must use the same separator

Причина: если в нашей конфигурации будет указано несколько пространств namespace (а для архива мы создаем отдельное), а также у них есть опция list=yes (которая позволяет отображать каталоги пространства), то у них должны быть одинаковые разделители (директива separator). В противном случае мы увидем нашу ошибку.

Решение: необходимо, явно, задать разделитель для всех пространств namespace. Например:

namespace inbox {
    separator = /
    ...
}

namespace archive {
    ...
    separator = /
    ...
}

* в данном примере мы применили разделитель / (более современный). Также можно указать точку (.) или двоеточие (:).

Чтобы применить настройку перезапускаем dovecot:

systemctl restart dovecot

Читайте также

Могут также быть полезными:

1. Настройка Postfix + Dovecot + LDAP.

2. Полноценный почтовый сервер на Ubuntu Server.

3. Полноценный почтовый сервер с iRedMail на Ubuntu или Debian.

4. Почтовый сервер на CentOS / Rocky.

5. Настройка Dovecot + Sieve + ManageSieve + Roundcube на Linux.

# Linux # Почта # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Заказать настройку почты

Нужна бесплатная консультация?

Мини-инструкции

Как установить NodeJS на Rocky Linux и работать с проектом

Как настроить веб-сервер на Rocky Linux для работы Wordpress

Установка веб-сервера NGINX + PHP + MySQL на Linux Ubuntu и развертывание WordPress

Как средствами Dovecot архивировать почту на отдельном дисковом разделе

Создание виртуальной машины Proxmox с существующим диском

Установка и запуск серверной части potree viewer на Linux Ubuntu

Как установить и настроить сервер для менеджера паролей sysPass на Linux Ubuntu

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама