projects
/
opendmarc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added SASL and TLS support
[opendmarc.git]
/
usr
/
sbin
/
opendmarc-reports
diff --git
a/usr/sbin/opendmarc-reports
b/usr/sbin/opendmarc-reports
index 43f1ea4c54a446dcb1a3a39d0d583165b0734f2c..4ae243f27717e177feec0d294533fc7d5369f76c 100755
(executable)
--- 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 POSIX;
use MIME::Base64;
use Net::SMTP;
+use Authen::SASL;
require DBD::mysql;
require DBD::mysql;
@@
-132,7
+133,10
@@
my $repdom = hostdomain();
my $repemail = "postmaster@" . $repdom;
my $smtp_server = '127.0.0.1';
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;
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--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";
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,
'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,
'update!' => \$doupdate,
'utc!' => \$use_utc,
'verbose+' => \$verbose,
@@
-385,12
+395,27
@@
if ($verbose)
$smtp = Net::SMTP->new($smtp_server,
'Port' => $smtp_port,
'Hello' => hostfqdn());
$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 (!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];
foreach (@$domainset)
{
$domain = $_->[0];