1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#!/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 (<CANONICAL>) {
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");
10;
}
|