All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Official support for Python 3.13
- Drop support for Python 3.8.
- Fix misspelled metric name (use
dmarc_invalid_reports_total
instead ofdmaric_invalid_reports_total
). (#50)
- Handle reports with MIME type
application/octet-stream
. (#48)
- Support for structured JSON logging. (#35)
- Docker images will be published for
linux/amd64
andlinux/arm6
platforms. (#42) - Latest stable release will be tagged with
latest
tag on Docker Hub.
- Logs are colored by default.
- It is no longer possible to override the following keys in the logging
configuration:
version
,incremental
,formatters
. root.handlers
will be set to['default']
in the logging configuration if not provided explicitly.- The
--debug
argument will always take precedence for the root logger, no matter what might be configured in the logging configuration.
- dmarc_invalid_reports_total metric with a count of emails from which no DMARC report could be parsed.
- Correctly calculate compliant number and percentage in sample dashboard (use last non null value instead of mean over range). (#37)
- Add missing Python 3.12 classifier to package.
- Official support for Python 3.12.
- Prevent deadlock if IMAP connection terminates abnormally.
This release exclusively updates dependencies in use.
- Gracefully handle unknown properties within report XML. In particular, this should allow to process reports send by Google again, which was not working anymore starting June 2023.
- Fix issue with Microsoft Exchange not handling string length being split across multiple packages. (#36)
- Fix problems with large emails that would either cause the whole program to crash or prevent the processing of any new emails. This was solved by updating the bite-parser dependency to at least version 0.2.2. (#34, bite-parser v0.2.2)
- Update bite-parser dependency to version 0.2.1 to get better error output.
- Drop support for Python 3.7.
- With some IMAP servers emails were not correctly processed if the UID and RFC822 where returned in reverse order in the response. (#33)
- More logging when email are not processed and more debug logging on closing the IMAP connection.
- The systemd unit provided as part of the Ansible role has been hardened.
- Correctly handle logout timeout when closing IMAP connection. Previously, a timeout during logout would have aborted the process of closing the connection.
- Officially declare Python 3.11 support.
- Added the
dmarc_metrics_exporter_build_info
metric which contains version information in its labels.
- Renamed Ansible role
dmarc-metrics-exporter
todmarc_metrics_exporter
[as-
is no longer allowed in role names](https://galaxy.ansible.com/docs/contributing/creating_role.html#role-names). dmarc_metrics_exporter_virtualenv_path
variable has been added- The Ansible role no longer creates a system user. Instead the systemd "DynamicUser" feature is used.
- Add the
imap_use_ssl
andimap_verify_certificate
variables to the Ansible role.
- More robust handling of IMAP fetch responses including unknown fields. (#29)
- The polling of the IMAP mailbox was broken since presumably version 0.5 and should be fixed now.
dmarc-metrics-exporter
script to allow invocation without the python -m syntax.
- Allow installation with Python 3.10.
- Use
poetry-core
as build system to allow installations with fetching fewer Poetry dependencies.
- Officially declare Python 3.10 support.
- Possibility to configure log output with
logging
key in the configuration file. See logging.config documentation for details. --debug
flag to quickly enable debug log output.
- Parse IMAP fetch responses properly to support a wider range of IMAP servers. (#17)
- Improve compatibility with different IMAP servers. (#17)
- Fixed the changelog markup so that it renders correctly.
- Fixes of the deployment pipelines.
The
metrics_db
configuration option has been replaced with thestorage_path
configuration option. To migrate your existing setup:- Ensure that your
metrics_db
file is calledmetrics.db
. - Ensure that the directory containing the metrics.db file is writable by the dmarc-metrics-exporter.
- Remove the
metrics_db
setting from the configuration file. - Add a new
storage_path
setting pointing to the directory containing themetrics.db
file.
- Ensure that your
Disabled the access log. It clutters the log output with barely relevant messages (there is only a single page being served and it will be polled regularly by Prometheus).
- Support for reports sent in gzip format.
- A log message will be produced for emails from which no report could be extracted.
- Duplicate reports will now only be counted once. The duration for which report
IDs are stored to detect duplicates can be configured with the
deduplication_max_seconds
configuration setting. The default is one week. - Added a Dockerfile to the repository to build a Docker image with dmarc-metrics-exporter. Images for official releases will be published on Docker Hub.
- Support for Python 3.9.
- Change default port to 9797 which does to collide with other Prometheus exporter.
- Change the repository link to the correct repository (e.g. on PyPI)
- Ansible role for deployment.
Initial release.