all guides

// 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_limit is 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

  1. 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).
  2. 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 like 250-SIZE 36700160 (in bytes).
  3. Check your own Postfix settings:
    postconf message_size_limit mailbox_size_limit
    And the size of the rejected message in the log (size=).
  4. 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