HomePhabricator

When we fail to process mail, tell the user about it

Description

When we fail to process mail, tell the user about it

Summary:
Ref T4371. Ref T4699. Fixes T3994.

Currently, we're very conservative about sending errors back to users. A concern I had about this was that mistakes could lead to email loops, massive amounts of email spam, etc. Because of this, I was pretty hesitant about replying to email with more email when I wrote this stuff.

However, this was a long time ago. We now have Message-ID deduplication, "X-Phabricator-Sent-This-Mail", generally better mail infrastructure, and rate limiting. Together, these mechanisms should reasonably prevent anything crazy (primarily, infinite email loops) from happening.

Thus:

  • When we hit any processing error after receiving a mail, try to send the author a reply with details about what went wrong. These are limited to 6 per hour per address.
  • Rewrite most of the errors to be more detailed and informative.
  • Rewrite most of the errors in a user-facing voice ("You sent this mail..." instead of "This mail was sent..").
  • Remove the redundant, less sophisticated code which does something similar in Differential.

Test Plan:

  • Using scripts/mail/mail_receiver.php, artificially received a pile of mail.
  • Hit a bunch of different errors.
  • Saw reasonable error mail get sent to me.
  • Saw other reasonable error mail get rate limited.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T3994, T4371, T4699

Differential Revision: https://secure.phabricator.com/D8692

Event Timeline