procmailrc règle « en-tête In-Reply-les matches vu précédemment en-tête ID message »

StackOverflow https://stackoverflow.com/questions/7342218

  •  27-10-2019
  •  | 
  •  

Question

Essayer de comprendre comment une règle .procmailrc qui jette tout le courrier qui est en réponse au courrier vu précédemment. En utilisant maildir, et souhaite que la règle aux messages de couverture dans les deux cabot / ou une nouvelle /...

que je devrais faire l'analyse syntaxique procmailrc tous les fichiers? Ou devrais-je avoir une règle que les extraits d'en-têtes id message, les déversent dans un fichier, et d'analyser cela?

Je ne peux pas vérifier et jeter quoi que ce soit avec le en réponse à en-tête, comme si elle est une réponse à quelque chose que cette adresse n'a pas encore vu, il doit être accepté.

Était-ce utile?

La solution

Vous devez collecter un cache de message-Id: s des messages entrants:

:0c:
| formail -zxMessage-Id: >>msgid.txt

Ensuite, vérifiez In-Reply-To: contre ce cache (probablement plus tôt dans votre .procmailrc afin que vous puissiez filtrer le spam avant d'ajouter un message-Id dans le cache);

:0
* ? formail -zxIn-Reply-To: | fgrep -f msgid.txt -
./whitelisted

Voir aussi les exemples de formail -D à titre de comparaison. Peut-être que vous pourriez masser les choses dans une forme où vous pouvez réellement utiliser formail -D comme la fin arrière (remplacer Message-Id: avec De: avant d'ajouter au cache, diviser le In-Reply-To: et effectuer une substitution similaire sur chaque message- id). formail peut maintenir un cache LRU grandeur constante, alors que le fichier fgrep va tout simplement continuer à croître indéfiniment (bien que dans ce cas, peut-être est précisément ce que vous voulez).

Lorsque vous définissez d'abord ça, vous voulez probablement recueillir un cache de messages que vous avez dans cur et new déjà, mais après cela, vous ne devriez pas avoir besoin de se référer à ces messages à nouveau de votre recette. (Si votre boîte de réception est serait tout à fait comme le mien quoi que ce soit infaisable, en temps réel grepper de toute boîte de réception.)

Si vous voulez un grand cache, le remplacement d'un fichier texte avec SQLite ou quelque chose serait probablement dignes d'intérêt. En fait, au moment où une base de données appropriée vaut vraiment l'effort, vous voudrez peut-être une véritable base de données plutôt que SQLite, mais je n'ai que des idées vagues sur l'évolutivité des différents moteurs de base de données pour ce genre de chose, et aucune expérience pratique.

Notez que - sauf si vous avez une installation inhabituelle - votre message sortant-Id: s ne seront pas ajoutés au cache; pour que cela soit réellement utile, peut-être vous devriez prendre des dispositions pour que cela se produise en quelque sorte, et / ou établir un modèle qui correspond à votre sortie de message Id. s (idéalement sans faux positifs et négatifs certainement pas faux Si vous avez activé MUA dans le passé, vous devriez peut-être chercher des modèles pour les anciens messages de la vôtre séparément, si vous voulez une couverture complète).

Attention:. Non testé, et je suis probablement tout à fait rouillé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top