guettli Asked: 2019-09-14 23:34:34 +0800 CST2019-09-14 23:34:34 +0800 CST 2019-09-14 23:34:34 +0800 CST 立即收到新邮件 772 到目前为止,我们使用工具getmail收到新邮件。 它运作良好。有一个每分钟运行的 cron 作业。 有没有办法让邮件更快? 我看到两种方法: 解决方案 1:每 30 秒运行一次 cron 作业 解决方案 2:也许使用 IMAP 空闲。我的意思是一种更像守护进程的方式,而不是每分钟都会调用的 CLT。 解决方案3:??? 解决方案1很简单: * * * * * getmail; sleep 25; getmail 欢迎更好的解决方案。 协议:IMAP email 4 个回答 Voted Best Answer Stefan Seidel 2019-09-17T00:09:43+08:002019-09-17T00:09:43+08:00 getmail 似乎支持 IMAP IDLE。因此,您可以编写一个简单的 systemd 作业: [Unit] Description=Starts getmail After=network.target [Service] ExecStart=/usr/bin/getmail --idle=INBOX Restart=on-failure [Install] WantedBy=multi-user.target 放入/etc/systemd/system/getmail-idle.service并运行systemctl enable --now getmail-idle。 当然,您可能需要在User=getmail 中添加您需要为您量身定制的内容和参数。 Tomek 2019-09-14T23:41:57+08:002019-09-14T23:41:57+08:00 使用 IMAP 和 --idle 选项在守护程序模式下 fetchmail 可以解决问题。请查看手册页,因为它提到了一些限制。 Sven 2019-09-15T02:05:40+08:002019-09-15T02:05:40+08:00 更好的解决方案(恕我直言):将您的邮件服务器放在可以直接发送到的位置(例如,不是防火墙后面的内部服务器)。 使用一些邮件托管服务或某种形式的 VPS 自己运行它 如果您想将其保留在防火墙后面,请让 MX 成为一台可以通过 VPN 或类似设备与您的内部邮件服务器通信的机器。 Tim Riker 2019-09-17T15:34:50+08:002019-09-17T15:34:50+08:00 您是否考虑过在父系统上设置转发?这避免了轮询的需要,也避免了 IDLE 解决方案及其持久连接。在主服务器上,您设置了某种方式让它到达远程服务器。这可能使用“别名”数据库,可能使用自定义“传输”设置来访问远程机器。 您在主服务器上是否具有别名功能和转发功能?您正在运行什么邮件传输?
getmail 似乎支持 IMAP IDLE。因此,您可以编写一个简单的 systemd 作业:
放入
/etc/systemd/system/getmail-idle.service
并运行systemctl enable --now getmail-idle
。当然,您可能需要在
User=
getmail 中添加您需要为您量身定制的内容和参数。使用 IMAP 和 --idle 选项在守护程序模式下 fetchmail 可以解决问题。请查看手册页,因为它提到了一些限制。
更好的解决方案(恕我直言):将您的邮件服务器放在可以直接发送到的位置(例如,不是防火墙后面的内部服务器)。
您是否考虑过在父系统上设置转发?这避免了轮询的需要,也避免了 IDLE 解决方案及其持久连接。在主服务器上,您设置了某种方式让它到达远程服务器。这可能使用“别名”数据库,可能使用自定义“传输”设置来访问远程机器。
您在主服务器上是否具有别名功能和转发功能?您正在运行什么邮件传输?