
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