我有以下规格的邮件服务器:
- Centos 7
- Roundcube 1.3.5
- MTA Postfix 2.10.1
我已将附件上传大小限制为 5M:
- /etc/php.ini =>上传最大文件大小 = 10M,上传最大文件大小 = 5M
- Roundcube => config.php:$config['最大消息大小'] = 5M
- 后缀 => main.cf :消息大小限制= 5242880
据我所知,此配置应该允许附加 5Mb 的文件,但我甚至无法附加小于 5Mb 的文件大小。请帮忙
编辑:我可以发送带有 4 MB 大小附件的电子邮件。如果我将 roundcube 配置增加到 6 MB,那么我就可以附加和发送 5Mb 文件大小的电子邮件。我认为 postfix 和 php.ini 配置没问题。
答案1
尝试改变php.ini => upload_max_filesize = as you want
答案2
您可能有多个
php.ini
文件,并且可能更改了错误的文件。使用 检查更改是否生效phpinfo()
。更改限制之前您能上传文件吗?可能是您
file_uploads = On
没有php.ini
。您是否能够将文件上传到同一台服务器的其他地方?如果可以,则说明 postfix 或 roundcube 存在问题。
当您尝试上传文件时会发生什么?您是否可以上传但无法发送?如果是,则问题出在 Postfix,而不是 PHP 或 Roundcube。
更改配置文件后,您是否重新启动(或重新加载)了 php 和 postfix 服务?
注意:您的 Postfix 配置限制了邮件的大小,而不是附件的大小。即使您能做到这一点,您也无法将两个 5M 文件上传到一封邮件中。如果电子邮件中包含大量文本,您也可能会遇到问题。不过,282K 应该足以容纳比您可能想要在电子邮件中写入的更多的文本。
答案3
这些message_size
选项指的是整个电子邮件消息,包括标题和正文。如果附件本身的大小达到限制,则邮件将被拒绝,因为添加的标题会使邮件超出限制。
另外,请注意,有些事情可能会在不明显的情况下增加邮件大小:
- 二进制附件在经过 base64 编码后发送,其大小会增加约 30%
- 特殊字符,如果使用“Quoted-printable”编码,将占用多个字符(至少 3 个)
- 包含 HTML 部分的邮件通常包含两次消息(作为 HTML 和纯文本),从而进一步增加了其大小。
答案4
对于那些最近从谷歌来到这里但仍然无法解决的人来说,限制在哪里降低。这不是 php.ini 的问题。这不是错误,而是 Roundcube 的功能,当最大附件大小通过公式计算时:
min(
ini_get('post_max_size'),
ini_get('upload_max_filesize'),
$config['max_message_size'] / 1.33
)
它在文件中:程序/动作/邮件/compose.php
public static function compose_attachment_form($attrib)
{
$rcmail = rcmail::get_instance();
// Limit attachment size according to message size limit
$limit = parse_bytes($rcmail->config->get('max_message_size')) / 1.33;
return self::upload_form($attrib, 'uploadform', 'send-attachment', ['multiple' => true], $limit);
}
希望它可以帮助其他人,而不必像我一样浪费那么多时间去搜索......