# .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`
一个快速的谷歌抛出了IMAPFilter,它看起来像你想要的那样:
根据您的 IMAP 服务器,您可以简单地使用sieve的一些实现。我认为对筛子的最佳支持是赛勒斯提供的。
正如您已经提到的,procmail 是执行此操作的正确方法,因此您可以询问您的电子邮件提供商是否支持它以防万一 - 不会受到伤害。
否则,也许最简单的方法是始终打开一个电子邮件客户端来进行排序等。过去,多个客户端访问同一个 IMAP 邮箱时会出现锁定问题,但我已经多年没有看到这些问题了。
对于纯粹的轻量级,你可以试试Sift 。
另一种方法是使用 ruby gem imap-filter。
https://github.com/flajann2/imap-filter/blob/master/README.org
还有 DSL 的例子,
https://github.com/flajann2/imap-filter/blob/master/examples/default.imap
DSL 是基于 Ruby 的,但您无需了解太多 Ruby 即可使用它。作者承诺在不久的将来提供更多示例,并对功能请求和拉取请求开放。
在 Linux 和 Unix 操作系统上,您可以使用
fetchmail
轮询您的 IMAP 电子邮件帐户,并将任何新邮件传递到procmail
. 您可以将 procmail 配置为根据接收到的消息中的正则表达式模式匹配运行脚本。为此,您需要安装 fetchmail 和 procmail 软件包。以下配置允许我为我的电子邮件帐户中收到的每封新电子邮件运行脚本。我使用的是 Ubuntu 12.04 LTS。
在
~/.fetchmailrc
:请注意
keep
上面的指令,它确保在检索消息后不会从 IMAP 服务器中删除它们。在
~/.procmailrc
:网上有很多关于 fetchmail 和 procmail 的教程,还有关于如何整合这两者的教程(这就是我想出上面的方法)。
现在,如果我运行
fetchmail
或fetchmail -v
脚本/home/username/myscript.sh
为每条新消息运行一次。我可以在 cron 中运行 fetchmail,或者将 fetchmail 配置为使用set daemon 600
in 指令作为守护程序运行.fetchmailrc
(其中 600 是轮询之间的秒数)。