Mailfully logo

Received mail is missing

Work out why a message sent to your domain or hosted address never appeared in Mailfully, or appears but cannot be opened.

A message someone sent you is not in the Received list, or it is listed but the API refuses to return its content. Work through the checks in order; the first one that fails is usually the cause.

Check the MX record

Mail reaches Mailfully only when the recipient domain's MX record points at it. Query the exact name the sender used:

dig +short mail.acme.com MX
AnswerWhat it means
10 inbound-smtp.us-east-1.amazonaws.com. onlyCorrect. Move on to the next check.
EmptyThe record is not published, or has not propagated yet. Publish the MX row from the domain's records.
Another provider's hostMail goes to that provider, not Mailfully. Receive on a subdomain instead; see When the domain already receives mail.
BothMail is split between the two. Remove one.

Look up the name after the @ exactly. Receiving on mail.acme.com does not cover support@acme.com or support@eu.mail.acme.com; each name needs its own domain and MX record.

Check that receiving is on

The MX record alone is not enough. Fetch the domain and read receiving:

curl https://api.mailfully.com/v1/domains/dom_01J1PZ3M8Q7VXCK4T2R9WFH6BD \
  -H "Authorization: Bearer mf_live_xxxxxxxxxxxx"

When receiving is false but the MX record still points at Mailfully, incoming mail is accepted and then dropped. It is not stored, and the sender gets no bounce, so nothing on either side shows an error. Turn it on with PATCH /v1/domains/{id}.

For the hosted address, check that it is still on in the dashboard's settings. Mail to it while it is off is dropped the same way.

Check the sender's side

If DNS and the toggle are both right, ask the sender for the bounce they received, if any. Two causes show up there:

  • The message was over 40 MB. SES refuses it during the SMTP conversation, so the sender gets a bounce and Mailfully never sees it.
  • The sender typed the address wrong. Receiving is catch-all, so a typo in the local part still arrives; a typo in the domain does not.

Listed, but the content is refused

What you seeCauseFix
quota_locked: true in the list, 403 email_above_quota on detailIt arrived after your organization crossed its monthly ceiling or spend capIt unlocks at the start of the next month, after an upgrade, or after raising the spend cap. See Mail received over the limit.
html, text, and raw are null, and headers is []virus is FAIL, so only metadata was storedNothing to recover; ask the sender to resend a clean copy
403 insufficient_scopeThe key lacks read:inboundCreate a new key with read:inbound; send and read:emails do not grant it
404 not_found for an id you saw beforeThe email passed your plan's retention window and was deletedSave what you need within the window

The webhook never arrived

When the email is in the list but no email.received reached your endpoint, check that the endpoint is subscribed to email.received: endpoints created before receiving existed are not subscribed to it. Then read the endpoint's delivery attempts and dead letters as you would for any other event. See Webhooks.