기본적으로 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
Example script for removing a Maildir from a Courier-IMAP virtual mail
hierarchy.
The script looks at arguments 1 and 2, assuming that they
indicate username and domain, respectively.
The script will not actually delete the maildir. I moves it
to a special directory which may once in a while be cleaned up
by the system administrator.
This script should be run as the user which owns the maildirs. If
the script is actually run by the apache user (e.g. through PHP),
then you could use "sudo" to grant apache the rights to run
this script as the relevant user.
Assume this script has been saved as
/usr/local/bin/postfixadmin-mailbox-postdeletion.sh and has been
made executable. Now, an example /etc/sudoers line:
apache ALL=(courier) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh
The line states that the apache user may run the script as the
user "courier" without providing a password.
Change this to where you keep your virtual mail users' maildirs.
basedir=/home/mail
Change this to where you would like deleted maildirs to reside.
trashbase=/var/spool/deleted-maildirs if [ ! -e "$trashbase" ]; then echo "trashbase '$trashbase' does not exist; bailing out."
exit 1
fi if [
echo $1 | fgrep '..'
]; thenecho "First argument contained a double-dot sequence; bailing out." exit 1
fi
if [ `echo $2 | fgrep '..'` ]; thenecho "First argument contained a double-dot sequence; bailing out."
exit 1fi
#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 "Strainge - directory '$parent' exists, but is not a directory." echo "Bailing out." exit 1else
mkdir -p "$parent" if [ $? -ne 0 ]; thenecho "mkdir -p '$parent' returned non-zero; bailing out."
exit 1
fi
fi
fi
if [ ! -e "$maildir" ]; then
echo "maildir '$maildir' does not exist; nothing to do."
exit 1
fi
if [ -e "$trashdir" ]; then
echo "trashdir '$trashdir' already exists; bailing out."
exit 1
fi
Move or delete (Move enebled by Default)
mv $maildir $trashdir #rm -rf $maildir
exit $?
삭제된 편지함을 저장할 폴더를 만들어 보겠습니다
mkdir /var/spool/deleted-maildirs
이 폴더의 경우 정리 빈도를 구성할 수 있습니다. 이 옵션을 사용하면 실수로 사서함을 삭제하거나 일정 시간 후에 데이터가 필요할 경우 손실을 방지할 수 있습니다.
이제 vmail 사용자에게 스크립트를 실행할 수 있는 권한을 부여해야 합니다 /etc/sudoers
# User privilege specification
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
준비가 된.