Bounce and error codes

550 permanent failure means the receiver refused for good

Last updated 2026-08-28

Two different bounces share this code. One is the bare SMTP class, where a server refused a message and the log shows a 550 with a dotted code beside it. The other is a specific sentence, 550 permanent failure for one or more recipients, which comes from a filtering gateway in front of the recipient. Read your dotted code first, because the table below names the fix for each one. The Barracuda sentence has its own section further down.

What it means. A receiving server answered with reply code 550. A 550 permanent failure is final. RFC 5321 calls the whole 5yz class a "Permanent Negative Completion reply". It tells the sending client it "SHOULD NOT repeat the exact request". Your server will not try again on its own.

What to change. Read the words after the 550. They carry the reason. A dotted code such as 5.1.1 or 5.7.26 names the rule that fired. A sentence naming spam or a block means a filter refused you, and that fix differs from the one for a mistyped address.

When it clears. Correct a mistyped address and the next copy lands. A rejection naming SPF or DKIM stops once your records resolve and the mail aligns. A :blocked refusal usually comes from one company's own filter list, and only an admin there lifts it. If your sending IP sits on the public Barracuda Reputation Block List (BRBL), file the removal request. Barracuda says it typically processes one within 12 hours, given a valid explanation.

550 is permanent, 4xx is a delay

RFC 5321 sorts every SMTP reply by its first digit, and that digit says whether you wait or act. A 4yz reply is temporary. The RFC says those replies "can be successful if repeated without any change in command form or in properties of the sender or receiver". The sending server queues the message and retries. A 5yz reply is final. RFC 5321 tells the SMTP client that it "SHOULD not again attempt delivery to the same server without user review of the message and response and appropriate intervention". The copy you sent is gone. Something has to change before the next attempt: the address, your DNS, your sending IP, or the receiver's own rules.

Your own server received the refusal, so the person you wrote to has no copy of it. Their thread shows nothing new, and they have no reason to chase you.

550 is the broadest reply in that class. RFC 5321 defines it as "Requested action not taken: mailbox unavailable (e.g., mailbox not found, no access, or command rejected for policy reasons)". That last clause is why one number covers a typo in an address and a spam block on your whole domain. Email bounced back walks the full triage for any bounce, including the 4xx side.

Dotted codes name the rule that fired

Most receivers print a second, dotted code beside the 550. The 550 names the class, and the dotted code names the rule that fired. Copy the whole reply out of the bounce before you close the notice. The dotted code decides which of the fixes below is yours.

After the 550 What the receiver decided Where to go
5.1.1 The mailbox does not exist. RFC 3463 calls it "Bad destination mailbox address". Email bounced back
5.7.1 with DMARC in the text Your own published policy told the receiver to refuse the message. 550 5.7.1 rejected per DMARC policy
5.7.23 SPF validation failed. Microsoft words it as a Sender Policy Framework violation. 550 5.7.23
5.7.26 More than one authentication check failed. Gmail prints it as 550-5.7.26. 550-5.7.26
5.7.509 Microsoft evaluated DMARC, and the message did not pass. 550 5.7.509
5.7.515 The From domain misses Microsoft's bulk-sender requirements. 550 5.7.515
No dotted code, and the text names a block A filter refused you on reputation or content. Message blocked if you sent from Gmail, and the sections below either way

Only the 5.7.x codes clear from your own DNS. The others need a person: the sender who typed the address, or an admin at the company that refused you.

The 5.7.2x codes come from RFC 7372. It registered a code for each failure: 5.7.20 through 5.7.22 for DKIM, 5.7.23 and 5.7.24 for SPF, 5.7.25 for reverse DNS, and 5.7.26 when more than one check failed. Every code in that family points at your DNS and your sending platform, so the recipient's admin cannot clear one for you.

550 permanent failure for one or more recipients comes from a filter

If your bounce reads like this, you are in the second group:

smtp;550 permanent failure for one or more recipients (email@example.com:blocked)

Your own mail system wrote the smtp; prefix when it built the notice. It is the diagnostic-type of the Diagnostic-Code field that RFC 3464 defines. The reply starts at the 550. Inside the brackets sit the two things worth reading: which recipient was refused, and the single word that says why.

Postmark's SMTP Field Manual files this exact string under Barracuda, and describes it as a message "being blocked for content or domain related reasons". I went looking for that sentence in Barracuda's own docs and could not find it. The article the Field Manual cites now returns a 404. Those docs do not confirm the wording, so act on the word after the colon.

Barracuda's blocked wording points at one customer's own list

Barracuda's knowledgebase told senders what those reason words mean. The live page 404s now, and the archived page on blocked senders still reads:

Both Blocked replies point at one list, the customizable blocklist inside the appliance of the company you were writing to. An admin there added your address, your domain or your IP to it, and nobody outside that company can take it off.

The same appliance answers a global listing with a different code. Its SMTP Error Codes table puts Barracuda Reputation on a 554, not a 550:

554 Service unavailable; client host [IP or hostname] blocked using Barracuda Reputation; http://www.barracudanetworks.com/reputation/

The same table lists a second 554 for public lists: "Service unavailable; client host blocked. The final sending domain or IP address may be on a Real Time Blocklist (RBL)."

Check whether your IP is on the BRBL

The BRBL is public, and anyone can query it. Open Barracuda Central's lookup and enter the public IP of the server that sent the mail. Do not use your office IP, and do not use the domain. Read the IP out of the Received: header of a message you sent.

You can also ask DNS directly. The list answers on b.barracudacentral.org, with the IP reversed octet by octet in front of it. The zone has a test address that is always listed:

