На моем сервере Ubuntu работает Postfix, и я хотел бы настроить его для запуска команды при получении определенных писем. Например, если я отправляю себе электронное письмо из учетной записи gmail с темой «todo», я бы хотел, чтобы Postfix добавил тело сообщения в / home / brian / todo.
Из прочтения документации Postfix я только видел, как настроить правила для отклонения писем с кодами ошибок. Так что, возможно, Postfix не подходит для этой работы, и в этом случае я был бы признателен за отзывы о более подходящем инструменте.
Спасибо, Брайан
[Обновление: 20090616] Продолжая выбранный ответ, вот мой .procmailrc:
:0
* ^To.*john@doe.com
* ^Subject.*specialsubject
| ~/bin/extract_email_body.py >> ~/todo
А вот ~ / bin / extract_email_body.py:
#!/usr/bin/python
import sys
import email
def print_plain_text_parts(msg):
if msg.is_multipart():
for part in msg.get_payload():
print_plain_text_parts(part)
elif msg.get_content_type() == 'text/plain':
print(msg.get_payload().strip())
msg = email.message_from_file(sys.stdin)
print_plain_text_parts(msg)
попробуйте это - поместите в / etc / aliases:
username: "|/your/script"
а затем запустить
postalias /etc/aliases
когда электронная почта приходит на адрес username@yourdomain.org / ваш / скрипт будет выполнен и получит содержимое сообщения [со всеми заголовками] на стандартный ввод. Боюсь, вам придется проверить эту тему самостоятельно.
вы можете использовать procmail для фильтрации писем по теме. Тогда у вас будет возможность запустить любую команду в ответ на электронное письмо или оставить ее нетронутой и доставить в свой почтовый ящик.
Ты можешь читать быстрый запуск procmail это отличная статья.
Чтобы включить использование procmail, поместите файл ".forward" в домашний каталог вашего пользователя и сделайте его содержимое таким
| "/usr/bin/procmail"
Затем напишите свои "рецепты" procmail в ~/.procmailrc
Обратите внимание, что большинство других параметров фильтрации (например, сито) не позволяют выполнять произвольные команды.
Если вы хотите, чтобы некоторые электронные письма на указанный адрес запускали команду (на основе их темы или чего-то еще), а другие доставлялись как обычное электронное письмо, вам придется использовать procmail, как описано выше. Использование / etc / aliases приведет к тому, что каждое сообщение, отправленное на этот адрес, будет вызывать указанную команду (и не будет доставлено через механизм локальной доставки).