Skip to content

Commit 1e4f8d0

Browse files
author
Till Brehm
committed
Merge branch '2722' into 'stable-3.1'
improve alias/forward/catchall/aliasdomain handling and lmtp recipient verification See merge request ispconfig/ispconfig3!1053
2 parents 80603de + 67452af commit 1e4f8d0

12 files changed

+150
-59
lines changed

install/dist/lib/fedora.lib.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ function configure_postfix($options = '')
6363
//* mysql-virtual_forwardings.cf
6464
$this->process_postfix_config('mysql-virtual_forwardings.cf');
6565

66+
//* mysql-virtual_alias_domains.cf
67+
$this->process_postfix_config('mysql-virtual_alias_domains.cf');
68+
6669
//* mysql-virtual_mailboxes.cf
6770
$this->process_postfix_config('mysql-virtual_mailboxes.cf');
6871

@@ -102,6 +105,9 @@ function configure_postfix($options = '')
102105
//* mysql-virtual_uids.cf
103106
$this->process_postfix_config('mysql-virtual_uids.cf');
104107

108+
//* mysql-virtual_alias_domains.cf
109+
$this->process_postfix_config('mysql-verify_recipients.cf');
110+
105111
//* postfix-dkim
106112
$filename='tag_as_originating.re';
107113
$full_file_name=$config_dir.'/'.$filename;

install/dist/lib/opensuse.lib.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ function configure_postfix($options = '')
6363
//* mysql-virtual_forwardings.cf
6464
$this->process_postfix_config('mysql-virtual_forwardings.cf');
6565

66+
//* mysql-virtual_alias_domains.cf
67+
$this->process_postfix_config('mysql-virtual_alias_domains.cf');
68+
6669
//* mysql-virtual_mailboxes.cf
6770
$this->process_postfix_config('mysql-virtual_mailboxes.cf');
6871

@@ -99,6 +102,9 @@ function configure_postfix($options = '')
99102
//* mysql-virtual_uids.cf
100103
$this->process_postfix_config('mysql-virtual_uids.cf');
101104

105+
//* mysql-virtual_alias_domains.cf
106+
$this->process_postfix_config('mysql-verify_recipients.cf');
107+
102108
//* postfix-dkim
103109
$filename='tag_as_originating.re';
104110
$full_file_name=$config_dir.'/'.$filename;

install/lib/installer_base.lib.php

Lines changed: 51 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -876,8 +876,8 @@ public function get_postfix_service($service, $type) {
876876
$postfix_service = @($out[0]=='')?false:true;
877877
} else { //* fallback - Postfix < 2.9
878878
$content = rf($conf['postfix']['config_dir'].'/master.cf');
879-
$regex = "/^((?!#)".$service.".*".$type.".*)$/m";
880-
$postfix_service = @(preg_match($regex, $content))?true:false;
879+
$quoted_regex = "^((?!#)".preg_quote($service, '/').".*".preg_quote($type, '/').".*)$";
880+
$postfix_service = @(preg_match("/$quoted_regex/m", $content))?true:false;
881881
}
882882

