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

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

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

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

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

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

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

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

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

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

\mailbox, "| /usr/local/bin/script.pl"

Может быть тебе нужно постфикс milter?

Вы указываете SMTP-приложения Milter (их может быть несколько) с помощью параметра 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