@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add some delivery diagnostic headers to outbound mail

Summary:
Fixes T13087. Ref T13090. An install ran into a situation where mail was being double-delivered, and it wasn't immediately clear where in the pipeline the issue lay.

This change adds some headers which should rule out (or, at least, render very unlikely) some possible causes if we encounter similar issues in the future.

The `X-Phabricator-Mail-ID` header stores the ID of the `MetaMTAMail` storage object so we can distinguish between two messages sent to two different targets and one message which may have been split or re-sent. It also makes it easier to know what to `bin/mail show-outbound --id <id>` and where to find the message in the web UI for additional information.

The `X-Phabricator-Send-Attempt` is a unique value per attempt. If two mail messages are delivered with the same attempt value, the split is probably downstream from Phabricator. If they have different attempt values, the split is probably in Phabricator.

(In this case, the split was somewhere downstream from us, since sending mail with `/usr/bin/mail` also resulted in duplicates.)

Test Plan: Send some mail, inspected it with `bin/mail show-outbound --id <id>`, saw new headers with sensible/expected values.

Maniphest Tasks: T13090, T13087

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

+7
+7
src/applications/metamta/storage/PhabricatorMetaMTAMail.php
··· 1302 1302 $headers[] = array('Thread-Topic', $related_phid); 1303 1303 } 1304 1304 1305 + $headers[] = array('X-Phabricator-Mail-ID', $this->getID()); 1306 + 1307 + $unique = Filesystem::readRandomCharacters(16); 1308 + $headers[] = array('X-Phabricator-Send-Attempt', $unique); 1309 + 1305 1310 return $headers; 1306 1311 } 1307 1312 ··· 1356 1361 1357 1362 'X-Phabricator-Sent-This-Message', 1358 1363 'X-Phabricator-Must-Encrypt', 1364 + 'X-Phabricator-Mail-ID', 1365 + 'X-Phabricator-Send-Attempt', 1359 1366 ); 1360 1367 1361 1368 // NOTE: The major header we want to drop is "X-Phabricator-Mail-Tags".