我是一家律师事务所的IT人员。 我最近被要求build立一个系统,其中所有从我们的服务器到我们的客户端的外发电子邮件将被首先暂时搁置,等待批准后再发送给客户端。
我们的邮件服务器使用Exim(这就是它在cPanel中所说的)。 我打算创buildfilter,将外发电子邮件转发到编辑器帐户。 然后,编辑将审查和编辑电子邮件的内容。 当编辑器已经批准电子邮件时,编辑器会将其发送给客户端,但仍然使用“发件人:”和“回复:”字段中的原始发件人。
我发现从这个网站=> http://www.devco.net/archives/2006/03/24/saving_copies_of_all_email_using_exim.php一些指针。
一旦filter到位,我想为编辑器创build一个简单的PHP接口来检查转发的电子邮件,并在必要时进行编辑。 然后,编辑器可以点击“批准”button,最终使用原始发件人发送邮件。
我也在想,也许一个没有PHP的系统就足够了。 编辑可以从他自己的电子邮件客户端接收电子邮件进行编辑,只需发送电子邮件,就好像他是原始发件人。
更新:( 2012年4月6日)上述问题可能是模糊的,所以这里是一个更具体的问题:1.我可以转发所有传出的邮件到我们的域外发送到另一个地址,而不是实际的收件人?
我的计划是否可行?
不,不是。 问题是(几乎)任何东西在电子邮件和电子邮件标题可以改变和欺骗。 此外,您公司的任何人都可以通过他们喜欢的任何其他服务器发送电子邮件(除非您阻止所有的互联网访问,噢,等等,你不能,他们仍然有他们的智能手机等),似乎来自贵公司。 如果贵公司的员工想要避免PHB的审查,他们只需使用外部电子邮件服务器(MTA)。
您甚至不必担心产能,如果rDNS或EHLO问候与返回path不匹配。 只要使返回path的域名与传出的MTA相同,但将From:地址更改为来自您的公司,几乎所有人都认为它来自您的公司。
会有我忽略的问题吗?
是的,总是。 这是一个毫无意义的练习,它是微不足道的。 为了避免你自己和你的同事头疼,你需要向你的PHB解释这一点,并说服他或他这是错误的路要走。 有更好的方法来解决这个问题。 但是,那些更多的是在公司政策,教育和雇用合适的员工,以及特定的规定,而不是限制自由的极端(而且容易避免)措施。 这些严厉的措施长期以来都有一个诀窍,几乎没有例外。
它有被其他邮件服务器视为垃圾邮件的危险,因为我会搞砸头?
不见得。 标题中的任何内容都可能被欺骗和更改(请参见上文)。 这几乎是标准,MTA一直添加和更改标题中的内容。 无论你是做人,还是创作脚本来改变事物,MTA都不在乎。 只要MTAvalidation和接受,它就不应该有更多的机会被标记为垃圾邮件(当然是有理由的)。
无论如何,我不想再想这个真正可怕的想法。 🙁
不幸的是,你的问题的答案是肯定的,有可能实现这样的系统,但幸好不容易。
既然你在一家律师事务所工作,我感到惊讶的是没有人提出build立这样一个可怕系统的问责制和真实性的问题。 在处理任何forms的交stream时,build立一个非交互式的中间人是一个可怕的想法,其结果很快就会和你的客户打断电话相提并论。
根据你的规范build立一个系统最快的方法是运行2个Exim实例; 一个处理传入消息并将其caching到磁盘的实例,另一个实例处理传递的假脱机消息。 这种情况的基本工作stream程如下:
/var/spool/exim-in/ /var/spool/exim-in/input/读取消息,并允许编辑器完成所需的更改或删除该消息。 然后应用程序将把消息移动到一个新的假脱机目录中,比如/var/spool/exim-out/ /var/spool/exim-out/ configurationExim来执行此操作并不困难,通过查看典型的MailScanner安装程序,可以获得类似的configuration,该安装程序还将Exim分隔成两个队列,消息只能通过MailScanner从一个队列移动到另一个队列。 有关如何使用EximconfigurationMailScanner的快速概述,请参阅此页面 。
编写这个应用程序的重要性不大,它将提供一个接口来处理所需的编辑和批准过程。 如果您尝试编写这样的应用程序(如正确的标头parsing和处理复杂的MIMEtypes消息),则会面临无数的障碍。 您将基本上重写一个典型的MUA,如Outlook或Thunderbird; 当然除非你的编辑人员不介意看原始的SMTP数据和HTML,在这种情况下,你可以简单地将其显示为纯文本。
总之,不要这样做。 这不仅是一个可怕的想法,但是你必然遇到许多实现障碍,使得这个努力对于一个开发人员来说是完全不可行的。