summaryrefslogtreecommitdiffstats
path: root/postfix_wizard
diff options
context:
space:
mode:
Diffstat (limited to 'postfix_wizard')
-rwxr-xr-xpostfix_wizard/Postfix.pm178
1 files changed, 100 insertions, 78 deletions
diff --git a/postfix_wizard/Postfix.pm b/postfix_wizard/Postfix.pm
index 9e40c813..0fd2a328 100755
--- a/postfix_wizard/Postfix.pm
+++ b/postfix_wizard/Postfix.pm
@@ -33,66 +33,79 @@ my $wiz_domain_name = $wiz->{net}->network_get("DOMAINNAME");
my $wiz_host_name = $wiz->{net}->network_get("HOSTNAME");
my $o = {
- name => N("Postfix wizard"),
- var => {
- wiz_mail_masquerade => '',
- wiz_ext_mail_relay => ''
- },
- needed_rpm => [ 'postfix' ],
- defaultimage => "$ENV{__WIZ_HOME__}postfix_wizard/images/courrier.png"
- };
+ name => N("Postfix wizard"),
+ var => {
+ wiz_mail_masquerade => '',
+ wiz_ext_mail_relay => '',
+ wiz_myorigin => $wiz_domain_name,
+ },
+ needed_rpm => [ 'postfix' ],
+ defaultimage => "$ENV{__WIZ_HOME__}postfix_wizard/images/courrier.png"
+ };
$o->{pages} = {
- welcome => {
- name => N("Internet Mail Configuration Wizard") . "\n\n" . N("This wizard will help you configuring the Internet Mail services for your network."),
- no_back => 1,
- next => 'config'
- },
- config => {
- name => N("Outgoing Mail Address") . "\n\n" . N("You can select the kind of address that outgoing mail will show in the \"From:\" and \"Reply-to\" field.") . "\n\n" . N("This should be chosen consistently with the address you use for incoming mail."),
- pre => sub {
- $o->{var}{wiz_mail_masquerade} ||= get_mail_masquerade();
- },
- post => \&check_masquerade,
- data => [
- { label => N("Masquerade domain name:"), val => \$o->{var}{wiz_mail_masquerade} },
- ],
- next => 'isp'
- },
- warning => {
- name => N("Warning:") . "\n\n" . N("You entered an empty address for the mail gateway.") . "\n\n" . N("Your choice can be accepted, but this will not allow you to send mail outside your local network. Press next to continue, or back to enter a value."),
- next => 'summary'
- },
- masquerade_not_good => {
- name => N("Error.") . "\n\n" . N("Masquerade not good!"),
- next => 'config'
- },
- isp => {
- name => N("Internet Mail Gateway") . "\n\n" . N("Your server will send the outgoing through a mail gateway, that will take care of the final delivery.") . "\n\n" . N("Internet host names must be in the form \"host.domain.domaintype\"; for example, if your provider is \"provider.com\", the internet mail server is usually \"smtp.provider.com\"."),
- pre => sub {
- $o->{var}{wiz_ext_mail_relay} ||= get_mail_relay();
- },
- post => \&check_relay,
- data => [
- { label => N("Mail Server Name:"), val => \$o->{var}{wiz_ext_mail_relay} },
- ],
- next => 'summary'
- },
- summary => {
- name => N("Configuring the Internet Mail") . "\n\n" . N("The wizard collected the following parameters needed to configure your Internet Mail Service:") . "\n\n" . N("To accept these values, and configure your server, click the Next button or use the Back button to correct them."),
- data => [
- { label => N("Internet Mail Gateway"), fixed_val => \$o->{var}{wiz_ext_mail_relay} },
- { label => N("Form of the Address"), fixed_val => \$o->{var}{wiz_mail_masquerade} },
- ],
- post => \&do_it,
- next => 'end'
- },
- end => {
- name => N("Congratulations") . "\n\n" . N("The wizard successfully configured your Internet Mail service of your server."),
- end => 1,
- next => 0
- },
-};
+ welcome => {
+ name => N("Internet Mail Configuration Wizard") . "\n\n" . N("This wizard will help you configuring the Internet Mail services for your network."),
+ no_back => 1,
+ next => 'isp',
+ next => 'config'
+ },
+ config => {
+ name => N("Outgoing Mail Address") . "\n\n" . N("You can select the kind of address that outgoing mail will show in the \"From:\" and \"Reply-to\" field.") . "\n\n" . N("This should be chosen consistently with the address you use for incoming mail."),
+ pre => sub {
+ $o->{var}{wiz_mail_masquerade} ||= get_mail_masquerade();
+ },
+ post => \&check_masquerade,
+ data => [
+ { label => N("Masquerade domain name:"), val => \$o->{var}{wiz_mail_masquerade} },
+ ],
+ next => 'isp'
+ },
+ warning => {
+ name => N("Warning:") . "\n\n" . N("You entered an empty address for the mail gateway.") . "\n\n" . N("Your choice can be accepted, but this will not allow you to send mail outside your local network. Press next to continue, or back to enter a value."),
+ next => 'summary'
+ },
+ masquerade_not_good => {
+ name => N("Error.") . "\n\n" . N("Masquerade not good!"),
+ next => 'config'
+ },
+ isp => {
+ name => N("Internet Mail Gateway") . "\n\n" . N("Your server will send the outgoing through a mail gateway, that will take care of the final delivery.") . "\n\n" . N("Internet host names must be in the form \"host.domain.domaintype\"; for example, if your provider is \"provider.com\", the internet mail server is usually \"smtp.provider.com\"."),
+ pre => sub {
+ $o->{var}{wiz_ext_mail_relay} ||= get_mail_relay();
+ },
+ post => \&check_relay,
+ data => [
+ { label => N("Mail Server Name:"), val => \$o->{var}{wiz_ext_mail_relay} },
+ ],
+ next => 'origin'
+ },
+ origin => {
+ name => N("The myorigin parameter specifies the domain that locally-posted mail appears to come from") . "\n\n" . N("The default is to append \$myhostname which is fine for small sites."),
+ pre => sub {
+ $o->{var}{wiz_myorigin} ||= get_myorigin();
+ },
+ data => [
+ { label => N("myorigin:"), val => \$o->{var}{wiz_myorigin} },
+ ],
+ next => 'summary',
+ },
+ summary => {
+ name => N("Configuring the Internet Mail") . "\n\n" . N("The wizard collected the following parameters needed to configure your Internet Mail Service:") . "\n\n" . N("To accept these values, and configure your server, click the Next button or use the Back button to correct them."),
+ data => [
+ { label => N("Internet Mail Gateway"), fixed_val => \$o->{var}{wiz_ext_mail_relay} },
+ { label => N("Form of the Address"), fixed_val => \$o->{var}{wiz_mail_masquerade} },
+ { label => N("myorigin"), fixed_val => \$o->{var}{wiz_myorigin} },
+ ],
+ post => \&do_it,
+ next => 'end'
+ },
+ end => {
+ name => N("Congratulations") . "\n\n" . N("The wizard successfully configured your Internet Mail service of your server."),
+ end => 1,
+ next => 0
+ },
+ };
sub new {
my ($class, $_conf) = @_;
@@ -126,9 +139,17 @@ sub get_mail_relay {
$relayhost;
}
+sub get_myorigin {
+ my $myorigin = `/usr/sbin/postconf -h myorigin`;
+ chomp $myorigin;
+ $myorigin;
+}
+
sub do_it {
- $::testing and return
- my @conf = qw(/etc/postfix/aliases
+ $::testing and return;
+ my $in = 'interactive'->vnew('su', 'postfix configuration');
+ my $w = $in->wait_message(N("Postfix Server"), N("Configuring your Postfix server."));
+ my @conf = qw(/etc/postfix/aliases
/etc/postfix/canonical
/etc/postfix/main.cf
/etc/postfix/master.cf
@@ -136,19 +157,20 @@ sub do_it {
foreach (@conf) {
-f $_ and MDK::Common::cp_af($_, $_.".orig");
}
+
@conf = ("myhostname = $wiz_host_name",
- 'myorigin = $mydomain',
- 'inet_interfaces = all',
+ 'inet_interfaces = $myhostname',
'mydestination = $myhostname, localhost.$mydomain',
- 'masquerade_domains = $mydomain',
'alias_maps = hash:/etc/postfix/aliases',
'alias_database = hash:/etc/postfix/aliases',
'virtual_maps = hash:/etc/postfix/virtual',
'canonical_maps = hash:/etc/postfix/canonical',
- "relayhost = $o->{var}{wiz_ext_mail_relay}"
+ 'masquerade_domains = $mydomain',
+ "relayhost = $o->{var}{wiz_ext_mail_relay}",
+ "myorigin = $o->{var}{wiz_myorigin}",
);
foreach (@conf) {
- system("/usr/sbin/postconf -e '$_'");
+ system("/usr/sbin/postconf -e '$_'");
}
if (defined $o->{var}{wiz_ext_mail_relay}) {
my $file = "/etc/postfix/canonical";
@@ -160,20 +182,20 @@ sub do_it {
last;
}
}
- if ($t) { substInFile { s|$t|#$&$canon| } $file }
- else { append_to_file($file, $canon) }
- }
- system("/usr/sbin/postmap /etc/postfix/canonical");
- system("/usr/sbin/postmap /etc/postfix/virtual");
- system("/usr/sbin/postalias /etc/postfix/aliases");
- system("/usr/sbin/postfix check");
- require services;
- if (services::is_service_running('postfix')) {
- services::restart('postfix')
+ if ($t) { substInFile { s|$t|| } }
+ else { append_to_file($file, $canon)}
+ }
+ system("/usr/sbin/postmap -r -w /etc/postfix/canonical");
+ system("/usr/sbin/postmap /etc/postfix/virtual");
+ system("/usr/sbin/postalias /etc/postfix/aliases");
+ system("/usr/sbin/postfix check");
+ require services;
+ if (services::is_service_running('postfix')) {
+ services::restart('postfix')
} else {
- services::start('postfix')
- }
- services::is_service_running('xinetd') and services::restart('xinetd');
+ services::start('postfix')
+ }
+ undef $w;
}
1;