Postmaster v9.4.0 per-link tracking and clean Sent copies - #9
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Postmaster v9.4.0 per-link click tracking while preserving the existing tracking pixel pipeline.
Link tracking
GET /t/c/<token>tracking_links+tracking_clicksschema in the existing analytics DBdelivery_id + link_id + client_fingerprintSent clean
Pre-v9.4 the individualized
EmailMessagesent via SMTP was also serialized directly into Sent, so tracked Sent copies could contain the recipient pixel. v9.4 builds recipient and Sent MIME variants separately from the same canonical body/attachment inputs:/t/c/<token>links/t/c/<token>, original URLsMCP/dashboard
tracking_statusget_tracking_campaignget_tracking_summarylist_tracking_linkslist_tracking_eventsbuild_status:link_tracking=true,sent_copy_tracking_sanitized=trueTests/docs
Adds v9.4 regression coverage for rewrite exclusions/double-wrap, query/fragment preservation, repeated occurrences, event persistence/enrichment, unique aggregation, invalid-token/open-redirect safety, unchanged pixel behavior, historical Sent behavior, clean Sent MIME, headers/threading, attachment byte identity, no self-open/self-click instrumentation, public-route preflight and version-independent build status.
postmaster-mcp.ymlis intentionally unchanged.MANUAL ACTION REQUIRED
Cloudflare Access must add a public Bypass for:
Keep the existing public callback bypasses for:
Do not expose
/mcp, dashboard/admin/private APIs, mail/task/memory/skill/file-management routes or tracking analytics./files/*is a separate pre-existing v9.3 signed file-handoff concern and is not added to the v9.4 bypass policy.After the stable release,
POSTMASTER_VERSION=latest+POSTMASTER_CHECK_UPDATES_ON_START=truerequires only a stack restart; Cloudflare Access remains an external/manual configuration step.