Назад | Перейти на главную страницу

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. Проблема в том, что мне как-то нужно все «выбросить» обратно в голубятню. Или, может быть, есть подход получше, о котором я не знаю.

Я ценю каждую идею или подсказку в этом случае.

Ваш сценарий должен действовать как Пример простого фильтра содержимого из официальной документации Postfix. После postfix отправьте письмо через pipe, вы должны повторно отправить его через sendmail команда. Фрагмент с этой страницы

Postfix получает нефильтрованную почту из сети с smtpd (8) сервер, и доставляет неотфильтрованную почту в фильтр содержимого с помощью Postfix труба (8) Агент доставки. Фильтр содержимого вводит отфильтрованную почту обратно в Postfix с помощью команды Postfix sendmail (1), так что Postfix может доставить ее в конечный пункт назначения.

Решил проблему с созданием «собственного» сценария доставки. Фактически, сценарий доставки dovecot все еще используется и находится внутри моего собственного, но перед доставкой сообщения в почтовый ящик мой сценарий выполняет то, что я хочу достичь. Конечно, мне пришлось изменить virtual_transport в main.cf vonfiguration, а также создать ловушку в файле master.cf (как я описал в вопросе).

Обычно вы захотите повторно вставить свои сообщения обратно в постфикс из своего скрипта, вместо использования фильтра содержимого, я думаю, что перед очередью milter может лучше подойти для вашего случая использования.