X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=usr%2Fsbin%2Fopendmarc-reports;h=4ae243f27717e177feec0d294533fc7d5369f76c;hb=a3ea3d1a02b61c93d9e42de86df4cccc2a1650e1;hp=43f1ea4c54a446dcb1a3a39d0d583165b0734f2c;hpb=1bd7f9e3c4b206cffbd78e2e6ad0e0e175400ff7;p=opendmarc.git diff --git a/usr/sbin/opendmarc-reports b/usr/sbin/opendmarc-reports index 43f1ea4..4ae243f 100755 --- a/usr/sbin/opendmarc-reports +++ b/usr/sbin/opendmarc-reports @@ -23,6 +23,7 @@ use IO::Compress::Zip qw(zip); use POSIX; use MIME::Base64; use Net::SMTP; +use Authen::SASL; require DBD::mysql; @@ -132,7 +133,10 @@ my $repdom = hostdomain(); my $repemail = "postmaster@" . $repdom; my $smtp_server = '127.0.0.1'; -my $smtp_port = 25; +my $smtp_port = 587; +my $smtp_user; +my $smtp_passwd; +my $smtp_usetls = 0; my $smtp; my $answer; @@ -161,6 +165,9 @@ sub usage print STDERR "\t--report-org reporting organization [$repdom]\n"; print STDERR "\t--smtp-port smtp server port [$smtp_port]\n"; print STDERR "\t--smtp-server smtp server [$smtp_server]\n"; + print STDERR "\t--smtp-user smtp user (for SASL login)\n"; + print STDERR "\t--smtp-passwd smtp password (for SASL login)\n"; + print STDERR "\t--smtp-use-tls use TLS for SMTP\n"; print STDERR "\t--test don't send reports\n"; print STDERR "\t--utc operate in UTC\n"; print STDERR "\t (implies --keepfiles --noupdate)\n"; @@ -189,6 +196,9 @@ my $opt_retval = &Getopt::Long::GetOptions ('day!' => \$daybound, 'report-org=s' => \$repdom, 'smtp-server=s' => \$smtp_server, 'smtp-port=i' => \$smtp_port, + 'smtp-user=s' => \$smtp_user, + 'smtp-passwd=s' => \$smtp_passwd, + 'smtp-use-tls!' => \$smtp_usetls, 'update!' => \$doupdate, 'utc!' => \$use_utc, 'verbose+' => \$verbose, @@ -385,12 +395,27 @@ if ($verbose) $smtp = Net::SMTP->new($smtp_server, 'Port' => $smtp_port, 'Hello' => hostfqdn()); + if (!defined($smtp)) { print STDERR "$progname: open SMTP server $smtp_server:$smtp_port failed\n"; exit(1); } +if ($smtp_usetls) +{ + $smtp->starttls(); +} + +if (defined($smtp_user)) +{ + if (!$smtp->auth($smtp_user, $smtp_passwd)) + { + print STDERR "$progname: could not login to $smtp_server as user $smtp_user\n"; + exit(1); + } +} + foreach (@$domainset) { $domain = $_->[0];