如何从服务器上的电子邮件文件夹中提取电子邮件地址

如何从服务器上的电子邮件文件夹中提取电子邮件地址

我现在的情况是,我需要用向我发送垃圾邮件的域名来完成我的 Rspamd 阻止列表。由于我无法直接从收件箱中执行此操作,因此我现在有以下设置:

  1. 我将所有电子邮件标记为垃圾邮件,并且它们都会进入垃圾邮件文件夹。
  2. 我浏览垃圾邮件文件夹,选择发件人的域名,并将其逐一添加到 rspamd 阻止列表中

我想知道是否有任何自动化方法可以从服务器上的文件夹中提取所有“发件人”电子邮件地址,并将它们放入例如 .csv 文件中。对于电子邮件服务器,我有 IMAP 和 POP 访问权限。

非常感谢!

答案1

大多数“发件人”地址都是短暂的,不值得逐一阻止。应专注于自动检测,例如 Rspamd 对 SPF、DNSBL 和自动学习功能的支持。(除此之外,邮件中的“发件人”标头通常实际上与 SMTP Mail-From 信封标头不匹配,而后者更值得阻止。)

如果您的邮件服务器以 Maildir 格式存储邮件,则获取所有“发件人”标头的简单方法就是运行grep -r "^From:" ~/Mail/.Junk/。 (这同样适用于 mbox 格式的文件夹……但您不必使用 mbox。)这不如真正的 RFC2822 标头解析器那么精确,但通常已经足够好了。

为了更精确,使用一个非常短的 Python 脚本邮箱模块可以解析消息:

for msg in mailbox.Maildir("/home/foo/Mail/.Junk/"):
    print(msg["From"])

如果邮件服务器使用自定义存储格式(如 Dovecot 的 dbox),请使用 Mutt 或 Thunderbird 通过 IMAP 将所有这些消息复制到本地文件夹 - 这两个客户端都使用 Maildir 或 mbox 作为本地文件夹,所以现在您的问题已经解决了。

相关内容