0

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

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

我只想消除主机名。使用procmail可以做到吗?如何?另外,是否可以将第一个时间戳替换为 time-sent 时间戳?是否可以规定 procmail 的格式?

4

1 回答 1

0

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

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

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

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

:0  # or maybe :0r
`uuid`

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

Procmail 支持的其他格式对于如何生成文件名有其自己的硬编码规则,但也许简单的 MH 文件夹格式(以(基本上是连续递增的)消息编号作为文件名)也值得研究。旧的迷你常见问题解答简要概述了支持的格式以及如何选择一个 Procmail 用于在每个单独的配方中交付。

于 2020-10-17T06:52:51.203 回答