庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>系统管理>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

监控你E-mail用户的邮件(Postfix篇)

 作者:本站收集   日期:2005-4-12
字号选择〖 〗/ 双击滚屏 单击停止   
一、 环境

公司的Internet邮件系统是Exchange 5.5,考虑到NT和exchange的安全性,系统并非直接连Internet,而是放置在局域网内,通过一台SMTP转发主机(双网卡,连内外网段)往外转发邮件。同时,通过DNS中MX记录的设定,外界发给公司用户的邮件也是通过该SMTP转发主机往exchange转。该SMTP转发主机操作系统用FreeBSD 4.3-Release,邮件系统用Postfix release-20010228 + patch1、2、3。

二、 目的

如何才能捕获用户的邮件?既公司用户往外发的邮件和发往公司用户的邮件能不留痕迹的给自己转一份。我看了看Exchange 5.5、Postfix的配置文档,好像没有这方面的设置(如果有谁知道有,告诉我一声,谢谢!)。好在postfix公开源代码,虽然我不是程序员,但大学时期学的C还没丢光。便从www.postfix.org 下载了release-20010228及其patch1、2、3,试着修改源代码了。

三、 步骤

首先将release-20010228.tar.gz上载到系统的某个目录下。运行:
# tar zxvf release-20010228
将在当前目录下生成release-20010228目录,将patch上载到该目录下,运行:
# patch < postfix-20010228-patch01.gz
# patch < postfix-20010228-patch02.gz
# patch < postfix-20010228-patch03.gz

A、 进入src/pickup目录,用vi打开pickup.c,搜索copy_segment,找到copy_segment这个函数,在int check_first = (*expected == REC_TYPE_CONTENT[0]); 后加入一个变量申明:VSTRING *spy;

往下10几行,看到:
if (type == REC_TYPE_RCPT)
if (info->rcpt == 0)
info->rcpt = mystrdup(vstring_str(buf));
将其改成:
if (type == REC_TYPE_RCPT)
if (info->rcpt == 0)
{
info->rcpt = mystrdup(vstring_str(buf));

spy = vstring_alloc(20);
vstring_strcpy(spy, "xxx@xxx.xxx"); /* 将 xxx@xxx.xxx 加入接收者列表 */
REC_PUT_BUF(cleanup, type, spy);
vstring_free(spy);
}

B、 进入src/smtpd目录,用vi打开smtpd.c,搜索rcpt_cmd,找到rcpt_cmd这个函数,往下走三十来行,看到:

state->rcpt_count++;
if (state->recipient == 0)
state->recipient = mystrdup(argv[2].strval);

将其改成:
state->rcpt_count++;
if (state->recipient == 0)
{
state->recipient = mystrdup(argv[2].strval);

rec_fputs(state->cleanup, REC_TYPE_RCPT, "xxx@xxx.xxx");
state->rcpt_count++;
}
然后退回到release-20010228目录下,运行make; make install重新编译、安装即可。

· A处的修改是postfix邮件系统的本地用户发送接收邮件,都将在recipient里插入一个接收者xxx@xxx.xxx,实际上用处不大,因为现在没有谁会在UNIX终端下用mail来发送邮件。
· B处的修改是凡是通过smtp协议转来或转走的邮件,都在recipient里插入一个接收者 xxx@xxx.xxx,在上述环境中,该处的修改是关键。

这样,只要是经过该postfix处理的邮件,xxx@xxx.xxx都能收到一份!

四、 备注

1、 上面所做的修改,邮件接收者不会在收件人一栏里看到 xxx@xxx.xxx这个账号
2、 请先估计一下postfix每天处理的邮件的流量,以防监控邮箱爆了。
3、 代码中msg_info函数日志记录函数,可以根据自己的需求定制。
4、 待续
上一篇:监控你E-mail用户的邮件(sendmail篇)    下一篇:如何实现Windows 与 Linux文件系统共享  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-12
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