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

Переход с любого сервера IMAP / POP3 на Dovecot

Я пытаюсь синхронизировать два почтовых ящика, которые находятся на разных серверах. Это связано с процессом миграции. Старый сервер - это курьерский сервер, доступ к которому должен осуществляться через IMAP, тогда как новый сервер - это сервер dovecot. Я пытаюсь следовать оригинальная документация Dovecot. К сожалению, не указано, где должна быть установлена ​​конфигурация исходного IMAP, когда doveadm сценарий выполняется на целевом сервере. В документации представлены настройки, но не упоминается, в какой файл конфигурации dovecot необходимо ввести настройки.

Вы также можете сделать следующее в командной строке без файлов конфигурации:

# doveadm -Dv  \
  -o imapc_host=<SOURCE_HOST> \
  -o imapc_user=<SOURCE_USERNAME> \
  -o imapc_password=<SOURCE_PASSWORD> \
  -o imapc_features=rfc822.size \
  -o imapc_ssl=starttls \
  -o mail_fsync=never \
   backup -R -u <DESTINATION_MAILBOX> imapc:

У меня были большие проблемы, потому что мой исходный IMAP поддерживает STARTTLS только на порту 143. -o imapc_ssl=starttls в моем случае был спасителем.

Вы можете выполнить синхронизацию после первоначального резервного копирования с помощью:

# doveadm -Dv \
  -o imapc_host=<SOURCE_HOST> \
  -o imapc_user=<SOURCE_USERNAME> \
  -o imapc_password=<SOURCE_PASSWORD> \
  -o imapc_features=rfc822.size \
  -o imapc_ssl=starttls \
  -o mail_fsync=never \
  sync -1 -R -u <DESTINATION_MAILBOX> imapc:

Конечно, это довольно небезопасно, если у вас есть больше пользователей, которые могут видеть ваши команды (и пароли) с помощью who или заглянув в ваш файл .bash_history, будьте осторожны.

Если два почтовых сервера работают без проблем с протоколом IMAP, я бы использовал imapsync делать работу. И Courier, и Dovecot поддерживаются imapsync.

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

Это программное обеспечение FOSS, и его можно найти здесь: http://imapsync.lamiral.info

Если вам нужна синхронизация UID, вы можете добавить опцию --useuid в imapsync. Я не уверен, что вы говорите о таком UID. Но это тот вариант, который вам следует искать:

--useuid: использовать uid вместо заголовка в качестве критерия для распознавания сообщений. Тогда подразумевается опция --usecache, если не используется --nousecache.

Вам следует перенести свою почту с помощью dsync утилита от Dovecot. При необходимости будут сохранены UID и даже POP3 UIDL.

Бегать dsync используя backup -R вариант для «обратного резервного копирования» с удаленного сервера IMAP на локальный сервер Dovecot. Вам необходимо создать специальный файл конфигурации, например:

imapc_host = imap.company.com
imapc_user = %u@company.com
imapc_password =  mypassword
imapc_features = rfc822.size fetch-headers
imapc_port = 143
pop3c_host = pop3host.company.com
pop3c_user = %u@company.com
pop3c_password = mypassword
pop3c_port = 110
namespace pop3c {
   prefix = POP3-MIGRATION-NS/
   location = pop3c:~/pop3c
   list = no
   hidden = yes
}

!include /etc/dovecot/dovecot.conf

plugin {
  pop3_migration_mailbox = POP3-MIGRATION-NS/INBOX
  pop3_migration_skip_size_check = yes
  pop3_migration_ignore_missing_uidls=yes
}
mail_prefetch_count = 20
mail_shared_explicit_inbox = no
protocol doveadm {
  mail_plugins = $mail_plugins pop3_migration
}

Обратите внимание, что это для одного пользователя; вы можете захотеть иметь разные варианты, если вы используете главного пользователя / пароль или если вам требуется SSL для соединений.

Затем вызовите это примерно так: dsync -D -v -u username -c configfile.cfg

В username заменяет %u в config.cfg файл. В -D -v подробный режим отладки.

Вам необходимо включить эти настройки в конфигурацию Dovecot, обычно конфигурации Dovecot находятся в /etc/dovecot/.

Лучше всего разместить конфигурацию в /etc/dovecot/conf.d/90-migration.conf (все файлы в conf.d dir включаются автоматически).

Для перезагрузки конфига нужно запустить:

sudo doveadm reload