Page 1 of 1
Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Mon 17. Jun 2024, 14:06
by mhagge
Vielleicht hat jemand einen Denkansatz für mich.
Ich verschiebe mit folgendem globalen Sieve-Filter alle als Spam erkannten Mails in den Junk-Ordner
Code: Select all
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
}
if header :contains "X-Spam" "Yes" {
fileinto "Junk";
}
if header :is "X-Spam" "Yes" {
fileinto "Junk";
}
Das klappt auch ausgezeichnet. Allerdings wird ja gelegentlich auch mal eine Mail als Spam erkannt, die halt kein Spam ist - und dann auch entsprechend verschoben. Soweit so logisch. Verschiebe ich diese Mail aber jetzt wieder zurück in den Posteingang, greift der Filter erneut (die Kennzeichnung im Header bleibt ja erhalten) und die Mail wird nach ein paar Minuten wieder in den Junk-Ordner verschoben - usw.
Ich suche also nach einem Weg, dass der Filter nur greift, wenn eine Mail auch tatsächlich eingegangen ist, nicht wenn sie innerhalb des Postfaches verschoben wurde. Hat da jemand evtl. eine Idee / einen Denkansatz für mich?
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Mon 17. Jun 2024, 14:11
by Jolinar
Ungetestet!
Code: Select all
require "fileinto";
require "date";
if header :contains "X-Spam-Flag" "YES" {
if not date :is "internal-date" :same "arrival-date" {
fileinto "Junk";
}
}
if header :contains "X-Spam" "Yes" {
if not date :is "internal-date" :same "arrival-date" {
fileinto "Junk";
}
}
if header :is "X-Spam" "Yes" {
if not date :is "internal-date" :same "arrival-date" {
fileinto "Junk";
}
}
Edit:
Du kannst noch optimieren:
Code: Select all
require "fileinto";
require "date";
if anyof (header :contains "X-Spam-Flag" "YES",
header :is "X-Spam" "Yes",
header :contains "X-Spam" "Yes") {
if not date :is "internal-date" :same "arrival-date" {
fileinto "Junk";
}
}
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Mon 17. Jun 2024, 14:35
by mhagge
Danke Dir! Ich baue das mal ein und warte mal ein bisschen, wie es sich auswirkt
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Mon 17. Jun 2024, 20:57
by mhagge
Hmm. will nicht. Schon das kompilieren des Sieve-Scripts klappt nicht
Code: Select all
error: unknown tagged argument ':same' for the date test (reported only once at first occurrence
Ist das wirklich „same“? Das habe ich in den RFCs nicht gefunden
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Mon 17. Jun 2024, 21:20
by Jolinar
mhagge wrote: ↑Mon 17. Jun 2024, 20:57
Ist das wirklich „same“?
Oha, da hab ich das wohl falsch erinnert. Probier mal
equal statt
same:
Code: Select all
require "fileinto";
require "date";
if anyof (header :contains "X-Spam-Flag" "YES",
header :is "X-Spam" "Yes",
header :contains "X-Spam" "Yes") {
if not date :is "internal-date" :equal "arrival-date" {
fileinto "Junk";
}
}
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Tue 18. Jun 2024, 09:47
by mhagge
Nein, mag er auch nicht, selbe Fehlermeldung.
Ich muss mir das mal näher anschauen - die RFC-Beschreibung zur Sieve-Date-Extension ist ja eigentlich recht ausführlich (wobei das fast schon das Problem ist - es ist zu ausführlich

)
Aber danke auf jeden Fall für den Denkansatz!
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Tue 18. Jun 2024, 11:09
by mhagge
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Tue 18. Jun 2024, 14:41
by Jolinar
mhagge wrote: ↑Tue 18. Jun 2024, 09:47
Nein, mag er auch nicht, selbe Fehlermeldung.
Ich hab jetzt nur mal kurz die Doku überflogen...Mit dem folgenden if Vergleich könnte es gehen:
Code: Select all
require "fileinto";
require "date";
if anyof (header :contains "X-Spam-Flag" "YES",
header :is "X-Spam" "Yes",
header :contains "X-Spam" "Yes") {
if not date :value "eq" "internal-date" "arrival-date" {
fileinto "Junk";
}
}
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Wed 19. Jun 2024, 09:59
by mhagge
Ne, mag auch nicht
Code: Select all
global-antispam: line 7: error: unknown tagged argument ':value' for the date test (reported only once at first occurrence).
global-antispam: error: validation failed.
sievec(root): Fatal: failed to compile sieve script 'global-antispam.sieve'
Ich glaube ja langsam, dass es auf diesem Weg gar nicht geht - ich meine, so selten dürfte der Anwendungsfall ja auch nicht sein, es befindet sich aber nirgendwo ein Beispiel oder dergleichen, welches man ggf. analog verwenden könnte (ich habe jedenfalls nichts gefunden). Es gibt ein paar, wo es um definierte Daten geht (vor allem im Zusammenhang mit Autorespondern), aber nichts, wo es um Daten aus dem Header der Mail geht
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Wed 19. Jun 2024, 11:40
by Jolinar
Wäre es ein Ansatz, den Header beim Move ins Junk mit zB. "moved" zu taggen und dann im Sieve darauf zu prüfen (also wenn mit "moved" getaggt, nicht erneut moven)?
Re: Sieve-Filter nur bei Posteingang, nicht bei manuellem verschieben
Posted: Wed 19. Jun 2024, 13:20
by mhagge
Wäre ein anderer Denkansatz - durchaus möglich, das das eher klappt. Ich schau mir das mal an, Danke!