主题: [FAQ] 为何当邮箱容量满了到时候无法删除收件箱里的邮件

有朋友反应当邮箱容量满了之后,用户在 WebMail 程序里无法删除收件箱里的邮件。

这里涉及到通过 IMAP 协议来操作邮箱的具体细节(来自 Dovecot 的参考文档):

1. 给邮件增加 \Deleted 标记,表示已删除;
2. 使用 EXPUNGE 命令实际删除邮件;

这两个 IMAP 命令在邮箱容量满了之后仍然可以正确操作,可以正确删除邮件。

但是许多邮件客户端软件,例如:Roundcubemail,Thunderbird,都使用 'move-to-trash' 的方式来删除邮件。具体的步骤是:

1. 将 Inbox(收件夹)、Sent(已发邮件)等邮件夹里的邮件复制到 Trash(回收站) 邮件夹;
2. 将邮件打上 \Deleted 标记;
3. 将邮件从 Inbox, Sent 目录删除;
4. (也许后期再使用 'Clean Trash(清空回收站)'的功能删除回收站里的邮件)

所以如果你的邮箱容量已满,就无法将收件箱里的邮件复制到回收站,导致无法删除邮件。

解决办法(任选其一):

* 在客户端使用 POP3 将邮件收下来,清空邮箱(这时候使用 IMAP 是不行的,必须是 POP3, POP3S)。
* 服务器端配置 Dovecot 乎略回收站的邮箱容量。
  这是有风险的。因为用户可以把回收站当做是无限制的网络磁盘。
  配置方法:

#
# 在 /etc/dovecot.conf 中配置 plugin quota:
#
# 注意:这里的 storage=10240 是全局默认值,但是如果你已经在 LDAP/MySQL 里
# 设置了虚拟用户的邮箱容量,将使用 LDAP/MySQL 里的值。
#

plugin {
    quota = maildir:storage=10240:ignore=Trash
}

回复: [FAQ] 为何当邮箱容量满了到时候无法删除收件箱里的邮件

原帖由 木鸟 于 2008-5-21 20:50 发表 http://www.osspinc.com/bbs/images/common/back.gif
:L Roundcubemail怎么犯这么垃圾的错误,不直接move,竟然用copy delete


这个不能算是错误,只能算是为用户考虑。因为如果用户是误删,就永远找不回来了。

就好像 Windows 里用 Delete 和 Shift+Delete 来删除文件一样。

PS:这个不只是 Roundcubemail 这样设计,大部分的邮件客户端程序都这样设计。

回复: [FAQ] 为何当邮箱容量满了到时候无法删除收件箱里的邮件

发到邮件列表里问了,用 Shift+Delete 可以直接删除,不经过回收站。:lol