Skip to content

Commit c7397a2

Browse files
author
Marius Cramer
committed
Merge branch 'greylist_filter' into 'master'
Greylist filter for mailadresses Postgrey must be installed in advance (can be added to install instructions?!?) When Updating ispconfig main.cf has to be changed to!! See merge request !162
2 parents accfcaf + 5b70bc4 commit c7397a2

File tree

84 files changed

+167
-14
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+167
-14
lines changed

install/dist/lib/fedora.lib.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ function configure_postfix($options = '')
152152
//* mysql-virtual_relayrecipientmaps.cf
153153
$this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf');
154154

155+
//* mysql-virtual_policy_greylist.cf
156+
$this->process_postfix_config('mysql-virtual_policy_greylist.cf');
157+
155158
//* postfix-dkim
156159
$full_file_name=$config_dir.'/tag_as_originating.re';
157160
if(is_file($full_file_name)) {
@@ -193,13 +196,21 @@ function configure_postfix($options = '')
193196
}
194197
unset($rbl_hosts);
195198
unset($server_ini_array);
196-
199+
200+
//* If Postgrey is installed, configure it
201+
$greylisting = '';
202+
if($conf['postgrey']['installed'] == true) {
203+
$greylisting = 'check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf';
204+
}
205+
197206
//* These postconf commands will be executed on installation and update
198207
$postconf_placeholders = array('{config_dir}' => $config_dir,
199208
'{vmail_mailbox_base}' => $cf['vmail_mailbox_base'],
200209
'{vmail_userid}' => $cf['vmail_userid'],
201210
'{vmail_groupid}' => $cf['vmail_groupid'],
202-
'{rbl_list}' => $rbl_list);
211+
'{rbl_list}' => $rbl_list,
212+
'{greylisting}' => $greylisting,
213+
);
203214

204215
$postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_postfix.conf.master', 'tpl/fedora_postfix.conf.master');
205216
$postconf_tpl = strtr($postconf_tpl, $postconf_placeholders);

install/dist/lib/opensuse.lib.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ function configure_postfix($options = '')
168168
//* mysql-virtual_relayrecipientmaps.cf
169169
$this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf');
170170

171+
//* mysql-virtual_policy_greylist.cf
172+
$this->process_postfix_config('mysql-virtual_policy_greylist.cf');
173+
171174
//* postfix-dkim
172175
$full_file_name=$config_dir.'/tag_as_originating.re';
173176
if(is_file($full_file_name)) {
@@ -224,12 +227,20 @@ function configure_postfix($options = '')
224227
unset($rbl_hosts);
225228
unset($server_ini_array);
226229

230+
//* If Postgrey is installed, configure it
231+
$greylisting = '';
232+
if($conf['postgrey']['installed'] == true) {
233+
$greylisting = 'check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf';
234+
}
235+
227236
//* These postconf commands will be executed on installation and update
228237
$postconf_placeholders = array('{config_dir}' => $config_dir,
229238
'{vmail_mailbox_base}' => $cf['vmail_mailbox_base'],
230239
'{vmail_userid}' => $cf['vmail_userid'],
231240
'{vmail_groupid}' => $cf['vmail_groupid'],
232-
'{rbl_list}' => $rbl_list);
241+
'{rbl_list}' => $rbl_list,
242+
'{greylisting}' => $greylisting,
243+
);
233244

234245
$postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/opensuse_postfix.conf.master', 'tpl/opensuse_postfix.conf.master');
235246
$postconf_tpl = strtr($postconf_tpl, $postconf_placeholders);

