主题: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

用IREDMAIL,LDAP环境做的本地邮件,已经运行在生产环境中,现在出现一个非常棘手的事情,一封发给所有员工的邮件需要追回删除,怎么能够做到??发邮件者是本地LDAP下的用户,接受邮件者也是这个LDAP下的用户,有没什么办法能够做到,非常紧急,希望能有所回复

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

投递邮件的流程大抵如下:

用户通过 SMTP 发出邮件 => Postfix 接收下邮件,并放入队列(/var/spool/postfix/),等待投递 => 投递邮件

你能做的,就是在邮件还在队列的时候,先用 postqueue 命令查到这封邮件的 ID,然后用 postsuper 命令从队列中删除这个邮件 ID(也就是删除这封邮件)。gmail 应该也是这样处理的。
如果已经投递出去,就没法追回了。

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

2楼的兄弟的建议我觉得是个应急的方法,想向BIBBY求证下,首先,VMAIL里面每个用户名的目录里,都有个NEW和CUR的目录,是不是没被收取的邮件都在NEW里,收取以后的邮件在CUR里,如果是的话,也就是说 我通过删除对应目录里的对应文件,就可以实现删除邮件
不过我有一个新问题,就是每个邮件以下列形式存在
1244101479.M817954P19163.mail.ymky.com,S=46943,W=47612:2,S
有没什么规则,可以解读这个名字的意义,目的就是为了确认哪封信是我要删除的信
另外还有,是不是群发邮件发到每个用户里,目录里生成的文件名都一样的,比如发给我是1244101479.M817954P19163.mail.ymky.com,S=46943,W=47612:2,S,发给别人是不是也是这个名字呢???
求证,谢谢

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

很抱歉,我没有研究过群发的邮件到达用户邮箱后是否文件名相同(个人猜测应该是不同的--纯猜测的,晚点查证一下)。

邮件被收取后,可能会被放到不同的目录里去,比如用户手动将它放到了 Sent/Drafts/Junk 目录,等等。

这样删除并不是很好控制,你必须要能确认那就是你发的邮件。用户不多的话,可以用 find 去找邮件,然后通过 python 或其它脚本来查找邮件头里的指纹(例如邮件标题等信息),识别并删除它。

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

这里有介绍邮件文件的命名规则: http://wiki.dovecot.org/MailboxFormat/Maildir

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

我的邮件只提供给企业内部员工,目前总数是110人左右,因为LINUX邮件系统目前我是没看见谁家有邮件追回的功能,EXCHANGE这个独有功能就不考虑了,所以才想用比较笨的方法,最多就是重复劳动,起码能达到目的就可以,所以想多研究研究,看看有没什么规律可循,大不了手动,当然如果有更简单的诸如脚本,或者有更精确的手段,那就最好了,还希望BIBBY一干高人们有时间能一起研究下,看看怎么能更方便,谢谢了

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

110人,手工处理起来应该不会太难。或者用 shell/python 写个脚本去处理。

你要先总结出邮件的规律,怎么来唯一标识这样的邮件,然后再对应的去处理。

如果没有总结这些规律,我也无法帮忙了。

回复: 紧急:本地邮件系统,如何撤销一封发出的群邮件?

根据 title , from 这样的特征 写脚本来删除了。没啥别的办法。