From 030b59ce916ea4f25353d25761a74485d4f4c42c Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Wed, 28 Feb 2018 15:27:01 +0100 Subject: [PATCH 01/16] add amavisd button and config, fix availible buttons --- spam/acl_security.pl | 6 +- spam/config | 1 + spam/config.info | 1 + spam/config.info.de | 1 + spam/index.cgi | 3 +- spam/lang/de | 699 ++++++++++++++++++++++--------------------- spam/lang/en | 3 +- 7 files changed, 360 insertions(+), 354 deletions(-) diff --git a/spam/acl_security.pl b/spam/acl_security.pl index ae491ef93..079739277 100755 --- a/spam/acl_security.pl +++ b/spam/acl_security.pl @@ -9,8 +9,10 @@ sub acl_security_form print " $text{'acl_avail'}\n"; print " ".$_[$i+1]; + } +$rv .= "\n"; +return $rv; +} + +# amavis_save_choice(&config, file, name) +sub amavis_save_choice +{ +&save_list_directive($_[0], $_[1], $_[2], $in{$_[2]}); +} + +# amavis_opt_input(name, text, &config, default, size, [units]) +sub amavis_opt_input +{ +local $v = &find_value($_[0], $_[2]); +local $rv = "$_[1] 30 ? "colspan=\"3\"" : "").">"; +$rv .= sprintf " $_[3]\n", + $v eq "" ? "checked" : ""; +$rv .= sprintf "\n", + $v eq "" ? "" : "checked"; +local $passwd = $_[0] =~ /passwd/ ? "type=\"password\"" : ""; +$rv .= " $_[5]\n"; +return $rv; +} + +# amavis_save_opt(&config, file, name, [&func]) +sub amavis_save_opt +{ +if ($in{"$_[2]_def"}) { &save_list_directive($_[0], $_[1], $_[2], ""); } +elsif ($_[3] && ($err = &{$_[3]}($in{$_[2]}))) { &error($err); } +else { &save_list_directive($_[0], $_[1], $_[2], $in{$_[2]}); } +} + +# amavis_select_input(name, text, &config, [opt, display]+) +sub amavis_select_input +{ +local $v = &find_value($_[0], $_[2]); +local $rv = "$_[1] \n"; +return $rv; +} + +# save_select(&config, file, name) +sub amavis_save_select +{ +&save_list_directive($_[0], $_[1], $_[2], $in{$_[2]}); +} + +# multi_input(name, text, &config) +sub amavis_multi_input +{ +local $v = &find_value($_[0], $_[2]); +local $l = 1 + $v =~ tr/\n|\r//; +$l=4 if ($l <= 4); +$l=15 if ($l >= 14); +local $rv = "$_[1] ". + "\n"; +return $rv; +} + +# save_multi_global(&config, name) +sub save_amavis_multi_global +{ +$in{$_[1]} =~ s/\r//g; +&save_amavis_directive($_[0], $_[1], $in{$_[1]}, 1); +} + + + +# amavis_help() +# returns majordomo help link +sub amavis_help +{ +local $rv= &help_search_link("amavisd", "man", "doc", "google"); +return $rv; +} + +1; + From 116b65ac5497edf87f03ad0806f49e97b6671961 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Thu, 1 Mar 2018 23:05:10 +0100 Subject: [PATCH 06/16] fix get_config regex --- spam/spam-amavis-lib.pl | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/spam/spam-amavis-lib.pl b/spam/spam-amavis-lib.pl index c7ef3ccb1..69d49e493 100755 --- a/spam/spam-amavis-lib.pl +++ b/spam/spam-amavis-lib.pl @@ -13,36 +13,23 @@ local(@rv, $line); open(CONF, $config{'amavisdconf'}); while() { s/\r|\n//g; - if (/^\s*#|^\s*$/) { next; } - if (/^\s*\$(\S+)\s*=\s*"(.*)";\s*$/ || - /^\s*\$(\S+)\s*=\s*'(.*)';\s*$/) { + if (/^\s*\$(\S+)\s*=\s*"(.*)";/ || + /^\s*\$(\S+)\s*=\s*'(.*)';/) { # static config option push(@rv, { 'name' => $1, 'value' => &perl_unescape($2), 'line' => $line, 'eline' => $line }); -#print "
--$_--
"; +#print "
$line: $1 = $2
"; } - elsif (/^\s*\$(\S+)\s*=\s*<<\s*'(\S+)';\s*$/) { - # multiline config option - local $o = { 'name' => $1, - 'line' => $line }; - local $end = $2; - while() { - $line++; - last if ($_ =~ /^$end[\r\n]+$/); - $o->{'value'} .= $_; - } - $o->{'eline'} = $line; - push(@rv, $o); - } - elsif (/^\s*\$(\S+)\s*=\s*(.*);\s*$/) { + elsif (/^\s*\$(\S+)\s*=\s*(.*);/) { # computed config option push(@rv, { 'name' => $1, 'value' => $2, 'computed' => 1, 'line' => $line, 'eline' => $line }); +#print "
$line: $1 = $2
"; } $line++; } @@ -63,21 +50,8 @@ local $pos = $old->{'line'}; local $v = $_[2]; $v =~ s/\n$//; -if ($_[3]) { - local $ov = $old->{'value'}; - $ov =~ s/\n$//; - local $v = $_[2]; - $v =~ s/\n$//; - local @lines = split(/\n/, $v, -1); - @lines = map { s/^-/--/; s/^$/-/; $_ } @lines; - splice(@$lref, $pos, $olen, ("\$$_[1] = <<'END';", @lines, "END")) - if (!$old || $v ne $ov); - $nlen = (!$old || $v ne $ov) ? @lines + 2 : $olen; - } -else { $v =~ s/\@/\\@/g; splice(@$lref, $pos, $olen, "\$$_[1] = \"$v\";"); - } } # amavis_find(name, &array) From e89e4e5902b072a79e8533df6cadb77f4d4ad9cc Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Fri, 2 Mar 2018 13:58:35 +0100 Subject: [PATCH 07/16] use ui_alert_box for warnings --- spam/edit_report.cgi | 1 + spam/edit_score.cgi | 2 +- spam/index.cgi | 9 ++++----- spam/lang/de | 8 ++++---- spam/lang/en | 1 + 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/spam/edit_report.cgi b/spam/edit_report.cgi index 77894e7aa..6e6396d01 100755 --- a/spam/edit_report.cgi +++ b/spam/edit_report.cgi @@ -10,6 +10,7 @@ require './spam-lib.pl'; $conf = &get_config(); print "$text{'report_desc'}

