Configuring maxmessagesize

Configuring maxmessagesize

   KB 1876        Last updated on 2019-04-21  




0.00
(0 votes)

The following explains how to observe and adjust the Maximum Message Size for messages passing through the Zimbra MTA (Postfix). The message_size_limit postconf parameter is configured globally for all Zimbra MTAs. The default Zimbra MTA configuration uses the default Postfix message_size_limit of 10MB (i.e. '10240000' bytes). Note that this is the size of the full RFC 2822 internet message, after any necessary MIME-encoding.

An Initial Warning On These Values

Please do not set these limits too high, as postfix will check to confirm you have the free space on the partition. For zimbraMtaMaxMessageSize, it multiplies the variable by 1.5 and if the free space isn't available on the partition it will not send ANY messages - effectively causing an mta outage. You'll see a message in /var/log/zimbra.log like this if you set zimbraMtaMaxMessageSize to high :

Jan 15 11:18:53 SERVERNAME postfix/smtpd[29088]: NOQUEUE: reject: MAIL from smtp.DOMAIN.com[70.43.218.70]: 
  452 4.3.1 Insufficient system storage; proto=ESMTP helo=<mail.DOMAIN.com>
Jan 15 11:18:53 SERVERNAME postfix/smtpd[29088]: warning: not enough free space in mail queue: 
  161044520960 bytes < 1.5*message size limit

General Discussion About Value Sizing

This is being added because we find many customers are confused by the variable sizing and then what users see as the limitation when they go to upload an attachment. This wiki mentions the various variables involved with message sizing. The important part to pay attention to is:

  • "Note that this is the size of the full RFC 2822 internet message, after any necessary MIME-encoding."

There is no predictable % increase of the message size after the encoding. We recommend a 150% assumption if one doesn't want to be tweaking the variables often. Meaning, if your policy it to not allow the sending of messages/attachments much larger than 25 MB's BEFORE encoding, then use 38MB's for the variable numbers that you would configure per the steps below. Normally, the encoding never reaches this level.

To upload a 15957664 byte file [15.218414307 megabyte] you would need to have the upload limit at least set to 20.849226952 [megabytes]. That's using %137 increase for mime-encoding. See this article for details on it:

You can use this calculator to help manage the variable you want:

Note - again, we recommend use %150 conversion rate for the encoding so you can be sure of the upload rather than cutting it close. The %137 reference isn't a fixed number but rather a possible average.

Postfix configuration (zimbraMtaMaxMessageSize and message_size_limit)

You can examine the current value of this parameter like this:

# su - zimbra
$ postconf message_size_limit
message_size_limit = 10240000

This configuration parameter is stored in the zimbra ldap directory, and propagated to postconf's message_size_limit by zmmtaconfig, which is invoked by the zimbra postfix command. The following commands will set the message_size_limit to 2MB (adjust this value to suit your needs):

# su - zimbra
$ zmprov modifyConfig zimbraMtaMaxMessageSize 2048000
$ postfix reload

You can then confirm the changes with this command:

$ postconf message_size_limit

IMAP

Please note: zimbraMtaMaxMessageSize also applies to IMAP APPENDs. The IMAP server will set the largest allowed message size to the zimbraMtaMaxMessageSize value. This would apply to the APPEND operation, which would include actions such as copying a message in an IMAP client.

File upload size configuration (zimbraFileUploadMaxSize)

Until ZCS 5, there is a separate configuration parameter for file uploads . File uploads include, for example, attachments to messages (appointments, tasks, etc), and messages imported by the migration tools (PST Import Wizard, Exchange Migration Wizard, etc). The zimbraFileUploadMaxSize can be configured globally or per server. Note: If you have more than one mailbox node, it may be necessary to restart tomcat on nodes where the commands were not run in order to pick up the changes immediately.

This will globally set the size to 5mb:

# su - zimbra
$ zmprov modifyConfig zimbraFileUploadMaxSize 5000000

Then this will allow 20mb uploads to the server mail2.domain.com:

$ zmprov modifyServer mail2.domain.com zimbraFileUploadMaxSize 20000000

If change does not happen after a short period of time or flushing the cache, you most likely will need to do a full zmcontrol restart on the mailstores. See:

The size of the zimbraMailContentMaxSize controls the overall message size

