【发布时间】:2019-06-24 11:25:16
【问题描述】:
我使用fetchmail 和imap 协议从邮件服务器上传电子邮件,并将它们通过管道传送到procmail。我使用以下命令执行此操作:
fetchmail -f /home/$USER/.fetchmailrc --ssl -t 100 -d 240 -s -m "/usr/bin/procmail /home/$USER/.procmailrc "
.fetchmailrc如下:
poll imap.my_email_server.com protocol IMAP
user "user@email_server.com" with password "myPassword" is "user@email_server.com" here keep
.procmailrc 如下:
:0:
* ^Subject: someSubject
{
:0 c
| $BIN/parse_email
:0 c
$HOME/posnav
:0
/dev/null
}
一切正常,但我怎样才能发出最后一个命令(这里我将电子邮件推送到 /dev/null 只是为了说明目的)删除服务器上的电子邮件电子邮件?
【问题讨论】:
-
Procmail 旨在处理本地邮件。这也是为什么您首先需要 fetchmail 的原因。即使是外部帮助程序也可能会导致 b/c IMAP 期望不间断运行的问题。看看其他工具。我从未使用过它们,但也许 imapfilter 和类似的?
-
有一个简单且基本上无人维护的工具
procimap,我使用了很多年,但它从它的分叉代码中继承了一些讨厌的设计缺陷,并添加了一些自己的。不用说(因为在前面的评论中已经解释过了)Procmail 本身没有与 IMAP 服务器通信的能力。 -
顺便说一句,用
:0c保存到一个文件夹然后再传送到/dev/null是相当迂回的。只需在第一个交付配方上丢失c标志即可。 -
大括号上的锁也是不正确的,管道上的
c看起来很可疑,当然如果为了副作用执行parse_email动作它是正确的,并且不能将消息也保存在某处。 -
AFAIK,这超出了 procmail 和 fetchmail 的能力。我会做什么找到或开发另一个工具,它将接收消息列表并将连接到 IMAP 服务器(使用 .fetcmailrc 文件以避免密钥重复)并要求删除消息。