mgrizal

Well-Known Member
Jun 15, 2004
55
0
156
Hola,

Conocen por ahí un metodo para vaciar la carpeta del spam automáticamente a todas las cuentas que tienen el servicio activado? digamos que cada mes o 15 días.

Gracias !
 

sv70

Active Member
Dec 24, 2006
28
0
151
pues supongo que para la cuenta que quieras:

rm -f /mail/yourdomainname/username/spam

no lo he probado

salu2
 

kran

Well-Known Member
Jul 5, 2003
75
0
156
Colombia
cPanel Access Level
Root Administrator
Podria ser algo asi...

Yo uso esta linea para remover los archivos en los directorios /cur que se llenan con correos viejos, podrias modificar este para las carpetas de Spam:

1) buscar los /home/user/mail/cur mas llenos
find /home/*/mail/cur -maxdepth 1 -type d -print | xargs du -sk | sort -rn

1a) con mas de 250 dias
find /home/*/mail/cur -maxdepth 1 -type f -ctime +250 -print | xargs du -sk | sort -rn

1b) remover los cur con mas de 250 dias
find /home/*/mail/cur -maxdepth 1 -type f -ctime +250 | xargs /bin/rm -v
 

latinwit1

Member
Apr 23, 2006
7
0
151
Hola!

Hace un tiempo hice este script y lo coloqué en /etc/cron.daily/remove-old-mail para que corra una ves al día. Borra los mensajes de la carpeta spam de más de dos días y los de los trash de más de 14 días.

Code:
cd /home
for dir in .trash .Trash .spam
do
    if [ $dir = ".spam" ]; then
        days=2
    else
        days=14
    fi

    for dir2 in $(locate $dir | egrep '^/home/[0-9a-zA-Z]*/mail/')
    do
        if [ -d $dir2/new/ ]; then
            find $dir2/new/ -name '[0-9]*.*' -type f -mtime +$days -exec rm -fv '{}' \;
        fi
        if [ -d $dir2/cur/ ]; then
            find $dir2/cur/ -name '[0-9]*.*' -type f -mtime +$days -exec rm -fv '{}' \;
        fi
    done
done
Un abrazo,
 

latinwit1

Member
Apr 23, 2006
7
0
151
ov3r, buena observación, es correcto lo que indicas, sucede que lo copié y pegué de un archivos que tiene más tareas.

saludos,
 

ov3r

Member
Aug 18, 2006
22
0
151
ov3r, buena observación, es correcto lo que indicas, sucede que lo copié y pegué de un archivos que tiene más tareas.

saludos,
latinwit1 he probado tu script y ahora me devuelve este msg el crow por mail:

/etc/cron.daily/remove-old-mail:


/home/(censurado)/mail/.Trash/cur/1167942985.M846485P17461V0000000000000341I0093020D_6.(censurado),S=670:2,'
removed
otro user =

Y luego:
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
 

latinwit1

Member
Apr 23, 2006
7
0
151
ov3r, eso te sucede pues no se está actualizando slocate.db, normalmente se actualiza todos los días vía un cron (/etc/cron.daily/slocate.cron). Esto permite usar el comando "locate" en ves del "find" para asegurarse la velocidad.

Como soluciones:
1) busca de actualizar la slocate.db vía el comando updatedb una ves al día (que es lo normal)
2) actualiza a mano ejecutando /usr/sbin/updatedb (o donde se encuentre en tu sistema)
3) habría que modificar el script para que use siempre find en ves de locate.

saludos,
 

ov3r

Member
Aug 18, 2006
22
0
151
ov3r, eso te sucede pues no se está actualizando slocate.db, normalmente se actualiza todos los días vía un cron (/etc/cron.daily/slocate.cron). Esto permite usar el comando "locate" en ves del "find" para asegurarse la velocidad.

Como soluciones:
1) busca de actualizar la slocate.db vía el comando updatedb una ves al día (que es lo normal)
2) actualiza a mano ejecutando /usr/sbin/updatedb (o donde se encuentre en tu sistema)
3) habría que modificar el script para que use siempre find en ves de locate.

saludos,
para cambiar el locate por el find en el script solo hay que cambiar donde pone locate por el comando find no?

un saludo
 

latinwit1

Member
Apr 23, 2006
7
0
151
ov3r, deberías cambiar toda la expresión:

Code:
$(locate $dir | egrep '^/home/[0-9a-zA-Z]*/mail/')
por algo así:

Code:
$(find /home/*/mail/ -type d | grep "$dir$")
Pero has varias pruebas primero, YMMV

saludos,