install/lib/installer_base.lib.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ public function find_installed_apps() {
135135

136136
if(is_installed('mysql') || is_installed('mysqld')) $conf['mysql']['installed'] = true;
137137
if(is_installed('postfix')) $conf['postfix']['installed'] = true;
138+
if(is_installed('postgrey')) $conf['postgrey']['installed'] = true;
138139
if(is_installed('mailman')) $conf['mailman']['installed'] = true;
139140
if(is_installed('apache') || is_installed('apache2') || is_installed('httpd') || is_installed('httpd2')) $conf['apache']['installed'] = true;
140141
if(is_installed('getmail')) $conf['getmail']['installed'] = true;
@@ -704,6 +705,9 @@ public function configure_postfix($options = '') {
704705
//* mysql-virtual_outgoing_bcc.cf
705706
$this->process_postfix_config('mysql-virtual_outgoing_bcc.cf');
706707

708+
//* mysql-virtual_policy_greylist.cf
709+
$this->process_postfix_config('mysql-virtual_policy_greylist.cf');
710+
707711
//* postfix-dkim
708712
$full_file_name=$config_dir.'/tag_as_originating.re';
709713
if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~');
@@ -742,11 +746,19 @@ public function configure_postfix($options = '') {
742746
unset($rbl_hosts);
743747
unset($server_ini_array);
744748

749+
//* If Postgrey is installed, configure it
750+
$greylisting = '';
751+
if($conf['postgrey']['installed'] == true) {
752+
$greylisting = 'check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf';
753+
}
754+
745755
$postconf_placeholders = array('{config_dir}' => $config_dir,
746756
'{vmail_mailbox_base}' => $cf['vmail_mailbox_base'],
747757
'{vmail_userid}' => $cf['vmail_userid'],
748758
'{vmail_groupid}' => $cf['vmail_groupid'],
749-
'{rbl_list}' => $rbl_list);
759+
'{rbl_list}' => $rbl_list,
760+
'{greylisting}' => $greylisting,
761+
);
750762

751763
$postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_postfix.conf.master', 'tpl/debian_postfix.conf.master');
752764
$postconf_tpl = strtr($postconf_tpl, $postconf_placeholders);
@@ -841,7 +853,7 @@ public function configure_postfix($options = '') {
841853
caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
842854

843855
}
844-
856+
845857
public function configure_saslauthd() {
846858
global $conf;
847859

install/sql/incremental/upd_dev_collection.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,6 @@ TXT|{DOMAIN}.|v=spf1 mx a ~all|0|3600' WHERE `dns_template`.`template_id` = 1;
3434

3535
ALTER TABLE `mail_backup` CHANGE `filesize` `filesize` VARCHAR(20) NOT NULL DEFAULT '';
3636
ALTER TABLE `web_backup` CHANGE `filesize` `filesize` VARCHAR(20) NOT NULL DEFAULT '';
37+
38+
ALTER TABLE `mail_user` ADD `greylisting` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `postfix`;
39+
ALTER TABLE `mail_forwarding` ADD `greylisting` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `active`;

install/tpl/debian_postfix.conf.master

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ inet_protocols=all
1212
smtpd_sasl_auth_enable = yes
1313
broken_sasl_auth_clients = yes
1414
smtpd_sasl_authenticated_header = yes
15-
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}
15+
smtpd_restriction_classes = greylisting
16+
greylisting = check_policy_service inet:127.0.0.1:10023
17+
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}
1618
smtpd_use_tls = yes
1719
smtpd_tls_security_level = may
1820
smtpd_tls_cert_file = {config_dir}/smtpd.cert

install/tpl/fedora_postfix.conf.master

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ sender_bcc_maps = proxy:mysql:{config_dir}/mysql-virtual_outgoing_bcc.cf
99
smtpd_sasl_auth_enable = yes
1010
broken_sasl_auth_clients = yes
1111
smtpd_sasl_authenticated_header = yes
12-
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}
12+
smtpd_restriction_classes = greylisting
13+
greylisting = check_policy_service inet:127.0.0.1:10023
14+
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}
1315
smtpd_use_tls = yes
1416
smtpd_tls_security_level = may
1517
smtpd_tls_cert_file = {config_dir}/smtpd.cert

install/tpl/gentoo_postfix.conf.master

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gids.cf
88
smtpd_sasl_auth_enable = yes
99
broken_sasl_auth_clients = yes
1010
smtpd_sasl_authenticated_header = yes
11-
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}
11+
smtpd_restriction_classes = greylisting
12+
greylisting = check_policy_service inet:127.0.0.1:10023
13+
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}
1214
smtpd_use_tls = yes
1315
smtpd_tls_security_level = may
1416
smtpd_tls_cert_file = {config_dir}/smtpd.cert
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
user = {mysql_server_ispconfig_user}
2+
password = {mysql_server_ispconfig_password}
3+
dbname = {mysql_server_database}
4+
query = SELECT 'greylisting' FROM (SELECT greylisting, source AS email FROM mail_forwarding WHERE server_id = {server_id} UNION SELECT greylisting, email FROM mail_user WHERE server_id = {server_id}) addresses WHERE addresses.email='%s' AND addresses.greylisting='y'
5+
hosts = {mysql_server_ip}

install/tpl/opensuse_postfix.conf.master

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ sender_bcc_maps = proxy:mysql:{config_dir}/mysql-virtual_outgoing_bcc.cf
1111
smtpd_sasl_auth_enable = yes
1212
broken_sasl_auth_clients = yes
1313
smtpd_sasl_authenticated_header = yes
14-
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}
14+
smtpd_restriction_classes = greylisting
15+
greylisting = check_policy_service inet:127.0.0.1:10023
16+
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}
1517
smtpd_use_tls = yes
1618
smtpd_tls_security_level = may
1719
smtpd_tls_cert_file = {config_dir}/smtpd.cert

interface/web/mail/form/mail_alias.tform.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@
124124
'default' => 'y',
125125
'value' => array(0 => 'n', 1 => 'y')
126126
),
127+
'greylisting' => array (
128+
'datatype' => 'VARCHAR',
129+
'formtype' => 'CHECKBOX',
130+
'default' => 'n',
131+
'value' => array(1 => 'y', 0 => 'n')
132+
),
127133
//#################################
128134
// ENDE Datatable fields
129135
//#################################

0 commit comments

Comments
 (0)