postfix/dovecot - запускать скрипт при получении почты
Мне нужно реализовать решение на моем сервере postfix/dovecot, который будет выполнять скрипт bash каждый раз, когда приходит сообщение. Для этого я сделал следующие вещи в конфигурации master.cf
myhook unix - n n - - pipe
flags=F user=customUser argv=/path/to/script.sh ${sender} ${recipient}
smtp inet n - - - - smtpd
-o content_filter=myhook:dummy
Работает нормально, если вы не хотите, чтобы письма доставлялись в почтовые ящики через dovecot. Проблема в том, что мне как-то нужно "выбросить" все обратно, чтобы сделать голубятню. Или, может быть, есть лучший подход, который я не знаю.
Я ценю каждую идею или совет в этом случае.
3 ответа
Ваш скрипт должен действовать как пример простого фильтра содержимого из официальной документации Postfix. После постфикса отправьте письмо через pipe
, вы должны повторно отправить его через sendmail
команда. Фрагмент с этой страницы
Postfix получает нефильтрованную почту из сети с помощью сервера smtpd(8) и доставляет нефильтрованную почту фильтру содержимого с помощью агента доставки Postfix pipe (8). Фильтр содержимого внедряет отфильтрованную почту обратно в Postfix с помощью команды Postfix sendmail(1), чтобы Postfix мог доставить ее в конечный пункт назначения.
Как правило, вы захотите повторно внедрить ваши сообщения обратно в постфикс из вашего скрипта, вместо использования фильтра содержимого, я думаю, что до очереди очереди лучше подойдет для вашего варианта использования.
Я решил проблему с созданием "собственного" скрипта доставки. Фактически, скрипт доставки dovecot все еще используется и находится внутри моего собственного, но перед доставкой сообщения в почтовый ящик мой скрипт выполняет то, чего я хочу достичь. Конечно, мне пришлось изменить 'virtual_transport' в main.cf vonfiguration, а также создать хук в файле master.cf (как я описал в вопросе).