\n"; +print &ui_alert_box($text{'score_other'}, 'info') if ($warn_procmail != 1); &start_form("save_report.cgi", $text{'report_header'}); if (&version_atleast(3.0)) { diff --git a/spam/edit_score.cgi b/spam/edit_score.cgi index b7d533048..ef448da89 100755 --- a/spam/edit_score.cgi +++ b/spam/edit_score.cgi @@ -16,7 +16,7 @@ print "$text{'score_desc'}

\n"; # Required score before considering spam $hits_param = &version_atleast(3.0) ? "required_score" : "required_hits"; $hits = &find($hits_param, $conf); -$score_other=$text{'score_other'} if ($warn_procmail != 1); +$score_other="
$text{'amavis_warn'}" if ($warn_procmail != 1); print &ui_table_row($text{'score_hits'}.$score_other, &opt_field($hits_param, $hits, 5, "5")); diff --git a/spam/index.cgi b/spam/index.cgi index f8a10a96c..14ae3330e 100755 --- a/spam/index.cgi +++ b/spam/index.cgi @@ -105,13 +105,12 @@ else { } if ($spam_enabled == 0) { if ($module_info{'usermin'}) { - print &text('index_warn_usermin', - "$pmrcs[0]", - "$pmrcs[1]"),"

\n"; + print &ui_alert_box(&text('index_warn_usermin', + "$pmrcs[0]","$pmrcs[1]"), 'warn'); } else { - print &text('index_warn_webmin', - "$pmrcs[0]"),"

