第4章:既存データ・設定の移行

← 目次に戻る

4.1 接続の事前準備 (SSH互換性とホストキー)

# [Ubuntu側] CentOS 6からの古い暗号形式を許可
echo "PubkeyAcceptedAlgorithms +ssh-rsa" | sudo tee -a /etc/ssh/sshd_config
echo "HostKeyAlgorithms +ssh-rsa" | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart ssh

# [CentOS 6側] ホストキーのリセットと鍵転送
ssh-keygen -R 192.168.200.227
ssh-copy-id ymatsuki@192.168.200.227
    

4.2 データの抽出と送り出し (CentOS 6)

# [CentOS 6側]
mysqldump -u root -p [DB名] domain alias mailbox --skip-extended-insert > /root/pfa_full.sql
scp /root/pfa_full.sql ymatsuki@192.168.200.227:/tmp/
    

4.3 データのコンバートとインポート (Ubuntu)

以下のスクリプトを /root/import_pfa_to_ispc.sh として作成し実行せよ。

#!/bin/bash
# PostfixAdmin to ISPConfig 3 Master Converter
ISPC_DB="dbispconfig"
SYS_UID=1
SYS_GID=1

# Step 1: PFAデータの再現
mysql $ISPC_DB <<INNER_EOF
SET SQL_MODE = 'ALLOW_INVALID_DATES';
DROP TABLE IF EXISTS mailbox, alias, domain;
SOURCE /tmp/pfa_full.sql;
INNER_EOF

# Step 2: ドメイン移送
mysql $ISPC_DB -e "INSERT IGNORE INTO mail_domain (server_id, domain, active, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other) SELECT 1, domain, IF(active = 1, 'y', 'n'), $SYS_UID, $SYS_GID, 'riud', 'riud', '' FROM domain WHERE domain != 'ALL';"

# Step 3: メールボックス移送 (postfix/accessカラムで有効化)
mysql $ISPC_DB -e "INSERT INTO mail_user (server_id, email, login, password, name, maildir, quota, homedir, uid, gid, postfix, access, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other) SELECT 1, username, username, CONCAT('{MD5-CRYPT}', password), name, CONCAT('/home/vmail/', maildir), (quota * 1024 * 1024), '/home/vmail', 5000, 5000, 'y', 'y', $SYS_UID, $SYS_GID, 'riud', 'riud', '' FROM mailbox;"

# Step 4: エイリアス移送 (分割処理)
mysql $ISPC_DB -N -e "SELECT address, goto FROM alias WHERE address != goto" | while read -r address goto; do
    IFS=',' read -ra ADDR_ARRAY <<< "$goto"
    for dest in "${ADDR_ARRAY[@]}"; do
        dest=$(echo "$dest" | xargs)
        [[ "$address" == "$dest" ]] && continue
        mysql $ISPC_DB -e "INSERT INTO mail_forwarding (server_id, source, destination, type, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other) VALUES (1, '$address', '$dest', 'alias', $SYS_UID, $SYS_GID, 'riud', 'riud', '')"
    done
done
    

4.4 仕上げの同期 (Resync)

  1. ISPConfig UI: Tools > Resync
  2. Maildomains, Mailboxes, Client and reseller を選択して [Start]