Comment puis-je appliquer mes filtres procmail à ma boîte de réception maildir?


9

Hier soir, je me suis abonné à une liste de diffusion et j'ai découvert ce matin que mon filtre procmail ne s'appliquait pas à la plupart des messages de la liste de diffusion. Maintenant, j'ai des tas de messages de liste de diffusion moins importants entrecoupés de mes courriels professionnels plus importants dans ma boîte de réception.

Est-il possible de réexécuter tous les e-mails de ma boîte de réception via mes filtres procmail?

Remarque: j'utilise le format maildir



Cela présente une solution partielle. Dans ce cas, certains e-mails seront certainement redirigés vers la boîte de réception. Il semble qu'il devrait déjà y avoir une solution * nux à ce problème dont je ne suis tout simplement pas au courant, au lieu d'écrire un script pour simuler le processus de livraison de courrier existant.
Cory Klein

Le problème est que procmail ne fonctionne que sur les messages électroniques, il ne fonctionne pas sur les dossiers, les mbox ou tout autre chose - cela signifie que vous devrez soit simuler la livraison ou utiliser quelque chose comme thunderbird et le filtrer là-bas.
Ulrich Dangel

Réponses:


3

Je crois que cela fonctionnera. Vous devez exécuter formailpour reformater le courrier et le renvoyer procmail.

Depuis le répertoire Maildir:

cat * | formail -s procmail


3
Est-ce que cela fonctionne réellement? Cela ne laisserait-il pas tous les anciens messages là où ils étaient?
cnst

2

vous pourriez être en mesure de le faire sur place, comme ceci:

$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done

Vous devez ensuite supprimer chaque e-mail d'origine, sinon procmail le dupliquera.

Il enregistrera également tout comme neuf. Je ne suis pas sûr d'un bon moyen de gérer cela.


Cela semblerait être un gaspillage sur le disque io: le filtrage de procmail n'est généralement effectué que sur la base des en-têtes, mais de tels tuyaux entraîneront la lecture et l'écriture entières du message sur le disque. En outre, si procmail manque de mémoire ou rencontre un autre problème, vous supprimez toujours sans condition le fichier (aïe!), Ce qui semble également assez effrayant. Je dirais que c'est une solution totalement inacceptable en ce qui concerne maildir.
cnst

1
Cela pourrait être amélioré de manière incrémentielle en faisant procmail < $m && rm $mau lieu de procmail < $m ; rm $msi au moins le message n'est pas supprimé si procmail échoue.
rrauenza

2

Si vous utilisez mutt, vous pouvez diriger l'e-mail via procmail et également supprimer l'original de votre boîte de réception avec un raccourci clavier comme ceci:

muttrc:

macro index y '<enter-command>unset wait_key<enter><tag-prefix><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><tag-prefix><delete-message><enter-command>set wait_key<enter>'

macro pager y '<enter-command>unset wait_key<enter><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><delete-message><enter-command>set wait_key<enter>'

trouvé sur https://mikeburnscoder.wordpress.com/2011/06/12/one-big-mutt-inbox-filtered-after-the-fact-using-procmail/


1

Il semble qu'il n'y ait pas de bonne solution pour cela: procmail ne semble accepter que les entrées de courrier provenant de stdin, ce qui limite les applications maildir.

J'ai fait face à une situation similaire, et la meilleure solution qui correspondait à mes besoins était simplement de dupliquer ce que je voulais procmailfaire, mais ce qu'elle ne peut certainement pas faire, avec mon propre petit script, ce qui devrait être suffisant si vous n'avez qu'une ou deux règles simples dont vous devez prendre soin:

cd ~/Maildir/
sh -c 'for i in `egrep -l "^Delivered-To: perforce@freebsd.org" cur/*`; \
    do mv $i .FreeBSD.perforce/$i; done'

Ce n'est pas optimal non plus, mais au moins cela ne devrait pas souffrir d'E / S inutiles et de problèmes potentiels de perte de données.

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.