zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

(ezmlm)他環境から持ってきたバーチャルドメインのML参加者リストの洗い替え

【現象】
[qmail+vpopmail+ezmlm+qmailadmin]で構築しているメールサーバ間で
バーチャルドメインディレクトリごと持ってきたときに、ML動作は
一見正常なんだけど、qmailadminを使って既存ユーザを削除しようとすると
hoge@hoge.jp メールアドレスはメーリングリストから削除されました。」
って表示されているのに実は削除されていない!ということが発生した。
また、既に登録済みのアカウントと重複するアカウントが登録できたりもした。
やばい。

【理由】
ezmlm-sub/unsubが正しく働かない様で、恐らくOSが異なる
(CentOS5/32bit→CentOS6/64bitでビット数も違った)ことから
subscribers以下のランダムなディレクトリの生成ルールがずれてしまったものと推測。
(同じアカウントが既存のとは違うディレクトリ下に配置されたり)
※同じOSバージョン間では問題なかったので今回初めて発覚した。

http://www.atmarkit.co.jp/flinux/rensai/qmail05/qmail05a.html
ezmlmでは、ML登録者などのリストをsubscribersディレクトリで53のファイルに分割して保存します

【解決】
http://d.0228.me/20100419/932/
上記を参考に、subscribers以下のみを再登録する方向で対応した。以下手順

su vpopmail
cd /home/vpopmail/domains/hoge.jp
# メーリングリスト登録者のバックアップ
/usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/hoge.jp/mlname > hoge.jp_mlname_list

# 登録者リストディレクトリの移動(この時点でqmailadminの一覧からユーザーが消える)
mv /home/vpopmail/domains/hoge.jp/mlname/subscribers /home/vpopmail/domains/hoge.jp/mlname/subscribers_org

# 登録者リストディレクトリ作成
mkdir /home/vpopmail/domains/hoge.jp/mlname/subscribers

# 登録者リストディレクトリ権限変更
chmod 700 /home/vpopmail/domains/hoge.jp/mlname/subscribers

# 再登録
/usr/local/bin/ezmlm/ezmlm-sub /home/vpopmail/domains/hoge.jp/mlname < hoge.jp_mlname_list

上記により、qmailadminによるMLアカウントの削除が可能となった。

何らかの参考になれば。