Назад | Перейти на главную страницу

Dovecot Migration и старые письма

Я переношу почту со старого сервера на новый, конфигурация хорошая (виртуальные учетные записи mysql и только imap), с голубятней и постфиксом. Он уже запущен для других пользователей, я просто хочу объединить старые учетные записи со старого сервера на новый.

Перенос прошел нормально, я просто хотел знать, как я могу "шоу"все старые письма в UA Clients. Я имею в виду, есть ли указатель голубятни файл или такой, который можно было бы воссоздать, уничтожить, так что все старые письма будут «помечены» как новый ?

Я попробовал принятый ответ, и он потерпел неудачу - версии голубятни в игре, вероятно, слишком далеко друг от друга, и мы также переключили основной MTA. Итак, вот более надежное решение: doveadm import

Предполагая, что вы размещаете электронную почту для домена hosted.tld и существует учетная запись для входа local.account@hosted.tld (а может просто Рут), а резервная копия с предыдущего сервера находится в формате MailDir и доступна внутри структуры папок, например / tmp / TRANSFER /домен/учетная запись/ Maildir затем вы можете импортировать их на свой новый хостинг dovecot с помощью

$ doveadm import -u local.account@hosted.tld maildir:/tmp/TRANSFER/hosted.tld/local.account/Maildir "" all

в более общем плане:

$ doveadm import -u LOCAL_USER FORMAT:PATH "" all

Все это можно почерпнуть из прекрасное руководство. Потребовалось две попытки, чтобы выяснить, что мы просто использовали "" (пустой почтовый ящик назначения) действительно разыскивается ;-)

Возможно, вам даже повезет больше, чем нам, без предварительной передачи файлов - если старый и новый сервер работают одновременно и ваши учетные записи настроены соответствующим образом с использованием doveadm синхронизация.

Для сообщений Maildir такие флаги хранятся в имя файла. Например:

1328040798.M558634P29803.equal,S=17876,W=18294:2,FS

Письма FS после запятой означает Flagged и Seen. Чтобы пометить сообщение как «невидимое», удалите S флаг...

for msg in maildir/cur/*; do
    msgbase=${msg%,*}
    flags=${msg##*,}
    flags=${flags//S/}
    mv -v "$msg" "$msgbase,$flags"
done

... или просто закинуть сообщения в new папка:

mv maildir/cur/* maildir/new/

Формат Maildir состоит из серии каталогов, соответствующих структуре папок IMAP, в которых находятся электронные письма, по одному файлу на каждое письмо.

Чтобы скопировать электронные письма из одной системы электронной почты в другую, вы можете просто скопировать каталоги и файлы и убедиться, что разрешения для этих каталогов и файлов верны в месте назначения.

Структура Maildir выглядит так:

mail/cur/
mail/new/
mail/tmp/
mail/.personal/cur/
mail/.personal/new/
mail/.personal/tmp/

Это показывает папку INBOX (cur, new, tmp) и другую папку с именем «Personal». Обратите внимание на точечный префикс, показывающий, что эта папка скрыта, поэтому это следует учитывать при передаче.

В new папка содержит все электронные письма, которые не были просмотрены клиентом, а cur папка содержит текущие электронные письма. В tmp папка должна быть пустой, если почтовый сервер не работает.

Maildir фактически использует уникальный формат, который упрощает эту задачу. Просто поместите почту в new/ каталог внутри mailroot пользователей почты, если вы хотите, чтобы он отображался как новый. В противном случае он попадает в cur/ каталог.