如何使用 procmail mda 传递文件供 mh 读取?

如何使用 procmail mda 传递文件供 mh 读取?

我使用 fetchmail 下载电子邮件,并使用 procmail 作为 mda 进行传递。我希望它们能够与 mh 一起使用,但 procmail 似乎以一种 mh 无法理解的方式传递它们:我得到子目录 new/ cur/ 和 tmp/,其中文件位于 new/ 中,名称类似于 1484079635.67044_0。主机名

如果我将这些文件重命名为整数并将它们向上移动一个目录,mh 会很好地拾取它们。我希望能够自动执行此操作,并保持上次 fetchmail 运行的顺序。

获取邮件配置:

set logfile /path/to/fetchmail.log
set no bouncemail

poll "imap.gmail.com"
protocol imap
username "USER"
password "PASSWORD"
fetchall
keep
ssl
mda "/path/to/procmail -m /path/to/.procmailrc"

进程邮件配置:

LOGFILE=$HOME/procmail.log
VERBOSE=on
DELIVERED=yes
MAILDIR=$HOME/Mail/.
DEFAULT=inbox/

答案1

DEFAULT=inbox/说邮件应该发送到 Maildir 邮箱(带有子目录curnewtmp)。该邮箱位于$HOME/Mail/.根据MAILDIR变量。

要发送到 MH 邮箱,您应该设置DEFAULTinbox/.(注意末尾的点)。MAILDIR可以设置为$HOME/Mail.

简而言之:

  • 最终邮箱路径/最后有:Maildir邮箱
  • .../.末尾有:MH邮箱
  • ...以上都没有:普通 Unix mbox 邮箱。

请参阅procmailrc(5)手册。

答案2

接受的答案是正确的,但我想添加一些评论和放大。

您的问题似乎表明您认为 MH 和 Maildir 是一种且相同的格式。他们不是; MH 传统上每个文件夹使用一个目录,而正如您所发现的,Maildir 使用三个子目录;它最初传递到new,然后移动到tmp,最后到cur

Procmail 本身支持向两者发送邮件。然而,对于 MH,直接传递到目标目录会绕过 MH 的一些有用功能。您可以改为通过管道连接到该rcvstore程序,该程序提供与 MH 系统更好的整体集成(它将更新关联的控制和缓存文件)。

您不能直接设置DEFAULT来完成此操作;你需要有一个简单的.procmailrc东西,比如

:0:foldername.lock
| rcvstore +foldername   # from memory it wants a plus, is that right?

这是一个无条件传递操作,锁定指定的锁定文件。

这种方法可以推广到许多其他文件夹格式。即使 Procmail 本身不支持 MBX、Dovecot'sdbox和各种其他格式,但如果您有一个可以通过管道传输消息的该格式的传送程序,您就可以传送这些格式。

这个答案基本上重申了来自http://www.iki.fi/era/procmail/mini-faq.html#appendix-folders

相关内容