频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

信息安全的保证如何捕获用户的Email

来源: 作者: 出处:巧巧读书 2006-03-13 进入讨论组

  一、 环境
  公司的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,试着修改源代码了。
  
  三、 修改
  环境是在FreeBSD 4.3-Release下(linux下应该也没问题)。首先将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每天处理的邮件的流量,以防监控邮箱爆了。在上面的例子中,我用了一个50M的邮箱,半天就给挤爆了!然后给每个发件人一封信,说xxx@xxx.xxx 已满,当时把我吓坏了,赶紧将邮箱扩容到500M。(切记!!!)
  3、 代码中msg_info函数是日志记录函数,可以根据自己的需求定制。本文:http://www.qqread.com/net-saft/a268277.html 更多文章 更多内容请看路由安全配置专题系统安全设置配置安全的操作系统专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章