Почта

/
/
Перенос почтовых ящиков на другой домен в ispmanager 6

Перенос почтовых ящиков на другой домен в ispmanager 6

Скрипт migrate_mail_domain.sh позволит перенести все почтовые ящики с одного домена на другой в рамках ispmanager 6.

Для миграции ящиков выполните команду:

./migrate_mail_domain.sh all <текущий_домен> <новый_домен>

Также помимо параметра all, можно использовать другие шаги миграции по-отдельности:

  • discover - собрать список почтовых ящиков из базы данных панели ispmgr.db в CSV-файл
  • create - создать одноименные почтовые ящики на новом домене с помощью mgrctl через функцию email.edit
  • maildata - скопировать Maildir через команду rsync -a --delete, после чего передавать права на директорию новому владельцу через chown
  • creds - перенести хэши паролей (CRAM-MD5) из dovecot.passwd и ispmgr.db
  • verify - сравнить размеры старой и новой Maildir
  • all - выполнить все шаги по-очереди

Процесс миграции записывается в журнал по пути /root/mail-migration-<текущий_домен>-<новый_домен>/migrate.log.

Принцип работы скрипта по шагам

discover

Скрипт считывает email и emaildomain из базы данных/usr/local/mgr5/etc/ispmgr.db, после чего создает CSV-файл со списком ящиков в рабочую директорию.

create

Скрипт для каждого почтового ящика из CSV-файла выполняет следующую команду:

mgrctl email.edit sok=ok name=... domainname=... passwd=... confirm=...

Для параметра passwd генерируется временный пароль, который будет заменен на существующий на шаге creds.

Этот шаг пропускается, если ящик уже существует на целевом (новом) домене.

maildata

Скрипт выполняет следующие шаги:

  1. Считывает пути Maildir из ispmgr.db для текущего и нового доменов
  2. Копирует все письма и удаляет те данные, которых нет источнике с помощью rsync -a --delete
  3. Считывает нового владельца почтовых ящиков /etc/dovecot/dovecot.passwd и передает права на владение Maildir с помощью chown -R

Sieve-скрипты (.dovecot.sieve и .sieve/) расположены в Maildir, поэтому переносятся автоматически.

creds

Скрипт выполняет следующие шаги:

  1. Считывает строку user@old.domain из /etc/dovecot/dovecot.passwd
  2. Извлекает хэш пароля (второе поле {CRAM-MD5}hex...)
  3. С помощью sed заменяет значение в строке user@new.domain полученным хэшем
  4. Копирует значения из поля password каждого текущего ящика в то же поле нового ящика
  5. Выполняет бэкап с именем dovecot.passwd.bak.<timestamp>
  6. Записывает изменения

verify

Выводит таблицу сравнения размеров каждого ящика после миграции. Пример вывода:

[2026-09-08 04:34:12] >>> ================================================================
[2026-09-08 04:34:12] >>> STARTING STEP: verify
[2026-09-08 04:34:12] >>> ================================================================
[2026-09-08 04:34:12]   Records in mailpaths.txt: 4
[2026-09-08 04:34:12] 
Login                     | Old          | New          | Files O | Files N | Status
user1                     | 7.8K         | 7.8K         |      19 |      19 | OK
user2                     | 769          | 769          |      10 |      10 | OK
user3                     | 696          | 696          |       9 |       9 | OK
user4                     | 533          | 533          |       8 |       8 | OK
[2026-09-08 04:34:12] 
[2026-09-08 04:34:12]   ===== TOTALS =====
[2026-09-08 04:34:12]   Matched:          4
[2026-09-08 04:34:12]   Different:        0
[2026-09-08 04:34:12]   Missing:          0
[2026-09-08 04:34:12] 
[2026-09-08 04:34:12]   Total old:        9.8K (46 files)
[2026-09-08 04:34:12]   Total new:        9.8K (46 files)
[2026-09-08 04:34:12] 
[2026-09-08 04:34:12]   All mailboxes match.
[2026-09-08 04:34:12] <<< ================================================================
[2026-09-08 04:34:12] <<< FINISHED STEP: verify
[2026-09-08 04:34:12] <<< ================================================================

После миграции

Проверка IP-адреса домена

В файле /etc/exim4/domainips IP-адрес нового домена должен быть публичным: с приватным (например, 10.1.0.15) адресом отправка писем работать не будет.

Отключение IPv6

По умолчанию Exim пытается использовать IPv6-адрес для работы. Если на сервере нет публичного IPv6-адреса, необходимо отключить его использование в конфигурации Exim:

В начало файла /etc/exim4/exim4.conf.template добавьте строку:

disable_ipv6 = true

В начало файла /etc/exim/exim.conf добавьте строку:

disable_ipv6 = true

Проверка отправки писем

Отправьте любое письмо с ящика на новом домене на любой доступный внешний ящик и дождитесь доставки письма

Проверьте очередь Exim можно с помощью команды:

exim -bp

Отправить письмо принудительно можно командой:

exim -M <id-письма>