我的 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 将导致发送到该地址的每封邮件都调用指定的命令(并且不会通过本地传递机制进行传递)。