Skip to content

Commit 9b0ee8d

Browse files
author
Marius Cramer
committed
Merge branch 'master' of git.ispconfig.org:ispconfig/ispconfig3
Conflicts: install/sql/incremental/upd_dev_collection.sql
2 parents 60f2b47 + 3dc6299 commit 9b0ee8d

File tree

87 files changed

+244
-16
lines changed

Some content is hidden

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

87 files changed

+244
-16
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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,5 @@ ALTER TABLE `mail_backup` CHANGE `filesize` `filesize` VARCHAR(20) NOT NULL DEFA
3636
ALTER TABLE `web_backup` CHANGE `filesize` `filesize` VARCHAR(20) NOT NULL DEFAULT '';
3737

3838
ALTER TABLE `sys_datalog` ADD INDEX `dbtable` (`dbtable` (25), `dbidx` (25)), ADD INDEX (`action`);
39+
ALTER TABLE `mail_user` ADD `greylisting` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `postfix`;
40+
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/lib/classes/quota_lib.inc.php

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,68 @@ public function get_quota_data($clientid = null, $readable = true) {
9595

9696
return $sites;
9797
}
98-
98+
99+
public function get_trafficquota_data($clientid = null, $lastdays = 0) {
100+
global $app;
101+
102+
$traffic_data = array();
103+
104+
// select vhosts (belonging to client)
105+
if($clientid != null){
106+
$sql_where = " AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=".$clientid.")";
107+
}
108+
$sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')".$sql_where);
109+
110+
$hostnames = array();
111+
$traffic_data = array();
112+
113+
foreach ($sites as $site) {
114+
$hostnames[] = $site['domain'];
115+
$traffic_data[$site['domain']]['domain_id'] = $site['domain_id'];
116+
}
117+
118+
// fetch all traffic-data of selected vhosts
119+
if (!empty($hostnames)) {
120+
$tmp_year = date('Y');
121+
$tmp_month = date('m');
122+
// This Month
123+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE YEAR(traffic_date) = ? AND MONTH(traffic_date) = ? AND hostname IN ('".join("','",$hostnames)."') GROUP BY hostname", $tmp_year, $tmp_month);
124+
foreach ($tmp_recs as $tmp_rec) {
125+
$traffic_data[$tmp_rec['hostname']]['this_month'] = $tmp_rec['t'];
126+
}
127+
// This Year
128+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE YEAR(traffic_date) = ? AND hostname IN ('".join("','",$hostnames)."') GROUP BY hostname", $tmp_year);
129+
foreach ($tmp_recs as $tmp_rec) {
130+
$traffic_data[$tmp_rec['hostname']]['this_year'] = $tmp_rec['t'];
131+
}
132+
133+
$tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")));
134+
$tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")));
135+
// Last Month
136+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE YEAR(traffic_date) = ? AND MONTH(traffic_date) = ? AND hostname IN ('".join("','",$hostnames)."') GROUP BY hostname", $tmp_year, $tmp_month);
137+
foreach ($tmp_recs as $tmp_rec) {
138+
$traffic_data[$tmp_rec['hostname']]['last_month'] = $tmp_rec['t'];
139+
}
140+
141+
$tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1));
142+
// Last Year
143+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE YEAR(traffic_date) = ? AND hostname IN ('".join("','",$hostnames)."') GROUP BY hostname", $tmp_year);
144+
foreach ($tmp_recs as $tmp_rec) {
145+
$traffic_data[$tmp_rec['hostname']]['last_year'] = $tmp_rec['t'];
146+
}
147+
148+
if (is_int($lastdays) && ($lastdays > 0)) {
149+
// Last xx Days
150+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE (traffic_date >= DATE_SUB(NOW(), INTERVAL ".$app->db->quote($lastdays)." DAY)) AND hostname IN ('".join("','",$hostnames)."') GROUP BY hostname");
151+
foreach ($tmp_recs as $tmp_rec) {
152+
$traffic_data[$tmp_rec['hostname']]['lastdays'] = $tmp_rec['t'];
153+
}
154+
}
155+
}
156+
157+
return $traffic_data;
158+
}
159+
99160
public function get_mailquota_data($clientid = null, $readable = true) {
100161
global $app;
101162

0 commit comments

Comments
 (0)