9679b381c7
fix: mark Message-ID as invalid when multiple headers are present
continuous-integration/drone/push Build is passing
2026-03-07 12:05:38 +07:00
e811d02b3b
Add rspamd as a second spam filter alongside SpamAssassin
...
continuous-integration/drone/push Build is running
Closes: #36
2026-02-23 04:01:10 +07:00
8fda7746a1
Add one-click unsubscribe detection and warning
...
continuous-integration/drone/push Build is passing
Detect the List-Unsubscribe-Post: List-Unsubscribe=One-Click header
(RFC 8058) and expose it as the 'one-click' unsubscribe method in the
content analysis. When unsubscribe methods are present but one-click is
absent, the summary card now shows a warning nudging senders to adopt it.
2026-02-23 00:15:17 +07:00
96e83ff70d
Add multilingual unsubscribe keywords for link detection
...
The list comes from github.com/knadh/listmonk i18n strings
Bug: https://github.com/happyDomain/happydeliver/issues/8
2026-02-23 00:15:17 +07:00
6b983f0506
Use List-Unsubscribe header URLs for unsubscribe link detection
...
Bug: https://github.com/happyDomain/happydeliver/issues/8
2026-02-23 00:15:17 +07:00
c50e18a347
Use modern Go slices.Contains and switch instead of if/else if
2026-02-23 00:15:17 +07:00
d81ff1731c
Fix tests
2025-11-17 10:31:04 +07:00
eef6480e75
Refactor DNS resolution: create an interface to have multiple implementations
2025-11-17 10:15:55 +07:00
e05c6d0bc2
Fix calculateTextPlainConsistency algorithm
2025-11-14 12:55:16 +00:00
2172603ad5
content: Add spaces behind each node to reduce gap with plain text
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2025-11-07 15:14:15 +07:00
deb9fd4f51
Handle RFC6652
...
continuous-integration/drone/push Build is passing
Closes: https://framagit.org/happyDomain/happydeliver/-/issues/1
2025-11-07 14:09:05 +07:00
5b179e7b93
Domain alignment checks for DKIM
2025-11-03 14:58:48 +07:00
465da6d16a
Don't look at original DKIM keys headers
2025-11-03 14:58:23 +07:00
1c4eb0653e
Don't alert on missing -all on included SPF records
continuous-integration/drone/push Build is passing
2025-11-01 17:57:57 +07:00
bc6a6397ad
New route to check blacklist only
2025-10-31 11:15:15 +07:00
718b624fb8
Add domain only tests
2025-10-31 11:15:15 +07:00
90dda126ad
Don't consider mailto as suspiscious, search domain alignment
2025-10-30 14:10:42 +07:00
20fe4e5b97
Improve SPF record validation and include error message
continuous-integration/drone/push Build is passing
2025-10-30 10:34:24 +07:00
f0dbc29da4
Handle multiple dkim authentication-results
2025-10-30 10:03:46 +07:00
8769514f1c
Don't deduce point on weak SPF all qualifier, when DMARC is configured
continuous-integration/drone/push Build is passing
2025-10-28 11:42:23 +07:00
871f4e62f6
Fix content scoring error
continuous-integration/drone/push Build is passing
2025-10-27 17:56:06 +07:00
86ec7a6100
By default, only check the first IP against RBL, not all chain
2025-10-27 17:56:06 +07:00
932bc981b5
Filter Authentication-Results to keep only local ones
2025-10-25 03:36:34 +07:00
52f43c6bc5
Add x-align-form authentication test
2025-10-25 03:31:29 +07:00
3ea958b2fd
Split dns.go in one file per check
2025-10-25 03:31:29 +07:00
a700db0873
Split authentication.go in one file per check
2025-10-25 03:31:29 +07:00
115da72874
Handle x-google-dkim authentication result
2025-10-25 03:31:29 +07:00
255027d00b
Start bad spam score to B
2025-10-25 03:31:29 +07:00
9970e957d5
Handle SPF redirect
2025-10-25 03:31:29 +07:00
8fe8581b78
Handle declined auth result
2025-10-25 03:31:29 +07:00
aa35ab223d
Align no DMARC authentication with on DMARC DNS record: grade C
2025-10-25 03:31:29 +07:00
29cb2cf1f9
Headers value for Date and email related are now parsed
2025-10-25 03:31:29 +07:00
7ed347c86e
Improve test display in some circonstancies
2025-10-25 03:31:29 +07:00
4bbba66a81
Handle local postfix delivery
2025-10-25 03:31:29 +07:00
c1063cb4aa
Add iprev check
2025-10-25 03:31:29 +07:00
3d03bfc4fa
Handle relaxed domain match
2025-10-25 03:31:29 +07:00
84a504d668
Add reverse lookup and forward confirmation
2025-10-25 03:31:29 +07:00
7bc7e7b7a2
Reuse domain extractes from headers
2025-10-25 03:28:44 +07:00
326abc0744
Detect SPF all mechanism
2025-10-25 03:28:44 +07:00
e5c678174c
Comprehensive DMARC record checks
2025-10-25 03:28:44 +07:00
5d335c6a6c
Add email-path checks
2025-10-25 03:28:44 +07:00
8ca4bed875
SPF check return-path
2025-10-24 09:56:35 +07:00
f6a1ea73a2
Check SPF include
2025-10-24 09:56:35 +07:00
a64b866cfa
Add grades
2025-10-24 09:56:35 +07:00
33d394a27b
Improve content analyzing and reporting
2025-10-23 18:09:23 +07:00
41013d8af2
Improve headers reporting
2025-10-23 18:09:23 +07:00
e77bffb04f
Improve spamassassin report
2025-10-23 18:09:23 +07:00
abfd1f0155
Add a score to DNS
2025-10-23 18:09:23 +07:00
eb210e7bed
Align spamassassin report
2025-10-23 18:09:23 +07:00
c51f8e5904
Improve authentication results
2025-10-23 18:09:23 +07:00