phacility/phabricator · warning · PhabricatorMetaMTAReceivedMailProcessingException
err:unknown-sender
err:unknown-sender
Error message
This email was sent from an email address ("%s") that is not associated with a registered user account. To interact via email, add this address to your account. What it means
Thrown from PhabricatorMetaMTAReceivedMail when no application accepted the mail and the From address cannot be resolved to any Phabricator account (the $sender lookup produced null). Phabricator only processes inbound mail from known, registered users; the status STATUS_UNKNOWN_SENDER is recorded and (per the T12237 note) the mail is effectively dropped rather than bounced to an unverified external address.
Source
Thrown at src/applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php:262
// However, if the recipient list included a reserved recipient, we
// don't bounce the mail with an error.
// The intent here is that if a user does a "Reply All" and includes
// "From: noreply@phabricator" in the receipient list, we just want
// to drop the mail rather than send them an unhelpful bounce message.
throw new PhabricatorMetaMTAReceivedMailProcessingException(
MetaMTAReceivedMailStatus::STATUS_RESERVED,
pht(
'No application handled this mail. This mail was sent to a '.
'reserved recipient ("%s") so bounces are suppressed.',
(string)$reserved_recipient));
} else if (!$sender) {
// NOTE: Currently, we'll always drop this mail (since it's headed to
// an unverified recipient). See T12237. These details are still
// useful because they'll appear in the mail logs and Mail web UI.
throw new PhabricatorMetaMTAReceivedMailProcessingException(
MetaMTAReceivedMailStatus::STATUS_UNKNOWN_SENDER,
pht(
'This email was sent from an email address ("%s") that is not '.
'associated with a registered user account. To interact via '.
'email, add this address to your account.',
(string)$this->newFromAddress()));
} else {
throw new PhabricatorMetaMTAReceivedMailProcessingException(
MetaMTAReceivedMailStatus::STATUS_NO_RECEIVERS,
pht(
'This mail can not be processed because no application '.
'knows how to handle it. Check that the address you sent it to '.
'is correct.'));
}
}
} catch (PhabricatorMetaMTAReceivedMailProcessingException $ex) {
switch ($ex->getStatusCode()) {
case MetaMTAReceivedMailStatus::STATUS_DUPLICATE:View on GitHub (pinned to 5720a38cfe)
Solutions
- Add and verify the sending address to your Phabricator account (Settings > Email Addresses), then resend the mail.
- If you intended to act as another user, send from that user's registered address instead — Phabricator will not impersonate.
- Admins: check MetaMTA > Received Mail for the STATUS_UNKNOWN_SENDER row to confirm which From address failed, then guide that user.
- For automation, create a real (bot) account with its own verified address and send from that.
Example fix
// before: From: personal-mailbox@example.com (not on any account) // -> sender lookup null -> err:unknown-sender // after: verify the address on the account, then: // From: dev@example.com (verified on account 'alincoln') -> sender resolves
Defensive patterns
Strategy: validation
Validate before calling
// Pre-flight the From address against registered, verified account emails:
$email = id(new PhabricatorUserEmail())->loadOneWhere(
'address = %s AND isVerified = 1 AND status = %s',
$from_address,
PhabricatorUserEmail::STATUS_VERIFIED);
if (!$email) {
// unknown sender: add/verify this address on an account before sending
} Prevention
- Register and verify every mailbox you will reply from under Settings > Email Addresses before relying on email workflows.
- Give automation its own bot account with a dedicated verified address.
- Monitor STATUS_UNKNOWN_SENDER in received-mail logs to catch drift when users change mailboxes.
When it happens
Trigger: executeSend finishes receiver processing with $any_accepted false; the earlier sender determination (matching newFromAddress() against PhabricatorUserEmail records) found no user, so $sender is null. Concrete: mailing from an address that is not attached to any account, attached but unverified/disabled secondary email, or a typo'd From.
Common situations: Developer replies from a personal mailbox that is not their account email; user changed jobs/mailboxes and the new address was never added; address exists on the account but never verified; third-party systems (Jira, form mailers) sending to a Phabricator application address.
Related errors
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/894658a79fba9f24.
Report an issue: GitHub.