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 (как я описал в вопросе).

Другие вопросы по тегам