From ccc95b638b03602ebf314a9a2f492e1f6374189a Mon Sep 17 00:00:00 2001 From: Udo Waechter Date: Wed, 9 Nov 2016 19:00:00 +0100 Subject: [PATCH] Greylisting TODO: Describe system config --- actions/admin/settings/150.mail.php | 16 ++++++++++++++++ customer_email.php | 13 +++++++------ install/updates/froxlor/0.9/update_0.9.inc.php | 12 ++++++++++-- .../customer/email/formfield.emails_add.php | 3 ++- lib/version.inc.php | 4 ++-- lng/english.lng.php | 5 ++++- lng/german.lng.php | 4 ++++ 7 files changed, 45 insertions(+), 12 deletions(-) diff --git a/actions/admin/settings/150.mail.php b/actions/admin/settings/150.mail.php index b5ce0522..81b24501 100644 --- a/actions/admin/settings/150.mail.php +++ b/actions/admin/settings/150.mail.php @@ -93,6 +93,22 @@ return array( 'default' => true, 'save_method' => 'storeSettingResetCatchall', ), + 'mail_greylist_enabled' => array( + 'label' => $lng['serversettings']['greylist_enabled'], + 'settinggroup' => 'mail', + 'varname' => 'greylist_enabled', + 'type' => 'bool', + 'default' => true, + 'save_method' => 'storeSettingField', + ), + 'mail_greylist_disabled_default' => array( + 'label' => $lng['serversettings']['greylist_disabled_default'], + 'settinggroup' => 'mail', + 'varname' => 'greylist_disabled_default', + 'type' => 'bool', + 'default' => false, + 'save_method' => 'storeSettingField', + ), 'system_mailtraffic_enabled' => array( 'label' => $lng['serversettings']['mailtraffic_enabled'], 'settinggroup' => 'system', diff --git a/customer_email.php b/customer_email.php index 7fb0d615..b912af0a 100644 --- a/customer_email.php +++ b/customer_email.php @@ -220,7 +220,8 @@ if ($page == 'overview') { $iscatchall = '0'; $email = $email_part . '@' . $domain; } - + $disablegreylist = isset($_POST['disablegreylist']) ? $_POST['disablegreylist'] : Settings::Get('mail.greylist_disabled_default'); + $email_full = $email_part . '@' . $domain; if (!validateEmail($email_full)) { @@ -306,7 +307,7 @@ if ($page == 'overview') { standard_error('allresourcesused'); } } elseif ($action == 'edit' && $id != 0) { - $stmt = Database::prepare("SELECT `v`.`id`, `v`.`email`, `v`.`email_full`, `v`.`iscatchall`, `v`.`destination`, `v`.`customerid`, `v`.`popaccountid`, `v`.`disablegreylist`, u`.`quota` + $stmt = Database::prepare("SELECT `v`.`id`, `v`.`email`, `v`.`email_full`, `v`.`iscatchall`, `v`.`destination`, `v`.`customerid`, `v`.`popaccountid`, `v`.`disablegreylist`, `u`.`quota` FROM `" . TABLE_MAIL_VIRTUAL . "` `v` LEFT JOIN `" . TABLE_MAIL_USERS . "` `u` ON(`v`.`popaccountid` = `u`.`id`) @@ -404,7 +405,7 @@ if ($page == 'overview') { standard_error(array('operationnotpermitted', 'featureisdisabled'), 'Catchall'); } } elseif ($action == 'togglegreylist' && $id != 0) { - //if (Settings::Get('catchall.catchall_enabled') == '1') { + if (Settings::Get('mail.greylist_enabled') == '1') { $stmt = Database::prepare("SELECT `id`, `email`, `email_full`, `destination`, `customerid`, `popaccountid`, `disablegreylist` FROM `" . TABLE_MAIL_VIRTUAL . "` WHERE `customerid`= :cid AND `id`= :id" @@ -426,9 +427,9 @@ if ($page == 'overview') { Database::pexecute($stmt, $params); redirectTo($filename, array('page' => $page, 'action' => 'edit', 'id' => $id, 's' => $s)); } -// } else { -// standard_error(array('operationnotpermitted', 'featureisdisabled'), 'Greylisting'); -// } + } else { + standard_error(array('operationnotpermitted', 'featureisdisabled'), 'Greylisting'); + } } } elseif ($page == 'accounts') { if ($action == 'add' && $id != 0) { diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index 16dbb67d..c35d2bbe 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -3417,7 +3417,15 @@ if (isFroxlorVersion('0.9.37-rc1')) { } if(isFroxlorVersion('0.9.37')) { - Database::query("ALTER TABLE `".TABLE_MAIL_VIRTUAL."` ADD disablegreylist TINYINT(1)"); - showUpdateStep("Updating from 0.9.37 to 0.9.37 greylist", false); + showUpdateStep("Adding Database column for greylisting",false); + Database::query("ALTER TABLE `".TABLE_MAIL_VIRTUAL."` ADD COLUMN IF NOT EXISTS disablegreylist TINYINT(1) DEFAULT 0"); updateToVersion('0.9.37-greylist'); } + + +if(isFroxlorVersion('0.9.37-greylist')) { + showUpdateStep("Adding new settings (greylisting enabled by default)", false); + Settings::AddNew("mail.greylist_enabled", "1"); + Settings::AddNew("mail.greylist_disabled_default", "0"); + updateToVersion('0.9.37-greylist2'); +} diff --git a/lib/formfields/customer/email/formfield.emails_add.php b/lib/formfields/customer/email/formfield.emails_add.php index 31bd18fc..19514906 100644 --- a/lib/formfields/customer/email/formfield.emails_add.php +++ b/lib/formfields/customer/email/formfield.emails_add.php @@ -50,7 +50,8 @@ return array( 'values' => array( array ('label' => $lng['panel']['yes'], 'value' => '1') ), - 'value' => array() + 'visible' => (Settings::Get('mail.greylist_enabled') == '1' ? true : false), + 'value' => array(Settings::Get('mail.greylist_disabled_default')) ) ) ) diff --git a/lib/version.inc.php b/lib/version.inc.php index aca2d8c8..8c0bf248 100644 --- a/lib/version.inc.php +++ b/lib/version.inc.php @@ -16,10 +16,10 @@ */ // Main version variable -$version = '0.9.37-greylist'; +$version = '0.9.37-greylist2'; // Database version (YYYYMMDDC where C is a daily counter) -$dbversion = '201611090'; +$dbversion = '201607210'; // Distribution branding-tag (used for Debian etc.) $branding = ''; diff --git a/lng/english.lng.php b/lng/english.lng.php index eeed559b..6088283b 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -374,7 +374,10 @@ $lng['serversettings']['nameservers']['title'] = 'Nameservers'; $lng['serversettings']['nameservers']['description'] = 'A comma separated list containing the hostnames of all nameservers. The first one will be the primary one.'; $lng['serversettings']['mxservers']['title'] = 'MX servers'; $lng['serversettings']['mxservers']['description'] = 'A comma separated list containing a pair of a number and a hostname separated by whitespace (e.g. \'10 mx.example.com\') containing the mx servers.'; - +$lng['serversettings']['greylist_enabled']['title'] = 'Activate greylisting'; +$lng['serversettings']['greylist_enabled']['description'] = 'Does the Mailserver implement greylisting?'; +$lng['serversettings']['greylist_disabled_default']['title'] = 'Disable Greylisting initially'; +$lng['serversettings']['greylist_disabled_default']['description'] = 'When new accounts are created, should greylisting be disabled?'; /** * CHANGED BETWEEN 1.2.12 and 1.2.13 */ diff --git a/lng/german.lng.php b/lng/german.lng.php index aa270a0f..ce84fe0b 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -371,6 +371,10 @@ $lng['serversettings']['nameservers']['title'] = 'Nameserver'; $lng['serversettings']['nameservers']['description'] = 'Eine durch Komma getrennte Liste mit den Hostnamen aller Nameserver. Der Erste ist der Primäre.'; $lng['serversettings']['mxservers']['title'] = 'MX-Server'; $lng['serversettings']['mxservers']['description'] = 'Eine durch Komma getrenne Liste, die ein Paar mit einer Nummer und den Hostnamen einen MX-Servers, getrennt durch ein Leerzeichen, enthält (z. B. \'10 mx.example.tld\').'; +$lng['serversettings']['greylist_enabled']['title'] = 'Greylisting aktivieren'; +$lng['serversettings']['greylist_enabled']['description'] = 'Greylisting aktivieren?'; +$lng['serversettings']['greylist_disabled_default']['title'] = 'Greylisting standardmaessig aus?'; +$lng['serversettings']['greylist_disabled_default']['description'] = 'Default Wert beim Erstellen neuer Accounts'; /** * CHANGED BETWEEN 1.2.12 and 1.2.13