Задача: при получении электронного письма от (конкретный адрес) на (конкретный адрес) сообщение необходимо проанализировать и выполнить некоторые действия.
Чтобы быть более конкретным. Одно из наших программ для кадрового учета отправляет мне электронные письма о настройке пересылки почты - пользователь вышел на пенсию, ушел в отпуск или просто заболел. HQ считает, что настройка пересылки - это работа системного администратора.
Хорошо, чтобы упростить работу, я написал сценарий bash, который принимает 4 параметра: начальную и конечную даты пересылки и два адреса - от кого и кому пересылать. Сценарий вызывает zmprov для внесения необходимых изменений и сохраняет данные в псевдо-БД, которые, в свою очередь, обрабатываются в cron.daily.
По прибытии сообщения я копирую из него даты и адреса и вставляю их как параметры интерфейса командной строки для сценария.
Поскольку содержимое этих писем структурировано, я думаю, что могу написать парсер, который извлечет информацию и автоматически запустит мой скрипт.
Но я не знаю, как запустить этот парсер. В старом FidoNET было много так называемых «почтовых роботов» - программ, активированных для обработки входящих сетевых / эхо-писем. API был задокументирован и достаточно понятен - почтовая программа или процессор эхопочты могли инициировать событие, а робот мог быть запущен при необходимости.
В Zimbra я нашел только один способ: использовать milters с его sendmail. Ежедневный объем писем на моем сервере составляет около 50-75 килограммов сообщений, и запуск milter для каждого сообщения контрпродуктивен - примерно 1-5 запросов на пересылку в неделю.
Есть ли способ запустить что-то по данным сообщения, а не по факту его прихода?
Ну ... кроме меня никто не автоматизирует обработку почты с помощью Zimbra. Пусть будет так.
Это решение, которое я сделал:
Несколько результатов исследования есть в моем блоге.
Спасибо всем, кто молчал. Ты сделал меня сильнее.