dig +short 2.0.0.127.b.barracudacentral.org 127.0.0.2

I ran that on 2026-08-20 and got 127.0.0.2 back. Then I ran the same query for an address nobody has listed:

dig +short 8.8.8.8.b.barracudacentral.org

That returned an empty answer, with an NXDOMAIN status. An empty answer means the IP is not listed. The BRBL setup instructions ask an operator to request access before filtering incoming mail with the list. Both queries above ran from a normal resolver and still answered. Check an empty answer against the web lookup before you rule a listing out.

Request removal, then fix what caused it

The removal request form has 6 fields. Its own instructions name 4 of them: your email server's IP address, your email address, a phone number, and an optional reason for removal. The form marks Reason for Removal optional. Fill it in anyway. The page says a request with a valid explanation is typically "investigated and processed within 12 hours of submission".

The same page says the list "is generated by automated systems", so "requests without valid information will be ignored". It also says "multiple requests will also be ignored", so filing the form again on Tuesday gets both requests ignored.

Write the reason as an incident report: what caused the spam, what you changed, and the date you changed it. Barracuda publishes the causes it sees, and it names 8:

The archived listing methodology adds one that catches small offices out. A single infected machine sending spam through a NAT gateway "can result in blocked email from the whole LAN". The same page tells anyone running several computers behind such a gateway to block outgoing port 25 traffic from every machine that is not a mail server. Do that before you file the form.

DNS records do not clear a listing

A listing is a judgement about an IP address, and your SPF, DKIM and DMARC records describe one message at a time. A perfect set of records does not take your IP off the BRBL, and a delisted IP still fails DMARC when nothing aligns.

You do both. The 5.7.x rows in the table above are the DNS half. The block rows need the removal request, plus the change in behaviour behind it. Fix the DNS, resend into the same listing, and the refusal comes back, so file the removal request the same day. A 550 is permanent, so a resend returns the same refusal and spends more of the reputation you are repairing.

A clean BRBL lookup means the block is local

The :blocked suffix then names one company's own appliance, and the admin who runs it is the only person who can clear you.

Collect the addresses that bounced from your last send and read their domains. If they all end in the same domain, one company is refusing you and everyone else is taking your mail. Reach your contact there by phone or from a different address. Ask them to send their mail admin the exact bounce text, the sending IP and the timestamp. Their admin can search the Message Log for it. When that log gives Score as the reason, Barracuda's troubleshooting page for Email Gateway Defense tells the admin what to do. They select the message and click Report as Incorrectly Blocked, which sends it to Barracuda for review.

If the bounces span several unrelated domains, every one of those receivers is judging the same sending IP or the same domain. Go back to the lookup, and check Spamhaus as well.

Free lookups for the listing and the records

Nothing here needs an account.

Start with the dotted code, then the lookup

Find the dotted code. If there is one, it names your fix and the table above names the page. If there is no dotted code and the bounce carries a :blocked suffix, run the BRBL lookup before you touch a DNS record. That answer tells you which of the two you have: your own reputation, or one company's local list. This 550 is a verdict on one message to one receiver on one day.

DomainCanary is our product, and this paragraph sells it. Pro costs $19 a month for 5 domains, and it writes to you as soon as a report shows a failing source with no history on your domain. A source already in your history raises no second alert, so a familiar sender that starts failing waits for the weekly digest. Receivers already count the messages from every IP using your domain and mark which of them aligned. That summary goes to whatever address your rua= tag names, and we parse it into one email a week across the 5 domains that share an address. Those reports carry counts and verdicts, and the refusal on your screen never reaches us. Receivers do not report a blocklist listing either, which is why the lookup above stays its own job. Your first domain is free, and the alert on a source we have never seen comes with Pro.

Hear about the next failing sender first

This rejection named one sender, and the next one to break sends no warning ahead of it. On a paid plan the first failing report from a new source reaches you as an email that day, rather than in Monday's digest. Pro watches 5 domains for $19 a month.

Get the alerts and the digest

No card · 12+ months of history · The free plan does not expire

Questions

What does 550 permanent failure mean?

It means a receiving mail server refused your message and will not accept the same message again. RFC 5321 puts every reply code starting with 5 in the permanent class and tells the sending server not to repeat the request. The message is gone and has to be resent after something changes. What that something is depends on the text after the 550. That text is either a dotted code such as 5.1.1 or 5.7.26, or a sentence naming a block.

Is a 550 permanent failure really permanent?

The refusal of that one message is permanent, but the condition behind it usually is not. A mistyped address works once you correct it. A rejection that names a failed check stops once your records are right. A block on your sending IP stops once the list that holds it processes a removal request. A 550 says the receiver refused this message and will refuse an identical retry. It says nothing about your next message.

What does blocked mean at the end of 550 permanent failure for one or more recipients?

It means a filter refused the message on reputation or content, and the address was fine. Barracuda's knowledgebase explains the word blocked: an admin added your address, your domain or your IP to that customer's own list. That list sits inside the recipient's appliance. Barracuda's public reputation list is at barracudacentral.org, so check that first. If your sending IP is absent from it, the block is local to that one company, and only their admin can lift it.

Will fixing SPF, DKIM and DMARC clear a 550 permanent failure?

Only for the 5.7.x family, such as 5.7.23, 5.7.26, 5.7.509 and 5.7.515. Those codes exist because a check on your DNS failed, so correct records plus alignment clear them. They do nothing for a blocklist listing, which is a judgement about the IP address you send from. That one needs a removal request and a fix to whatever caused the spam.