Debian11下Postfix+Dovecot邮件发送失败求助:系统存储不足与收件人数量超限矛盾报错
Debian11下Postfix+Dovecot邮件发送失败求助:系统存储不足与收件人数量超限矛盾报错
嘿,兄弟,你这报错确实有点离谱——明明查了用户配额还剩一大半,却同时蹦出「收件人数量超限」和「系统存储不足」两个矛盾提示,这搁谁都得懵!我来帮你捋捋可能的问题,一步步排查:
首先得拆解这个矛盾:两个报错大概率是“一真一假”
Postfix有时候会因为底层的真实错误(比如存储/权限问题),抛出一个看似不相关的表面报错(比如收件人超限),所以咱们得先抓真实的触发点。
排查方向1:先确认是不是系统级的存储/资源耗尽,不是用户配额的问题
你查的是单个用户的磁盘配额,但Postfix自己的运行队列、临时存储可能在单独的分区,或者系统的inode/swap耗尽了:
- 先查Postfix队列所在分区的空间:
df -h /var/spool/postfix,要是这个分区满了,直接就会报存储不足 - 再查inode使用:
df -i /dev/sda2——有时候磁盘空间还剩,但文件数(inode)用完了,也会触发“存储不足”的报错,你看你两个用户的文件数都不少,得确认系统级的inode有没有耗尽 - 检查swap分区:
free -h,如果swap被占满了,系统进程分配内存失败,也可能被Postfix误判为存储不足 - 看看/tmp分区:
df -h /tmp,Postfix有时候会用/tmp存临时邮件,要是这个分区满了也会出问题
排查方向2:Postfix/Dovecot的邮件配额/大小限制设置有没有冲突
你查的是系统用户的磁盘配额,但Postfix和Dovecot可能有自己独立的邮件配额设置:
- 打开你的main.cf,找这些参数:
mailbox_size_limit:单个邮箱的最大大小,要是设置得比用户的系统配额小,可能触发报错message_size_limit:单封邮件的最大大小,要是你发的邮件带大附件,可能触发这个,同时连带报收件人问题smtpd_recipient_limit、default_recipient_limit:这两个是收件人数量的限制,要是设置得太小,会直接报收件人超限,但你之前正常,可能是最近改了配置?
- 再查Dovecot的配置,有没有开
quota插件,是不是Dovecot里设置的配额比系统配额小?比如dovecot.conf里的plugin { quota = ... }配置,会不会和系统配额不一致?
排查方向3:权限/用户映射问题,导致Postfix无法正确读取存储状态
有时候不是真的没空间,是Postfix/Dovecot的进程没权限访问邮件存储目录,被系统判定为“无法写入”,从而报存储不足,同时因为无法正确处理收件人列表,弹出收件人超限的错误:
- 看看你的邮件存储目录权限,比如假设是虚拟用户存储在
/var/mail/vhosts/mydomain/,执行ls -ld /var/mail/vhosts/mydomain/,检查所有者是不是postfix:dovecot或者对应的权限组,权限是不是700(确保只有对应进程能读写) - 确认Postfix的进程用户(默认是postfix)有没有访问邮件存储目录的权限,比如用
su - postfix -c "ls /var/mail/vhosts/mydomain/"试试,要是权限拒绝,那就是权限问题
最后,补充一下你的完整配置信息呗
你贴的main.cf是截断的,最好把和配额、大小限制、收件人限制相关的参数都贴出来,还有Dovecot的主配置片段,这样能更精准定位问题!
备注:内容来源于stack exchange,提问作者Anarkie




