| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 服务器 > 邮件服务器 > QmailSendmailPostf > 文章正文 用户登录
下载软件勿忘防毒
安全稳定的实现进
网络流量监控器mr
监控你E-mail用户
一个用VB编写的监
监控网页中元素的
用拷贝钩子实现对
Visual C++实现对
Winsock技术在远程

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

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

作者:佚名 来源:不详 更新:2006-8-25 21:05:35 错误报告 我要投稿
一、 环境

公司的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、 待续
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。