Pregunta ¿Hay alguna forma de filtrar correos en cuentas remotas IMAP?


Situación: Servidor de correo con acceso solo IMAP. Problema: Quiero poder filtrar correos (poner algunos correos en varias carpetas, marcarlos como leídos y así sucesivamente).

La mayoría de los nuevos clientes de correo electrónico tienen esta capacidad, pero quiero un programa de filtrado independiente, ya que necesito usar varios clientes de correo electrónico para conectarme a este servidor.

Generalmente - algo como procmail, pero trabajando sobre IMAP.

El software se ejecutará en Linux o Solaris.


8
2017-07-24 11:20


origen


Ver también: ¿Procmail y entrega a un servidor IMAP? - reinierpost


Respuestas:


Un rápido google lanza IMAPFiltro que parece que hace lo que quieres:

  • Búsqueda de mensajes utilizando muchos criterios disponibles en el protocolo IMAP, tales como:      
    • Estado (reciente, no leído, etc.) de un mensaje.
    • Tamaño de un mensaje.
    • Edad de un mensaje.
    • Coincidencia de una cadena o un patrón de expresión regular en los encabezados o el cuerpo de un mensaje.
  • Capacidad para utilizar operadores lógicos (y / o / no) al buscar mensajes.
  • Diferentes capacidades disponibles para procesar mensajes, incluyendo:      
    • Eliminando mensajes.
    • Mover mensajes a un buzón en el mismo servidor o en servidores diferentes
    • Copiando mensajes a un buzón en el mismo servidor o en servidores diferentes.
    • Marcando mensajes o cambiando banderas de mensajes.
  • Listado de los buzones disponibles y / o suscritos, junto con el soporte para la extensión IMAP CHILDREN.
  • Crear, eliminar, renombrar, suscribir o cancelar la suscripción de buzones
  • Soporte a la internacionalización (I18N).
  • Soporte de espacio de nombres del servidor usando la extensión IMAP NAMESPACE.
  • Conexiones de Secure Socket Layer (SSL) o Transport Layer Security (TLS) imaps (puerto 993) cifrados.
  • Conexiones encriptadas utilizando la extensión IMAP STARTTLS.
  • Autenticación de usuario con el Mecanismo de autenticación de desafío-respuesta (CRAM), específicamente CRAM-MD5.
  • Compatibilidad con expresiones regulares compatibles con Perl (PCRE).

8
2017-07-24 12:11





Dependiendo de su servidor IMAP, simplemente podría usar alguna implementación de tamiz. Creo que Cyrus proporciona el mejor soporte para el tamiz.


1
2017-07-24 11:31



Bueno, la solución que busco no puede depender de ninguna manera del servidor. Tengo que asumir que el servidor es solo un IMAP tonto, sin soporte para nada inteligente.


Como ya mencionó, procmail es la forma correcta de hacer esto, por lo que puede preguntar a su proveedor de correo electrónico si lo respalda, por si acaso, no duele.

De lo contrario, quizás la forma más fácil es tener un cliente de correo electrónico siempre abierto que haga la clasificación, etc. Solía ​​haber problemas de bloqueo con múltiples clientes que accedían al mismo buzón IMAP, pero no los he visto en años.


1
2017-07-24 11:48



Esta no es la respuesta. El filtrado debe realizarse en el servidor IMAP, sobre el que no tiene control. - reinierpost


Por pura ligereza, podrías dar Tamizar a un intento.


1
2017-07-27 18:57



Ojalá hubiera intentado esto antes de imapfilter. - Joshua K


Otra forma es utilizar el filtro de imap-ruby gem.

https://github.com/flajann2/imap-filter/blob/master/README.org

Y ejemplo de la DSL,

https://github.com/flajann2/imap-filter/blob/master/examples/default.imap

El DSL está basado en Ruby, pero no necesita saber mucho de Ruby para usarlo. El autor se compromete a proporcionar más ejemplos en un futuro próximo, y está abierto a las solicitudes de características y solicitudes de extracción.


1
2017-10-01 11:23





En los sistemas operativos Linux y Unix, puede utilizar fetchmail para sondear su cuenta de correo electrónico IMAP y pasar cualquier mensaje nuevo a procmail. Puede configurar procmail para ejecutar scripts basados ​​en coincidencias de patrones de expresiones regulares en los mensajes recibidos.

Para hacer esto, necesitarás instalar los paquetes fetchmail y procmail. La siguiente configuración me permitió ejecutar un script para cada nuevo mensaje de correo electrónico recibido en mi cuenta de correo electrónico. Utilicé Ubuntu 12.04 LTS.

En ~/.fetchmailrc:

# .fetchmailrc checks my e-mail account for new messages, sends them to procmail

set logfile /home/myusername/fetchmail.log

poll mail.domain.com protocol IMAP
    user "emailaccountname"
    password 'emailpassword'
    folder 'INBOX'
    keep
    ssl
    mda "/usr/bin/procmail -f %F"

Nota la keep directiva anterior, que garantiza que los mensajes no se eliminen del servidor IMAP después de recuperarlos.

En ~/.procmailrc:

# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh

# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`

Hay muchos tutoriales en línea para fetchmail y procmail, y también tutoriales sobre cómo integrar los dos (así es como se me ocurrió lo anterior).

Ahora si corro fetchmail o fetchmail -v la secuencia de comandos /home/username/myscript.sh corre una vez por cada nuevo mensaje. Puedo ejecutar fetchmail en un cron, o configurar fetchmail para que se ejecute como un demonio con el set daemon 600 directiva en .fetchmailrc (donde 600 es el número de segundos entre las encuestas).


0
2018-03-07 22:06



Esta no es la respuesta. El filtrado debe ocurrir en el servidor IMAP. - reinierpost