Image

Base de conocimientos → Eliminación de carpetas de buzones a través de PostfixAdmin

[Servidores virtuales]
Fecha de publicación: 31.05.2023

De manera predeterminada, cuando crea un buzón en postfixadmin, se crea una carpeta para cada buzón. Al eliminar un buzón a través de postfixadmin, solo se elimina el usuario, es decir, el acceso finaliza, pero la carpeta del buzón con todas las letras permanece. Si creamos un buzón con el mismo login, los datos seguirán siendo los mismos que si no hubiésemos borrado el buzón. En este tutorial, configuraremos la eliminación automática de carpetas de buzones cuando se eliminen en PostfixAdmin.

También puede solicitar un servidor de correo VPS listo para usar, puede ver más sobre cómo está configurado aquí:

Abramos el archivo de configuración:

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

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

Vamos a crear un archivo de secuencia de comandos que eliminará las carpetas de los buzones:

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

Crear una carpeta para almacenar buzones eliminados  

mkdir /var/spool/deleted-maildirs 

Para esta carpeta, puede configurar la frecuencia de limpieza, esta opción le permite evitar la pérdida si el buzón se elimina accidentalmente o en caso de que se necesiten los datos después de un tiempo.

Ahora necesitamos otorgar derechos al usuario de vmail para ejecutar el script en /etc/sudoers 

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

Ahora las carpetas de los buzones se mueven a una carpeta separada /var/spool/deleted-maildirs cuando se eliminan:

mv $maildir $trashdir 
rm -rf $maildir 

Listo.





Sin comentarios aún