<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hallo liebe Mitstreiter,<br><br>ich habe mir mal zum Zwecke des Spam-/Ham-Learnings das Dovecot-Plugin imapsieve konfiguriert:<br><span style='font-family:"Courier New"'>plugin {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  …<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  # Spam: >From elsewhere to Spam folder or flag changed in Spam folder<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox1_name = Junk-E-Mail<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox1_causes = COPY APPEND FLAG<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox1_before = file:/usr/local/etc/dovecot/sieve/learn-spam.sieve<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  # Ham: >From Spam folder to elsewhere<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox2_name = *<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox2_from = Junk-E-Mail<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox2_causes = COPY<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox2_before = file:/usr/local/etc/dovecot/sieve/learn-ham.sieve<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  …<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Das Script „learn-spam“ wird aufgerufen wie gewünscht, das andere aber nicht. Liegt wohl daran, dass MS-Outlook APPEND statt COPY verwendet. Ergänzt man APPEND bei der zweiten Regel kommt es zum Fehler, weil beide Scripte pipen wollen. Das lässt sich ja irgendwie noch abfangen. Aber jetzt wollte ich der Sache doch mal auf den Grund gehen.<br><br>Also habe ich mir ein kleines Script test.sieve gemacht:<o:p></o:p></p><p class=MsoNormal><span style='font-family:"Courier New"'>require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables", "vnd.dovecot.debug"];<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>if environment :matches "imap.mailbox" "*" { set "mailbox" "${1}"; }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>if environment :matches "imap.cause" "*" { set "IMAPCAUSE" "${1}"; }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>debug_log "TEST on imap.cause=${IMAPCAUSE}  imap.mailbox=${mailbox}";<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Plugin-Konfiguration:<br><span style='font-family:"Courier New"'>plugin {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox1_name = *<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox1_causes = COPY APPEND FLAG<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>  imapsieve_mailbox1_before = file:/usr/local/etc/dovecot/sieve/test.sieve<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Es zeigt sich, dass das das Script tatsächlich immer zweimal aufgerufen wird. Beim Verschieben aus meinem „Posteingang“ in „Junk-E-Mail“ kommt:<br><span style='font-family:"Courier New"'>sieve: DEBUG: TEST on imap.cause=FLAG:  mailbox=INBOX<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>sieve: DEBUG: TEST on imap.cause=APPEND:  mailbox=Junk-E-Mail<br></span><br>Und im umgekehrten Fall:<o:p></o:p></p><p class=MsoNormal><span style='font-family:"Courier New"'>sieve: DEBUG: TEST on imap.cause=FLAG:  mailbox=Junk-E-Mail<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>sieve: DEBUG: TEST on imap.cause=APPEND:  mailbox=INBOX<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Da die beiden Aufrufe völlig unabhängig voneinander erfolgen, lassen sie sich auch nicht miteinander assoziieren. Daraus folgt, dass in den diversen Quellen für das Ham-Lernen nicht umsonst immer nur COPY angegeben wird. Warum das so ist:<br><br>Bei verschieben vom „Posteingang“ oder was auch immer zu „Junk-E-Mail“:<o:p></o:p></p><p class=MsoNormal>Der erste Aufruf mit dem Deleted-FLAG für die INBOX bringt uns gar nichts. Schließlich wird das auch bei einem ganz normalen Löschvorgang ausgelöst.<br>Den zweiten Aufruf mit dem APPEND für die Mailbox „Junk-E-Mail“ lässt sich für Spam-Learning sehr gut nutzen. Egal weshalb, es ist vermutlich Spam. Das ist also OK!<br><br>Anders sieht es aus, wenn ich einen „false positive“ aus der Mailbox „Junk-E-Mail“ in den „Posteingang“ verschiebe.<br>Der erste Aufruf mit dem Deleted-FLAG für „Junk-E-Mail“ bring uns auch hier nichts.  Mails die wir aus dem Ordner einfach mal so löschen, sollen ja nicht automatisch zu Ham werden!<br>Der zweite Aufruf mit dem APPEND für die INBOX bring uns hier aber auch nichts. Das wird nämlich immer getriggert, wenn was in die INBOX gespeichert wird, egal woher die Mail kommt. Also auch unmittelbar nach dem Empfang JEDER E-Mail. Das können wir ja viel besser über den Rspamd-Modul Bayes und die zugehörigen Schwellwerte lösen.<br><br>Ergo:<br>Ich sehe keinen vernünftigen Weg, um das Script learn-ham.sieve für einen Verschiebevorgang in MS-Outlook sinnvoll auszuführen.<br>Tja wenn es einen imap.cause=MOVE gäbe und dann noch imap.mailbox.from und imap.mailbox.to entsprechend gesetzt wären …<br><br>Hat da jemand noch eine Idee?<br>Oder sehe ich da etwas völlig falsch?<br><br>Viele Dank <br>Harald<o:p></o:p></p></div></body></html>