Added
- SIGHUP-based configuration reload for watch mode — update output destinations, DNS/GeoIP settings, processing flags, and log level without restarting the service or interrupting in-progress report processing.
- Use
systemctl reload parsedmarcwhen running undersystemd. - On a successful reload, old output clients are closed and recreated.
- On a failed reload, the previous configuration remains fully active.
- Use
close()methods onGelfClient,KafkaClient,SyslogClient,WebhookClient, HECClient, andS3Clientfor clean resource teardown on reload.config_reloadingparameter on allMailboxConnection.watch()implementations andwatch_inbox()to ensure SIGHUP never triggers a new email batch mid-reload.- Elasticsearch and OpenSearch connections are now tracked and cleaned up on reload via
_close_output_clients(). - Extracted
_parse_config_file()and_init_output_clients()from_main()incli.pyto support config reload and reduce code duplication.
Fixed
get_index_prefix()crashed on forensic reports withTypeErrordue toreport()instead ofreport[]dict access.- Missing
exit(1)after IMAP user/password validation failure allowed execution to continue withNonecredentials.