让 fetchmail 在服务器上保留邮件一段指定的时间?

让 fetchmail 在服务器上保留邮件一段指定的时间?

我知道 fetchmail 可以配置为在服务器上留下邮件(通常使用keep uidl关键字组合完成),但是有没有办法将其配置为在服务器上留下邮件在指定的最短时间段内然后删除它们?

例如,假设我希望邮件在下载后在服务器上保留 48 小时,然后在对该服务器的下一次 fetchmail 调用时将其删除。

我最感兴趣的是适用于 POP3 的解决方案。

答案1

简而言之:它不会那样做。

Long:fetchmail 的设计目的只是执行以下操作之一:

  • 全部的邮箱,或
  • 阅读未读来自邮箱的消息

当它读取消息时,它可以将其(在服务器上)标记为“已读”。但没有与此相关的时间戳。

众所周知,无法做到这一点,并且根据对获取邮件用户由由罗布·麦格雷戈,可能是常见问题解答:

那是因为这不是 Fetchmail 的设计目的。 Fetchmail 旨在下载整个邮箱或至少下载未读邮件。如果不更改源,就无法仅下载看到的电子邮件。

N 天后它也不会删除电子邮件(我很确定常见问题解答中包含这一点 - 以前确实如此)。

答案2

getmail 是您的情况的解决方案。https://pyropus.ca/software/getmail Linux 程序 getmail 可以使用或不使用 SSL 来获取 INBOX 和/或其他文件夹(在 IMAP 协议的情况下),并在 N 天后删除电子邮件。

getmailrc 文件示例,放置在 ~/.getmail 目录中:

[retriever]
type = SimpleIMAPSSLRetriever
server = IMAP_SERVER_CHANGEME
port = 993
username = USERNAME_CHANGEME
password = PASSWORD_CHANGEME
mailboxes = ("INBOX","Junk",)

[destination]
type = Maildir
path = ~/Maildir/

[options]
message_log_syslog = true
message_log_verbose = true
# retrieve only new emails
read_all = false
# delete on server after x days
delete_after = 6
# do not add a Delivered-To: header field
delivered_to = false
# do not add a Received: header field
received = false

相关内容