This image is intended to combine a dmarc report parser (see https://github.com/techsneeze/dmarcts-report-parser by TechSneeze.com and John Bieling) with a report viewer (see https://github.com/techsneeze/dmarcts-report-viewer/ by the same people) into a runnable docker image / microservice.
It fetches dmarc report mails regularly from an IMAP server, stores them into a MySQL DB and visualizes them via Webserver/PHP module.
- Create a _dmarc.example.com TXT DNS record for your domain, containg an IMAP postbox, e.g.
17:18 $ dig TXT _dmarc.schumann.link +short
"v=DMARC1\; p=quarantine\; fo=1\; rua=mailto:dmarc@schumann.link\; ruf=mailto:dmarc@schumann.link\; adkim=s\; aspf=s\;"
-
Create a MySQL Database and a user for this service
-
Run this docker image with below mentioned env vars
-
Access port 80 on the container (or 443) or put it behind a reverse proxy to view reports
docker pull gutmensch/dmarc-report
docker run -e ... -ti gutmensch/dmarc-report
New dmarc reports will be fetched every 15 minutes past the hour, every hour. Therefore it can take up to one hour for the first report to be fetched.
dmarcts report viewer: 2024-02-04
dmarcts report parser: 2024-02-04
CAUTION: The old gutmensch/dmarc-report:latest image (older alpine, php5, etc.) is available still as gutmensch/dmarc-report:0.5. The current latest (and 1.0) uses the latest alpine version, newer MySQL client libraries, newer OpenSSL, etc. and improves compatibilitiy with MySQL 8+.
Make sure to create the IMAP-Folders for processed and error reports before the cron job runs!
The default foldernames are are error
& processed
but they can be changed within the env-file
.
Make sure to rename the env.example
file to .env
and adjust the values to your needs.
You can find templates for both, postgreql
and mysql
db in the examples
directory. Just rename the setup you want to use to docker-compose.yml
.
If you are using the docker-compose file above, you can use this command to trigger an manual update. It will fetch the latest reports and parse them.
docker compose exec dmarc-report /usr/bin/dmarcts-report-parser.pl -i -d -r=1
Use SSL instead of default TLS. Set both to 0 to turn off encryption. (not recommended)
- "PARSER_IMAP_SSL=1"
- "PARSER_IMAP_TLS=0"
Ignore ERROR: message_string() issue experienced with Exchange Online.
- "PARSER_IMAP_IGNORE_ERROR=1"
Parser and Viewer support Postgres now too (default is mysql)
- "REPORT_DB_TYPE=pgsql"
Increase the maximum size of the XML file. (default is 50000
bytes)
When the size exceeds the maximum, one could experience an error Uncaught ValueError: DOMDocument::loadXML(): Argument #1 ($source) must not be empty
.
- "PARSER_XML_MAXSIZE=500000"