3 # Save, create or delete a mailertable entry
5 require './sendmail-lib.pl';
6 require './mailers-lib.pl';
8 $access{'mailers'} || &error($text{'msave_ecannot'});
9 $conf = &get_sendmailcf();
10 $mfile = &mailers_file($conf);
12 ($mdbm,$mdbmtype) = &mailers_dbm($conf);
13 @mailers = &list_mailers($mfile);
14 foreach $ml (@mailers) { $already{$ml->{'domain'}}++; }
15 if (!$in{'new'}) { $m = $mailers[$in{'num'}]; }
18 # delete some mailer entry
20 &delete_mailer($m, $mfile, $mdbm, $mdbmtype);
23 # Saving or creating.. check inputs
24 &error_setup($text{'msave_err'});
25 $domain = $in{'from_type'} == 1 ? ".".$in{'from_dom'} :
26 $in{'from_type'} == 2 ? $in{'from_all'} : $in{'from_host'};
27 $domain =~ /^[A-z0-9\-\.]+$/ ||
28 &error(&text('msave_edomain', $domain));
29 if ($already{$domain} && ($in{'new'} || $m->{'domain'} ne $domain)) {
30 &error(&text('msave_edup', $domain));
32 if ($in{'new'} && $in{'from_type'} == 2 &&
33 $already{".".$in{'from_all'}}) {
34 &error(&text('msave_edup', $domain));
36 $mailer = $in{'mailer'};
40 $newm{'domain'} = $domain;
41 $newm{'mailer'} = $mailer;
42 if ($in{'nomx'} && $mailer =~ /smtp|relay/) {
43 $dest = join(":", map { "[".$_."]" } split(/:/, $dest));
45 $newm{'dest'} = $dest;
46 $newm{'cmt'} = $in{'cmt'};
48 &create_mailer(\%newm, $mfile, $mdbm, $mdbmtype);
49 if ($in{'from_type'} == 2) {
50 # Add extra for hosts in domain
51 $newm{'domain'} = ".".$in{'from_all'};
52 &create_mailer(\%newm, $mfile, $mdbm, $mdbmtype);
56 &modify_mailer($m, \%newm, $mfile, $mdbm, $mdbmtype);
61 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
62 "mailer", $logm->{'domain'}, $logm);
63 &redirect("list_mailers.cgi");