次のシーンがあります。
GNU/Linux マシンの SMTP サーバーはメールを受け入れています。受け入れられたメールは、さらに処理するために procmail に送信されています。これが私の.procmailrcです:
VERBOSE=yes
LOGFILE=$HOME/procmail.log
SUBJECT=`formail -xSubject: | tr -d '\n' | sed -e 's/^ //' | /usr/bin/perl -MEncode -ne 'print encode ("utf8",decode ("MIME-Header",$_ )) '`
FROM=`formail -rt -xTo:`
DATE=`formail -xDate:`
BODY=`formail -I ""`
:0fbW
* ^From.*some_special_name@special_server.com
| echo "FROM:$FROM" > $HOME/res.txt; \
echo "DATE:$DATE" >> $HOME/res.txt; \
echo "SUB:$SUBJECT" >> $HOME/res.txt; \
echo "BODY:" >> $HOME/res.txt; \
echo $BODY >> $HOME/res.txt; process.py
この小さなスクリプトは、最初にローカル ファイル$HOME/res.txtを作成し、次にprocess.pyという別のスクリプトを起動します。これで、$HOME/res.txtに次のエントリが入力されます。
FROM:some_special_name@special_server.com
DATE:Mon, 06 Oct 2014 13:14:32 +0200
SUB:Some subject
BODY:
This is a multi-part message in MIME format. --------------030006020609010705060803 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello, Some kind of long tekst where I cannot see the line feed chars nor any other control chars...
本文には、本文の元の形式のない生の文字列が含まれています。これが意味するのは、\n または \t 文字が除外されるということです。process.pyスクリプトは、メール メッセージの元の形式を維持するために、メッセージの本文部分を要求します。
どうすればこれを達成できますか?