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

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 '..' ]; then

echo "First argument contained a double-dot sequence; bailing out." exit 1

fi

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

    echo "First argument contained a double-dot sequence; bailing out."

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 "Strainge - directory '$parent' exists, but is not a directory." echo "Bailing out." exit 1

    else

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

            echo "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 

준비가 된.





No Comments Yet