su - zimbra
zmprov ms `zmhostname` zimbraMailContentMaxSize 20000000  
zmprov modifyConfig zimbraMailContentMaxSize 20000000
<attr id="807" name="zimbraMailContentMaxSize" type="long" cardinality="single" optionalIn="globalConfig,server" flags="serverInherited" since="6.0.0_BETA1">
  <globalConfigValue>10240000</globalConfigValue>
  <desc>Maximum size in bytes for the <content > element in SOAP.  Mail content larger than this limit will be truncated.</desc>
</attr>
 Here is an example to set the max message size to 42MB
zmprov ms `zmhostname` zimbraFileUploadMaxSize 44040192
zmprov ms `zmhostname` zimbraMailContentMaxSize 44040192
zmprov mcf zimbraMtaMaxMessageSize 44040192
postfix reload
one thing to watch for is to use a conversion tool to calculate the value in bytes otherwise it won't be accepted

If change does not happen after a short period of time or flushing the cache, you most likely will need to do a full zmcontrol restart on the mailstores. See:

What The User Sees In ZWC For An Attachment

With ZCS 8.0.4, the max. upload size will reflect the size after encoding. Before ZCS 8.0.4, they saw the size prior to encoding, which caused confusion.

Tests To MTA's To See Max Size And Log Events

This can be useful to test if your server is configured right or if it's another server that is rejecting messages because of max. size. Let's say you get a bounce message, something like:

[Email service] tried to deliver your message, but it was rejected by the server for the recipient
domain domainA.com by emailgateway.domainA.com [192.168.1.1].

The error that the other server returned was:
552 5.3.4 Error: message file too big from [Email service mta ip address]

You can then telnet to the hosts mention over port 25 and see what the max size is set to. Note - if you require authentication to do this test completely, please see [Simple Troubleshooting For SMPT Via Telnet] .

$ telnet zcsmta.example.com 25
Trying zcsmta.example.com...
Connected to zcsmta.example.com
Escape character is '^]'.
220 [some vendor identifier] service is ready.
helo host.example.com
250 host.example.com
ehlo host.example.com
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-XXXXXXXA
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:<admin@example.com> SIZE=99999999
552 5.3.4 Message size exceeds fixed limit
MAIL FROM:<admin@example.com> SIZE=10240000
250 2.1.0 Ok
quit
221 2.0.0 Bye

The "250-SIZE 15728640" is the one your interested in. In this case, there's a 15MB max message size limit by the companies mta relay edge device. Zimbra wasn't the problem in this case. Note - please remember that this size is for the total message size, so if the email that is being bounced and it has an attachment you have to consider the increase in size because of the mime-encoding increase [%137].

The test above where I send the message I would be sending exceeded the '250-SIZE 10240000" will also be logged on the Zimbra mta's /var/log/zimbra.log :

Apr 24 09:05:06 zcsmta postfix/smtpd[12694]: NOQUEUE: reject: MAIL from 
 host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed limit; 
 proto=ESMTP helo=<example.com>

If you attempt to send from an external client a message that exceeds the limits on your Zimbra server, you'll see the following log event in /var/log/zimbra.log :

Apr 24 08:33:26 zcsmta postfix/smtpd[32686]: warning: 7A735345A: 
 queue file size limit exceeded

The 71735345A is the postfix queue id of the message in question.

In summary, a good starting point to see log events around exceeding message size is:

# grep postfix /var/log/zimbra.log | egrep 'reject|exceed|limit|warn'
Apr 24 07:46:43 zcsmta postfix/smtpd[10184]: NOQUEUE: reject: MAIL from 
  host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed 
  limit; proto=ESMTP helo=<host.example.com>
Apr 24 07:47:19 zcsmta postfix/smtpd[10184]: NOQUEUE: reject: MAIL from 
  host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed 
  limit; proto=ESMTP helo=<host.example.com>
Apr 24 08:33:26 zcsmta postfix/smtpd[32686]: warning: 7A735345A: queue 
  file size limit exceeded
Apr 24 09:05:06 zcsmta postfix/smtpd[12694]: NOQUEUE: reject: MAIL from 
  host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed 
  limit; proto=ESMTP helo=<host.example.com>

References:

Additional Resources

http://www.postfix.org/resource.html


Verified Against: Zimbra Collaboration 8.0, 7.0 Date Created: 1/31/2007
Article ID: https://wiki.zimbra.com/index.php?title=Configuring_maxmessagesize Date Modified: 2019-04-21



Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

You can contribute in the Community, Wiki, Code, or development of Zimlets.
Find out more. »

Looking for a Video?

Visit our YouTube channel to get the latest webinars, technology news, product overviews, and so much more.
Go to the YouTube channel »

Jump to: navigation, search