40 sub exim_option($); |
40 sub exim_option($); |
41 sub read_exim($); |
41 sub read_exim($); |
42 sub write_exim($@); |
42 sub write_exim($@); |
43 sub addr(@); |
43 sub addr(@); |
44 sub hostname() { chomp (my $h = `hostname -f`); return $h; } |
44 sub hostname() { chomp (my $h = `hostname -f`); return $h; } |
|
45 sub findExim() { $_ = `which exim` || `which exim4`; chomp; $_ } |
45 |
46 |
46 use constant ME => basename $0; |
47 use constant ME => basename $0; |
47 use constant HOSTNAME => hostname; |
48 use constant HOSTNAME => hostname; |
48 use constant CONFIG => ( |
49 use constant CONFIG => ( |
49 { CASE => 1 }, |
50 { CASE => 1 }, |
59 To => { ARGS => "=s" }, |
60 To => { ARGS => "=s" }, |
60 |
61 |
61 src => { ARGS => "=s", DEFAULT => "172.20.1.8" }, |
62 src => { ARGS => "=s", DEFAULT => "172.20.1.8" }, |
62 dst => { ARGS => "=s" }, # exim primary_hostname |
63 dst => { ARGS => "=s" }, # exim primary_hostname |
63 |
64 |
64 exim => { ARGS => "=s", DEFAULT => $ENV{EXIM} || "exim" }, |
65 exim => { ARGS => "=s", DEFAULT => $ENV{EXIM} || findExim }, |
65 config => { ARGS => "=s", DEFAULT => $ENV{EXIM_CONF} || "/etc/exim/exim.conf.t" , |
66 config => { ARGS => "=s", DEFAULT => $ENV{EXIM_CONF} || "/etc/exim/exim.conf.t" , |
66 ALIAS => "C" }, |
67 ALIAS => "C" }, |
67 |
|
68 |
68 |
69 callout => { ARGS => "!", DEFAULT => 1 }, |
69 callout => { ARGS => "!", DEFAULT => 1 }, |
70 help => { ARGS => "!" }, |
70 help => { ARGS => "!" }, |
71 |
71 |
72 ); |
72 ); |
73 |
73 |
74 |
74 |
75 |
75 |
76 my $Cf; |
76 my $Cf; |
77 $Cf = new AppConfig CONFIG or die; |
77 $Cf = new AppConfig CONFIG or die; |
|
78 $Cf->exim or die "No exim binary found\n"; |
78 $Cf->dst(addr(exim_option("primary_hostname"))); |
79 $Cf->dst(addr(exim_option("primary_hostname"))); |
79 $Cf->getopt(qw(pass_through no_ignore_case)) or die $@; |
80 $Cf->getopt(qw(pass_through no_ignore_case)) or die $@; |
80 |
81 |
81 $Cf->From($Cf->from) unless $Cf->From; |
82 $Cf->From($Cf->from) unless $Cf->From; |
82 $Cf->To($Cf->to) unless $Cf->To; |
83 $Cf->To($Cf->to) unless $Cf->To; |