maildrop于subject使用base64编码的问题!急..邮件服务器教程
|
| 论文作者:佚名 论文来源:不详 论文发布时间:2006-6-18 23:55:47 论文发布人:chjchjchj |
减小字体
增大字体
摘要:maildrop于subject使用base64编码的问题!急.. 我现在发现现在所有的信件的主题都使用base64编码. 我使用outlook发送了两封信,一个主题是纯英文(test),一个包含汉字(test一二). 在我的邮箱中察看邮件原文,发现包含中文的已经被编码了. 我想问如何使用maildrop过滤规则来过滤所有包含test的邮件呢? 或者说maildrop能否将编码的主题进行解码呢?
如何进行操作. 各位人兄你们是如何解决的?
gadfly 回复于:2003-05-07 20:41:32maildrop本身不能解码,需要利用外挂的工具来解码,然后再过滤。
addy 回复于:2003-05-08 11:09:29能否提供一个.告诉我使用什么进行解码? 谢谢了!
gadfly 回复于:2003-05-08 12:43:28好像确实没有专门对mail解码的工具
我介绍你几个工具,你自己研究看看: mmencode工具,metamail软件包 mewencode, mew-common软件包
addy 回复于:2003-05-08 23:39:09我有一个设想,就是我将编码的邮件主题分解出来,然后传给外部程序,程序进行解码然后再传入maildrop的变量中.我只要对已经解码的邮件主题进行过滤就可以了. 我写了一个解码程序maildecode [code:1:0197fc4045] #!/usr/bin/perl
# Convert Base64 Or Quoted-printable TO Text
my $a = $ARGV[0] || '';
if ($a=~/^Subject/) { $a = $ARGV[1] || ''; };
if ($a=~/^=\?[\w-]+\?B\?(.*)\?=$/) { use MIME::Base64; $a = decode_base64($1); }; if ($a=~/^=\?[\w-]+\?Q\?(.*)\?=$/) { use MIME::QuotedPrint; $a = decode_qp($1); };
# USE FOR Test open(OUTFILE, ">/tmp/list.log"); print OUTFILE $a; close(OUTFILE);
print $a;
exit(0); [/code:1:0197fc4045]
然后更改.mailfilter 文件
[code:1:0197fc4045] SHELL="/bin/sh"
if (/^Subject:.*/) { SUBJECT=$MATCH }
if ($SUBJECT ne "") { NSUB='/usr/local/bin/maildecode $SUBJECT '
log "$NSUB"
if ($NSUB=~/^Subject:.*[ ]test$/) { to "/home/vpopmail/domains/domain_name/a1/Maildir/.1052105760/" } }
[/code:1:0197fc4045]
但是我发现maildrop没有执行我这个外部程序,NSUB的内容就是 '/usr/local/bin/maildecode $SUBJECT '字符串, maildecode 没有执行.
我想问为什么,那里错了? 如何更改. 此方法是否可行?
gadfly 回复于:2003-05-09 10:48:04有两个地方有问题: 首先perl脚本,subject的标题内容不是开始的 所以改成: [code:1:fd9754dabc] if ($a=~/=\?[\w-]+\?B\?(.*)\?=$/) { .... if ($a=~/=\?[\w-]+\?Q\?(.*)\?=$/) { .... [/code:1:fd9754dabc]
其次,maildrop filter中,外部文件的执行用反撇,所以,那句话改成 NSUB=`/usr/local/bin/maildecode $SUBJECT `
addy 回复于:2003-05-09 11:08:01谢谢已经成功解决了 maildecode 程序 [code:1:f486c6bb70] #!/usr/bin/perl
# Convert Base64 Or Quoted-printable TO Text
my $a = $ARGV[0] || '';
if ($a=~/^Subject/) { $a = $ARGV[1] || ''; };
if ($a=~/=\?[\w-]+\?B\?(.*)\?=$/) { use MIME::Base64; $a = decode_base64($1); }; if ($a=~/=\?[\w-]+\?Q\?(.*)\?=$/) { use MIME::QuotedPrint; $a = decode_qp($1); };
#open(OUTFILE, ">/tmp/list.log"); #print OUTFILE $a; #close(OUTFILE);
print $a;
exit(0); [/code:1:f486c6bb70]
在.mailfilter中加入 [code:1:f486c6bb70] if (/^Subject:.*/) { SUBJECT=$MATCH }
if ($SUBJECT ne "") { NSUB=`/usr/local/bin/maildecode $SUBJECT ` }
[/code:1:f486c6bb70] 以后所有的主题过滤只要对$NSUB进行过滤即可
在此感谢gadfly兄的帮助,非常感谢!!!
HonestQiao 回复于:2004-01-31 00:02:51咱现在需要这个,在这方面真的经验太少,还希望多多指点一下子,该怎么应用$NSUB呢?
全英文标题邮件,过滤test,规则如下: 包含test标题的信件全部垃圾箱 [code:1:270f2bf4ac]if(/^Subject:.*test*/ || /^Subject:.*TEST*/) { to "/mail/sms.org/test/Maildir/.Trash/." } to "/mail/sms.org/test/Maildir/."[/code:1:270f2bf4ac]
如今中文的标题包含test [code:1:270f2bf4ac]if (/^Subject:.*/) { SUBJECT=$MATCH }
if ($SUBJECT ne "") { NSUB=`/usr/local/bin/maildecode $SUBJECT ` }
if($NSUB=~/^.*test*/ || $NSUB=~/^.*TEST*/) { to "/mail/sms.org/test/Maildir/.Trash/." } to "/mail/sms.org/test/Maildir/."[/code:1:270f2bf4ac]
可是没有任何效果哦. 我想可能是我这里: [code:1:270f2bf4ac]if($NSUB=~/^.*test*/ || $NSUB=~/^.*TEST*/)[/code:1:270f2bf4ac]
错误了,我在这方面的经验少,希望大伙给个正确的写法
myblessu 回复于:2004-12-13 09:39:42我正需要这知识,哪位兄弟在讲讲.
abel 回复于:2004-12-13 19:35:03這個問題完全沒考慮 charset 問題,只考慮了 MIME 或 QP 還原可能稍 嫌不足 , 所謂若 local encoding 與你的 patten 相符固然沒問題, 若人家以 UTF8 傳來,還是檔不到 ,EX: =?UTF-8?B?5q2j5Zyo5a+E6YC....
NSUB=`/usr/local/bin/maildecode $SUBJECT ` 這個 SUBJECT 若有 ' " 等,有時也會有問題 若不懂我的意思,再想想 `ls -la "a ` 可以跑嗎 ?
|
|
|
|
|
|
|
| ∷相关技术评论 |
(评论内容只代表网友观点,与本站立场无关!) [查看发表评论...] | |
|
|
| |
站内广告 |
| |
|
站内搜索 |
| |
栏目导航 |
| |
|
|
本月热门 |
| |
|
|
本日热门 |
| |
|
|
|