ORF反垃圾邮件系统

邮件服务器-邮件系统-邮件技术论坛(BBS)

 找回密码
 会员注册
查看: 8301|回复: 0
打印 上一主题 下一主题

《qmail+vpopmail邮件过滤(练习篇)》★

[复制链接]
跳转到指定楼层
顶楼
发表于 2003-6-23 15:19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
★原文转载自openbsd版zenz.hu的《qmail+vpopmail邮件过滤(练习篇)》★ <br>
最近正在研究qmail+vpopmail的邮件过滤,找了很多相关的软件,都觉得不好,主要是讨厌他们的依附关系太复杂,有的甚至还要对qmail进行改动,嫌太麻烦。 <br>
然后在inter7.com发现了eps,目前是0.5。研究了一下,搞了一个相当暴力的过滤方法出来,有兴趣的就看看吧。 <br>
<br>
练习的前提是qmail+vpopmail已经装好,而且正常运作。 <br>
<br>
首先当然是下载eps了,在Inter7.com下载。展开源代码包后 <br>
make <br>
make install <br>
就可以了。 <br>
<br>
然后写了这个小程序mime.c <br>
<br>
#include <stdio.h> <br>
#include <eps.h> <br>
<br>
char *exts[]={ <br>".vbs", <br>".scr", <br>".exe", <br>".com", <br>NULL <br>
}; <br>
<br>
int efilter_check_mime(struct mime_t *m) <br>
{ <br>int i = 0; <br>int p = 0; <br>
<br>if (!(m->filename)) <br>return 0; <br>
<br>for (i = 0; exts[i]; i++) { <br>if (m->filename) { <br>p = strstr(m->filename, exts[i]); <br>if (p) { <br>return 1; <br>} <br>} <br>} <br>
<br>return 0; <br>
} <br>
<br>
<br>
<br>
int main(int argc, char *argv[]) <br>
{ <br>int ret = 0; <br>char *l = NULL; <br>struct mime_t *m = NULL; <br>struct header_t *h = NULL; <br>struct eps_t *eps = NULL; <br>
<br>if (argc < 2) <br>
eps = eps_begin(INTERFACE_STDIN, NULL); <br>
else <br>
eps = eps_begin(INTERFACE_FILENAME, argv[1]); <br>
<br>
if (!eps) <br>
return 1; <br>
<br>
/* <br>
Examine headers for Content/MIME information <br>
Pass information off to EPS' internals <br>
*/ <br>
for (h = eps_next_header(eps); h; h = eps_next_header(eps)) { <br>
if ((h->name) && (h->data)) <br>eps_header_internal(eps, h); <br>} <br>
<br>/* <br>..skip the message body since we're not interested in <br>it. <br>*/ <br>for (l = eps_next_line(eps, BREAK_STOP); l; l = eps_next_line(eps, BREAK_STOP)); <br>
<br>eps_init_mime(eps); <br>
<br>for (m = eps_next_mime(eps); m; m = eps_next_mime(eps)) { <br>if (efilter_check_mime(m)) <br>printf("rejected"); <br>} <br>
<br>eps_end(eps); <br><br>return 0; <br>
} <br>
<br>
功能挺简单的,就是检查电子邮件的附件,但凡发现.vbs .scr .exe .com的附件,都提示rejected。编译,安装。 <br>
gcc -g -I/usr/include/eps -L/usr/lib -DVERSION="1.2" -o mime mime.c -leps <br>
复制到~vpopmail/bin并chown vpopmail.vchkpw mime <br>
<br>
然后建立一个filter.sh文件,也是在~vpopmail/bin目录,属主和mime一样了。 <br>
#!/bin/sh <br>
ISVIRUS=`/var/vpopmail/bin/mime` <br>
if [ X"${ISVIRUS}" != X"rejected" ]; then <br>/var/vpopmail/bin/vdelivermail '' bounce-no-mailbox <br>
fi <br>
<br>
最后修该~vpopmail/domains/yourdomain/里面的.qmail-default文件 <br>
把原本为 <br>
| /var/vpopmail/bin/vdelivermail '' bounce-no-mailbox <br>
改成 <br>
| /var/vpopmail/bin/filter.sh <br>
就可以了。 <br>
<br>
实现的手段很暴力,凡是附件中含有.vbs .exe .com .scr的都整个邮件drop掉了。没有办法啦,我还没有全面的研究清楚eps的功能,而且它还没有发展完全。不过先玩玩啦。 <br>
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

小黑屋|手机版|Archiver|邮件技术资讯网

GMT+8, 2024-5-6 06:58

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

本论坛为非盈利中立机构,所有言论属发表者个人意见,不代表本论坛立场。内容所涉及版权和法律相关事宜请参考各自所有者的条款。
如认定侵犯了您权利,请联系我们。本论坛原创内容请联系后再行转载并务必保留我站信息。此声明修改不另行通知,保留最终解释权。
*本论坛会员专属QQ群:邮件技术资讯网会员QQ群
*本论坛会员备用QQ群:邮件技术资讯网备用群

快速回复 返回顶部 返回列表