#!/usr/bin/perl our $VERSION = '1.20130616'; # VERSION use strict; use warnings; use Data::Dumper; use Getopt::Long; use Pod::Usage; use lib 'lib'; use Mail::DMARC::Report::Receive; $|++; my %command_line_options = ( 'file:s' => \my $file, 'imap' => \my $imap, 'mbox' => \my $mbox, 'verbose' => \my $verbose, ); GetOptions (%command_line_options); pod2usage(0) if ! $imap && ! $mbox && ! $file; ## no critic (Carp) my $recv = Mail::DMARC::Report::Receive->new() or die; $recv->verbose($verbose) if $verbose; $recv->from_imap if $imap; $recv->from_mbox($mbox) if $mbox; $recv->from_file($file) if $file; exit; # PODNAME: dmarc_receive # ABSTRACT: receive aggregate reports via IMAP, mbox, or message file(s) __END__ =pod =head1 NAME dmarc_receive - receive aggregate reports via IMAP, mbox, or message file(s) =head1 VERSION version 1.20130616 =head1 DESCRIPTION This script processes incoming DMARC reports from IMAP, files, or a mbox formatted file. =head2 IMAP To process reports with IMAP, you must configure the [imap] settings in mail-dmarc.ini. This program will: * log into the IMAP account * select the specified folder (INBOX, dmarc, etc) * for every unread (Unseen) message, search for DMARC reports =head3 IMAP Aggregate report IMAP aggregate reports are detected by the presence of zip or gzip attachments. When an aggregate report is detected: * the attachment is decompressed * the XML is parsed * the report is saved to the report store * the message is marked as read/seen * move message to [imap][a_done] folder (if defined) =head3 IMAP Forensic report IMAP forensic reports are detected by the presence of the content-types message/feedback-report and text/rfc822-headers. When a forensic report is detected it is moved to the [imap][f_done] IMAP folder. =head2 File as message Accepts the filename of a file containing a mail message. The message is parsed and stored. =head2 Mbox Accepts the filename of a mbox format file containing mail messages. The messages are parsed and stored. =head1 USAGE dmarc_receive [ --imap | --mbox | -- file ] =head1 AUTHORS =over 4 =item * Matt Simerson <msimerson@cpan.org> =item * Davide Migliavacca <shari@cpan.org> =back =head1 CONTRIBUTORS =over 4 =item * Benny Pedersen <me@junc.eu> =item * ColocateUSA.net <company@colocateusa.net> =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by ColocateUSA.com. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut