all guides

// how to fix

"4.4.7 Message expired" and "Delivery Status Notification (Delay)" ("451 4.4.0 DNS query failed"): causes and fixes

Your server tried to deliver for hours or days, then gave up. Why emails get delayed and expire, and how to find and fix the cause.

What it means

When an email cannot be delivered right away, the sending server keeps it in a queue and tries again regularly. While it waits, you may receive a warning titled "Delivery Status Notification (Delay)" or "Delivery delayed". If the problem lasts too long, the server gives up and sends a final bounce. This retry period is typically between one and five days, depending on the server. The messages usually look like these:

Delivery to the following recipient has been delayed: user@example.com
Status: 4.4.7

550 4.4.7 QUEUE.Expired; message expired

451 4.4.0 DNS query failed

The code 4.4.7 means "delivery time expired". It is not the real cause. The real reason is the last error the server saw while retrying. Look for it in the bounce: it is often written under "Diagnostic code", "Remote server returned" or "Last error".

Why it happens

  • The recipient's mail server is down or unreachable, so every attempt fails.
  • DNS problems. The recipient domain has no MX record, its name servers do not answer, or your own server's DNS resolver is broken. 451 4.4.0 DNS query failed (a Microsoft 365 / Exchange wording) points here.
  • Outgoing port 25 is blocked on your network. Many internet, cloud and VPS providers block it by default, so your server cannot connect to anyone.
  • Greylisting never passed. Some servers refuse the first attempt on purpose and accept a later one. If your server does not retry correctly, or retries from a different IP each time, it never gets through.
  • Throttling. The receiver accepts only a few emails at a time from your IP (common with big providers when your reputation is low or volume suddenly rises), and answers with temporary 421 or 451 codes.
  • A temporary block, for example a reputation deferral, that turned into a timeout.

How to check

  1. Read the last error in the bounce. A timeout points to the network or a firewall, a DNS error to DNS, a 421 to throttling or reputation.
  2. Scan the recipient domain at /domain-scanner. If it shows no MX record, the problem is on their side.
  3. Test your own sending. Send an email to the unique address on the home page (/). If it does not arrive, your server probably cannot send out at all (port 25 blocked, DNS broken). If it arrives, the report shows your IP, reverse DNS, blacklists and authentication, which can explain throttling.
  4. Check blocklists for your IP at /blacklists.
  5. On your own server, look at the queue and logs (in Postfix, mailq and the mail log) for the exact error of each attempt.

How to fix it

  1. Recipient server or DNS down: nothing to fix on your side. Tell the recipient by another channel and resend later.
  2. Your DNS resolver: make sure your server can resolve names (test with dig MX example.com). Use a reliable local resolver.
  3. Port 25 blocked: ask your provider to open it, or send through a relay (smarthost) on port 587 with login.
  4. Greylisting: keep the default retry settings of your mail server. Send from one stable IP, not a pool that changes on every attempt.
  5. Throttling or reputation: send more slowly, spread large campaigns over time, authenticate with SPF, DKIM and DMARC, set a correct reverse DNS, and clean any blocklist listing.
  6. Resend the expired emails once the cause is fixed. Expired emails are not retried automatically.

Check that it is fixed

Send a new Delivmail test: it should arrive quickly and show a clean report. Check that your server's queue is emptying. Then resend the email to the address that expired and watch your logs for a 250 answer from the recipient server. If throttling was the cause, it can take a few days of steady, clean sending before deliveries are fast again.

Check that it is fixed

DNS changes can take from a few minutes to a few hours. Then send a new test email or scan your domain again.

Related guides