DMARCaroni is free and open source software to do DMARC monitoring
  • Haskell 99.9%
  • Nix 0.1%
Find a file
Vint Leenaars 4e4c26122d
All checks were successful
/ test (push) Successful in 1s
Again delete some level of abstraction for certain tests
2026-05-20 18:29:48 +02:00
.forgejo/workflows
app Add documentation + add extra wrapper modules 2026-05-05 17:08:02 +02:00
data/relaxng
docs/assets/images/sponsors
domains
LICENSES
src/DMARC Improve tests for Config.hs 2026-05-06 18:12:05 +02:00
test Again delete some level of abstraction for certain tests 2026-05-20 18:29:48 +02:00
CHANGELOG.md
default.nix Add basic default.nix 2026-05-01 11:51:54 +02:00
example.dmarcaroni.config Allow absolute paths for ip2asn or public suffix list without needing to disable XDG 2026-04-21 12:22:17 +02:00
package.yaml Again delete some level of abstraction for certain tests 2026-05-20 18:29:48 +02:00
README.md
shell.nix
stack.yaml Remove dependency from country-codes 2026-04-23 18:20:16 +02:00

DMARCaroni

Email dates back over fifty years, but it is still one of the most widely used internet technologies. It is used for many official types of communication, but also for example for mission critical functions like resetting passwords, activating accounts and sending invoices.

Email is on the inside of our processes and our behavioural patterns. After a period where many organisations were outsourcing their critical email infrastructure as if it didn't matter, in recent times there is a renewed interest in running such core infrastructure in-house. This makes a lot of sense, because involving a third party email provider implicitly means sharing a flood of (often sensitive) information about ones customers, business partners, investors, staff (and their relatives), students, citizens etc.

From a security, commercial, societal and privacy perspective it isn't just the confidentiality of emails themselves we should be concerned about. On top of the traditional email stack meanwhile another layer of infrastucture has been put in place to combat spam, phishing and spoofing of email. This layer levers standards like SPF, DKIM and DMARC - standards set by the Internet Engineering Task Force.

What was lacking until now was reliable free and open source software to properly manage the resulting information flows. This is what DMARCaroni delivers: a set of tools for processing DMARC reports and turning the wealth of information into actionable overviews and reports. DMARCaroni is written in Haskell, Rust and Elm.

DMARCaroni logo

Build the DMARCaroni Haskell Server

Compile from source files

Download the repo containing all the source files.

Then install the Haskell Tool Stack or (when using Nix) type:

$ nix-shell

Once stack is installed we can run all the implemented tests:

$ stack test

When all the tests get completed succesfully, we want to install the executable:

$ stack install

If stack fails to run the test or to install, please check if you have configured it correctly or if your problem has been explained in this FAQ. If your question remains, feel free to get in touch.

Configuration

The configuration file is written in dhall.

Copy example.dmarcaroni.config to either $XDG_CONFIG_HOME/dmarcaroni/dmarcaroni.config or to a custom path. In the latter case, you will need to specify it when you start the server using --config-without-xdg

Make sure your dmarcaroni.config file is configured correctly, all options are explained in the example file - in which you can also find the default settings.

To get a list with all supported command line options, do:

$ dmarcaroni-engine --help

A tutorial on how to set up this server is pending. Alternatively, this functionality might be built into DMARCaroni itself.

Run the DMARCaroni Haskell Server

If you want to run the server, type:

$ dmarcaroni-engine

Output is placed in the chosen format (by default JSON) in the standard folder $XDG_DATA_DIR/dmarcaroni/data, unless specified otherwise (--disable-xdg).

Visualize your data

If you want to visualize the data generated by the DMARCaroni Haskell Server, take a look at the DMARCaroni Elm Client or process it with your own tooling.

Sponsors

The ongoing development of DMARCaroni is made possible with the support of its backers. If you'd like to help, please get in touch.

DMARCaroni would especially like to thank the generous support from SIDN Fonds, ProcoliX and Vietsch Foundation.

SIDN Fonds ProcoliX Vietsch Foundation