Existe-t-il un moyen de filtrer les e-mails dans un compte IMAP distant?


9

Situation: serveur de messagerie avec accès IMAP uniquement. Problème: je veux pouvoir filtrer les mails (mettre des mails dans différents dossiers, les marquer comme lus, etc.).

La plupart des nouveaux clients de messagerie ont cette capacité, mais je veux un programme de filtrage autonome, car je dois utiliser divers clients de messagerie pour me connecter à ce serveur.

Généralement - quelque chose comme procmail, mais fonctionnant sur IMAP.

Le logiciel sera exécuté sur Linux ou Solaris.


Réponses:


8

Un rapide google lance IMAPFilter qui ressemble à ce que vous voulez:

  • Recherche de messages en utilisant de nombreux critères disponibles dans le protocole IMAP, tels que:
    • Statut (récent, non lu, etc.) d'un message.
    • Taille d'un message.
    • Âge d'un message.
    • Correspondance d'une chaîne ou d'un modèle d'expression régulière dans les en-têtes ou le corps d'un message.
  • Possibilité d'utiliser des opérateurs logiques (et / ou / non) lors de la recherche de messages.
  • Différentes capacités disponibles pour traiter les messages, notamment:
    • Suppression de messages.
    • Déplacer des messages vers une boîte aux lettres sur le même serveur ou sur des serveurs différents
    • Copie des messages dans une boîte aux lettres sur le même serveur ou sur des serveurs différents.
    • Marquage des messages ou modification des indicateurs de message.
  • Liste des boîtes aux lettres disponibles et / ou abonnées, ainsi que la prise en charge de l'extension IMAP CHILDREN.
  • Création, suppression, renommage, abonnement ou désabonnement de boîtes aux lettres
  • Prise en charge de l'internationalisation (I18N).
  • Prise en charge de l'espace de noms du serveur à l'aide de l'extension IMAP NAMESPACE.
  • Connexions Imaps cryptées Secure Socket Layer (SSL) ou Transport Layer Security (TLS) (port 993).
  • Connexions chiffrées à l'aide de l'extension IMAP STARTTLS.
  • Authentification des utilisateurs avec le mécanisme d'authentification Challenge-Response (CRAM), en particulier CRAM-MD5.
  • Prise en charge des expressions régulières compatibles Perl (PCRE).

1

Selon votre serveur IMAP, vous pouvez simplement utiliser une implémentation de sieve . Je pense que le meilleur support pour le tamis est fourni par cyrus.


Eh bien, la solution que je recherche ne peut en aucun cas dépendre du serveur. Je dois supposer que le serveur est juste un IMAP stupide, sans support pour rien d'intelligent.

1

Comme vous l'avez déjà mentionné, procmail est la bonne façon de le faire, vous pouvez donc demander à votre fournisseur de messagerie s'il le prend en charge au cas où - cela ne fait pas de mal.

Sinon, le moyen le plus simple est peut-être d'avoir un client de messagerie toujours ouvert qui fait le tri, etc. Il y avait des problèmes de verrouillage avec plusieurs clients accédant à la même boîte aux lettres IMAP, mais je ne les ai pas vus depuis des années.


Ce n'est pas la réponse. Le filtrage doit avoir lieu sur le serveur IMAP, sur lequel vous n'avez aucun contrôle.
reinierpost

1

Pour une légèreté absolue, vous pouvez essayer Sift .


j'aurais aimé avoir essayé avant imapfilter.
Joshua K

Cela semble être abandonné et non entretenu, contrairement à imapfilter. Corrige moi si je me trompe.
selurvedu


0

Sur les systèmes d'exploitation Linux et Unix, vous pouvez utiliser fetchmailpour interroger votre compte de messagerie IMAP et transmettre tout nouveau message à procmail. Vous pouvez configurer procmail pour exécuter des scripts basés sur des correspondances de modèles d'expressions régulières dans les messages reçus.

Pour ce faire, vous devrez installer les packages fetchmail et procmail. La configuration suivante m'a permis d'exécuter un script pour chaque nouveau message électronique reçu sur mon compte de messagerie. J'ai utilisé Ubuntu 12.04 LTS.

Dans ~/.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"

Notez la keepdirective ci-dessus, qui garantit que les messages ne sont pas supprimés du serveur IMAP après leur récupération.

Dans ~/.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`

Il existe de nombreux didacticiels en ligne pour fetchmail et procmail, ainsi que des didacticiels sur la façon d'intégrer les deux (c'est comme ça que j'ai trouvé ce qui précède).

Maintenant, si je lance fetchmailou si fetchmail -vle script /home/username/myscript.shs'exécute une fois pour chaque nouveau message. Je peux exécuter fetchmail dans un cron, ou configurer fetchmail pour qu'il s'exécute en tant que démon avec la set daemon 600directive in .fetchmailrc(où 600 est le nombre de secondes entre les interrogations).


Ce n'est pas la réponse. Le filtrage doit avoir lieu sur le serveur IMAP.
reinierpost
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.