Skip to content

Commit 08d936a

Browse files
committed
configure_rspamd() should set reject_sender_login_mismatch
1 parent a32f99a commit 08d936a

File tree

6 files changed

+34
-15
lines changed

6 files changed

+34
-15
lines changed

install/lib/installer_base.lib.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,7 @@ public function configure_postfix($options = '') {
10781078

10791079
$reject_sender_login_mismatch = '';
10801080
if(isset($server_ini_array['mail']['reject_sender_login_mismatch']) && ($server_ini_array['mail']['reject_sender_login_mismatch'] == 'y')) {
1081-
$reject_sender_login_mismatch = ', reject_sender_login_mismatch';
1081+
$reject_sender_login_mismatch = ',reject_sender_login_mismatch,';
10821082
}
10831083

10841084
# placeholder includes comment char
@@ -1678,7 +1678,27 @@ public function configure_rspamd() {
16781678
exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'");
16791679
exec("postconf -e 'milter_default_action = accept'");
16801680

1681-
exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'");
1681+
if(! isset($mail_config['reject_sender_login_mismatch'])) {
1682+
$mail_config['reject_sender_login_mismatch'] = 'n';
1683+
}
1684+
$options = explode(", ", exec("postconf -h smtpd_sender_restrictions"));
1685+
$new_options = array();
1686+
foreach ($options as $key => $value) {
1687+
if ($value == '') {
1688+
continue;
1689+
}
1690+
if (preg_match('/tag_as_(originating|foreign)\.re/', $value)) {
1691+
continue;
1692+
}
1693+
if (!preg_match('/reject_(authenticated_)?sender_login_mismatch/', $value)) {
1694+
$new_options[] = $value;
1695+
}
1696+
}
1697+
if ($mail_config['reject_sender_login_mismatch'] == 'y') {
1698+
reset($new_options);
1699+
array_splice($new_options, 0, 0, array('reject_sender_login_mismatch'));
1700+
}
1701+
exec("postconf -e 'smtpd_sender_restrictions = ".implode(", ", $new_options)."'");
16821702

16831703

16841704
$options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions"));

install/tpl/debian_postfix.conf.master

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_ma
2727
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 = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, reject_unknown_helo_hostname, permit
30-
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
30+
smtpd_sender_restrictions = {reject_slm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
3131
smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf
3232
smtpd_etrn_restrictions = permit_mynetworks, reject
3333
smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit

install/tpl/fedora_postfix.conf.master

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_ma
2323
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 = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, reject_unknown_helo_hostname, permit
26-
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
26+
smtpd_sender_restrictions = {reject_slm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
2727
smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf
2828
smtpd_etrn_restrictions = permit_mynetworks, reject
2929
smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit

install/tpl/gentoo_postfix.conf.master

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_ma
2222
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 = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, reject_unknown_helo_hostname, permit
25-
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
25+
smtpd_sender_restrictions = {reject_slm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
2626
smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf
2727
smtpd_etrn_restrictions = permit_mynetworks, reject
2828
smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit

install/tpl/opensuse_postfix.conf.master

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_ma
2525
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
2626
smtpd_helo_required = yes
2727
smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, reject_unknown_helo_hostname, permit
28-
smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
28+
smtpd_sender_restrictions = {reject_slm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf
2929
smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf
3030
smtpd_etrn_restrictions = permit_mynetworks, reject
3131
smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit

server/plugins-available/postfix_server_plugin.inc.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,8 @@ function update($event_name, $data) {
152152
}
153153

154154
if ($mail_config['reject_sender_login_mismatch'] == 'y') {
155-
reset($new_options); $i = 0;
156-
// insert after check_sender_access but before permit_...
157-
while (isset($new_options[$i]) && substr($new_options[$i], 0, 19) == 'check_sender_access') ++$i;
158-
array_splice($new_options, $i, 0, array('reject_sender_login_mismatch'));
155+
reset($new_options);
156+
array_splice($new_options, 0, 0, array('reject_sender_login_mismatch'));
159157
}
160158
$app->system->exec_safe("postconf -e ?", 'smtpd_sender_restrictions = '.implode(", ", $new_options));
161159
}
@@ -256,7 +254,7 @@ function update($event_name, $data) {
256254
exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'");
257255

258256
if($mail_config['content_filter'] != $old_ini_data['mail']['content_filter']) {
259-
$rslm= ($mail_config['reject_sender_login_mismatch']) ? ", reject_sender_login_mismatch" : "";
257+
$rslm = ($mail_config['reject_sender_login_mismatch'] == 'y') ? "reject_sender_login_mismatch," : "";
260258

261259
if($mail_config['content_filter'] == 'rspamd'){
262260
exec("postconf -X 'receive_override_options'");
@@ -267,8 +265,8 @@ function update($event_name, $data) {
267265
exec("postconf -e 'milter_protocol = 6'");
268266
exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'");
269267
exec("postconf -e 'milter_default_action = accept'");
270-
271-
exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf ${rslm}, permit_mynetworks, permit_sasl_authenticated'");
268+
269+
exec("postconf -e 'smtpd_sender_restrictions = ${rslm} permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf'");
272270

273271
$new_options = array();
274272
$options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions"));
@@ -304,8 +302,9 @@ function update($event_name, $data) {
304302

305303
exec("postconf -e 'receive_override_options = no_address_mappings'");
306304
exec("postconf -e 'content_filter = " . ($configure_lmtp ? "lmtp" : "amavis" ) . ":[127.0.0.1]:10024'");
307-
308-
exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, check_sender_access regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'");
305+
306+
// fixme: should read this from conf templates
307+
exec("postconf -e 'smtpd_sender_restrictions = ${rslm} check_sender_access regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:/etc/postfix/tag_as_foreign.re, check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf'");
309308
}
310309
}
311310

0 commit comments

Comments
 (0)