我们正在运行垃圾邮件陷阱/蜜罐,通过使用这里成员的出色指导,我已经能够配置运行 Postfix 2.11.0 的 Ubuntu 服务器以捕获所有入站电子邮件(无论目标地址如何),并将电子邮件发送到 python 脚本,该脚本又将电子邮件写入文件。python 脚本如下所示:
#!/usr/bin/env python
import sys
import email
import os
import datetime
em = email.message_from_file(sys.stdin) # Read message from Std Input
strFilename = datetime.datetime.now().strftime('%Y%m%d%H%M%S') + ".eml"
output = open('/var/mail/' + strFilename, 'w')
output.write(str(em))
output.close()
我的问题是:当我们收到一封有两个或更多收件人的电子邮件时,python 脚本会编写两个(或更多).eml 文件,而不是一个列出两个收件人的文件。我比较了 .eml 文件,它们完全相同,除了每个文件标题中的 1 行。例如,如果我亲自向我们的蜜罐收集器发送一封电子邮件,其收件人地址为[电子邮件保护]并抄送给[电子邮件保护],每个文件的唯一区别是一行如下:
X-Original-To: [email protected]
和另一个
X-Original-To: [email protected]
有没有办法只写入一个列出 X-Original-To: 字段的文件?
编辑:附加信息:SMTP-sink 满足了我们的需要,并且是我们当前正在运行的路径,但我们希望改用 postfix。在 postfix main.cf 中,我添加了:
virtual_alias_maps = pcre:/etc/postfix/virtual
然后我在 /etc/postfix/virtual 中创建了一个文件,其中包含
/.*/ mailin
在 /etc/aliases 中我添加了:
#/etc/aliases
mailin: "|/var/mail/mailcatch.py"
然后我的 mailcatch.py 包含上面的 python 脚本。我还创建了一个名为“mailin”的新用户。
答案1
我担心你的问题的答案
有没有办法只写入一个列出 X-Original-To: 字段的文件?
是
不
Postfix 使用X-Original-To
header 来执行收件人复制。当然,您可以通过 main.cf 配置此参数,使 postfix 只写入一个文件
enable_original_recipient = no
副作用是您将丢失消息和邮件日志中的原始收件人记录。
参考