Я хочу выполнить сценарий резервного копирования (.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