使用 postfix 执行选择电子邮件的命令

使用 postfix 执行选择电子邮件的命令

我的 Ubuntu 服务器上运行着 Postfix,我想配置它,让它在收到某些电子邮件时运行命令。例如,如果我从 gmail 帐户向自己发送主题为“todo”的电子邮件,我希望 Postfix 将邮件正文附加到 /home/brian/todo。

通过阅读 Postfix 文档,我只看到了如何配置规则以拒绝带有错误代码的电子邮件。因此,Postfix 可能不是适合这项工作的工具,在这种情况下,我希望得到有关更合适工具的反馈。

谢谢,布莱恩

[更新:20090616] 扩展所选答案,这是我的.procmailrc:

:0
* ^To.*[email protected]
* ^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)

答案1

您可以使用 procmail 根据主题过滤电子邮件。然后,您可以选择运行任何命令来响应电子邮件,或者您可以不做任何处理,将其发送到您的邮箱。

你可以阅读procmail 快速入门这是一篇优秀的文章。

要启用 procmail,请在用户主目录下放置一个“.forward”文件,并使其内容如下

| "/usr/bin/procmail"

然后写下你的procmail“食谱”~/.procmailrc

请注意,大多数其他过滤选项(如筛选)不允许您执行任意命令。

答案2

尝试一下-放入/etc/aliases:

username: "|/your/script"

然后运行

postalias /etc/aliases

当电子邮件到达[电子邮件保护]/your/script 将被执行,并将接收到消息内容 [ 包含所有标题 ] 到 stdin。恐怕你必须自己检查主题。

答案3

如果您只希望发送到指定地址的某些电子邮件触发命令(基于其主题或其他内容),而其他电子邮件则以普通电子邮件形式发送,则必须使用上述 procmail。使用 /etc/aliases 将导致发送到该地址的每封邮件都调用指定的命令(并且不会通过本地传递机制进行传递)。

相关内容