# [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
# [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/
以下のスクリプトを /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