这是我的第一个科幻问题,所以请保持礼貌:
有没有一种简单的方法可以强制 dovecot pop3 服务器在被 MUA 获取后忽略“删除消息”命令?
以下是我面临的问题:
- 我的老板想强迫每个人都遵守服务器端的“不删除消息”政策,以便存档、审计、备份和恢复
- 这里的必备条件是 pop3,因此 imap 不适用
- 邮件用户是虚拟用户(保存在 mysql 数据库中)
- 没有预算设置单独的邮件归档服务器
- 不想使用不规范的方式(又名不可变标志、Maildirs 的读/写权限等)
解决这个问题的一种方法是(我猜)为一个单独的 MANAGER 帐户设置一个 postfix 转发规则,但以后在有效的电子邮件恢复方面会出现问题(即明确地为不同的用户传播电子邮件)
帮忙?谢谢!
编辑:将在 dovecot 专用论坛上询问同样的问题,只是想拓宽我的技术范围 :) dovecot 2.0.15
答案1
最短答案
不
简短回答
获取 dovecot 的源代码,grok 代码编辑并删除 DELE 命令。编译、安装并准备好“升级噩梦”
更长的答案
永远不要忽略和违反 RFC,根据该 RFC,POP3 会话中的 DELE 必须删除假脱机中的消息。告诉老板资助技术解决方案,因为它会减少未来的麻烦和问题
为你的任务提供解决方案,而不是回答问题
更改 MTA 配置并将主机上的每个邮件用户扩展为“双用户”别名系统,即普通[电子邮件保护]会变成类似
user: user-m, user-b
其中,用户 m 和用户 b 是相同的用户 (对于 MTA 和 Dovecot 而言),但有一个区别:用户 m 具有 POP3 访问权限,而用户 b 没有。
你必须有*2个邮箱空间,但易于管理和满的每个用户的档案数量
答案2
虽然我知道这是一个老问题,但我正在用最新信息更新它。
文件:
/etc/dovecot/config.d/20-pop3.conf
包含以下部分:
# This option changes POP3 behavior so that it's not possible to actually
# delete mails via POP3, only hide them from future POP3 sessions. The mails
# will still be counted towards user's quota until actually deleted via IMAP.
# Use e.g. "$POP3Deleted" as the value (it will be visible as IMAP keyword).
# Make sure you can legally archive mails before enabling this setting.
#pop3_deleted_flag =
因此,通过类似以下方式启用此功能
pop3_deleted_flag = $$Pop3Deleted
即可达到所需的效果。($
是 dovecot 配置中的特殊字符,因此将其双击即可退出)