Выполнение команды после получения электронного письма

Выполнение команды после получения электронного письма

Как настроить Postfix на выполнение команды при получении электронного письма на указанный адрес/имя пользователя или, возможно, электронного письма, содержащего какой-либо текст?

решение1

Нет возможности сопоставления по тексту, но вы можете пересылать все сообщения на адрес в программу.

Вам нужно добавить псевдоним в файл псевдонимов вашей системы, обычно /etc/postfix/aliases или в файл .forward пользователя. Первый вариант более гибкий, потому что вы можете иметь псевдоним для адреса, который на самом деле не отображается на учетную запись.

Псевдоним должен быть примерно таким:

|/usr/local/bin/command

Вам следует указать полный путь, поскольку вы не знаете контекста, в котором он будет выполнен.

Если ваша программа завершается с кодом 67, то это будет означать возврат сообщения как неизвестного пользователя, 0 — сброс сообщения. Все остальное будет повторяться до тех пор, пока не истечет время ожидания сообщения и оно не будет возвращено.

Будьте осторожны с безопасностью — по сути, вы позволяете любому человеку в Интернете запускать программу на вашей системе, поэтому не доверяйте пользовательскому вводу и очищайте его перед использованием.

решение2

Прошло уже некоторое время с тех пор, как я в последний раз игрался с Postfix, но, насколько я понимаю, он обычно поставляется в комплекте с довольно простым MDA, но он все равно может понимать файлы .forward в домашнем каталоге пользователя. Вам нужно будет прочитать документацию и конфигурацию Postfix, чтобы узнать, как настроен MDA.

Папа всех MDA (IMHO) - procmail. Вы можете заменить текущий MDA на procmail в вашем main.cf - см.http://www.postfix.org/faq.html#procmail

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

С.

Связанный контент