Me embullé e hice una entrada para el blog, mando copia pa gutl-l por si
alguien le interesa. Sobre todo pal que le duela bajarse correos grandes
que no necesitan.


                que es sieve y como usarlo

A menudo, en temas de correo, oímos hablar de Sieve, que por cierto,
significa "colador". Dícese de sieva a:

         un lenguaje de programación única y
         expresamente para filtrar correo.

Con esos truenos mete miedo al que no quiere o no sabe programar, pero
no es más que un sistema de filtrado vestido de sintaxis clásica.

Sieve tiene muchas implementaciones para ciertos usos específicos,
por eso, al buscar en internet; encontramos unas guías abstractas con cuyas
explicaciones y cuarenta quilos, coges el P1.

Para colmo, la documentación oficial en la wiki de fastmail.fm
aclara que hay que tener una cuenta de fastmail... Entonces salta la
interrogante:

          -¿y cómo lo pruebo?

Algunos proveedores de correo permiten crear reglas en sieve.
Fastmail.fm (los creadores de sieve) es uno de ellos, también myopera
y todos los que le cuelgan a messagingengine.com allá en país de los
canguros.

Pero aquí en cubita la bella nos sería útil para borrar los correos
grandes del servidor SIN TENER QUE BAJARLOS :D

En linux existe una implementación, típica de linux; como dicen los
novatos: "un comando". El intérprete de sieve casi siempre viene en el
paquete mailutils.

Con eso, podemos botar a fetchmail y a procmail, ya que ese intérprete
hace tanto la bajada del correo como su reparto y filtrado.

Los "escripses" de sieve son ficheros con una extensión ".siv"

Digamos que tenemos nuestro escript; queremos alar, bajar y filtrar el
correo de un buzón imap en un servidor remoto:

$ sieve -f imap://fulano:tupassword@servidor/ escript.siv

Si quieres alar de un pop3:

$ sieve -f pop://fulano:tupassword@servidor/ escript.siv

Pero de imap es +mejoL por que baja los encabezados y te permite
procesar el correo sin tener que bajarlo, salvando el ancho de vianda.

Osea, -f indica la URL hacia el buzón, ya que por defecto el sieve de
mailutils, ala los correos en /var/mail/$USER

Bueno, dentro de escript.siv va todo lo que has visto (o no) en la guías
abstractas...

Hablemos de el lenguaje como tal. Para empezar tiene librerías. Como
en cualquier lenguaje, dichas librerías cumplen funciones y han de ser
inlcuídas o no, a gusto del consumidor. Eso en mi opinión es un cliché
pa que parezca un lenguaje y un estorbo a la hora de teclear porque
algunas cosas ya están incluidas pero otras no.

La sintaxis básica es esta:

require ["libreriatal","libreriamascual"];
if condición {
   acción;
   acción "parámetro";
   stop;
   }

OJO! hay cosas que terminan en punto y coma; la sentencias pues.

Por ejemplo, digamos que queremos mandar todos los correos cuyo asunto
incluya la palabra 'Re:' al buzón "respuestas", para eso usaremos la
librería "fileinto" que se dedica a "archivar en" donde le digas. Este
script debería tener una linea para incluir la librería y otro para
filtrar. Se verían así:


   require ["fileinto"];
   if header :contains "Subject" "Re:" { fileinto "respuestas"; stop; }

Simple, si el campo Subject: contiene la cadena "Re:", ejecutamos
fileinto, a fileinto le mandamos como argumento el nombre del buzón,
en este caso 'respuestas' será el nombre del buzón LOCAL donde se
almacenará el correo por último el punto y coma. Después viene la
sentencia "stop" que la veremos más adelante.

Ya solo sería ejecutar el intérprete como expliqué arriba. Simplemente
varíe el campo que desea machear y el criterio, con eso estará creando
filtros a como le acomode.

NO ponga ":" ya que eso seria, por ejemplo el valor "From:" machearía un
campo que diga "From::" en el correo y no existe tal cosa.

Podemos también comprar múltiples valores o múltiples campos. Por
ejemplo, veamos que nuestra dirección este en To: o Cc:

   if header :contains ["To","Cc"] "tudireccion" {
   fileinto "/home/fulano/mail/personal";
   stop;
   }

No tenemos que poner la dirección entera, pongamos solamente la parte
de alante, de todas formas si el "To:" contiene una parte, macheará.
Teniendo en cuenta lo "corticas" que son la direcciones cubanas como por
ejemplo: salvadorsanc...@cacocum.hlg.sld.cu Mira que hay palabras largas
en el idioma finlandés, pero nada como la direcciones de correo del
ICRT, que se llevan la pantalla de lado a lado y se desaparecen antes
que termines de leerla :D Mira que hay

