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: NOQUEUE: reject: MAIL from smtp.DOMAIN.com[22.214.171.124]: 452 4.3.1 Insufficient system storage; proto=ESMTP helo=<mail.DOMAIN.com> Jan 15 11:18:53 SERVERNAME postfix/smtpd: 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 import 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 | grep message_size_limit
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
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 toll to calculate the value in bytes otherwise it won't be accepted
What The User Sees In ZWC For An Attachment
With ZCS 8.0.4, they max. upload size will reflect the size after encoding. Before ZCS 8.0.4, they saw the size prior to encoding, which caused confusion.
- Attachment file size check should be before encoding