应如何将表示为单个文件的电子邮件添加到 Maildir 中?

应如何将表示为单个文件的电子邮件添加到 Maildir 中?

Maildirs 的命名约定看起来相当复杂。我从 Outlook 的 Web 界面下载了一条消息,并通过命名added并将其放入文件夹中将其添加到 Maildir 中newmbsync似乎mu4e对结果很满意,但如果我因为养成这个习惯而遇到麻烦,我也不会感到惊讶。是否有程序可以以正确的方式将文件添加到 Maildir?理想情况下,这样的操作不需要在我的计算机上配置和运行成熟的邮件服务器。

答案1

您正在寻找的是具有 maildir 支持的邮件传送代理(“MDA”)。有几个程序符合要求:

  • procmail当然可以做到这一点,但我认为它不再被维护了。它可能仍然针对您使用的任何发行版进行打包。

  • maildrop来自快递公司邮件服务器可以将邮件传送到maildir 格式。

大多数邮件服务器都支持发送到 maildir 格式的邮箱,但通常不会以这样的方式进行分割,以便您可以在邮件服务器的上下文之外使用它。

维基百科还列出了一些


查看我在这里提到的两个程序的手册页,在这两种情况下,您都必须为它们提供一个过滤器文件,告诉它们将消息传递到哪里。使用 procmail,您可以将其嵌入到命令行中;假设我想将 stdin 上的消息传递到mail当前目录中指定的 Maildir 格式邮箱,我可以运行:

procmail -m <(printf ":0\n$PWD/mail/\n") < msg

使用maildrop我需要向它传递一个实际文件(如果过滤器文件不是常规文件,它会检查并且不会运行):

echo "to $PWD/mail" > filter
maildrop filter < msg

答案2

我确认@larsks关于procmailmaildrop限制的回答:两者都倾向于需要一些基于shell的包装。此外,两者都具有强大的过滤功能,当目标邮件目录已知时,这些功能就无关紧要了。

但值得一提的是另外两个工具:safecatmdeliver

safecat可能是“以正确方式将文件添加到 Maildir 的程序”,因为它“实现了 Daniel Bernstein 教授的 ma​​ildir 算法”。 2003 年的算法后来被认为太复杂、太偏执,但据我所知,它仍然有效。 safecat有两个警告:

  1. 必须在命令行中提及maildir/tmp和目录,这很有用但感觉多余。maildir/new
  2. 在运行命令之前这些目录必须存在。

mdeliver(例如在mblazeDebian 软件包中找到)非常简单:mdeliver /path/to/maildir < msg。与 一样safecat,mdeliver 期望目录存在。

最后,似乎任何寻找简单、轻量级、无过滤、无配置的邮件传送代理(将电子邮件放入 Maildir 目录中并在必要时创建它)的人都必然会围绕这些工具之一编写 shell 包装器。

相关内容