Skip to content

Improvements to our bounce emails #649

@jfly

Description

@jfly

We've experienced 2 problems with our bounce emails.

  1. They leak mailing list members's "final" email addresses.
  2. They confuse senders, who think that their email didn't get sent to anyone.

I'm not sure #2 is really solvable. I suspect that postfix's architecture involves enqueuing these forwards as completely isolated tasks that can independently fail and generate bound messages (I'd be happy to be told I'm wrong about this, though). One option would be to turn of bounces entirely, but I beleive that's even worse UX for senders.

Some detail on how emails get leaked

We've put some effort into hiding our mailing list member's email addresses by encrypting them (example).

However, if umbriel.nixos.org (our mailserver) fails to forward an email, we send a bounce back to the sender, and that leaks the bounced email addresses to the original sender. These emails look like this (sensitive and irrelevant information redacted):

<[OUR MAILING LIST MEMBER'S FINAL ADDRESS]> (expanded from <[LIST]@nixos.org>): host
[OUR MAILING LIST MEMBER'S MAILSERVER][OUR MAILING LIST MEMBER'S MAILSERVER IP] said: 550 Unauthenticated mail not allowed
from this range (in reply to RCPT TO command)

Reporting-MTA: dns; umbriel.nixos.org
X-Postfix-Queue-ID: [REDACTED]
X-Postfix-Sender: [REDACTED]
Arrival-Date: [REDACTED]

Final-Recipient: [OUR MAILING LIST MEMBER'S FINAL ADDRESS]
Original-Recipient: rfc822;[LIST]@nixos.org
Action: failed
Status: 5.0.0
Remote-MTA: dns; [OUR MAILING LIST MEMBER'S MAILSERVER]
Diagnostic-Code: smtp; 550 Unauthenticated mail not allowed from this range

What to do?

These bounces must be getting generated and sent by postfix. We should be able to configure postfix to still send a bounce, but with a different template that does not include the mailing list member's final email address. It's important that whatever we do does still include that X-Postfix-Queue-ID so we can debug reports from users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions