mysql - 如何使用 procmail 过滤采用 Base 64 编码的电子邮件

标签 mysql email ubuntu procmail

我正在尝试使用 Base 64 编码过滤电子邮件,然后解码邮件正文,然后将其传递以进行进一步过滤,但它找不到 header 中电子邮件类型的匹配项,我尝试了内容传输编码和 Content-Type,但在 header 中未找到匹配项。 这是我配置的procmailrc:

DEFAULT=/var/mail/
LOGFILE=$HOME/procmail.log
SHELL=/bin/sh
msgID=""
errorMSG="Error."

:0
* (r|R)@domain.com

:0fw
* ^Content-Transfer-Encoding:.*base64 | mmencode -u -b

{
:0B
* ^()\/[a-z]+[0-9]+
{ msgID = "$MATCH" }

result=`mysql -uxxx -pxxx -e "select data from table1 where id='"$msgID"'`

...

最佳答案

| mmencode -u -b 位置错误。您已将其作为您尝试匹配的正则表达式的一部分 - 当然它不会。

你的意思可能是

:0fw
* r@domain\.com
* ^Content-Transfer-Encoding:.*base64
| mmencode -u -b

或者可能

:0
* r@domain\.com
{
    :0fw
    * ^Content-Transfer-Encoding:.*base64
    | mmencode -u -b
#...
}

Procmail 配方的一般形式是

:0flags
* conditions
action

您可以省略条件以使配方成为无条件的;但该行动是强制性的。你不能忽略它。

如果您更改内容编码,您还应该更新相应的 MIME header (当然,除非您在完成后放弃此消息)。

还请注意 (r|R) 交替是不必要的,因为 Procmail 默认情况下不区分大小写进行匹配。

关于mysql - 如何使用 procmail 过滤采用 Base 64 编码的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32060808/

相关文章:

php - 如何从 mysql 数据库检索数据并填充到 jquery mobile 的 ListView 中

.net - 将附件添加到.NET电子邮件

php - 将所有收到的电子邮件保存到 MySQL 数据库

linux - 安装 linux-headers-2.6.32-042stab085.20

php - 如何从 Ubuntu CLI 运行 Yii 控制台应用程序?

mysql - OpenJPA + Tomcat JDBC 连接池 = 陈旧数据

mysql - 将 Perl SQL 查询的输出保存到散列而不是数组

php mysql like语句从数字数组中获取多个值

php - IMAP_OPEN 使网页崩溃

ubuntu - 将 ionic 应用程序提供给远程系统