До сих пор мы получаем новые письма с помощью инструмента получить почту.
Это работает хорошо. Есть задание cron, которое запускается каждую минуту.
Есть ли способ получить почту быстрее?
Я вижу два пути:
Решение 1 простое:
* * * * * getmail; sleep 25; getmail
Приветствуются лучшие решения.
Протокол: IMAP
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, которые вам нужны.
fetchmail в режиме демона с IMAP и опцией --idle может помочь. Пожалуйста, взгляните на страницу руководства, так как в ней упоминаются некоторые ограничения.
Лучшее решение (IMHO): разместите свой почтовый сервер в таком месте, где он может быть доставлен напрямую (например, не на внутренний сервер за брандмауэром).
Вы изучали возможность настройки пересылки в родительской системе? Это позволяет избежать опроса, а также решений IDLE и их постоянных соединений. На главном сервере вы настраиваете способ связи с удаленным сервером. Это может использовать базу данных «псевдонимов», возможно, с настраиваемой настройкой «транспортов» для доступа к удаленному компьютеру.
Есть ли у вас возможность псевдонима и пересылка на главном сервере? Какой почтовый транспорт у вас установлен?