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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
# NOTE: Derived from blib/lib/Mail/Util.pm.
# Changes made here will be lost when autosplit again.
# See AutoSplit.pm.
package Mail::Util;
#line 122 "blib/lib/Mail/Util.pm (autosplit into blib/lib/auto/Mail/Util/maildomain.al)"
sub maildomain {
##
## return imediately if already found
##
return $domain
if(defined $domain);
##
## Get mail domain from environment
##
$domain = $ENV{MAILDOMAIN};
return $domain
if(defined $domain);
##
## Try sendmail config file if exists
##
local *CF;
local $_;
my @sendmailcf = qw(/etc
/etc/sendmail
/etc/ucblib
/etc/mail
/usr/lib
/var/adm/sendmail);
my $config = (grep(-r, map("$_/sendmail.cf", @sendmailcf)))[0];
if(defined $config && open(CF,$config)) {
my %var;
while(<CF>) {
if(my ($v, $arg) = /^D([a-zA-Z])([\w.\$\-]+)/) {
$arg =~ s/\$([a-zA-Z])/exists $var{$1} ? $var{$1} : '$'.$1/eg;
$var{$v} = $arg;
}
}
close(CF);
$domain = $var{j} if defined $var{j};
$domain = $var{M} if defined $var{M};
$domain = $1
if($domain && $domain =~ m/([A-Za-z0-9](?:[\.\-A-Za-z0-9]+))/ );
return $domain
if(defined $domain);
}
##
## Try smail config file if exists
##
if(open(CF,"/usr/lib/smail/config")) {
while(<CF>) {
if(/\A\s*hostnames?\s*=\s*(\S+)/) {
$domain = (split(/:/,$1))[0];
last;
}
}
close(CF);
return $domain
if(defined $domain);
}
##
## Try a SMTP connection to 'mailhost'
##
if(eval { require Net::SMTP }) {
my $host;
foreach $host (qw(mailhost localhost)) {
my $smtp = eval { Net::SMTP->new($host) };
if(defined $smtp) {
$domain = $smtp->domain;
$smtp->quit;
last;
}
}
}
##
## Use internet(DNS) domain name, if it can be found
##
unless(defined $domain) {
if(eval { require Net::Domain } ) {
$domain = Net::Domain::domainname();
}
}
$domain = "localhost"
unless(defined $domain);
return $domain;
}
# end of Mail::Util::maildomain
1;
|