0. 前提
- CentOS[5-7]でしか検証していません。
- rpmパッケージによるデフォルトのインストールパスであることを想定しています。
これの焼き直し。
1. 移行元サーバで下記コマンド群を実行し、ファイルにパスワードをエクスポートする。
cat <<'__EOD__' >/tmp/mailman-get-password.sh
#!/bin/bash
ls /var/lib/mailman/lists/*/config.pck | while read LINE
do
echo -n "$LINE" | sed -r 's@.+/([^/]*)/config.pck@\1@g'
/usr/lib/mailman/bin/dumpdb -p $LINE \
| grep "'password'" \
| sed -r "s@[ \t]*'password': '?([0-9a-zA-Z]+).*@ \1@g"
done
#EOF
__EOD__
chmod 755 /tmp/mailman-get-password.sh
/tmp/mailman-get-password.sh | tee /tmp/mailman-password.txt
2. 上記により生成されたファイル/tmp/mailman-password.txt
を、移行先サーバへコピー。
移行先サーバの/tmp/mailman-password.txt
へ配置する。
3. 移行先サーバで下記コマンドを実行し、インポート前のパスワードを確認する。
ls /var/lib/mailman/lists/*/config.pck | while read LINE; do echo -n "$LINE" | sed -r 's@.+/([^/]*)/config.pck@\1@g'; /usr/lib/mailman/bin/dumpdb -p $LINE | grep "'password'" | sed -r "s@[ \t]*'password': '?([0-9a-zA-Z]+).*@ \1@g"; done
4. 移行先サーバで下記コマンド群を実行し、ファイルからパスワードをインポートする。
cat <<'__EOD__' >/tmp/mailman-set-password.sh
#!/bin/bash
expect -c "
set timeout 4
spawn /usr/lib/mailman/bin/withlist -i -l $1
expect \">>>\"
send \"m.password='$2'\\n\"
expect \">>>\"
send \"m.Save()\\n\"
expect \">>>\"
send \"quit()\\n\"
expect \"Any character string that will never be output.\"
exit 0
"
sleep 0.5
echo
#EOF
__EOD__
chmod 755 /tmp/mailman-set-password.sh
cat /tmp/mailman-password.txt | while read LINE; do /tmp/mailman-set-password.sh $LINE; done
5. 移行先サーバで下記コマンドを実行し、パスワードが引き継がれていることを確認する。
ls /var/lib/mailman/lists/*/config.pck | while read LINE; do echo -n "$LINE" | sed -r 's@.+/([^/]*)/config.pck@\1@g'; /usr/lib/mailman/bin/dumpdb -p $LINE | grep "'password'" | sed -r "s@[ \t]*'password': '?([0-9a-zA-Z]+).*@ \1@g"; done