Work on sender dependent addresses

This commit is contained in:
Jamie Cameron
2012-07-31 18:22:24 -07:00
parent 408b51ef6a
commit 086ad0e5a3
8 changed files with 111 additions and 3 deletions

View File

@ -2,8 +2,8 @@
require 'postfix-lib.pl';
@acl_pages = ("resource", "address_rewriting", "aliases", "general",
"canonical", "virtual", "transport", "relocated", "header","body",
"bcc", "local_delivery", "smtpd", "sasl", "client", "smtp",
"rate", "debug", "ldap",
"bcc", "dependent", "local_delivery", "smtpd", "sasl", "client",
"smtp", "rate", "debug", "ldap",
"master", "startstop", "mailq", "postfinger", "manual");
# Print the form for security options of postfix module

View File

@ -11,6 +11,7 @@ debug=1
canonical=1
virtual=1
transport=1
dependent=1
relocated=1
ldap=1
mailq=1

36
postfix/dependent.cgi Executable file
View File

@ -0,0 +1,36 @@
#!/usr/local/bin/perl
#
# postfix-module by Guillaume Cottenceau <gc@mandrakesoft.com>,
# for webmin by Jamie Cameron
#
# Manages sender_dependent_default_transport_maps for Postfix
require './postfix-lib.pl';
$access{'dependent'} || &error($text{'dependent_ecannot'});
&ui_print_header(undef, $text{'dependent_title'}, "", "dependent");
# Start of transport form
print &ui_form_start("save_opts_dependent.cgi");
print &ui_table_start($text{'dependent_title'}, "width=100%", 2);
&option_mapfield("sender_dependent_default_transport_maps", 60);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'opts_save'} ] ]);
# Transport map contents
print &ui_hr();
if (&get_current_value("sender_dependent_default_transport_maps") eq "")
{
print $text{'no_map'},"<p>\n";
}
else
{
&generate_map_edit("sender_dependent_default_transport_maps",
$text{'map_click'}." ".
&hlink($text{'help_map_format'}, "dependent"));
}
&ui_print_footer("", $text{'index_return'});

View File

@ -0,0 +1,10 @@
<header>Sender dependent addresses</header>
The optional sender dependent addresses file allows the relay host for
for outgoing SMTP connections to be set on a per-address or per-domain basis. The left
hand side of each entry can be either a full email address like
<tt>foo@bar.com</tt>, or just a domain like <tt>@bar.com</tt>. The right hand
side must be the hostname or IP address of a mail server to relay mail though.
<p>
<hr>

View File

@ -85,7 +85,9 @@ if ($config{'index_check'} && ($err = &check_postfix())) {
exit;
}
@onames = ( "general", "address_rewriting", "aliases", "canonical", "virtual", "transport", "relocated", "header", "body", "bcc",
@onames = ( "general", "address_rewriting", "aliases", "canonical",
"virtual", "transport", "relocated", "header", "body", "bcc",
$postfix_version >= 2.7 ? ( "dependent" ) : ( ),
"local_delivery", "resource",
"smtpd", "smtp", "sasl", "client",
"rate", "debug", $postfix_version > 2 ? ( ) : ( "ldap" ),

View File

@ -636,6 +636,11 @@ body_eregexp=The body checks map must be in the format <tt>regexp:</tt><i>filena
opts_body_checks=Message body checking tables
body_return=body checks
dependent_ecannot=Sender Dependent Addresses
dependent_ecannot=You are not allowed to edit sender dependent addresses
dependent_eregexp=The sender dependent addresses map must be in the format <tt>regexp:</tt><i>filename</i>
dependent_return=sender dependent addresses
manual_title=Edit Map File
manual_file=Select a map file to edit:
manual_change=Change
@ -712,6 +717,7 @@ log_canonical=Changing canonical mapping options
log_virtual=Changed virtual domain options
log_bcc=Changed BCC map options
log_transport=Changed transport mapping options
log_dependent=Changed sender dependent address options
log_relocated=Changed relocate mapping options
log_header=Changed header check options
log_body=Changed body check options
@ -782,6 +788,11 @@ 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
log_sender_dependent_default_transport_maps_create=Created sender dependent address $1
log_sender_dependent_default_transport_maps_modify=Modified sender dependent address $1
log_sender_dependent_default_transport_maps_delete=Deleted sender dependent address $1
log_delete_sender_dependent_default_transport_mapss=Deleted $1 sender dependent addresses
log_manual_sender_dependent_default_transport_mapss=Manually edited sender dependent addresses in $1
sasl_title=SMTP Authentication And Encryption
opts_smtpd_sasl_auth_enable=Enable SASL SMTP authentication?

View File

@ -655,6 +655,13 @@ sub regenerate_transport_table
&regenerate_any_table("transport_maps");
}
# regenerate_dependent_table
#
sub regenerate_dependent_table
{
&regenerate_any_table("sender_dependent_default_transport_maps");
}
# regenerate_any_table($parameter_where_to_find_the_table_names,
# [ &force-files ], [ after-tag ])
@ -1660,6 +1667,9 @@ elsif ($map_name =~ /sender_bcc/) { &redirect("bcc.cgi?mode=sender"); }
elsif ($map_name =~ /recipient_bcc/) { &redirect("bcc.cgi?mode=recipient"); }
elsif ($map_name =~ /^smtpd_client_restrictions:/) { &redirect("client.cgi"); }
elsif ($map_name =~ /relay_recipient_maps/) { &redirect("smtpd.cgi"); }
elsif ($map_name =~ /sender_dependent_default_transport_maps/) {
redirect("dependent.cgi");
}
else { &redirect(""); }
}
@ -1680,6 +1690,9 @@ if ($map_name =~ /smtpd_client_restrictions:(\S+)/) {
if ($map_name =~ /relay_recipient_maps/) {
&regenerate_relay_recipient_table();
}
if ($map_name =~ /sender_dependent_default_transport_maps/) {
&regenerate_dependent_table();
}
}
# mailq_table(&qfiles)

35
postfix/save_opts_dependent.cgi Executable file
View File

@ -0,0 +1,35 @@
#!/usr/local/bin/perl
#
# postfix-module by Guillaume Cottenceau <gc@mandrakesoft.com>,
# for webmin by Jamie Cameron
#
# Save Postfix options ; special because for sender transport maps
require './postfix-lib.pl';
&ReadParse();
$access{'dependent'} || &error($text{'dependent_ecannot'});
&error_setup($text{'opts_err'});
&lock_postfix_files();
&before_save();
&save_options(\%in);
&ensure_map("sender_dependent_default_transport_maps");
&after_save();
&unlock_postfix_files();
&regenerate_dependent_table();
&reload_postfix();
&webmin_log("dependent");
&redirect("");