有没有一种方法可以过滤远程IMAP帐户中的邮件?


9

情况:仅具有IMAP访问的邮件服务器。问题:我希望能够过滤邮件(将一些邮件放入各个文件夹,将其标记为已读,等等)。

大多数新的电子邮件客户端都具有此功能,但是我需要一个独立的筛选程序,因为我需要使用各种电子邮件客户端来连接到该服务器。

通常-类似于procmail,但通过IMAP进行工作。

该软件将在Linux或Solaris上运行。


Answers:


8

一个快速的谷歌抛出了IMAPFilter,它看起来像您想要的:

  • 使用IMAP协议中的许多可用条件来搜索消息,例如:
    • 消息的状态(最近,未读等)。
    • 消息的大小。
    • 消息的年龄。
    • 消息标题或正文中字符串或正则表达式模式的匹配。
  • 能够在搜索消息时使用逻辑运算符(和/或/不)。
  • 可用于处理消息的不同功能,包括:
    • 删除邮件。
    • 将邮件移动到相同或不同服务器中的邮箱
    • 将邮件复制到相同或不同服务器中的邮箱。
    • 标记消息或更改消息标志。
  • 可用和/或已订阅邮箱的列表,以及对IMAP CHILDREN扩展的支持。
  • 创建,删除,重命名,订阅或取消订阅邮箱
  • 国际化(I18N)支持。
  • 使用IMAP NAMESPACE扩展名的服务器名称空间支持。
  • 安全套接字层(SSL)或传输层安全性(TLS)加密的imaps(端口993)连接。
  • 使用IMAP STARTTLS扩展名的加密连接。
  • 使用质询-响应认证机制(CRAM),特别是CRAM-MD5进行用户认证。
  • Perl兼容正则表达式(PCRE)支持。

1

根据您的IMAP服务器,您可以简单地使用sieve的一些实现。我认为cyrus为筛子提供了最好的支持。


好吧-我正在寻找的解决方案不能以任何方式取决于服务器。我必须假设服务器只是一个愚蠢的IMAP,不支持任何智能功能。

1

正如您已经提到的,procmail是执行此操作的正确方法,因此您可以询问您的电子邮件提供商是否支持它,以防万一-不会造成伤害。

否则,也许最简单的方法是始终打开一个进行排序等操作的电子邮件客户端。过去,存在多个客户端访问同一IMAP邮箱的锁定问题,但几年来我还没有看到这些问题。


这不是答案。筛选必须在您无法控制的IMAP服务器上进行。
reinierpost 2014年

1

对于纯粹的轻巧性,您可以尝试一下Sift


我希望我在imapfilter之前尝试过此方法。
2013年

与imapfilter不同,这似乎是被放弃和维持的。如我错了请纠正我。
selurvedu


0

在Linux和Unix操作系统上,您可以fetchmail用来轮询IMAP电子邮件帐户,并将任何新消息传递给procmail。您可以将procmail配置为基于收到的消息中的正则表达式模式匹配来运行脚本。

为此,您需要安装fetchmail和procmail软件包。以下配置使我可以为电子邮件帐户中收到的每个新电子邮件运行脚本。我使用Ubuntu 12.04 LTS。

~/.fetchmailrc

# .fetchmailrc checks my e-mail account for new messages, sends them to procmail

set logfile /home/myusername/fetchmail.log

poll mail.domain.com protocol IMAP
    user "emailaccountname"
    password 'emailpassword'
    folder 'INBOX'
    keep
    ssl
    mda "/usr/bin/procmail -f %F"

请注意keep上面的指令,该指令可确保在检索邮件后不会将其从IMAP服务器中删除。

~/.procmailrc

# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh

# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`

在线上有很多关于fetchmail和procmail的教程,以及有关如何将两者集成的教程(这就是我上面提出的方法)。

现在,如果我运行fetchmailfetchmail -v脚本/home/username/myscript.sh针对每个新消息运行一次。我可以在cron中运行fetchmail,或使用set daemon 600指令.fetchmailrc(其中600是两次轮询之间的秒数)将fetchmail配置为作为守护程序运行。


这不是答案。过滤必须在IMAP服务器上进行。
reinierpost 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.