A simple DMARC report parser for PHP.
php-dmarc is a small PHP class I wrote to parse DMARC aggregate reports and put the data in a MySQL database for easy analysis. The idea is that when recipients start supporting delivery of reports using HTTP, then this can form part of an endpoint that receives and automatically parses the reports.
The library is available on Packagist (solaris/php-dmarc)
and can be installed using Composer. Alternatively you can grab the code directly from GitHub and include the
DmarcAggregateParser.php script directly or via a PSR-0 autoloader.
Set up your database.
tables.sqlcontains the SQL needed to set up the tables.
Solaris\DmarcAggregateParserclass to parse reports - you need to supply it with database credentials, and then run the
parse()function with an array of files to parse. Something like this:
$parser = new Solaris\DmarcAggregateParser( 'dbhost', 'dbuser', 'dbpass', 'dbname' ); $parser->parse( array( 'report-file-1.xml', 'report-file-2.xml', 'report-file-3.xml' ) );
You can supply either XML files or ZIP files. It is assumed that each ZIP file contains only one report.
Knock your self out analysing the data.
parse() function returns
false if it encounters any errors while parsing the data (
true otherwise). To see what the errors were, use the
get_errors() method, which will return an array of error messages.