PostfixAdminのユーザディレクトリ削除

PostfixAdminは、管理画面上からユーザアカウントを削除してもサーバ上のメールボックスは削除してくれない。

その機能を補完するスクリプトが用意されているので、今回実装した。

ファイル名は、「mailbox_remover.pl」でPostfixAdminのインストールディレクトリの「ADDITIONS」ディレクトリの中にある。

変更箇所は、以下の通り。

##########
# Set these variables according to your configuration

# when mailboxes are removed, save their tarballs here
#my $archdir="/var/archive/mailboxes";
my $archdir="/backup/mailboxes";

# expected to support z option, tweak invocation if you want different
#my $archcmd="/usr/bin/tar";
my $archcmd="/bin/tar";

# trailing slash not needed
#my $maildir_path="/var/mail";
my $maildir_path="/data/postfix"; (「/data/postfix/ドメイン名/アカウント」の場合)
# find out if we need to check subdirs for mailboxes or just maildir_path
# $CONF['domain_path'] = 'YES';
my $pfadmin_config="config.inc.phpのパス";

# database information
my $host="localhost";
my $port="3306";
my $userid="データベースのユーザID";
my $passwd='データベースパスワード';
my $db="データベース名";
############

124行目の「system(@args) == 0 or die "Creating archive for $maildir failed: $?"」の一番後ろに「;」が抜けているので、追加する。

[root@bssv1 ADDITIONS]# perl mailbox_remover.pl
marking /data/postfix/ドメイン名/test for deletion.
Ctrl-C in 5 seconds to abort before removal starts...
Archiving ドメイン名/test
ドメイン名/test/
ドメイン名/test/tmp/
ドメイン名/test/new/
ドメイン名/test/dovecot-uidvalidity.4aa77d32
ドメイン名/test/cur/
ドメイン名/test/dovecot-uidlist
ドメイン名/test/dovecot.index
ドメイン名/test/dovecot.index.log
ドメイン名/test/dovecot-uidvalidity
Wed Jun 2 10:14:13 2010 ドメイン名/test has been deleted.

無事削除することができました。

あとは、cronで毎日0時に実行するように設定。
「0 0 * * * root /usr/bin/perl mailbox_remover.plの絶対パス」

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です