Pero ÉCHATE ESTO, ponte que no quieras bajar aquellos correos más grande
de un mega, podemos borrarlo SIN BAJARLO, mira:

   if size :over 1024K {discard; stop;}

Dícese de un correo cuyo tamaño sea mayor que 1024K ha de ser borrado.

La sentencia discard, borra el correo sin bajarlo, porque los
encabezados de imap se bajan sin bajar el correo completo.

Recuerde que sieve no solo es un comando de mailutils, está implementado
en otro lenguaje, por ejemplo, la sentencia ":envelope" en vez de
:contains, se usa para machear el comando MAIL FROM de los servidores
SMTP en una implementación que trabaje DENTRO del servidor.

ah! y el stop... Si en vez de usar "stop" usaremos "keep", estaríamos
diciendo que siga procesando el correo al siguiente filtro. El stop
quiere decir que para ese correo que macheó esa regla, no se le hará más
nada. En cambio, keep, seguirá procesando el correo por las demás reglas.

Para los usuarios de procmail:

:0c es keep
:0f es stop

Veamos cosas más locales y "desorbitantes", por ejemplo, digamos que
queremos quitar todos los adjuntos del '.exe' de los correos para evitar
virus.

if attachment :matches "*.exe*" { discard; stop; }

Usamos la sentencia attachment con el símbolo :matches detrás, osea "si
el adjunto machea", luego el argumento "entre comilla" es el macheo, en
este caso "*.exe*" note que está entre *asteriscos*, es una expresión
regular.

También podemos anidar, para probar varias condiciones. Por ejemplo si
un fichero ".zip" es mayor de un mega, que no pase.

if attachment :contains ".zip" { 
   if size :over 1024K { discard; stop; } 
   } 

Como ven: ¡Dentro de los {} metimos otro filtro!

Digamos que el jefe nos dice:

-quiero que todos los correos que vengan del banco, se le envíen
 a "mengana", a "siclano" pero que además, le lleguen al que se lo
 mandaron originalmente

El diablito te dice "MDaemon lo hace facilito" pero tu, un linuxero
radical, que usa software libre por convicción (o porque te obligaron a
poner Nova) sabes que sieve tiene el power...

Así mismo, como dijo el jefe:

if envelope :contains "From" "banco" { 
  redirect "meng...@dominio.cu";
  redirect "ful...@dominio.cu";
  keep;
} 
 
El secreto para que le llegue a quien se lo mandaron originalmente es la
palabra clave "keep" osea, "keep walking in your way" sigue tu camino.

Más claro, ni el café de la bodega...



Salbi cogió un teclado y escribió: 
>
> OK,, gracias,,,
> 
> cuando puedas me envías tus apuntes..
> 
> 
> Saludos
> 
> 
> ----- Original Message ----- From: "låzaro" <netad...@lex-sa.cu>
> To: "Salbi" <sa...@cacocum.hlg.sld.cu>
> Sent: Tuesday, September 10, 2013 11:01 AM
> Subject: Re: Fw: Un poco sobre linux, especialmente Ubuntu: Activar
> Sieve en Dovecot 1.1
> 
> 
> aun no he podido detemrinar eso, porque solo sudece con algunas paginas
> 
> 
> Salbi cogió un teclado y escribió:
> >
> >te digo sin el contenido,,
> >
> >
> >----- Original Message ----- From: "låzaro" <netad...@lex-sa.cu>
> >To: "Salbi" <sa...@cacocum.hlg.sld.cu>
> >Sent: Tuesday, September 10, 2013 10:55 AM
> >Subject: Re: Fw: Un poco sobre linux, especialmente Ubuntu: Activar
> >Sieve en Dovecot 1.1
> >
> >
> > oye no seas apretador! NO todas llegan asi...
> >
> >
> >Salbi cogió un teclado y escribió:
> >>
> >>por que me llegan las pagina que mando a pedir vacías,, mira te envió una
> >>
> >>
> >>----- Original Message -----
> >>From: www4mail.rb
> >>To: sa...@cacocum.hlg.sld.cu
> >>Cc: netad...@lex-sa.cu
> >>Sent: Tuesday, September 10, 2013 10:48 AM
> >>Subject: Re: Un poco sobre linux, especialmente Ubuntu: Activar Sieve en
--
-------- Warning! ------------
100'000 pelos de escoba fueron
introducidos satisfactoriamente
en su puerto USB.


-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a