\n"; + print &ui_alert_box(&text('index_warn_webmin', + "$pmrcs[0]"), 'warn'); } } diff --git a/spam/lang/de b/spam/lang/de index 96d1e69d6..14c10d5af 100644 --- a/spam/lang/de +++ b/spam/lang/de @@ -6,9 +6,10 @@ acl_awl=Erlaube Benutzern die Bearbeitung der Auto-Whitelist acl_filedef=Globale Konfigurationsdatei acl_file=SpamAssassin-Konfigurationsdatei zu bearbeiten after_ecmd=Nach dem Speichern-Befehl fehlgeschlagen: $1 -amavisd_title=Amavisd Spam Konfiguration amavisd_desc=Das Formular kann verwendet werden, um in der Amavisd-Konfiguration festzulegen wann Nachrichten als unerwüscht eingestuft und wie diese behandelt werden. amavisd_ok=ändere Amavisd Konfiguration +amavisd_title=Amavisd Spam Konfiguration +amavis_warn=Hinweis: Wenn Du Amavisd als Spam Filter benutzt, werden einige Einstellungen ignoriert. apply_err=Konnte Änderungen nicht anwenden apply_none=Es wurde kein SpamAssassin-Daemon-Prozess gefunden! awl_black=Permanentes Ablehnen @@ -128,19 +129,19 @@ import_err=Konnte Adressen nicht importieren import_ok1=$2 E-Mail-Adressen wurden in der Datei gefunden, wobei $1 neu sind und der Liste der erlaubten E-Mail-Adressen hinzugefügt wurden. import_ok2=$1 E-Mail-Adressen wurden in der Datei gefunden, aber diese befinden sich bereits in der Liste der erlaubten E-Mail-Adressen. import_title=Importiere Adressen +index_aconfig=Die Amavisd-Konfigurationsdatei $1 wurde nicht auf Ihrem System gefunden. Entweder ist Amavisd nicht installiert, oder Ihre Modulkonfiguration ist falsch. index_apply=Änderungen anwenden index_applydesc=Klicken Sie auf diesen Button, um die momentan SpamAssassin-Konfiguration anzuwenden, indem Sie ein HUP-Signal an alle $1 laufenden Prozesse schicken. index_cpan=Da SpamAssassin ein Perl-Modul ist, können Sie es auch automatisch durch das Webmin-Modul Perl-Module (CPAN) aus CPAN herunterladen und installieren lassen. index_ecannot=Sie sind nicht berechtigt die SpamAssassin-Konfigurationsdatei $1 zu verwalten index_ecmd2=Das SpamAssassin Kommando $1 wurde auf Ihrem System nicht gefunden. index_ecmd=Das SpamAssassin-Kommando $1 wurde nicht auf Ihrem System gefunden. Entweder ist SpamAssassin nicht installiert, oder Ihre Modulkonfiguration ist falsch. -index_aconfig=Die Amavisd-Konfigurationsdatei $1 wurde nicht auf Ihrem System gefunden. Entweder ist Amavisd nicht installiert, oder Ihre Modulkonfiguration ist falsch. -index_unknown=unbekannt index_econfig=Die lokale SpamAssassin-Konfigurationsdatei oder das Verzeichnis $1 wurde nicht auf Ihrem System gefunden. Entweder ist SpamAssassin nicht installiert, oder Ihre Modulkonfiguration ist falsch. index_edb=Fehlgeschlagen, die Verbindung zur SpamAssassin Konfigurationsdatenbank herstellen : $1. Überprüfen Sie die Modulkonfiguration, um sicherzustellen, dass Sie mit den richtigen Einstellungen benutzen. index_return=Modulindex index_spamassassin=SpamAssassin index_title=SpamAssassin E-Mail-Filter +index_unknown=unbekannt index_version=SpamAssassin Version $1 index_warn_usermin=SpamAssassin scheint weder in Ihrer persönlichen Procmail-Konfigurationsdatei $2 noch der globalen Konfigurationsdatei $1 aufgenommen zu sein. Solange SpamAssassin nicht global aktivert ist, wird jede Konfigurationsänderung hier keinerlei Wirkung zeigen. index_warn_webmin=SpamAssassin scheint nicht in der globalen Konfigurationsdatei $1 aufgenommen zu sein. Solange ein Benutzer SpamAssassin nicht in seine persönliche Procmail-Konfigurationsdatei aufnimmt, wird jede Konfigurationsänderung hier keinerlei Wirkung zeigen. @@ -274,7 +275,6 @@ score_locales=Zeichensätze in E-Mails, die nicht als potentieller Spam gelt score_mx=Anzahl von Versuchen den MX-Eintrag eines Versenders zu prüfen score_mxdelay=Wartezeit in Sekunden zwischen MX-Tests score_name=Testname -score_other=
Hinweis: Wenn Du Amavisd als Spam Filter benutzt, wird diese Einstellung ignoriert. score_points=Punkte score_rbl=Übergehe den RBL-Open-Relay-Test? score_received=Anzahl der Received:-E-Mail-Headern, die mit RBL getestet werden sollen diff --git a/spam/lang/en b/spam/lang/en index 203195895..e6e6fb8cc 100644 --- a/spam/lang/en +++ b/spam/lang/en @@ -288,6 +288,7 @@ razor_failed=.. failed! See the error output above for the reason why. amavisd_title=Amavisd Spam Delivery amavisd_ok=Change Amavisd Delivery amavis_desc=The form can be used to change the Amavisd configuration that determines what happens to messages classified as spam. +amavis_warn=Note: If you use Amavisd for Spam filtering, some options will be ignored. procmail_title=Procmail Spam Delivery procmail_ok=Change Procmail Delivery procmail_desc=The form can be used to change the Procmail configuration that determines what happens to messages classified as spam. From 159eb9b4f9ce1f2efc7dd373d3a04e7336373631 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Fri, 2 Mar 2018 17:52:18 +0100 Subject: [PATCH 08/16] first working amavis config form --- spam/acl_security.pl | 2 -- spam/edit_amavisd.cgi | 54 ++++++++++++++++++++++++++++++++--------- spam/edit_report.cgi | 2 +- spam/edit_score.cgi | 2 +- spam/index.cgi | 3 +-- spam/lang/de | 12 ++++++--- spam/lang/en | 6 ++++- spam/spam-amavis-lib.pl | 18 +++----------- 8 files changed, 63 insertions(+), 36 deletions(-) diff --git a/spam/acl_security.pl b/spam/acl_security.pl index 079739277..83c803f9b 100755 --- a/spam/acl_security.pl +++ b/spam/acl_security.pl @@ -9,8 +9,6 @@ sub acl_security_form print " $text{'acl_avail'}\n"; print " ".$_[$i+1]; - } -$rv .= "\n"; -return $rv; -} - -# amavis_save_choice(&config, file, name) -sub amavis_save_choice -{ -&save_list_directive($_[0], $_[1], $_[2], $in{$_[2]}); -} - -# amavis_opt_input(name, text, &config, default, size, [units]) -sub amavis_opt_input -{ -local $v = &find_value($_[0], $_[2]); -local $rv = "$_[1] 30 ? "colspan=\"3\"" : "").">"; -$rv .= sprintf " $_[3]\n", - $v eq "" ? "checked" : ""; -$rv .= sprintf "\n", - $v eq "" ? "" : "checked"; -local $passwd = $_[0] =~ /passwd/ ? "type=\"password\"" : ""; -$rv .= " $_[5]\n"; -return $rv; -} - -# amavis_save_opt(&config, file, name, [&func]) -sub amavis_save_opt -{ -if ($in{"$_[2]_def"}) { &save_list_directive($_[0], $_[1], $_[2], ""); } -elsif ($_[3] && ($err = &{$_[3]}($in{$_[2]}))) { &error($err); } -else { &save_list_directive($_[0], $_[1], $_[2], $in{$_[2]}); } -} - -# amavis_select_input(name, text, &config, [opt, display]+) -sub amavis_select_input -{ -local $v = &find_value($_[0], $_[2]); -local $rv = "$_[1] \n"; -return $rv; -} - -# save_select(&config, file, name) -sub amavis_save_select -{ -&save_list_directive($_[0], $_[1], $_[2], $in{$_[2]}); -} - -# multi_input(name, text, &config) -sub amavis_multi_input -{ -local $v = &find_value($_[0], $_[2]); -local $l = 1 + $v =~ tr/\n|\r//; -$l=4 if ($l <= 4); -$l=15 if ($l >= 14); -local $rv = "$_[1] ". - "\n"; -return $rv; -} - -# save_multi_global(&config, name) -sub save_amavis_multi_global -{ -$in{$_[1]} =~ s/\r//g; -&save_amavis_directive($_[0], $_[1], $in{$_[1]}, 1); -} - 1; From b8784bc0a983f616bba5e2842504a134578c1e16 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Sat, 3 Mar 2018 15:42:49 +0100 Subject: [PATCH 12/16] first working version of save_amavisd.cgi --- spam/save_amavisd.cgi | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 spam/save_amavisd.cgi diff --git a/spam/save_amavisd.cgi b/spam/save_amavisd.cgi new file mode 100755 index 000000000..ddbb42ecf --- /dev/null +++ b/spam/save_amavisd.cgi @@ -0,0 +1,40 @@ +#!/usr/local/bin/perl +# save_amavis.cgi +# Save message amavis options + +require './spam-lib.pl'; +require './spam-amavis-lib.pl'; +&error_setup($text{'score_err'}); +&ReadParse(); +&can_use_check("amavisd"); +$conf = &get_amavis_config(); +&lock_file($config{'amavisdconf'}); +# Save inputs + + +# Check inputs +#$in{'whereami'} =~ /^[A-z0-9\-\.]+$/ || +# &error($text{'global_ewhereami'}); +#$in{'whoami'} =~ /^\S+$/ || +# &error($text{'global_ewhoami'}); +#$in{'whoami_owner'} =~ /^\S+$/ || +# &error($text{'global_eowner'}); +#-x $in{'sendmail_command'} || +# &error(&text('global_esendmail', "$in{'sendmail_command'}")); + +# Save inputs +&save_amavis_directive($conf, 'sa_tag2_level_deflt', $in{'sa_tag2_level_deflt'}); +&save_amavis_directive($conf, "sa_kill_level_deflt", $in{'sa_kill_level_deflt'}); +&save_amavis_directive($conf, "sa_quarantine_cutoff_level", $in{'sa_quarantine_cutoff_level'}); +&save_amavis_directive($conf, "sa_spam_modifies_subj", $in{'sa_spam_modifies_subj'}); +&save_amavis_directive($conf, "sa_spam_subject_tag", $in{'sa_spam_subject_tag'}); +&save_amavis_directive($conf, "sa_spam_report_header", $in{'sa_spam_report_header'}); +&save_amavis_directive($conf, "sa_mail_body_size_limit", $in{'sa_mail_body_size_limit'}); +&save_amavis_directive($conf, "sa_local_tests_only", $in{'sa_local_tests_only'}); + +&flush_file_lines(); +&unlock_file($config{'amavisdconf'}); +&webmin_log("spam-amavis", undef, undef, \%in); + + +&redirect($redirect_url); From a34884dbb9a966268382443427c133793e1b5064 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Sat, 3 Mar 2018 16:16:46 +0100 Subject: [PATCH 13/16] implement value checks for amavisd parameters --- spam/lang/de | 10 ++++++++-- spam/lang/en | 7 +++++++ spam/save_amavisd.cgi | 20 ++++++++++++-------- spam/spam-amavis-lib.pl | 4 ++-- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/spam/lang/de b/spam/lang/de index 92e2f0dc6..de9a8ebe9 100644 --- a/spam/lang/de +++ b/spam/lang/de @@ -7,8 +7,14 @@ acl_filedef=Globale Konfigurationsdatei acl_file=SpamAssassin-Konfigurationsdatei zu bearbeiten after_ecmd=Nach dem Speichern-Befehl fehlgeschlagen: $1 amavisd_desc=Das Formular kann verwendet werden, um in der Amavisd-Konfiguration festzulegen wann Nachrichten als unerwüscht eingestuft und wie diese behandelt werden. -amavisd_ok=ändere Amavisd Konfiguration +amavisd_ok=Ändere Amavisd Konfiguration amavisd_title=Amavisd Spam Konfiguration +amavis_ehit=Spam-Wert, ab dem eine Mail als Spam klassifiziert wird ist keine Zahl! +amavis_ekill=Spam Wert, ab dem eine Spam-Mail in Quarantäne geschickt wird ist keine Zahl! +amavis_ecut=Spam Wert, ab dem eine Spam-Mail in gelöscht wird ist keine Zahl! +amavis_eheader=Wert für Betreff-E-Mail-Header ist keine Zahl! +amavis_esize=Wert für Größe ab der eine Mail nicht mehr auf Spam überprüft wd ist keine Zahl! +amavis_elocal=Wert für Internet Dienste zum Klassifizieren der Mail ist keine Zahl! amavis_warn=Wenn Du Amavisd als Spam Filter benutzt, werden einige Einstellungen ignoriert. amavis_quarantine_level=Spam Wert, ab dem eine Spam-Mail in Quarantäne geschickt wird. amavis_delete_level=Spam Wert, ab dem eine Spam-Mail in gelöscht wird. @@ -206,7 +212,7 @@ priv_white=Pfad zur Auto-Whitelist Datei process_eclean=Beim Entfernen der SpamAssassin-E-Mail-Header aus dieser E-Mail ist ein Fehler aufgetreten process_ereport=Konnte E-Mail nicht an SpamAssassin melden: $1 procmail_desc=Das Formular kann verwendet werden, um in der Procmail-Konfiguration festzulegen wann Nachrichten als Spam eingestuft werden. -procmail_ok=ändere Procmail Konfiguration +procmail_ok=Ändere Procmail Konfiguration procmail_title=Procmail Spam Konfiguration razor_auto=Wähle automatisch razor_desc="Vipul's Razor" ist ein kollaboratives Spamerkennungs- und Reportingsystem, welches die Einstufung von an Sie adressierten Spam erleichtern kann. Sie müssen jedoch einen Account eröffnen, bevor Sie Razor benutzen können. Diese Seite soll dabei helfen. diff --git a/spam/lang/en b/spam/lang/en index 7b3bb9a4d..8e50d1f91 100644 --- a/spam/lang/en +++ b/spam/lang/en @@ -289,8 +289,15 @@ amavisd_title=Amavisd Spam Delivery amavisd_ok=Change Amavisd Delivery amavis_desc=The form can be used to change the Amavisd configuration that determines what happens to messages classified as spam. amavis_warn=If you use Amavisd for Spam filtering, some options will be ignored. +amavis_ehit=Hits above which a message is considered spam is not numeric! +amavis_ekill=Hits above which a Spam message is quarantined is not numeric! +amavis_ecut=Hits above which a Spam message is deleted is not numeric! +amavis_eheader=Value for Modify Subject: header is not numeric! +amavis_esize=Value for size above witch a message is not checked for Spam is not numeric! +amavis_elocal=Value for disable Internet sources is not numeric! amavis_quarantine_level=Hits above which a Spam message is quarantined. amavis_delete_level=Hits above which a Spam message is deleted. +amavis_add_header=Insert X-Spam-Header in Spam message? amavis_size_limit=Message size in bytes above witch a message is not checked for Spam. amavis_local_tests_only=Disable Internet sources for Spam checks? procmail_title=Procmail Spam Delivery diff --git a/spam/save_amavisd.cgi b/spam/save_amavisd.cgi index ddbb42ecf..39598a476 100755 --- a/spam/save_amavisd.cgi +++ b/spam/save_amavisd.cgi @@ -13,14 +13,18 @@ $conf = &get_amavis_config(); # Check inputs -#$in{'whereami'} =~ /^[A-z0-9\-\.]+$/ || -# &error($text{'global_ewhereami'}); -#$in{'whoami'} =~ /^\S+$/ || -# &error($text{'global_ewhoami'}); -#$in{'whoami_owner'} =~ /^\S+$/ || -# &error($text{'global_eowner'}); -#-x $in{'sendmail_command'} || -# &error(&text('global_esendmail', "$in{'sendmail_command'}")); +&check_amavis_value($in{'sa_tag2_level_deflt'}, 1) || + &error($text{'amavis_ehit'}); +&check_amavis_value($in{'sa_kill_level_deflt'}, 1) || + &error($text{'amavis_ekill'}); +&check_amavis_value($in{'sa_quarantine_cutoff_level'}, 1) || + &error($text{'amavis_ecut'}); +&check_amavis_value($in{'sa_spam_report_header'}, 1) || + &error($text{'amavis_eheader'}); +&check_amavis_value($in{'sa_mail_body_size_limit'}, 1) || + &error($text{'amavis_esize'}); +&check_amavis_value($in{'sa_local_tests_only'}, 1) || + &error($text{'amavis_elocal'}); # Save inputs &save_amavis_directive($conf, 'sa_tag2_level_deflt', $in{'sa_tag2_level_deflt'}); diff --git a/spam/spam-amavis-lib.pl b/spam/spam-amavis-lib.pl index 3c5b50cb3..23263dcf9 100755 --- a/spam/spam-amavis-lib.pl +++ b/spam/spam-amavis-lib.pl @@ -39,7 +39,7 @@ return \@rv; # amavis_check_value(value, numeric) # check if value is ok or not -sub amavis_check_value +sub check_amavis_value { if ($_[1]) { return $_[0] =~ m/^[0-9\.\,\*\-\+\/]+$|\^$/; @@ -57,7 +57,7 @@ local $lref = &read_file_lines($config{'amavisdconf'}); if (!$old) { pop(@$lref); push(@$lref, "# new config added by webmin"); - if (&amavis_check_value($v, 1)) { + if (&check_amavis_value($v, 1)) { push(@$lref, "\$$n = $v;"); } else { push(@$lref, "\$$n = \"$v\";"); From 37cde386de1bcc66995d23d03212dbbf1197aecd Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Sat, 3 Mar 2018 18:34:14 +0100 Subject: [PATCH 14/16] fix default for yes/no --- spam/edit_amavisd.cgi | 4 ++-- spam/edit_manual.cgi | 3 ++- spam/lang/de | 3 ++- spam/lang/en | 1 + spam/save_amavisd.cgi | 49 ++++++++++++++++++++++++++++++------------- spam/save_manual.cgi | 3 ++- 6 files changed, 43 insertions(+), 20 deletions(-) diff --git a/spam/edit_amavisd.cgi b/spam/edit_amavisd.cgi index f25c3a756..9fdde68c6 100755 --- a/spam/edit_amavisd.cgi +++ b/spam/edit_amavisd.cgi @@ -28,12 +28,12 @@ print &text('amavisd_desc'),"

