Существуют ли какие-либо инструменты для сокращения / объединения нескольких исходящих электронных писем в одно электронное письмо в течение определенного промежутка времени?
Мы разрабатываем приложение, которое запускается на нескольких хостах и отправляет нам уведомления по электронной почте (developers @ gmail.com), когда что-то идет не так, через постфиксный сервер. Однако мы столкнулись с проблемами, из-за которых приложение выдает сотни таких ошибок в быстрой последовательности, что приводит к тому, что Gmail отклоняет наши сообщения. Вот почему нас интересуют, прежде всего, дросселирующие сообщения, но в идеале также объединение сообщений в периодический дайджест, который отправляется не чаще одного раза в минуту. Существуют ли какие-либо инструменты или расширения Postfix, подходящие для нас? Благодарю.
4 ответа
Сообщение об ошибке по электронной почте - это быстрый взлом, но поскольку вы обнаруживаете, что это далеко не идеальное решение.
В лучшем случае предлагаемое вами решение задержит отправку уведомлений.
Я бы порекомендовал взглянуть на Nagios. В дополнение к планированию проверок для запуска в системах также можно настроить прием уведомлений о состоянии системы из других источников (например, по электронной почте), а затем принимать интеллектуальные решения об уведомлениях, автоматических ответах и эскалациях.
Программное обеспечение для рассылки, такое как maiilman, способно отправлять дайджесты сообщений, но я думаю, что они предназначены для ежедневной отправки, а не раз в минуту.
Как насчет запуска собственного сервера для этой цели, который принимает столько писем, сколько необходимо?
Не могли бы вы написать свою заявку на отправку ошибок в файл журнала, а затем периодически отправлять этот файл вам по электронной почте, если он не пустой?
Может быть предпочтительнее обрабатывать эти ошибки на этом уровне, поскольку у вас будет больше контроля над обработкой.
Обычно я предпочитаю программное обеспечение для списков рассылки, такое как Mailman или Majordomo или Policyd для реализации квот отправителей и т. Д. В Postfix, но на этот раз просто по-другому:
Если вы хотите написать какой-нибудь Perl, qpsmtpd можно подключить к Postfix с помощью content_filter
параметр в Postfix. Просто напишите свой собственный qpsmtpd-плагин, который отслеживает удушение и / или ставит в очередь сообщения и объединяет их в одно сообщение, прежде чем, наконец, отправить их.
Это может звучать как большая работа, но на самом деле должно быть удивительно легко. Пару лет назад я написал плагин, который подавлял почту, отправляемую через PHP, и начал помещать их в карантин после определенного порога, чтобы предотвратить спам в сценариях. Бухгалтерия порога была сделана в MySQL. Весь скрипт, включая комментарии и краткий справочный раздел, содержал всего 132 строки кода.
В qpsmtpd уже есть много плагинов, так что просто изучите основы и напишите свои. Это может привести к переизобретению колеса.