在 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)