Image

Base de connaissances → Suppression des dossiers de boîte aux lettres via PostfixAdmin

[Serveurs virtuels]
Date de publication: 31.05.2023

Par défaut, lorsque vous créez une boîte aux lettres dans postfixadmin, un dossier est créé pour chaque boîte aux lettres. Lors de la suppression d'une boîte aux lettres via postfixadmin, seul l'utilisateur est supprimé, c'est-à-dire l'accès est terminé, mais le dossier de la boîte aux lettres avec toutes les lettres reste. Si nous créons une boîte aux lettres avec le même identifiant, les données resteront les mêmes que si nous n'avions pas supprimé la boîte aux lettres. Dans ce tutoriel, nous allons configurer la suppression automatique des dossiers de boîtes aux lettres lorsqu'ils sont supprimés dans PostfixAdmin.

Vous pouvez également commander un serveur de messagerie VPS prêt à l'emploi, vous pouvez en savoir plus sur la façon dont il est configuré ici:

Ouvrons le fichier de configuration:

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

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

Créons un fichier de script qui supprimera les dossiers de boîte aux lettres:

#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 $?

Créer un dossier pour stocker les boîtes aux lettres supprimées  

mkdir /var/spool/deleted-maildirs 

Pour ce dossier, vous pouvez configurer la fréquence de nettoyage, cette option vous permet d'éviter la perte si la boîte aux lettres est accidentellement supprimée ou si les données peuvent être nécessaires après un certain temps.

Nous devons maintenant accorder des droits à l'utilisateur vmail pour exécuter le script dans /etc/sudoers 

# User privilege specification
root ALL=(ALL:ALL) ALL
www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh 

Désormais, les dossiers de boîtes aux lettres sont déplacés vers un dossier séparé /var/spool/deleted-maildirs lorsqu'ils sont supprimés:

mv $maildir $trashdir 
rm -rf $maildir 

Prêt.





Aucun commentaire pour l'instant