procmail在内容上给予“不匹配”

我正试图让procmail解码一个base64编码的附件。 首先,我遵循一个简单的配方,在这里找到:

http://www.linuxquestions.org/questions/linux-software-2/procmailrc-decode-data-from-base64-encoded-emails-trying-to-decode-with-uudeview-933670/

但是,它似乎procmail找不到匹配项:

procmail: [7459] Mon Aug 10 10:54:43 2015
procmail: Assigning "LOGFILE=/home/myself/procmail.log"
procmail: Opening "/home/myself/procmail.log"
procmail: Assigning "LOGABSTRACT=yes"
procmail: Assigning "LINEBUF=65535"
procmail: No match on "^Content-Type: *text/plain"
procmail: Locking "/home/myself/scratch/prc.out.lock"
procmail: Assigning "LASTFOLDER=/home/myself/scratch/prc.out"
procmail: Opening "/home/myself/scratch/prc.out"
procmail: Acquiring kernel-lock
procmail: Unlocking "/home/myself/scratch/prc.out.lock"
Subject: FMSG:219
Folder: /home/myself/scratch/prc.out                     8312
[168]%

我的〜/ .procmailrc非常简单:

SHELL=/bin/sh
PATH=/bin:/usr/bin/:/sbin:/usr/sbin:$PATH
MAILDIR=$HOME/scratch   # this is a symlink to a scratch disk
DEFAULT=$HOME/scratch/prc.out
VERBOSE=yes
LOGFILE=/home/myself/procmail.log
LOGABSTRACT=yes
LINEBUF=65535

:0
* ^Content-Type: *text/plain
{
        :0 fbw
        * ^Content-Transfer-Encoding: *base64
        | $HOME/mmencode -u -b

        :0 Afhw
        | formail -I "Content-Transfer-Encoding: 8bit"
}

这是邮件文件的开始:

Return-Path: <unknown>
Delivered-To: unknown
From: <user1>
To: ole <user2>
Date: Mon, 20 Jul 2015 14:46:49 +0200
Subject: FMSG:219
Message-ID:  <6959f239-gf41-4339-a526-a0337a17a9ba@test.local>
Accept-Language: en-US
Content-Language: en-US
Content-Type: multipart/mixed;
boundary="_002_6959f239a4d111111111111111111111111111111oletestl_"
MIME-Version: 1.0

--_002_6959f239a4d111111111111111111111111111111oletestl_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


--_002_6959f239a4d111111111111111111111111111111oletestl_
Content-Type: application/x-ole-envelope; name="20150720"
Content-Description: ole envelope
Content-Disposition: attachment; filename="20150720"; size=5528;
creation-date="Mon, 20 Jul 2015 12:46:52 GMT";
modification-date="Mon, 20 Jul 2015 12:46:52 GMT"
Content-Transfer-Encoding: base64

SDRzSUFBQUFBQUFBQzYxWFdZK2pXTEordnBiOEgxTDEwZzhvaDgxZ3V6dXJSb2ZGZ0EzWWJHWVp6
UU83d1d4bU1kaS8vaDY3DQpNcnV5ZW5wNjVrbzNKU3NoNG9zNHNaOUFrUlQrOVJpM1hWWlh2Nzdn
THQzOUFsMTVsVm5vQmg4TS8vL0hIS3ZqblA0NzRQMkZtdjJ0NDlpSDYzb2h2NkhzamYvdC9IVUZS

...

--_002_6959f239a4d6959f239a4d111111111111111111111111111111oletestl_

如果我尝试匹配“内容类型:多部分/混合”,我确实会匹配:

procmail: Match on "^Content-Type: multipart/mixed;"
procmail: No match on "^Content-Transfer-Encoding: *base64"

但不是在以下的... :(

与尝试类似

procmail: No match on "^Content-Type: application/x-ole-envelope"

我错过了什么?

谢谢


正则表达式中的消息头没有匹配。 如果你想在正文中找到一个匹配(包括但不限于MIME正文部分头),使用B标志; 但适当的MIME支持将比这更复杂,并且在Procmail中几乎不可能做到。

您正在复制的配方非常专用于标准化单部分text/plain消息,而不是多部分。

你的问题很笼统,所以我只能用广义的术语来提出替代方案。 也许可以根据一些正则表达式将消息传递给类似munpack东西,这些正则表达式很可能在Procmail中表达; 但对于任何更复杂的内容,可能都会通过专门的Python(或Perl或Ruby等)脚本进行传输。

链接地址: http://www.djcxy.com/p/50957.html

上一篇: procmail giving "no match" on content

下一篇: Grails Form POST with missing params when form Content