Я хочу запустить сценарий резервного копирования (.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
, все еще поддерживаемый postfix . Синтаксис немного запутан, но ~ mailuser / .forward
со следующим содержимым доставит сообщение в почтовый магазин пользователя и перенаправит его в сценарий:
\mailbox, "| /usr/local/bin/script.pl"
Возможно, вам понадобится 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