
Как настроить 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 считывает файл в домашнем каталоге пользователя, чтобы определить, как обрабатывать сообщения. Это выходит далеко за рамки просто файла конфигурации — это больше похоже на язык программирования. Он, безусловно, способен на то, что вы просите.
С.