2017-11-02 8 views
0

これは、被写体に応じて、電子メールをフィルタリングするための簡単なProcmailのレシピです:Procmailのレシピを使用してbase64でエンコードされた電子メールの件名をデコードするには?

:0 
* ^Subject: .*Content to filter 
$HOME/Maildir/.INBOX.My_filtered_folder/ 

上記の非常にシンプルなのProcmailレシピは問題なく動作します。だから、上記のレシピのように電子メールをフィルタリングできるようにするには、最初にこのエンコードされた件名コンテンツを復号化するために必要なの

Subject: =?UTF-8?B?VmlldGFsaXMgUG9sZXBl?= 
=?UTF-8?B?bGwaY29tbWVudPVkIG9u?= 
=?UTF-8?B?IGAgbGlubyBCYWPrcGFj?= 
=?UTF-8?B?a2Vw4oDZcyBGZWxpY3l0eSA=?= 
=?UTF-8?B?c3hjckVkLg==?= 

:しかし、いくつかのメールは、次の例のように件名コンテンツをBase64エンコードを持っています。

Subjectのコンテンツ(Debian 7)をフィルタする前に、Procmailのレシピ内でbase64でエンコードされた電子メールの件名をどのようにデコードすることができますか?

この質問は、 "Sendmail/procmail - メールの送信者とメールの件名を取得する、utf8のエンコードの問題[閉じた]"という質問と重複しているわけではありません。

+1

なぜこれをPerlとしてタグ付けしましたか?これらのフィルタでPerlコードを実行できますか、またはProcmailがPerlで書かれているか、PCREフレーバの正規表現ですか?最初のオプションだけがPerlタグに関連しています。 – simbabque

+0

[Sendmail/procmail - メールの送信者とメールの件名、utf8エンコーディングの問題を取り除く]の可能な複製(https://stackoverflow.com/questions/11726354/sendmail-procmail-get-mail-sender-and-mail-subject-utf8 -encoding-issues) – tripleee

+0

はい、ProcmailでPerlコードを実行できます。おそらく、Perlスクリプトを使用するソリューションがあります。 – Monty

答えて

2

LinuxおよびMacOSマシンには、しばしば「base64」プログラムがインストールされています。特にPerlで同じことを行うには、次のようなコマンドラインからの呼び出しでは動作します:QWxhZGRpbjpvcGVuIHNlc2FtZQ ==あなたのbase64文字列をある

$ perl -MMIME::Base64 -e 'print decode_base64("QWxhZGRpbjpvcGVuIHNlc2FtZQ==");' 

。私の.procmailrcで

は、私はこのようなことを行っている:

formail -i "Subject: `perl -MMIME::Base64 -e 'print decode_base64($SUBJECT)' `" 

: "いくつかの-外部アプリが" BASE64プログラム、または適切なPerlの呼び出し可能性があり

SUBJECT=`formail -x Subject:` 

:0 
{ 
# You would use 'fbw' to scan the body 
:0 fw 
# presumably any base64 message will have this content header 
* ^Content-Transfer-Encoding: base64 
| some-external-app 
} 

またはその他のもの。私のマシン(AMD上のNetBSD 7.1)で

base64ではそうのようにのように動作します:

base64 -d 

が、メーリングリストへのプラットフォームからプラットフォームへ。

また、現実には、電子メールはしばしば野生のものであり、上記のレシピを現実に合わせて微調整する必要があるかもしれません。しかし、うまくいけば、あなたはそのアイデアを得ます

意図していない結果を追跡できるように、.procmailrcにLOGFILE変数を設定することをお勧めします。もっと良いことに、procmail ;-)以外のものを使用してください。

+0

ありがとうございます。もう少し詳しく説明できますか? 1.「件名が$ PATTERNと一致していれば」とはどういう意味ですか? 2. "良いことに、procmail以外のものを使用する" - 残念ながら、私はこのシステム上でこれを変更することはできません。 Sieve - しかしProcmailは本当に素晴らしい。 – Monty

関連する問題