Skip to content

Commit 75722e7

Browse files
Dominikrenky
authored andcommitted
Postgrey Filter configurable
1 parent 4452e73 commit 75722e7

38 files changed

+124
-13
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: 17 additions & 1 deletion
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,6 +853,10 @@ public function configure_postfix($options = '') {
841853
caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
842854

843855
}
856+
857+
public function configure_postgrey() {
858+
859+
}
844860

845861
public function configure_saslauthd() {
846862
global $conf;

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 mail_user WHERE email='%s' AND greylisting='y' and server_id = {server_id}
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)