[Task] Catch error mail address #49

Closed
opened 2026-07-10 23:39:16 +02:00 by zemion · 1 comment
Owner

Moved from add-ideas/govoplan-core#33: add-ideas/govoplan-core#33
Reason: Campaign bounce/error-mail handling belongs with campaign/mail-campaign behavior.

Imported from the consolidated GovOPlaN product backlog.

  • Source: /mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md
  • Line: 212
  • Section: Milestones > Milestone 12 - Later Integrations And Mail Capabilities
  • Source status: DEFERRED.

Imported backlog item:

- [ ] Catch error mail address.
> Moved from `add-ideas/govoplan-core#33`: https://git.add-ideas.de/add-ideas/govoplan-core/issues/33 > Reason: Campaign bounce/error-mail handling belongs with campaign/mail-campaign behavior. <!-- codex-backlog-fingerprint:8050d5073dc696cdd4f9eefb --> Imported from the consolidated GovOPlaN product backlog. - Source: `/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md` - Line: `212` - Section: `Milestones > Milestone 12 - Later Integrations And Mail Capabilities` - Source status: `DEFERRED.` Imported backlog item: ```markdown - [ ] Catch error mail address. ```
Author
Owner

Verification-only closure: this imported backlog item is already covered by the current provider-neutral implementation.

  • Campaign commit 09c63de carries the configured global/per-recipient bounce_to value into the frozen recipient snapshot and uses it as the SMTP envelope sender without emitting a forged Return-Path header.
  • Mail commit fe309db owns the receiving side: authorized, bounded IMAP delivery-status watchers, DSN parsing/correlation, immutable observations, unmatched evidence, operator UI, permissions, and runbook/documentation.
  • This preserves the module boundary: Campaign selects the error address; Mail owns mailbox access and delivery-status evidence.

Fresh verification on 2026-08-21:

  • Campaign: 28 passed (test_sending_jobs.py, test_example_campaigns.py, test_documentation.py)
  • Mail: 13 passed, 7 subtests passed (test_bounce_processing.py, test_manifest.py, test_documentation.py)

No additional product decision or external credential is required for the generic capability; configuring a real IMAP profile/folder remains deployment work.

Verification-only closure: this imported backlog item is already covered by the current provider-neutral implementation. - Campaign commit `09c63de` carries the configured global/per-recipient `bounce_to` value into the frozen recipient snapshot and uses it as the SMTP envelope sender without emitting a forged `Return-Path` header. - Mail commit `fe309db` owns the receiving side: authorized, bounded IMAP delivery-status watchers, DSN parsing/correlation, immutable observations, unmatched evidence, operator UI, permissions, and runbook/documentation. - This preserves the module boundary: Campaign selects the error address; Mail owns mailbox access and delivery-status evidence. Fresh verification on 2026-08-21: - Campaign: `28 passed` (`test_sending_jobs.py`, `test_example_campaigns.py`, `test_documentation.py`) - Mail: `13 passed, 7 subtests passed` (`test_bounce_processing.py`, `test_manifest.py`, `test_documentation.py`) No additional product decision or external credential is required for the generic capability; configuring a real IMAP profile/folder remains deployment work.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#49