procmail:让 procmail 在保存 Maildir 格式邮件时排除主机名

procmail: getting procmail to exclude hostname while saving Maildir format messages

如何让 procmail 将邮件保存在我的 Maildir 文件夹中,但不在文件(邮件名称)中包含主机名?我在我的新/子文件夹中得到以下消息名称:

  1464003587.H805375P95754.gator3018.hostgator.com, S=20238_2

我只想删除主机名。使用 procmail 可以做到吗?如何?另外,可以用发送时间戳替换第一个时间戳吗?是否可以为 procmail 指定一种格式?

不,您不能覆盖 Maildir 的文件名格式,尤其是因为出于互操作性的原因,它被规定以特定方式使用。当多个主机上的多个代理同时写入同一消息存储时,该格式保证能够抵抗冲突。只有当他们都按照相同的规则进行游戏时,这才能正常工作。这些规则的一个明显部分是规定代理 运行ning 所在的主机名必须包含在每条新消息的文件名中。

Wikipedia Maildir article 很好地概述了格式的设计和历史,当然还有指向权威标准和其他主要来源的链接。

如果您不是特别需要 Maildir 兼容性(与 tmp / new / cur 子目录等),您可以简单地创建一个独特的 mbox 文件每个运行;如果你能保证它是唯一的,你写的时候就不需要加锁了。

例如,如果您有一个名为 uuid 的工具,它会在每次调用时生成一个有保证的唯一标识符,您可以轻松地将其用作文件名;

:0  # or maybe :0r
`uuid`

如果您确实认为可以创建自己的并发交付解决方案,那么应该很容易了解如何提供您自己的工具。 (Maildir解决了并发和分布式传递,所以要求更严格。)

Procmail 支持的其他格式对于如何生成文件名有自己的硬编码规则,尽管简单的 MH 文件夹格式(带有(基本上是连续递增的)消息编号作为文件名)可能值得研究,因为出色地。 The old mini-FAQ 简要概述了受支持的格式以及如何 select Procmail 在每个单独的配方中使用哪个来传送。