Hasta ahora tenemos una forma de marcar los mensajes dando al usuario la responsabilidad de eliminar los mensajes de su bandeja de entrada. Pero algunos usuarios no quieren verlos, no quieren crear filtros en el cliente de correo (o no pueden hacerlo), entonces ¿qué podemos hacer? Vamos a crear una carpeta IMAP llamada Junk para el correo basura. Si nuestro usuario es amigo@mylittlecloud.com haremos lo siguiente (recordemos que el usuario de administración de Cyrus es cloud):
$ cyradm -u cloud localhost localhost> cm user/friend/Junk@mylittlecloud.com localhost> mboxcfg user/friend/Junk@mylittlecloud.com expire 20 localhost> info user/friend/Junk@mylittlecloud.com {user/friend/Junk@mylittlecloud.com}: duplicatedeliver: false expire: 20 lastpop: lastupdate: 23-Jun-2013 00:32:40 +0000 partition: default pop3newuidl: true sharedseen: false size: 0
Ahora estamos haciendo que automáticamente caduquen los correos basura de la carpeta a los 20 días, por lo tanto el usuario tiene tiempo para ver de vez en cuando el SPAM y vigilar si hay falsos positivos.
Ahora tenemos que mover todos los correos basura a esa carpeta, para ello, vamos a crear un script de sieve, en el que vigilemos el asunto del mensaje, y si detectamos que este es *****SPAM***** lo movamos a la carpeta Junk.
El script llamado moveToJunk.sieve contendrá lo siguiente:
if header :matches "Subject" ["*****SPAM*****"] {
fileinto "INBOX/Junk";
}
else {
keep;
}
Ahora nos identificamos en sieveshell como el usuario en el que queremos ejecutar los scripts, pero desde nuestra cuenta de administración (normalmente no conocemos las contraseñas de los usuarios). Ahí instalamos el script y lo activamos de la siguiente manera:
<blockquote><pre>$ sieveshell --user=friend@mylittlecloud.com --realm cloud localhost
> put moveToJunk.sieve
> activate moveToJunk.sieve
> ls
moveToJunk.sieve
> quit</pre></blockquote>
Y ya lo tenemos, ahora tenemos que hacerlo en todos los usuarios de nuestro sistema. El siguiente script puede ayudar:
for user in $USERS
do
NAME=`echo $user | cut -d'@' -f1`
DOMAIN=`echo $user | cut -d'@' -f2`
echo "NAME: $NAME ; DOMAIN: $DOMAIN"
done
Con este script cogemos la lista de usuarios de /etc/postfix/vmailbox y extraemos el nombre y el dominio de cada uno de los usuarios, por lo tanto cuando creemos la carpeta Junk, esta tendrá la forma:
user/$NAME/Junk@$DOMAIN
Y la instalación del script de sieve es la misma para todos los usuarios. El siguiente script no está muy optimizado y puede tardar, pero hace su trabajo con todos los usuarios que tenemos en el sistema:
USERS=`cat /etc/postfix/vmailbox | cut -d' ' -f1`
for user in $USERS
do
NAME=`echo $user | cut -d'@' -f1`
DOMAIN=`echo $user | cut -d'@' -f2`
echo "cm user/$NAME/Junk@DOMAIN" | cyradm -u cloud -w $CYRADM_PASSWORD localhost
echo -e "put moveToJunk.sieve\nactivate moveToJunk.sieve" | sieveshell --user=$user --realm cloud --password=$CYRADM_PASSWORD localhost
done
Deja un comentario