Completed re-write of SMTP Client Restrictions page
This commit is contained in:
parent
90b7d17537
commit
a63daa2724
@ -52,3 +52,5 @@ Added more SMTP relaying restrictions.
|
||||
Outgoing email from selected addresses and domains can now be BCCd automatically using the new BCC Mapping page.
|
||||
---- Changes since 1.400 ----
|
||||
Changed the default LDAP class for maps to inetLocalMailRecipient.
|
||||
---- Changes since 1.410 ----
|
||||
Added the SMTP Client Restrictions page, and replaced some oddly-designed UI fields on the SMTP Server Options page to it with more Webmin-standard inputs for configuring RBLs and client access.
|
||||
|
@ -1,8 +1,6 @@
|
||||
#!/usr/local/bin/perl
|
||||
# A single page just for editing smtpd_client_restrictions
|
||||
# XXX editing access maps?
|
||||
# XXX maps rbl parameters
|
||||
# XXX icon
|
||||
|
||||
require './postfix-lib.pl';
|
||||
|
||||
@ -33,16 +31,23 @@ foreach $r (&list_client_restrictions()) {
|
||||
|
||||
# Add restrictions with values
|
||||
foreach $r (&list_multi_client_restrictions()) {
|
||||
$v = $opts{$r};
|
||||
push(@grid, &ui_checkbox("client", $r, $text{'sasl_'.$r},
|
||||
defined($v)),
|
||||
&ui_textbox("value_$r",
|
||||
defined($v) ? $opts[$v+1] : undef, 40).
|
||||
($r eq "check_client_access" ?
|
||||
" ".&map_chooser_button("value_$r", $r) : ""));
|
||||
$done{$r} = 1;
|
||||
$done{$opts[$v+1]} = 1;
|
||||
if ($r eq "check_client_access" && defined($v)) {
|
||||
# Can show client access map
|
||||
$has_client_access = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Show text field for the rest
|
||||
@rest = grep { !$done{$o} } @opts;
|
||||
@rest = grep { !$done{$_} } @opts;
|
||||
if (@rest) {
|
||||
push(@grid, &ui_checkbox("other", 1, $text{'client_other'}, 1),
|
||||
&ui_textbox("other_list", join(" ", @rest), 40));
|
||||
@ -58,4 +63,13 @@ print &ui_table_row($text{'client_restrict'},
|
||||
print &ui_table_end();
|
||||
print &ui_form_end([ [ undef, $text{'save'} ] ]);
|
||||
|
||||
if ($has_client_access) {
|
||||
print "<hr>\n";
|
||||
&generate_map_edit("smtpd_client_restrictions:check_client_access",
|
||||
$text{'map_click'}." ".
|
||||
"<font size=\"-1\">".&hlink("$text{'help_map_format'}",
|
||||
"access")."</font>\n<br>\n", 1,
|
||||
$text{'mapping_client'}, $text{'header_value'});
|
||||
}
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
|
@ -107,8 +107,8 @@ elsif ($in{'map_name'} eq 'header_checks') {
|
||||
elsif ($in{'map_name'} eq 'body_checks') {
|
||||
&ui_print_footer("body.cgi", $text{'body_return'});
|
||||
}
|
||||
elsif ($in{'map_name'} =~ /check_sender_access/) {
|
||||
&ui_print_footer("edit_access.cgi?name=smtpd_client_restrictions:check_sender_access&title=Check sender access mapping table", $text{'access_return'});
|
||||
elsif ($in{'map_name'} =~ /^smtpd_client_restrictions:/) {
|
||||
&ui_print_footer("client.cgi", $text{'client_return'});
|
||||
}
|
||||
else {
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
|
BIN
postfix/images/client.gif
Executable file
BIN
postfix/images/client.gif
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
@ -262,7 +262,7 @@ opts_delay_warning_time=Time in hours before sending a warning for no delivery
|
||||
opts_delay_warning_time_default=Disabled
|
||||
opts_content_filter_default=None
|
||||
|
||||
smtpd_title=SMTP server options
|
||||
smtpd_title=SMTP Server Options
|
||||
smtpd_ecannot=You are not allowed to edit the SMTP server options
|
||||
opts_disable_vrfy_command=Disable SMTP VRFY command
|
||||
opts_smtpd_banner=SMTP greeting banner
|
||||
@ -290,7 +290,7 @@ opts_unknown_client_reject_code=SMTP server response on unknown client reject
|
||||
opts_unknown_hostname_reject_code=SMTP server response on unknown hostname reject
|
||||
|
||||
|
||||
smtp_title=SMTP client options
|
||||
smtp_title=SMTP Client Options
|
||||
smtp_ecannot=You are not allowed to edit the SMTP client options
|
||||
opts_best_mx_transport=Action when listed as best MX host
|
||||
opts_best_mx_transport_default=Default (bounce message)
|
||||
@ -761,6 +761,8 @@ log_start=Started Postfix server
|
||||
log_delqs=Deleted $1 messages from mail queue
|
||||
log_flushq=Flushed mail queue
|
||||
log_backend=Updated configuration file for map $1
|
||||
log_sasl=Changed SMTP authentication and encryption
|
||||
log_client=Changed SMTP client restrictions
|
||||
|
||||
sasl_title=SMTP Authentication And Encryption
|
||||
opts_smtpd_sasl_auth_enable=Enable SASL SMTP authentication?
|
||||
@ -798,6 +800,9 @@ client_restrict=Client restrictions
|
||||
client_restrict1=Postfix default (allow all clients)
|
||||
client_restrict0=Selected below ..
|
||||
client_other=Other restrictions :
|
||||
client_err=Failed to save client restrictions
|
||||
client_evalue=Missing value for restriction $1
|
||||
client_return=SMTP client restrictions
|
||||
|
||||
chooser_title=Select Map Source
|
||||
chooser_header=Map source $1
|
||||
|
@ -1592,7 +1592,7 @@ elsif ($map_name =~ /relocated/) { &redirect("relocated.cgi"); }
|
||||
elsif ($map_name =~ /header/) { &redirect("header.cgi"); }
|
||||
elsif ($map_name =~ /body/) { &redirect("body.cgi"); }
|
||||
elsif ($map_name =~ /sender_bcc/) { &redirect("bcc.cgi"); }
|
||||
elsif ($map_name =~ /sender_access/) { &redirect("edit_access.cgi?name=smtpd_client_restrictions:check_sender_access&title=Check+sender+access+mapping+table"); }
|
||||
elsif ($map_name =~ /^smtpd_client_restrictions:/) { &redirect("client.cgi"); }
|
||||
else { &redirect(""); }
|
||||
}
|
||||
|
||||
|
60
postfix/save_client.cgi
Executable file
60
postfix/save_client.cgi
Executable file
@ -0,0 +1,60 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Save SMTP authentication options
|
||||
|
||||
require './postfix-lib.pl';
|
||||
|
||||
&ReadParse();
|
||||
|
||||
$access{'client'} || &error($text{'opts_ecannot'});
|
||||
|
||||
&error_setup($text{'client_err'});
|
||||
|
||||
&lock_postfix_files();
|
||||
|
||||
# Save client options
|
||||
@opts = split(/[\s,]+/, &get_current_value("smtpd_client_restrictions"));
|
||||
%oldopts = map { $_, 1 } @opts;
|
||||
%newopts = map { $_, 1 } split(/\0/, $in{'client'});
|
||||
|
||||
# Save boolean options
|
||||
foreach $o (&list_client_restrictions()) {
|
||||
if ($newopts{$o} && !$oldopts{$o}) {
|
||||
push(@opts, $o);
|
||||
}
|
||||
elsif (!$newopts{$o} && $oldopts{$o}) {
|
||||
@opts = grep { $_ ne $o } @opts;
|
||||
}
|
||||
}
|
||||
|
||||
# Save options with values
|
||||
foreach $o (&list_multi_client_restrictions()) {
|
||||
$idx = &indexof($o, @opts);
|
||||
if ($newopts{$o}) {
|
||||
$in{"value_$o"} =~ /^\S+$/ ||
|
||||
&error(&text('client_evalue', $text{'sasl_'.$o}));
|
||||
}
|
||||
if ($newopts{$o} && !$oldopts{$o}) {
|
||||
# Add to end
|
||||
push(@opts, $o, $in{"value_$o"});
|
||||
}
|
||||
elsif ($newopts{$o} && $oldopts{$o}) {
|
||||
# Update value
|
||||
$opts[$idx+1] = $in{"value_$o"};
|
||||
}
|
||||
elsif (!$newopts{$o} && $oldopts{$o}) {
|
||||
# Remove and value
|
||||
splice(@opts, $idx, 2);
|
||||
}
|
||||
}
|
||||
|
||||
&set_current_value("smtpd_client_restrictions", join(" ", &unique(@opts)));
|
||||
|
||||
&unlock_postfix_files();
|
||||
|
||||
&reload_postfix();
|
||||
|
||||
&webmin_log("client");
|
||||
&redirect("");
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user