Appearance
Email deliverability
PackEdge sends transactional email through Amazon SES. When AWS reports that a message bounced or was marked as spam, the recipient's profile is flagged and future sends to that address are silently blocked. This keeps a single bad address from torching the sending domain's reputation for everyone else.
States
profiles.email_status carries one of three values:
| Value | Meaning |
|---|---|
ok | Default. Sends proceed normally. |
bounced | A permanent bounce was reported (mailbox doesn't exist, domain refuses, address blocklisted). Hard-blocked. |
complained | The recipient hit "report spam" in their mail client. Hard-blocked. |
Soft bounces (mailbox full, greylisting, transient DNS) are logged but do not flip the flag — that would punish the recipient for their provider's transient state.
What you see in the console
The system admin user list shows a small badge next to any non-ok address. Your own profile shows a banner with the diagnostic AWS provided, so you can update + reverify your email before the next license alert or receipt is silently dropped.
How it works
- Each
SendEmailcall captures the SESMessageIdand stashes amessageId → recipientmapping in Redis with a 30-day TTL. - SES delivers bounce + complaint notifications to an SNS topic which posts to
POST /webhooks/ses. - The handler verifies the SNS signature against the AWS-published certificate (RSA-SHA1 against
*.amazonaws.comcert hosts), then parses the embedded SES envelope. - The original recipient is looked up via the Redis map; the
profiles.email_statusrow is updated. - The next
email.Client.Sendcall to that address pre-checks the status and returns early without invoking SES.
Operator setup
The AWS side of the wiring is out of band:
- Create an SNS topic, configure SES to publish bounce + complaint notifications to it.
- Add an HTTPS subscriber for
https://api.packedge.dev/webhooks/ses. PackEdge handles theSubscriptionConfirmationautomatically — no manual confirm step needed. - Keep the cert URL set to the SNS default (a
*.amazonaws.comhost). PackEdge rejects any cert URL outside that hostname suffix.
Recovering a blocked address
The block is per-address, not per-account. To restore delivery, change the profile's email to a working address through Settings → Profile. The new address starts in ok state and receives mail immediately. There's no need to delete + recreate the account.