883883
return $postfix_service;
@@ -915,18 +915,19 @@ public function remove_postfix_service( $service, $type ) {
915915
while ( !feof( $cf ) ) {
916916
$line = fgets( $cf );
917917

918+
$quoted_regex = '^'.preg_quote($service, '/').'\s+'.preg_quote($type, '/');
918919
if ( $reading_service ) {
919920
# regex matches a new service or "empty" (whitespace) line
920921
if ( preg_match( '/^([^\s#]+.*|\s*)$/', $line ) &&
921-
! preg_match( '/^'.$service.'\s+'.$type.'/', $line ) ) {
922+
! preg_match( "/$quoted_regex/", $line ) ) {
922923
$out .= $line;
923924
$reading_service = false;
924925
}
925926

926927
# $skipped_lines .= $line;
927928

928929
# regex matches definition matching service to be removed
929-
} else if ( preg_match( '/^'.$service.'\s+'.$type.'/', $line ) ) {
930+
} else if ( preg_match( "/$quoted_regex/", $line ) ) {
930931

931932
$reading_service = true;
932933
# $skipped_lines .= $line;
@@ -960,6 +961,9 @@ public function configure_postfix($options = '') {
960961
//* mysql-virtual_forwardings.cf
961962
$this->process_postfix_config('mysql-virtual_forwardings.cf');
962963

964+
//* mysql-virtual_alias_domains.cf
965+
$this->process_postfix_config('mysql-virtual_alias_domains.cf');
966+
963967
//* mysql-virtual_mailboxes.cf
964968
$this->process_postfix_config('mysql-virtual_mailboxes.cf');
965969

@@ -999,6 +1003,9 @@ public function configure_postfix($options = '') {
9991003
//* mysql-virtual_uids.cf
10001004
$this->process_postfix_config('mysql-virtual_uids.cf');
10011005

1006+
//* mysql-virtual_alias_domains.cf
1007+
$this->process_postfix_config('mysql-verify_recipients.cf');
1008+
10021009
// test if lmtp if available
10031010
$configure_lmtp = $this->get_postfix_service('lmtp','unix');
10041011

@@ -1151,13 +1158,13 @@ public function configure_postfix($options = '') {
11511158
if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
11521159

11531160
//* Check maildrop service in posfix master.cf
1154-
$regex = "/^maildrop unix.*pipe flags=DRhu user=vmail argv=\\/usr\\/bin\\/maildrop -d ".$cf['vmail_username']." \\$\{extension} \\$\{recipient} \\$\{user} \\$\{nexthop} \\$\{sender}/";
1161+
$quoted_regex = '^maildrop unix.*pipe flags=DRhu user=vmail '.preg_quote('argv=/usr/bin/maildrop -d '.$cf['vmail_username'].' ${extension} ${recipient} ${user} ${nexthop} ${sender}', '/');
11551162
$configfile = $config_dir.'/master.cf';
11561163
if($this->get_postfix_service('maildrop', 'unix')) {
11571164
exec ("postconf -M maildrop.unix 2> /dev/null", $out, $ret);
1158-
$change_maildrop_flags = @(preg_match($regex, $out[0]) && $out[0] !='')?false:true;
1165+
$change_maildrop_flags = @(preg_match("/$quoted_regex/", $out[0]) && $out[0] !='')?false:true;
11591166
} else {
1160-
$change_maildrop_flags = @(preg_match($regex, $configfile))?false:true;
1167+
$change_maildrop_flags = @(preg_match("/$quoted_regex/", $configfile))?false:true;
11611168
}
11621169
if ($change_maildrop_flags) {
11631170
//* Change maildrop service in posfix master.cf
@@ -1337,6 +1344,9 @@ public function configure_dovecot() {
13371344
}
13381345

13391346
$config_dir = $conf['postfix']['config_dir'];
1347+
$quoted_config_dir = preg_quote($config_dir, '/');
1348+
$postfix_version = `postconf -d mail_version 2>/dev/null`;
1349+
$postfix_version = preg_replace( '/mail_version\s*=\s*(.*)\s*/', '$1', $postfix_version );
13401350

13411351
//* Configure master.cf and add a line for deliver
13421352
if(!$this->get_postfix_service('dovecot', 'unix')) {
@@ -1348,7 +1358,7 @@ public function configure_dovecot() {
13481358
chmod($config_dir.'/master.cf~2', 0400);
13491359
}
13501360
//* Configure master.cf and add a line for deliver
1351-
$content = rf($conf["postfix"]["config_dir"].'/master.cf');
1361+
$content = rf($config_dir.'/master.cf');
13521362
$deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n";
13531363
af($config_dir.'/master.cf', $deliver_content);
13541364
unset($content);
@@ -1365,7 +1375,32 @@ public function configure_dovecot() {
13651375
);
13661376

13671377
// Make a backup copy of the main.cf file
1368-
copy($conf['postfix']['config_dir'].'/main.cf', $conf['postfix']['config_dir'].'/main.cf~3');
1378+
copy($config_dir.'/main.cf', $config_dir.'/main.cf~3');
1379+
1380+
$options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions"));
1381+
$new_options = array();
1382+
foreach ($options as $value) {
1383+
$value = trim($value);
1384+
if ($value == '') continue;
1385+
if (preg_match("|check_recipient_access\s+proxy:mysql:${quoted_config_dir}/mysql-verify_recipients.cf|", $value)) {
1386+
continue;
1387+
}
1388+
$new_options[] = $value;
1389+
}
1390+
if ($configure_lmtp) {
1391+
for ($i = 0; isset($new_options[$i]); $i++) {
1392+
if ($new_options[$i] == 'reject_unlisted_recipient') {
1393+
array_splice($new_options, $i+1, 0, array("check_recipient_access proxy:mysql:${config_dir}/mysql-verify_recipients.cf"));
1394+
break;
1395+
}
1396+
}
1397+
# postfix < 3.3 needs this when using reject_unverified_recipient:
1398+
if(version_compare($postfix_version, 3.3, '<')) {
1399+
$postconf_commands[] = "enable_original_recipient = yes";
1400+
}
1401+
}
1402+
#exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'");
1403+
$postconf_commands[] = "smtpd_recipient_restrictions = ".implode(", ", $new_options);
13691404

13701405
// Executing the postconf commands
13711406
foreach($postconf_commands as $cmd) {
@@ -1605,12 +1640,16 @@ public function configure_rspamd() {
16051640

16061641
exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'");
16071642

1608-
$new_options = array();
1643+
16091644
$options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions"));
1645+
$new_options = array();
16101646
foreach ($options as $value) {
1611-
if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) {
1612-
$new_options[] = $value;
1647+
$value = trim($value);
1648+
if ($value == '') continue;
1649+
if (preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) {
1650+
continue;
16131651
}
1652+
$new_options[] = $value;
16141653
}
16151654
exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'");
16161655

install/tpl/debian_postfix.conf.master

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
22
alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
3-
virtual_alias_domains =
4-
virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf
3+
virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf
4+
virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf
55
virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf
66
virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf
77
virtual_mailbox_base = {vmail_mailbox_base}
@@ -15,7 +15,7 @@ broken_sasl_auth_clients = yes
1515
smtpd_sasl_authenticated_header = yes
1616
smtpd_restriction_classes = greylisting
1717
greylisting = check_policy_service inet:127.0.0.1:10023
18-
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status
18+
smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status
1919
smtpd_use_tls = yes
2020
smtpd_tls_security_level = may
2121
smtpd_tls_cert_file = {config_dir}/smtpd.cert
@@ -24,7 +24,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf
2424
relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf
2525
relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf
2626
smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf
27-
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps
27+
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions
2828
smtpd_helo_required = yes
2929
smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo
3030
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re
@@ -44,3 +44,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3
4444
smtp_tls_protocols = !SSLv2,!SSLv3
4545
smtpd_tls_exclude_ciphers = RC4, aNULL
4646
smtp_tls_exclude_ciphers = RC4, aNULL
47+
# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp):
48+
enable_original_recipient = yes

install/tpl/fedora_postfix.conf.master

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
virtual_alias_domains =
2-
virtual_alias_maps = hash:/etc/mailman/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf
1+
virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf
2+
virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf
33
virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf
44
virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf
55
virtual_mailbox_base = {vmail_mailbox_base}
@@ -11,7 +11,7 @@ broken_sasl_auth_clients = yes
1111
smtpd_sasl_authenticated_header = yes
1212
smtpd_restriction_classes = greylisting
1313
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}, check_policy_service unix:private/quota-status
14+
smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status
1515
smtpd_use_tls = yes
1616
smtpd_tls_security_level = may
1717
smtpd_tls_cert_file = {config_dir}/smtpd.cert
@@ -20,7 +20,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf
2020
relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf
2121
relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf
2222
smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf
23-
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps
23+
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions
2424
smtpd_helo_required = yes
2525
smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo
2626
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re
@@ -40,3 +40,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3
4040
smtp_tls_protocols = !SSLv2,!SSLv3
4141
smtpd_tls_exclude_ciphers = RC4, aNULL
4242
smtp_tls_exclude_ciphers = RC4, aNULL
43+
# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp):
44+
enable_original_recipient = yes

install/tpl/gentoo_postfix.conf.master

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
virtual_alias_domains =
2-
virtual_alias_maps = proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf
1+
virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf
2+
virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf
33
virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf
44
virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf
55
virtual_mailbox_base = {vmail_mailbox_base}
@@ -10,7 +10,7 @@ broken_sasl_auth_clients = yes
1010
smtpd_sasl_authenticated_header = yes
1111
smtpd_restriction_classes = greylisting
1212
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}, check_policy_service unix:private/quota-status
13+
smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status
1414
smtpd_use_tls = yes
1515
smtpd_tls_security_level = may
1616
smtpd_tls_cert_file = {config_dir}/smtpd.cert
@@ -19,7 +19,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf
1919
relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf
2020
relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf
2121
smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf
22-
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps
22+
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions
2323
smtpd_helo_required = yes
2424
smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo
2525
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re
@@ -39,3 +39,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3
3939
smtp_tls_protocols = !SSLv2,!SSLv3
4040
smtpd_tls_exclude_ciphers = RC4, aNULL
4141
smtp_tls_exclude_ciphers = RC4, aNULL
42+
# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp):
43+
enable_original_recipient = yes
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+
hosts = {mysql_server_ip}
5+
query = SELECT 'reject_unverified_recipient' FROM mail_domain WHERE domain = '%s' AND active = 'y' AND server_id = {server_id}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
user = {mysql_server_ispconfig_user}
2+
password = {mysql_server_ispconfig_password}
3+
dbname = {mysql_server_database}
4+
hosts = {mysql_server_ip}
5+
query = SELECT destination FROM mail_forwarding
6+
WHERE source = '@%d' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id}

install/tpl/mysql-virtual_domains.cf.master

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ user = {mysql_server_ispconfig_user}
22
password = {mysql_server_ispconfig_password}
33
dbname = {mysql_server_database}
44
hosts = {mysql_server_ip}
5-
query = select domain from mail_domain where domain = '%s' and active = 'y' and server_id = {server_id}
5+
query = SELECT domain FROM mail_domain WHERE domain = '%s' AND active = 'y' AND server_id = {server_id}
6+
AND NOT EXISTS (SELECT source FROM mail_forwarding WHERE source = '@%s' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id})

0 commit comments

Comments
 (0)