Come posso applicare i miei filtri procmail alla mia posta in arrivo di maildir?


9

Ieri sera mi sono iscritto a una mailing list e ho scoperto questa mattina che il mio filtro procmail non si applicava a molti dei messaggi della mailing list. Ora ho un sacco di messaggi di mailing list meno importanti intervallati dalle mie e-mail di lavoro più importanti che si trovano nella mia casella di posta.

È possibile rieseguire tutte le e-mail nella mia posta in arrivo attraverso i miei filtri procmail?

Nota: sto usando il formato maildir



Questo presenta una soluzione parziale. In questo caso, alcune e-mail verrebbero sicuramente reindirizzate nella posta in arrivo. Sembra che dovrebbe esserci già una soluzione * nux a questo problema di cui non sono a conoscenza, invece di scrivere uno script per simulare il processo di consegna della posta esistente.
Cory Klein,

Il problema è che procmail funziona solo sui messaggi di posta, non funziona su cartelle, mbox o altro - questo significa che dovrai simulare il recapito o usare qualcosa come thunderbird e filtrarlo lì.
Ulrich Dangel,

Risposte:


3

Credo che funzionerà. È necessario eseguire formailper riformattare la posta e rispedirla procmail.

Dalla directory Maildir:

cat * | formail -s procmail


3
Funziona davvero? Non lascerebbe tutti i vecchi messaggi dove erano?
primo

2

potresti essere in grado di farlo sul posto, in questo modo:

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

Devi rimuovere ogni email originale in seguito, altrimenti procmail la duplicherà.

Registra anche tutto come nuovo. Non sono sicuro di un buon modo per gestirlo.


Ciò sembrerebbe dispendioso sul disco io: il filtro procmail viene di solito fatto solo in base alle intestazioni, ma tale piping farà sì che l'intero messaggio venga letto e scritto nuovamente su disco. Inoltre, se procmail esaurisce la memoria o incontra qualche altro problema, rimuovi incondizionatamente il file (ahi!), Che sembra anche abbastanza spaventoso. Direi che questa è una soluzione assolutamente inaccettabile per quanto riguarda Maildir.
primo

1
Questo potrebbe essere incrementato in modo incrementale facendo procmail < $m && rm $minvece che procmail < $m ; rm $malmeno il messaggio non viene rimosso se procmail fallisce.
rrauenza,

2

Se stai usando mutt, puoi reindirizzare l'e-mail tramite procmail ed eliminare anche l'originale dalla tua casella di posta con un comando chiave simile a questo:

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>'

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


1

Sembra che non ci sia una buona soluzione per questo: procmail sembra accettare solo l'input di posta da stdin, che limita le applicazioni maildir.

Ho affrontato una situazione simile e la migliore soluzione adatta alle mie esigenze era semplicemente duplicare ciò che volevo procmailfare, ma ciò che sicuramente non può fare, con la mia piccola sceneggiatura, che dovrebbe essere sufficiente se hai solo una o due semplici regole di cui devi occuparti di:

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

Anche questo non è ottimale, ma almeno non dovrebbe soffrire di IO inutili e potenziali problemi di perdita di dati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.