【问题标题】:How to delete IMAP mail with fetchmail / procmail如何使用 fetchmail / procmail 删除 IMAP 邮件
【发布时间】:2019-06-24 11:25:16
【问题描述】:

我使用fetchmailimap 协议从邮件服务器上传电子邮件,并将它们通过管道传送到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 文件以避免密钥重复)并要求删除消息。

标签: imap procmail fetchmail


【解决方案1】:

如果你想删除服务器上的邮件,你必须告诉 fetchmail 这样做。

但是,您通过在运行控制文件中包含关键字“keep”来明确告诉 fetchmail 将邮件保留在服务器上。

改为“不保留”:

poll imap.my_email_server.com protocol IMAP
user "user@email_server.com" with password "myPassword" is "user@email_server.com" here no keep

【讨论】:

  • 我认为这不是 OP 想要的。我认为这样做的目的是删除消息阅读并认为无用
猜你喜欢
  • 2016-05-03
  • 2017-02-02
  • 2017-01-18
  • 2016-03-28
  • 2021-01-11
  • 2012-01-02
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多