Выполнять скрипт при получении нового письма (Postfix / Dovecot)

Я хочу запустить сценарий резервного копирования (.sh), когда я получаю новое письмо на свой почтовый сервер (работающий на Debian с Postfix / Dovecot). Я нашел много сообщений по этой теме, но никто не дал мне рабочего решения. Вот последнее решение, которое я тестировал: https: // stackoverflow. com / questions / 27230324 / run-script-when-postfix-dovecot-get-new-mail . Есть ли у кого-нибудь предложения?

РЕДАКТИРОВАТЬ: Когда я получаю новое письмо, я хочу запустить сценарий bash и позволить postfix / dovecot поместить это новое письмо в папку ~ / Maildir. Я ищу своего рода «промежуточное ПО», которое не блокирует стандартный процесс

1
задан 23 May 2017 в 15:41
2 ответа

Если ваш настоящий вопрос заключается в том, как сохранить резервную копию каждого сообщения, полученного (и отправленного) вашим почтовым сервером, ответ состоит в том, чтобы установить опцию always_bcc и указать почтовый ящик .

В зависимости от ваших настроек вы можете пересылать сообщения, полученные этим почтовым ящиком (или псевдонимом), в сценарий для дальнейшей обработки.

Например, в / etc / aliases :

 mailbox: "| /usr/local/bin/script.pl"

Редактировать на основе комментариев :

Довольно старая школа, но когда ваши пользователи электронной почты являются пользователями системы и имеют домашние каталоги, есть старый файл стиля sendmail .forward , все еще поддерживаемый postfix . Синтаксис немного запутан, но ~ mailuser / .forward со следующим содержимым доставит сообщение в почтовый магазин пользователя и перенаправит его в сценарий:

\mailbox, "| /usr/local/bin/script.pl"
2
ответ дан 3 December 2019 в 20:33

Возможно, вам понадобится postfix milter ?

Вы указываете приложения Milter только для SMTP (их может быть несколько) с помощью параметра smtpd_milters. Каждое приложение Milter идентифицируется по имени слушающего сокета; другие параметры конфигурации Milter будут обсуждаться в следующих разделах. Приложения Milter применяются в указанном порядке, и первое приложение Milter, которое отклоняет команду, переопределит ответы от других приложений Milter.

/etc/postfix/main.cf:
    # Milters for mail that arrives via the smtpd(8) server.
    # See below for socket address syntax.
    smtpd_milters = inet:localhost:portnumber ...other filters...

Общий синтаксис для прослушивания сокетов следующий:

unix:pathname

    Connect to the local UNIX-domain server that is bound to the specified pathname. If the smtpd(8) or cleanup(8) process runs chrooted, an absolute pathname is interpreted relative to the Postfix queue directory.
inet:host:port

    Connect to the specified TCP port on the specified local or remote host. The host and port can be specified in numeric or symbolic form.

    NOTE: Postfix syntax differs from Milter syntax which has the form inet:port@host.

Используйте unix : pathname

0
ответ дан 3 December 2019 в 20:33

Теги

Похожие вопросы