// how to fix
Bounce "552 Message size exceeds fixed limit" (Postfix, Gmail, Exchange)
Email rejected with 552 5.3.4 or 5.2.3 because it is too big? Learn the real size limits, why attachments grow, and how to send or raise them.
What it means
A server refused your email because it is larger than the maximum size it accepts. Each server in the path has its own limit: yours, your provider's, and the recipient's. The text differs by system:
552 5.3.4 Message size exceeds fixed limit
This is Postfix's wording. Gmail's bounce usually starts with 552 and says your message "exceeded Google's message size limits" (with status 5.2.3 or 5.3.4 depending on the case). Microsoft 365 returns an NDR such as:
550 5.2.3 RESOLVER.RST.SendSizeLimit.Sender; message too large for this sender
with variants SendSizeLimit.Org and RecipSizeLimit (too large for the recipient). Do not confuse this with 552 5.2.2 mailbox full, where the size of the message is fine but the recipient has no space left.
Why it happens
- Attachments grow when sent. Files are encoded in Base64, which adds about 33%. A 20 MB file becomes about 27 MB on the wire, which is over a 25 MB limit.
- Common limits (they can change, check current docs): Gmail accepts attachments up to 25 MB; Postfix's default
message_size_limitis 10,240,000 bytes (about 10 MB); Exchange Online mailboxes default to about 35 MB for sending and 36 MB for receiving, and admins can raise this up to 150 MB. - The smallest limit wins. If your server accepts 50 MB but the recipient accepts 20 MB, the recipient rejects it.
- Many recipients or inline images can add to the size, as can a forwarded thread with all old attachments.
How to check
- Read the bounce. The server named in the bounce tells you whose limit you hit: yours (fix it yourself) or the recipient's (you cannot change it).
- See the size a server announces. Many servers advertise their limit in reply to
EHLO:swaks --to user@example.com --server mx.example.com --quit-after EHLO
Look for a line like250-SIZE 36700160(in bytes). - Check your own Postfix settings:
postconf message_size_limit mailbox_size_limit
And the size of the rejected message in the log (size=). - On Microsoft 365, in Exchange Online PowerShell:
Get-Mailbox user@yourdomain.com | Format-List MaxSendSize,MaxReceiveSize Get-TransportConfig | Format-List MaxSendSize,MaxReceiveSize
To test a normal-sized message from the same tool, send it to the unique address on the Delivmail home page: the report confirms the rest (authentication, spam score) is fine.
How to fix it
Send less data
- Share large files with a link (Google Drive, OneDrive, Dropbox or similar) instead of attaching them.
- Compress or resize images and PDFs before attaching.
- Split the files across several emails.
- Remove old attachments from forwarded threads.
Links are also safer for deliverability: some file types are blocked no matter their size (see attachments blocked or flagged).
Raise your own limit (if your server rejected it)
Postfix, for 50 MB:
postconf -e "message_size_limit = 52428800" systemctl reload postfix
mailbox_size_limit must not be smaller than message_size_limit (set it to 0 for no mailbox limit if your storage is handled elsewhere). Remember any content filter or relay in front may have its own limit.
Microsoft 365, per mailbox:
Set-Mailbox user@yourdomain.com -MaxSendSize 50MB -MaxReceiveSize 50MB
Transport rules or connectors can also set lower limits; check them if the mailbox values look right.
If the recipient's server rejected it
You cannot change their limit. Send a link, or ask the recipient to have their administrator raise it.
Check that it is fixed
Send a smaller version (or the link) to the address that bounced and confirm there is no new bounce. If you raised your own limit, send a test file just under the new size to an internal address and check the log shows status=sent. Run a new Delivmail test to make sure nothing else in the message causes problems.
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
- Gmail bounce "550 5.7.26": unauthenticated emailGmail refused your email because it could not confirm it comes from your domain. SPF, DKIM or DMARC is missing or failing. Here is how to fix it.
- Bounce "550 5.7.1": message rejected or blocked by policyA 5.7.1 bounce means the receiving server refused your email on purpose. Learn to read bounce messages, find the real reason and fix it.
- Links that hurt deliverabilityURL shorteners, link text that shows one address but points to another, and links to blacklisted domains are classic spam signs. Use plain links to your own domain.
- Image-only emails and missing plain-text versionAn email that is one big image, or that has no plain-text version, looks like spam to filters. Use real text, a few images, and send both HTML and plain text.
- Attachments blocked or flagged as dangerousSome file types are refused outright, large files bounce, and unexpected attachments raise spam scores. Send safe formats, keep them small, or share a link instead.