\n"; # spam tag2 level, when is classiefied as spam $hits = &amavis_find('sa_tag2_level_deflt', $conf); print &ui_table_row($text{'score_hits'}, - &opt_field('sa_tag2_level_deflt', $hits, 7, "6.5")); + &opt_field('sa_tag2_level_deflt', $hits, 7, 6.5)); # amavis quarantine spam level $hits = &amavis_find('sa_kill_level_deflt', $conf); print &ui_table_row($text{'amavis_quarantine_level'}, - &opt_field('sa_kill_level_deflt', $hits, 7, "6.5")); + &opt_field('sa_kill_level_deflt', $hits, 7, 6.5)); # amavis delete spam level $hits = &amavis_find('sa_quarantine_cutoff_level', $conf); diff --git a/spam/edit_manual.cgi b/spam/edit_manual.cgi index 345016bdf..14d63a816 100755 --- a/spam/edit_manual.cgi +++ b/spam/edit_manual.cgi @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl +#!/usr/bin/perl # Show a config file for manual editing require './spam-lib.pl'; @@ -9,6 +9,7 @@ require './spam-lib.pl'; $conf = &get_config(); @files = &unique(map { $_->{'file'} } @$conf); +push(@files, $config{'amavisdconf'}) if (!$warn_procmail && -r $config{'amavisdconf'}); $in{'manual'} ||= $files[0]; &indexof($in{'manual'}, @files) >= 0 || &error($text{'manual_efile'}); diff --git a/spam/lang/de b/spam/lang/de index de9a8ebe9..422c00d91 100644 --- a/spam/lang/de +++ b/spam/lang/de @@ -12,7 +12,8 @@ amavisd_title=Amavisd Spam Konfiguration amavis_ehit=Spam-Wert, ab dem eine Mail als Spam klassifiziert wird ist keine Zahl! amavis_ekill=Spam Wert, ab dem eine Spam-Mail in Quarantäne geschickt wird ist keine Zahl! amavis_ecut=Spam Wert, ab dem eine Spam-Mail in gelöscht wird ist keine Zahl! -amavis_eheader=Wert für Betreff-E-Mail-Header ist keine Zahl! +amavis_eheader=Wert für Änderung Betreff-E-Mail-Header ist keine Zahl! +amavis_esubject=Wert für Spam Markierung vor dem Betreff:-Headerist keine Zahl! amavis_esize=Wert für Größe ab der eine Mail nicht mehr auf Spam überprüft wd ist keine Zahl! amavis_elocal=Wert für Internet Dienste zum Klassifizieren der Mail ist keine Zahl! amavis_warn=Wenn Du Amavisd als Spam Filter benutzt, werden einige Einstellungen ignoriert. diff --git a/spam/lang/en b/spam/lang/en index 8e50d1f91..11c97ba74 100644 --- a/spam/lang/en +++ b/spam/lang/en @@ -294,6 +294,7 @@ amavis_ekill=Hits above which a Spam message is quarantined is not numeric! amavis_ecut=Hits above which a Spam message is deleted is not numeric! amavis_eheader=Value for Modify Subject: header is not numeric! amavis_esize=Value for size above witch a message is not checked for Spam is not numeric! +amavis_esubject=Value for Prepend text to Subject: header is not numeric! amavis_elocal=Value for disable Internet sources is not numeric! amavis_quarantine_level=Hits above which a Spam message is quarantined. amavis_delete_level=Hits above which a Spam message is deleted. diff --git a/spam/save_amavisd.cgi b/spam/save_amavisd.cgi index 39598a476..e1e50f93d 100755 --- a/spam/save_amavisd.cgi +++ b/spam/save_amavisd.cgi @@ -9,32 +9,51 @@ require './spam-amavis-lib.pl'; &can_use_check("amavisd"); $conf = &get_amavis_config(); &lock_file($config{'amavisdconf'}); -# Save inputs + +# check for default values +local $tag2=$in{'sa_tag2_level_deflt'}; +$tag2=6.5 if ($in{'sa_tag2_level_deflt_def'}==1); +local $kill=$in{'sa_kill_level_deflt'}; +$kill=6.5 if ($in{'sa_kill_level_deflt_def'}==1); +local $cut=$in{'sa_quarantine_cutoff_level'}; +$cut="undef" if ($in{'sa_quarantine_cutoff_level_def'}==1); +local $subj=$in{'sa_spam_modifies_subj'}; +$subj=0 if ($in{'a_spam_modifies_subj'}==-1); +local $subtag=$in{'sa_spam_subject_tag'}; +$subtag="undef" if ($in{'sa_spam_subject_tag_def'}==1); +local $head=$in{'sa_spam_report_header'}; +$head=0 if ($in{'sa_spam_report_header'}==-1); +local $size=$in{'sa_mail_body_size_limit'}; +$size="undef" if ($in{'sa_mail_body_size_limit_def'}==1); +local $local=$in{'sa_local_tests_only'}; +$local=0 if ($in{'sa_local_tests_only'}==-1); # Check inputs -&check_amavis_value($in{'sa_tag2_level_deflt'}, 1) || +&check_amavis_value($tag2, 1) || &error($text{'amavis_ehit'}); -&check_amavis_value($in{'sa_kill_level_deflt'}, 1) || +&check_amavis_value($kill, 1) || &error($text{'amavis_ekill'}); -&check_amavis_value($in{'sa_quarantine_cutoff_level'}, 1) || +&check_amavis_value($cut, 1) || &error($text{'amavis_ecut'}); -&check_amavis_value($in{'sa_spam_report_header'}, 1) || +&check_amavis_value($subj, 1) || + &error($text{'amavis_esubject'}); +&check_amavis_value($head, 1) || &error($text{'amavis_eheader'}); -&check_amavis_value($in{'sa_mail_body_size_limit'}, 1) || +&check_amavis_value($size, 1) || &error($text{'amavis_esize'}); -&check_amavis_value($in{'sa_local_tests_only'}, 1) || +&check_amavis_value($size, 1) || &error($text{'amavis_elocal'}); # Save inputs -&save_amavis_directive($conf, 'sa_tag2_level_deflt', $in{'sa_tag2_level_deflt'}); -&save_amavis_directive($conf, "sa_kill_level_deflt", $in{'sa_kill_level_deflt'}); -&save_amavis_directive($conf, "sa_quarantine_cutoff_level", $in{'sa_quarantine_cutoff_level'}); -&save_amavis_directive($conf, "sa_spam_modifies_subj", $in{'sa_spam_modifies_subj'}); -&save_amavis_directive($conf, "sa_spam_subject_tag", $in{'sa_spam_subject_tag'}); -&save_amavis_directive($conf, "sa_spam_report_header", $in{'sa_spam_report_header'}); -&save_amavis_directive($conf, "sa_mail_body_size_limit", $in{'sa_mail_body_size_limit'}); -&save_amavis_directive($conf, "sa_local_tests_only", $in{'sa_local_tests_only'}); +&save_amavis_directive($conf, 'sa_tag2_level_deflt', $tag2); +&save_amavis_directive($conf, "sa_kill_level_deflt", $kill); +&save_amavis_directive($conf, "sa_quarantine_cutoff_level", $cut); +&save_amavis_directive($conf, "sa_spam_modifies_subj", $subj); +&save_amavis_directive($conf, "sa_spam_subject_tag", $subtag); +&save_amavis_directive($conf, "sa_spam_report_header", $head); +&save_amavis_directive($conf, "sa_mail_body_size_limit", $size); +&save_amavis_directive($conf, "sa_local_tests_only", $local); &flush_file_lines(); &unlock_file($config{'amavisdconf'}); diff --git a/spam/save_manual.cgi b/spam/save_manual.cgi index 99f7b2c9b..6c2b9bf69 100755 --- a/spam/save_manual.cgi +++ b/spam/save_manual.cgi @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl +#!/usr/bin/perl # Show a config file for manual editing require './spam-lib.pl'; @@ -11,6 +11,7 @@ require './spam-lib.pl'; # Validate the filename $conf = &get_config(); @files = &unique(map { $_->{'file'} } @$conf); +push(@files, $config{'amavisdconf'}) if (!$warn_procmail && -r $config{'amavisdconf'}); $in{'manual'} ||= $files[0]; &indexof($in{'manual'}, @files) >= 0 || &error($text{'manual_efile'}); From e92a5dbead0f5df1a366fdd2829dfac6c4de0ea0 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Sat, 3 Mar 2018 18:38:28 +0100 Subject: [PATCH 15/16] fix shebang --- spam/edit_manual.cgi | 2 +- spam/save_manual.cgi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spam/edit_manual.cgi b/spam/edit_manual.cgi index 14d63a816..faea069ef 100755 --- a/spam/edit_manual.cgi +++ b/spam/edit_manual.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/local/bin/perl # Show a config file for manual editing require './spam-lib.pl'; diff --git a/spam/save_manual.cgi b/spam/save_manual.cgi index 6c2b9bf69..ad27d95dc 100755 --- a/spam/save_manual.cgi +++ b/spam/save_manual.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/local/bin/perl # Show a config file for manual editing require './spam-lib.pl'; From 212bf43140a16b2253b06bab6802f322c06b51b1 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Sat, 3 Mar 2018 20:45:29 +0100 Subject: [PATCH 16/16] fix amaisd_desc for english --- spam/lang/en | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spam/lang/en b/spam/lang/en index 6d50b0734..150802548 100644 --- a/spam/lang/en +++ b/spam/lang/en @@ -288,7 +288,7 @@ razor_failed=.. failed! See the error output above for the reason why. amavisd_title=Amavisd Spam Delivery amavisd_ok=Change Amavisd Delivery -amavis_desc=The form can be used to change the Amavisd configuration that determines what happens to messages classified as spam. +amavisd_desc=The form can be used to change the Amavisd configuration that determines what happens to messages classified as spam. amavis_warn=If you use Amavisd for Spam filtering, some options will be ignored. amavis_ehit=Hits above which a message is considered spam is not numeric! amavis_ekill=Hits above which a Spam message is quarantined is not numeric!