Image

ナレッジベース → PostfixAdmin 経由でメールボックス フォルダーを削除する

[仮想サーバー]
公開日: 31.05.2023

デフォルトでは、postfixadminでメールボックスを作成すると、各メールボックスにフォルダーが作成されます。postfixadminを通じてメールボックスを削除した場合、削除されるのはユーザーのみで、アクセスが終了しますが、メールボックスのフォルダとすべてのメールは残ります。同じログイン名でメールボックスを作成すると、まるで削除していないかのようにデータが保持されます。このチュートリアルでは、PostfixAdminで削除された際にメールボックスフォルダを自動的に削除する設定を行います。

また、準備済みのVPSメールサーバーを注文することもできます。設定方法の詳細はこちらをご覧ください:

設定ファイルを開きましょう:

/usr/share/nginx/html/postfixadmin/config.inc.php

$CONF['mailbox_postdeletion_script']='sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh';

メールボックスフォルダを削除するスクリプトファイルを作成しましょう:

#touch /usr/local/bin/postfixadmin-mailbox-postdeletion.sh

#!/bin/sh

Courier-IMAP仮想メールの階層からMaildirを削除するためのサンプルスクリプトです。

このスクリプトは第1引数と第2引数を参照し、それぞれがユーザー名とドメインを示していると仮定しています。

このスクリプトは実際にはmaildirを削除しません。特定のディレクトリに移動させ、システム管理者が定期的に整理することができます。

このスクリプトは、maildirの所有者であるユーザーとして実行される必要があります。もしスクリプトがapacheユーザーによって(PHP経由などで)実行される場合、

"sudo" を使用して、apacheに関連するユーザーとしてこのスクリプトを実行する権限を付与することができます。

このスクリプトは、/usr/local/bin/postfixadmin-mailbox-postdeletion.shとして保存され、実行可能にしていると仮定します。以下は、/etc/sudoersの例です:

apache ALL=(courier) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh

この行は、apacheユーザーがパスワードを提供せずに "courier" ユーザーとしてスクリプトを実行できることを示します。

仮想メールユーザーのmaildirの場所を変更してください。

basedir=/home/mail

削除されたmaildirを置きたい場所を変更してください。

trashbase=/var/spool/deleted-maildirs if [ ! -e "$trashbase" ]; then echo "trashbase '$trashbase' は存在しません; 中止します。"

exit 1

fi if [ echo $1 | fgrep '..' ]; then

echo "最初の引数にダブルドットシーケンスが含まれていました; 中止します。" exit 1

fi

if [ `echo $2 | fgrep '..'` ]; then

    echo "最初の引数にダブルドットシーケンスが含まれていました; 中止します。"

exit 1

fi

#subdir=`echo "$1" | sed 's/@.*//'`

subdir=`echo "$1"`

maildir="${basedir}/$2/${subdir}" trashdir="${trashbase}/$2/`date +%F_%T`_${subdir}" parent=`dirname "$trashdir"` if [ ! -d "$parent" ]; then if [ -e "$parent" ]; then echo "奇妙なことに、ディレクトリ '$parent' が存在しますが、ディレクトリではありません。" echo "中止します。" exit 1

    else

mkdir -p "$parent" if [ $? -ne 0 ]; then

            echo "mkdir -p '$parent' がゼロ以外を返しました; 中止します。"

            exit 1

        fi

    fi

fi

if [ ! -e "$maildir" ]; then

    echo "maildir '$maildir' は存在しません; 何もすることがありません。"

    exit 1

fi

if [ -e "$trashdir" ]; then

    echo "trashdir '$trashdir' はすでに存在します; 中止します。"

    exit 1

fi

削除 (デフォルトで移動が有効)

mv $maildir $trashdir #rm -rf $maildir

exit $?

削除されたメールボックスを保管するフォルダを作成する  

mkdir /var/spool/deleted-maildirs 

このフォルダでは、清掃頻度を設定することができ、メールボックスが誤って削除された場合や、後でデータが必要になる場合に備えてデータ損失を防ぐことができます。

次に、vmailユーザーに/etc/sudoersでスクリプトを実行する権限を付与する必要があります 

# ユーザー特権の指定
root ALL=(ALL:ALL) ALL
www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh 

メールボックスフォルダは削除されると、/var/spool/deleted-maildirs という別のフォルダに移動されます:

mv $maildir $trashdir 
rm -rf $maildir 

完了。





No Comments Yet