#!/usr/bin/perl package Postfixconf; require "__WIZ_HOME__/common/scripts/Vareqval.pm"; use MDK::Common; use strict; sub do_it { my $file = "/etc/sysconfig/mdk_serv"; my %mdk = Vareqval->get($file); my $wiz_domain_name = $mdk{wiz_domain_name} if defined $mdk{wiz_domain_name} or die "wiz_domain_name not in $file"; my $wiz_host_name = $mdk{wiz_host_name} if defined $mdk{wiz_host_name} or die "wiz_host_name not in $file"; my $wiz_device = $mdk{wiz_device} if defined $mdk{wiz_device} or die "wiz_device not in $file"; $mdk{wiz_ext_mail_relay} = $ENV{wiz_ext_mail_relay} if defined $ENV{wiz_ext_mail_relay} or die "wiz_ext_mail_relay not in env"; $mdk{wiz_mail_masquerade} = $ENV{wiz_mail_masquerade} if defined $ENV{wiz_mail_masquerade} or die "wiz_mail_masquerade not in env"; Vareqval->commit($file, \%mdk); my @conf = qw(/etc/postfix/aliases /etc/postfix/canonical /etc/postfix/main.cf /etc/postfix/master.cf /etc/postfix/virtual); foreach (@conf) { (-f $_) and MDK::Common::cp_af($_, $_.".orig"); } @conf = ("myhostname = $wiz_host_name", 'myorigin = $mydomain', 'inet_interfaces = all', 'mydestination = $myhostname, localhost.$mydomain, $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 = $ENV{wiz_ext_mail_relay}" ); foreach (@conf) { system("postconf -e \'$_\'"); } if (defined $ENV{wiz_ext_mail_relay}) { $file = "/etc/postfix/canonical"; open(CANONICAL, "< $file"); while () { if (/\@$ENV{wiz_domain_name}\s*\@$ENV{wiz_mail_masquerade}/){ goto NOUPDATE; } } close(CANONICAL); open(CANONICAL, ">> $file"); print CANONICAL "\n\@$ENV{wiz_domain_name} \@$ENV{wiz_mail_masquerade}"; NOUPDATE: close(CANONICAL); } system("postmap /etc/postfix/canonical"); system("postmap /etc/postfix/virtual"); system("postalias /etc/postfix/aliases"); system("postfix check"); system("service postfix restart"); system("service xinetd restart"); }