From 4f6ba12f17cf07821e1a4a12ca1a90d2ad0569b8 Mon Sep 17 00:00:00 2001 From: Sean Whalen Date: Sun, 24 May 2026 13:59:26 -0400 Subject: [PATCH] Update docs --- _modules/index.html | 4 ++-- _modules/parsedmarc.html | 4 ++-- _modules/parsedmarc/elastic.html | 14 ++++++++++++-- _modules/parsedmarc/opensearch.html | 14 ++++++++++++-- _modules/parsedmarc/splunk.html | 4 ++-- _modules/parsedmarc/types.html | 4 ++-- _modules/parsedmarc/utils.html | 18 ++++++++++++------ _static/documentation_options.js | 2 +- api.html | 4 ++-- contributing.html | 4 ++-- davmail.html | 4 ++-- dmarc.html | 4 ++-- elasticsearch.html | 4 ++-- genindex.html | 4 ++-- index.html | 4 ++-- installation.html | 4 ++-- kibana.html | 4 ++-- mailing-lists.html | 4 ++-- objects.inv | Bin 1451 -> 1451 bytes opensearch.html | 4 ++-- output.html | 4 ++-- py-modindex.html | 4 ++-- search.html | 4 ++-- splunk.html | 4 ++-- usage.html | 4 ++-- 25 files changed, 77 insertions(+), 51 deletions(-) diff --git a/_modules/index.html b/_modules/index.html index f1e6516..048a193 100644 --- a/_modules/index.html +++ b/_modules/index.html @@ -5,14 +5,14 @@ - Overview: module code — parsedmarc 10.0.0 documentation + Overview: module code — parsedmarc 10.0.3 documentation - + diff --git a/_modules/parsedmarc.html b/_modules/parsedmarc.html index 939ef00..84b411e 100644 --- a/_modules/parsedmarc.html +++ b/_modules/parsedmarc.html @@ -5,14 +5,14 @@ - parsedmarc — parsedmarc 10.0.0 documentation + parsedmarc — parsedmarc 10.0.3 documentation - + diff --git a/_modules/parsedmarc/elastic.html b/_modules/parsedmarc/elastic.html index 68eac08..218489d 100644 --- a/_modules/parsedmarc/elastic.html +++ b/_modules/parsedmarc/elastic.html @@ -5,14 +5,14 @@ - parsedmarc.elastic — parsedmarc 10.0.0 documentation + parsedmarc.elastic — parsedmarc 10.0.3 documentation - + @@ -803,6 +803,16 @@ to_["sample.headers.to"] = headers["to"] to_query = Q(dict(match_phrase=to_)) # pyright: ignore[reportArgumentType] q = q & to_query + if "reply-to" in headers: + # Flatten the Reply-To header to a string so it can be displayed + # and aggregated like From/To. Only the first address is used, + # matching the From/To handling above. Not part of the dedup + # query. + headers["reply-to"] = headers["reply-to"][0] + if headers["reply-to"][0] == "": + headers["reply-to"] = headers["reply-to"][1] + else: + headers["reply-to"] = " <".join(headers["reply-to"]) + ">" if "subject" in headers: subject = headers["subject"] subject_query = {"match_phrase": {"sample.headers.subject": subject}} diff --git a/_modules/parsedmarc/opensearch.html b/_modules/parsedmarc/opensearch.html index 320d5a4..40f0e10 100644 --- a/_modules/parsedmarc/opensearch.html +++ b/_modules/parsedmarc/opensearch.html @@ -5,14 +5,14 @@ - parsedmarc.opensearch — parsedmarc 10.0.0 documentation + parsedmarc.opensearch — parsedmarc 10.0.3 documentation - + @@ -803,6 +803,16 @@ to_["sample.headers.to"] = headers["to"] to_query = Q(dict(match_phrase=to_)) q = q & to_query + if "reply-to" in headers: + # Flatten the Reply-To header to a string so it can be displayed + # and aggregated like From/To. Only the first address is used, + # matching the From/To handling above. Not part of the dedup + # query. + headers["reply-to"] = headers["reply-to"][0] + if headers["reply-to"][0] == "": + headers["reply-to"] = headers["reply-to"][1] + else: + headers["reply-to"] = " <".join(headers["reply-to"]) + ">" if "subject" in headers: subject = headers["subject"] subject_query = {"match_phrase": {"sample.headers.subject": subject}} diff --git a/_modules/parsedmarc/splunk.html b/_modules/parsedmarc/splunk.html index 9646389..7259e8d 100644 --- a/_modules/parsedmarc/splunk.html +++ b/_modules/parsedmarc/splunk.html @@ -5,14 +5,14 @@ - parsedmarc.splunk — parsedmarc 10.0.0 documentation + parsedmarc.splunk — parsedmarc 10.0.3 documentation - + diff --git a/_modules/parsedmarc/types.html b/_modules/parsedmarc/types.html index da80e7f..3707928 100644 --- a/_modules/parsedmarc/types.html +++ b/_modules/parsedmarc/types.html @@ -5,14 +5,14 @@ - parsedmarc.types — parsedmarc 10.0.0 documentation + parsedmarc.types — parsedmarc 10.0.3 documentation - + diff --git a/_modules/parsedmarc/utils.html b/_modules/parsedmarc/utils.html index 4b66bcb..0eaf12e 100644 --- a/_modules/parsedmarc/utils.html +++ b/_modules/parsedmarc/utils.html @@ -5,14 +5,14 @@ - parsedmarc.utils — parsedmarc 10.0.0 documentation + parsedmarc.utils — parsedmarc 10.0.3 documentation - + @@ -1292,9 +1292,15 @@ parsed_email["date"] = parsed_email["date"].replace("T", " ") else: parsed_email["date"] = None - if "reply_to" in parsed_email: + # mailparser's mail_json names these headers with hyphens + # ("reply-to", "delivered-to"), not underscores. Reading the + # underscored key always missed, so every Reply-To address was + # silently dropped. Convert under the underscored name consumers + # expect and drop the raw hyphenated key so the body carries a + # single representation, matching how "to"/"cc"/"bcc" are handled. + if "reply-to" in parsed_email: parsed_email["reply_to"] = list( - map(lambda x: parse_email_address(x), parsed_email["reply_to"]) + map(lambda x: parse_email_address(x), parsed_email.pop("reply-to")) ) else: parsed_email["reply_to"] = [] @@ -1320,9 +1326,9 @@ else: parsed_email["bcc"] = [] - if "delivered_to" in parsed_email: + if "delivered-to" in parsed_email: parsed_email["delivered_to"] = list( - map(lambda x: parse_email_address(x), parsed_email["delivered_to"]) + map(lambda x: parse_email_address(x), parsed_email.pop("delivered-to")) ) if "attachments" not in parsed_email: diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 6acc351..f31c7ec 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '10.0.0', + VERSION: '10.0.3', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/api.html b/api.html index e61e6b4..8c211cf 100644 --- a/api.html +++ b/api.html @@ -6,14 +6,14 @@ - API reference — parsedmarc 10.0.0 documentation + API reference — parsedmarc 10.0.3 documentation - + diff --git a/contributing.html b/contributing.html index ab72354..d18bb41 100644 --- a/contributing.html +++ b/contributing.html @@ -6,14 +6,14 @@ - Contributing to parsedmarc — parsedmarc 10.0.0 documentation + Contributing to parsedmarc — parsedmarc 10.0.3 documentation - + diff --git a/davmail.html b/davmail.html index cc649de..0e423ce 100644 --- a/davmail.html +++ b/davmail.html @@ -6,14 +6,14 @@ - Accessing an inbox using OWA/EWS — parsedmarc 10.0.0 documentation + Accessing an inbox using OWA/EWS — parsedmarc 10.0.3 documentation - + diff --git a/dmarc.html b/dmarc.html index 542ab7d..2aa472d 100644 --- a/dmarc.html +++ b/dmarc.html @@ -6,14 +6,14 @@ - Understanding DMARC — parsedmarc 10.0.0 documentation + Understanding DMARC — parsedmarc 10.0.3 documentation - + diff --git a/elasticsearch.html b/elasticsearch.html index b7da3a3..e486d07 100644 --- a/elasticsearch.html +++ b/elasticsearch.html @@ -6,14 +6,14 @@ - Elasticsearch and Kibana — parsedmarc 10.0.0 documentation + Elasticsearch and Kibana — parsedmarc 10.0.3 documentation - + diff --git a/genindex.html b/genindex.html index 8a5a6fc..d5da892 100644 --- a/genindex.html +++ b/genindex.html @@ -5,14 +5,14 @@ - Index — parsedmarc 10.0.0 documentation + Index — parsedmarc 10.0.3 documentation - + diff --git a/index.html b/index.html index ff0cd95..440cfbd 100644 --- a/index.html +++ b/index.html @@ -6,14 +6,14 @@ - parsedmarc documentation - Open source DMARC report analyzer and visualizer — parsedmarc 10.0.0 documentation + parsedmarc documentation - Open source DMARC report analyzer and visualizer — parsedmarc 10.0.3 documentation - + diff --git a/installation.html b/installation.html index 823030a..14e941a 100644 --- a/installation.html +++ b/installation.html @@ -6,14 +6,14 @@ - Installation — parsedmarc 10.0.0 documentation + Installation — parsedmarc 10.0.3 documentation - + diff --git a/kibana.html b/kibana.html index 0ed42aa..2f81b9c 100644 --- a/kibana.html +++ b/kibana.html @@ -6,14 +6,14 @@ - Using the Kibana dashboards — parsedmarc 10.0.0 documentation + Using the Kibana dashboards — parsedmarc 10.0.3 documentation - + diff --git a/mailing-lists.html b/mailing-lists.html index c5d172d..f6a1760 100644 --- a/mailing-lists.html +++ b/mailing-lists.html @@ -6,14 +6,14 @@ - What about mailing lists? — parsedmarc 10.0.0 documentation + What about mailing lists? — parsedmarc 10.0.3 documentation - + diff --git a/objects.inv b/objects.inv index b7c73c5cceddbdffa112b04c52f7151a6ebb057b..4b91d39a2b4c5cba5438362458004f79b07d7e35 100644 GIT binary patch delta 12 TcmZ3@y_$Q1Go$fFmvmMD8&?C> delta 12 TcmZ3@y_$Q1Go!&qmvmMD8%P7v diff --git a/opensearch.html b/opensearch.html index 5b00461..25a6418 100644 --- a/opensearch.html +++ b/opensearch.html @@ -6,14 +6,14 @@ - OpenSearch and Grafana — parsedmarc 10.0.0 documentation + OpenSearch and Grafana — parsedmarc 10.0.3 documentation - + diff --git a/output.html b/output.html index da827a8..b875493 100644 --- a/output.html +++ b/output.html @@ -6,14 +6,14 @@ - Sample outputs — parsedmarc 10.0.0 documentation + Sample outputs — parsedmarc 10.0.3 documentation - + diff --git a/py-modindex.html b/py-modindex.html index 69ec0ab..97aa4ac 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -5,14 +5,14 @@ - Python Module Index — parsedmarc 10.0.0 documentation + Python Module Index — parsedmarc 10.0.3 documentation - + diff --git a/search.html b/search.html index 3165429..21f1eea 100644 --- a/search.html +++ b/search.html @@ -5,7 +5,7 @@ - Search — parsedmarc 10.0.0 documentation + Search — parsedmarc 10.0.3 documentation @@ -13,7 +13,7 @@ - + diff --git a/splunk.html b/splunk.html index 8379f1f..4856693 100644 --- a/splunk.html +++ b/splunk.html @@ -6,14 +6,14 @@ - Splunk — parsedmarc 10.0.0 documentation + Splunk — parsedmarc 10.0.3 documentation - + diff --git a/usage.html b/usage.html index 3ab54a2..07b0508 100644 --- a/usage.html +++ b/usage.html @@ -6,14 +6,14 @@ - Using parsedmarc — parsedmarc 10.0.0 documentation + Using parsedmarc — parsedmarc 10.0.3 documentation - +