Benutzerdefinierte Regeln für Exim und Spamassassin

Benutzerdefinierte Regeln für Exim und Spamassassin

ich habe Exim und Spamassassin (wird von Exiscan verwendet) installiert und ausgeführt, möchte aber eine benutzerdefinierte Regel hinzufügen, die E-Mails Punkte hinzufügt, wenn „An“ und „Umschlag an“ nicht identisch sind. Ich habe local.cf folgende Regeln hinzugefügt:

header      EXIM_SENDER_SWAP        X-Sender-Swap =~ /To_envelope-to/
describe    EXIM_SENDER_SWAP        To doesnt match envelope-to
score       EXIM_SENDER_SWAP        2.0

und Zeile in exim.conf

  acl_check_data:

      warn message = X-Subject-Swap: To_envelope-to
          condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}

Ich sende eine Testnachricht und der entsprechende Header wird von Exim hinzugefügt, aber kein zusätzlicher Punkt von Spamassassin. Was ist falsch?

Antwort1

Erstens ist der Modifikator „message“ nicht das, was Sie wollen. Stattdessen möchten Sie „add_header“ verwenden, wenn Sie einer Nachricht in einer ACL einen Header hinzufügen möchten. Lesen Siehttp://www.exim.org/exim-html-current/doc/html/spec_html/ch42.html#SECTaddheadaclwenn Sie weitere Informationen zu diesem Teil benötigen.

Ich glaube jedoch nicht, dass das, was Sie versuchen, auf die von Ihnen verwendete Weise funktioniert. Im Innersten von Exim wird bei der Verarbeitung jeder ACL die ACL ausgeführt. Wenn die ACL dannvollendet, werden alle Header-Hinzufügungen und -Löschungen durchgeführt. Sie führen beides in derselben DATA ACL aus, was bedeutet, dass die durch den ersten Vergleich hinzugefügten Header noch nicht tatsächlich zur Nachricht in den temporären Dateien hinzugefügt wurden, die der Spam-Befehl scannt.

Eine Möglichkeit besteht darin, einen Spam-Scan durchzuführen, die Bedingung zu ermitteln, unter der Sie den Header hinzugefügt hätten, und diesen Score dann der Variablen hinzuzufügen, die den Spam-Score enthält, um beim Vergleichen festzustellen, ob es sich um Spam handelt.

Eine zweite Möglichkeit, die meiner Meinung nach die bessere ist, besteht darin, den Spam-Scan mit zwei verschiedenen Benutzern auszuführen. Für den einen haben Sie den Spam-Score beispielsweise auf 5,0 eingestellt. Für den zweiten haben Sie den Spam-Score auf 3,0 eingestellt. Das sind 2 Punkte weniger als das normale Limit, was dasselbe ist, als ob Sie dem Spam-Score 2 Punkte hinzugefügt hätten.

Dann könnten Ihre ACL-Strophen wie folgt aussehen (ungetestet):

warn condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}
     set $acl_m_env_ok = 1
     spam = strict_user:true

warn condtion = ${if eq{$acl_m_env_ok}{1} {no}{yes}}
     spam = normal_user:true

warn add_header = X-Spam-Score: $spam_score
     add_header = X-Spam-Report: $spam_report

deny condition  = ${if eq{$acl_m_env_ok}{1}}
     condition  = ${if >{$spam_score_int}{30}}
     message    = This message with mismatched header/envelope score $spam_score_points...REJECTED

deny condition  = ${if >{$spam_score_int}{50}}
     message    = This message scored $spam_score points...REJECTED

verwandte Informationen