到目前为止,我们使用该工具接收新邮件获取邮件。
运行良好。有一个 cron 任务每分钟运行一次。
有没有什么办法可以更快的收到邮件?
我认为有两种方法:
- 解决方案 1:每 30 秒运行一次 cron 任务
- 解决方案 2:也许使用 IMAP 空闲。我的意思是更像守护进程的方式,而不是每分钟被调用的 CLT。
- 解决方案 3:???
解决方案 1 很简单:
* * * * * getmail; sleep 25; getmail
欢迎提供更好的解决方案。
协议:IMAP
答案1
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 添加您需要定制的内容和参数。
答案2
使用 IMAP 和 --idle 选项在守护进程模式下使用 fetchmail 可能会解决问题。请查看手册页,因为其中提到了一些限制。
答案3
更好的解决方案(IMHO):将您的邮件服务器置于可以直接传送到的位置(例如,不是防火墙后面的内部服务器)。
- 使用一些邮件托管服务或某种形式的 VPS 自行运行
- 如果您想将其保存在防火墙后面,请让 MX 成为可以通过 VPN 或类似方式与您的内部邮件服务器通信的机器。
答案4
您是否考虑过在父系统上设置转发?这样可以避免轮询,还可以避免 IDLE 解决方案及其持久连接。在主服务器上,您可以设置某种方式使其到达远程服务器。这可能使用“别名”数据库,也许使用自定义“传输”设置来到达远程计算机。
主服务器上有别名功能和转发功能吗?您正在运行什么邮件传输?