Handle hostnames with upper-case letters
[webmin.git] / webmin / save_sendmail.cgi
1 #!/usr/local/bin/perl
2 # Save mail server settings
3
4 require './webmin-lib.pl';
5 &ReadParse();
6 &error_setup($text{'sendmail_err'});
7 &foreign_require("mailboxes");
8 &lock_file($mailboxes::module_config_file);
9 %mconfig = &foreign_config("mailboxes");
10
11 # Save smtp server
12 if ($in{'mode'} == 0) {
13         delete($mconfig{'send_mode'});
14         }
15 elsif ($in{'mode'} == 1) {
16         $mconfig{'send_mode'} = '127.0.0.1';
17         }
18 else {
19         &to_ipaddress($in{'smtp'}) && &to_ip6address($in{'smtp'}) ||
20                 &error($text{'sendmail_esmtp'});
21         $mconfig{'send_mode'} = $in{'smtp'};
22         }
23
24 # Save login and password
25 if ($in{'login_def'}) {
26         delete($mconfig{'smtp_user'});
27         delete($mconfig{'smtp_pass'});
28         }
29 else {
30         $in{'login_user'} =~ /^\S+$/ || &error($text{'sendmail_elogin'});
31         eval "use Authen::SASL";
32         if ($@) {
33                 # Perl module missing
34                 &error(&text('sendmail_esasl',
35                         "/cpan/download.cgi?source=3&cpan=Authen::SASL&".
36                         "mode=2&return=/$module_name/&returndesc=".
37                         &urlize($text{'index_return'}),
38                         "Authen::SASL"));
39                 }
40         $mconfig{'smtp_user'} = $in{'login_user'};
41         $mconfig{'smtp_pass'} = $in{'login_pass'};
42         }
43
44 # Save auth method
45 $mconfig{'smtp_auth'} = $in{'auth'};
46
47 # Save from address
48 if ($in{'from_def'}) {
49         delete($mconfig{'webmin_addr'});
50         }
51 else {
52         $in{'from'} =~ /^\S+\@\S+$/ || &error($text{'sendmail_efrom'});
53         $mconfig{'webmin_addr'} = $in{'from'};
54         }
55
56 &save_module_config(\%mconfig, "mailboxes");
57 &unlock_file($mailboxes::module_config_file);
58 &webmin_log("sendmail");
59 &redirect("");
60