Maildirs 的命名约定看起来相当复杂。我从 Outlook 的 Web 界面下载了一条消息,并通过命名added
并将其放入文件夹中将其添加到 Maildir 中new
。mbsync
似乎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关于procmail
和maildrop
限制的回答:两者都倾向于需要一些基于shell的包装。此外,两者都具有强大的过滤功能,当目标邮件目录已知时,这些功能就无关紧要了。
但值得一提的是另外两个工具:safecat
和mdeliver
。
safecat
可能是“以正确方式将文件添加到 Maildir 的程序”,因为它“实现了 Daniel Bernstein 教授的 maildir 算法”。 2003 年的算法后来被认为太复杂、太偏执,但据我所知,它仍然有效。
safecat
有两个警告:
- 必须在命令行中提及
maildir/tmp
和目录,这很有用但感觉多余。maildir/new
- 在运行命令之前这些目录必须存在。
mdeliver
(例如在mblaze
Debian 软件包中找到)非常简单:mdeliver /path/to/maildir < msg
。与 一样safecat
,mdeliver 期望目录存在。
最后,似乎任何寻找简单、轻量级、无过滤、无配置的邮件传送代理(将电子邮件放入 Maildir 目录中并在必要时创建它)的人都必然会围绕这些工具之一编写 shell 包装器。