从同一个fetchmail客户端读取多个imap.gmail.com

时间:2012-02-08 18:44:02

标签: connection imap polling gmail-imap fetchmail

对于我的投资组合软件,我一直使用fetchmail通过IMAP从Google电子邮件帐户中读取内容,生活一直很好。由于imap3支持空闲连接的奇迹,我的触发器由于服务器推送而近乎实时地触发,比定期轮询允许的更快。

在我的基本.fetchmailrc设置中,经纪客户的帐户通过电子邮件将通知交易到专用的Gmail / Google Apps框,我已经

poll imap.gmail.com proto imap user "youraddress@yourdomain-OR-gmail.com" pass "yoMama"  keep nofetchall ssl  idle mimedecode limit 29000 no rewrite mda "myCustomSpecialMDAhandler.sh  %F %T"

麻烦的是,现在我需要支持从多个电子邮箱中读取,并将电子邮件发送到我写的其他专用MDA脚本。没问题,只需向.fetchmailrc添加更多民意调查行,对吧?当其他帐户也使用 imap.gmail.com 时,这不起作用。最终发生的事情是,虽然一个帐户读取正常(并且没有必要列出的第一个帐户,但通常是肯定的),另一个帐户整天都收到“套接字错误”并且电子邮件保持不变,未读。我无法弄清楚为什么,甚至不确定它是否是imap.gmail.com的某种机制,例如。限制来自主机的一个IMAP连接。这似乎不对,因为我已将IMAP连接到许多单独的Gmail&多年来,Google Apps帐户来自同一个客户端(例如 Thunderbird ),并且从未注意到此排他性问题。

我没有尝试使用单独的 -f 配置文件启动多个fetchmail守护程序(假设它们不会冲突),或者另外部署一个或多个getmail和其他类似的电子邮件提取程序。仍然试图避免那种混乱 - 我不得不监视的盒子越来越多。

1 个答案:

答案 0 :(得分:0)

不要在fetchmail的文档中找到参考文件,我记得曾读过空闲并不是 imap 功能作为fetchmail可选技巧,它有一个(令人讨厌的)副作用,从轮询中阻止所有其他已定义的帐户,直到连接被某些外部事件或超时切断。所以至少这会证明谷歌。

感谢Carl's Whine Rack博客提供的一些提示。

现在我定期从killall fetchmail; fetchmail -f fetcher.$[$RANDOM % $numaccounts].rc使用crontab来循环阅读每个fetcher.1.rcfetcher.2.rc等单独定义的帐户。在电子邮件事件相对不频繁时可接受。< / p>