Категории

Как перенести письма между пользователями в Postfix + Dovecot

2025-10-20 09:43:01 | Статья из категории: Linux

При администрировании почтового сервера на базе Postfix + Dovecot часто возникает задача — перенести все письма от одного пользователя к другому. Это может понадобиться при слиянии аккаунтов, восстановлении после ошибки или миграции данных.

В этой статье рассмотрим четыре надёжных способа переноса почты, от простого копирования файлов до использования специализированных утилит. Все команды приведены «под рукой» для быстрого копирования в терминал.


1. Копирование через файловую систему (Maildir)

Если почта хранится в формате Maildir (стандарт для Dovecot), можно скопировать файлы напрямую.

Подходит: когда у вас есть root-доступ и вы уверены в структуре почтовых ящиков.
# Копируем письма из user1 в user2 (пример для домена example.com)
cp -r /var/vmail/example.com/user1/cur/* /var/vmail/example.com/user2/cur/
cp -r /var/vmail/example.com/user1/new/* /var/vmail/example.com/user2/new/

# Восстанавливаем права (обычно владелец — vmail)
chown -R vmail:vmail /var/vmail/example.com/user2/
chmod 600 /var/vmail/example.com/user2/cur/*
chmod 600 /var/vmail/example.com/user2/new/*
Важно! После копирования Dovecot автоматически перестроит индексы при первом подключении IMAP, но убедитесь, что квоты не превышены и права доступа корректны.

2. Использование doveadm (рекомендуется)

Утилита doveadm — «родной» инструмент Dovecot для управления почтой. Она корректно обрабатывает флаги, индексы, квоты и структуру папок.

Преимущество: работает с виртуальными пользователями, не требует знания путей к Maildir.
# Копировать ВСЕ письма из user1 в user2 (сохраняя структуру папок)
doveadm copy -u user2@example.com '*' user1@example.com ALL

# Переместить (удалить из исходного ящика)
doveadm move -u user2@example.com '*' user1@example.com ALL

# Принудительно перестроить индексы у получателя
doveadm index -u user2@example.com '*'
Убедитесь, что в dovecot.conf указан корректный mail_location и включены нужные плагины (например, imap).

3. Перенос через IMAP: утилита imapsync

Если у вас нет shell-доступа к серверу, но есть IMAP-учётные данные, используйте imapsync.

# Установка (Debian/Ubuntu)
sudo apt install imapsync

# Синхронизация между двумя ящиками на одном сервере
imapsync \
  --host1 localhost --user1 user1@example.com --password1 'пароль1' \
  --host2 localhost --user2 user2@example.com --password2 'пароль2'
Минусы: медленнее, чем doveadm; требует передачи паролей в командной строке (лучше использовать файлы с правами 600).

4. Через Roundcube (ограниченно)

Roundcube не поддерживает массовый перенос между аккаунтами «из коробки». Однако с плагином ImportExport можно:

  1. Экспортировать папки как .mbox из аккаунта user1.
  2. Войти под user2 и импортировать файлы.
Подходит только для небольших объёмов (сотни писем), не для тысяч.

Что НЕ работает


Проверка квот после переноса

Если у получателя включены квоты, проверьте использование:

doveadm quota get -u user2@example.com

При необходимости увеличьте лимит через PostfixAdmin или временно отключите квоты в конфигурации Dovecot.


Вывод

Лучший способdoveadm copy: безопасно, быстро, корректно.
🛠️ Резервный вариант — копирование файлов вручную (только при уверенности в структуре).
🌐 Без shell-доступа — используйте imapsync.

Выбирайте метод под ваш уровень доступа и объём данных — и почта перенесётся без потерь!

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


Кто я | Контакты и регион

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA