Enhanced status code

4.4.7: the message expired before it could be delivered

4.4.7 is the code for giving up. The sending server tried to deliver a message, kept getting temporary failures, and stopped when the message got too old. The bounce you get is the end of the story; the cause is whatever made every attempt fail.

Updated October 10, 2026 · 5 min read

Enhanced code
4.4.7 Delivery time expired (RFC 3463)
Typical form
550 4.4.7 QUEUE.Expired (Microsoft 365)
Bounce type
Soft bounce that ran out of retries
Resend?
Yes, once the receiving server works again

Verification catches some cases

If the recipient’s domain has no MX record, a verification reports the address as undeliverable (invalid_mx), and if its mail server doesn’t answer, the result is unknown (no_connect). An outage that starts after your check still ends in 4.4.7.

4.4.7: Exchange Online retried a message for 24 hours, then returned the NDR 550 4.4.7 QUEUE.Expired

What 4.4.7 means

4.4.7 is an enhanced status code from RFC 3463, named “Delivery time expired”: “The message was considered too old by the rejecting system, either because it remained on that host too long or because the time-to-live value specified by the sender of the message was exceeded.”

In practice, the “rejecting system” is usually your own mail server or your email service. It accepted your message, tried to hand it to the recipient’s server, got temporary errors (or no connection at all), and kept retrying. RFC 5321 asks senders to retry for a while: “the give-up time generally needs to be at least 4-5 days.” Each system sets its own limit. When the message reaches it, the server stops and sends you a bounce with 4.4.7.

The 4 in front says the problem was temporary all along. That’s why the code says so little. RFC 3463 itself recommends something more specific: “If possible, the code for the actual problem found when delivery was attempted should be returned rather than this code.” The real reason is in the last error your server received, so look for it.

Error 4.4.7 in Microsoft 365 bounces

Exchange Online is where most people meet 4.4.7. Microsoft’s article on the error shows this line in the NDR’s diagnostic section:

#550 4.4.7 QUEUE.Expired; message expired ##

The mix of a 5 and a 4 looks odd, but it’s consistent: 550 is the final verdict, the message won’t be delivered, and 4.4.7 records that every attempt failed for a temporary reason. Microsoft says Exchange Online “repeatedly tries to deliver the message over 24 hours. Only after 24 hours of unsuccessful delivery attempts does a recipient receive this NDR.”

Microsoft’s NDR reference lists the same code as Message expired and adds that it “can also indicate that a message header limit was reached on a remote server, or some other protocol timeout occurred”. Two lines in the NDR help narrow it down:

ClueAlso in the NDRWhat it points to
Last error450 4.7.0 Proxy session setup failed on Frontend with '451 4.4.0 Primary target IP address responded with …'The last error from the recipient’s server. Microsoft says to note “the error that follows this string and the last end point attempted.”
DirectoryAmbiguousRecipientTransientExceptionNot a network problem: two objects in the directory share the same address, for example a mailbox and a mail contact

What causes a 4.4.7 error

Microsoft lists these causes on the receiving side:

On the sending side, Microsoft names an SPF record that misses some of your sending sources, a sending domain that expired at the registrar, and, in hybrid setups, on-premises IP or firewall changes that need the Hybrid Configuration Wizard to run again.

How to fix 4.4.7 as the sender

  1. Check whether only one domain is affected. If all your 4.4.7 bounces go to one recipient domain, the problem is almost certainly there.
  2. Look up the recipient domain’s MX records with the MX lookup. No MX record, or one pointing to a host that doesn’t exist, explains the bounce. The MX record guide shows what a working setup looks like.
  3. Find the last error. In the NDR, or in your email service’s log, look for the temporary error before the expiry. It tells you whether the server was down, refused your IP, or timed out.
  4. Tell the recipient another way, with the server name, the error and a copy of the NDR, so their admin can fix it.
  5. Send the message again once the cause is fixed. Microsoft: “If you send the message again, the message is placed in the queue again. If the receiving server is available, the message is delivered.”
  6. If the last error mentions a header limit, send to fewer recipients per message.

If you’re the admin of the sending side, check your SPF record with the SPF checker and confirm with your registrar that your domain hasn’t expired.

If you run the receiving domain

Your users don’t get mail from that sender, and the sender only learns about it a day or more later. Microsoft recommends that recipient-side admins stop blocking messages from Exchange Online, or allow the sender’s domain, and check that MX and other DNS records are correct. Its Remote Connectivity Analyzer has an Outbound SMTP Email test for exactly that. Temporary refusals such as SMTP error 421 and SMTP error 451 are what senders’ servers retry; when every retry fails, they end as 4.4.7.

Would email verification have prevented it?

Partly. An email verification looks up the recipient domain’s MX records and talks to its mail server before you send. A domain without working MX records comes back as undeliverable (reason invalid_mx), and a server that doesn’t answer comes back as unknown (no_connect), so you see the problem before your message sits in a queue for a day. What it can’t predict is an outage that starts after the check. To check a single address, use is this a real email address; to check addresses inside your own software, use the email validation API. The list of SMTP error codes has the other temporary failures, and hard vs. soft bounces explains how your email tool counts this one.

Stop bounces before they happen

Most hard bounces come from addresses that don’t exist. Email verification asks the receiving server about the mailbox without sending anything, so you can remove bad addresses before your next send.

Frequently asked questions

What does error 4.4.7 mean?

The message expired in the sending server’s queue. Every delivery attempt failed with a temporary error, and the server stopped trying when the message reached its maximum age. RFC 3463 calls it “Delivery time expired”.

Why do Microsoft 365 bounces say 550 4.4.7?

The NDR reads “550 4.4.7 QUEUE.Expired; message expired”. Microsoft says Exchange Online “repeatedly tries to deliver the message over 24 hours” and only then sends the NDR. The 550 marks the final failure; 4.4.7 says the attempts failed temporarily.

How do I fix a 4.4.7 error?

Find out why the recipient’s server didn’t accept the message: check its MX records, whether it answers at all, and whether it blocks your server. Once the cause is fixed, send the message again; it goes back into the queue and is delivered if the server is available.

Is 4.4.7 my fault or the recipient’s?

Usually the recipient’s side: a server that is down, unreachable, misconfigured or refusing your connection. Microsoft also lists sender-side causes such as an incomplete SPF record or an expired sending domain.

Related codes and guides

Email validation API

Validate emails in your app

emailvalidation.io checks syntax, MX records and the mailbox over SMTP, flags disposable, role and free addresses and returns a quality score, in one request.

/v1/info Email validation API Read the documentation

100 free validations every month. No credit card required.

GET https://api.emailvalidation.io/v1/info?email=support@emailvalidation.io

{
  "email": "support@emailvalidation.io",
  "user": "support",
  "tag": "",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "catch_all": null,
  "role": true,
  "disposable": false,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "valid_mailbox",
  "did_you_mean": ""
}

Start using our email validation software today!

Get 100 validations per month for free