将原始电子邮件消息通过管道传输到 Python 脚本

将原始电子邮件消息通过管道传输到 Python 脚本

在 exim4 中,我使用以下管道向 python 脚本发送消息,处理它,并将其上传到 django:

send_to_django_mailbox:
  driver = pipe
  command = /usr/local/bin/python /etc/exim4/conf.d/transport/send_mail.py $message_body  $message_headers_raw
  return_path_add
  delivery_date_add

而不是传入$message_body$message_headers_raw我想传入非常原始的消息,不进行任何替换。我该如何实现?我找不到变量message_raw或类似的东西。

答案1

Exim 可以将消息通过管道传送到另一个进程,然后可以通过文件从该进程访问消息/dev/stdin。例如,我们可以从 shell 逐行读取消息,如下所示:

#!/bin/sh

while read line
do 
  echo (( $line ))
done < /dev/stdin
#####

答案2

好吧,我太笨了,我应该更仔细地阅读文档:

纯文本消息通过 stdin 发送到脚本,我不需要通过命令行参数传递它。

在 Python 中它就像

import sys

for line in sys.stdin:
    the_file.write(line)

相关内容