热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpamGurad在邮件服务器防止Spam

文章标题:SpamGurad在邮件服务器防止Spam。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  1, 什么是spamgurad
  目前最令邮件服务器管理员头痛的事情就要数垃圾邮件了,为此,EnderUnix团队写了一个小软件,它能够自动的监控你的邮件服务器日志文件,发现垃圾邮件制造者的活动,从而把垃圾邮件堵在外面不让其进入服务器,目前,spamguard支持qmail,Sendmail和postfix
  
  2, 工作原理
  spmaGurad 定期(多少间隔扫描一次是由自己定义的)扫描你的邮件服务器的日志文件,例如,5分钟一次,我们都知道,每当有人连入我们的服务器进行发信时,在服务器的邮件日志文件中就会有类似这样的纪录
  @aae1ceb3c84 tcpserver: status: 1/20
  @ab924716dfc tcpserver: status: 2/20
  @ab92473d344 tcpserver: pid 26223 from 211.97.241.xxx
  @ab926a9d99c tcpserver: ok 26223 :210.xxx.xx.xxx:25 :211.97.241.xxx::2568
  @aba066536f4 tcpserver: end 26223 status 0
  @aba06655a1c tcpserver: status: 1/20
  @aba2af1280c tcpserver: end 25902 status 0
  @aba2af1474c tcpserver: status: 0/20
  @abb04c5d704 tcpserver: status: 1/20
  @abb04cb498c tcpserver: pid 26241 from 211.157.217.xxx
  @ad219ee05fc tcpserver: status: 2/20
  @ad219f05ba4 tcpserver: pid 26439 from 212.3.3.xxx
  @ad30ee81bd4 tcpserver: status: 3/20
  @ad30eed309c tcpserver: pid 26508 from 212.31.116.xxx
  @ad41fff98d4tcpserver:ok 26508 :210.xxx.xxx.xxx:25 :212.31.116.xxx::33361
  @ad506306f3ctcpserver:ok 26241 :210.xxx.xxx.xxx:25 :211.157.217.xxx::4305
  @ade38852f54 tcpserver: end 26508 status 256
  
  spamGuard 检测log文件,如果匹配“from”的地址(亦即发信人的地址)超出你定义的值,spamGuard将添加这个邮件地址到$BADMAILER文件(如sendmail中的/etc/access,qmail中的/var/qmail/control/badmailfrom)中。从而,以后从这些用户发过来的邮件都将被您的MTA K掉
  
  呵呵,如果我自己或者我服务器上的客户想大量发邮件是怎么办呢,spamGuard同样为你准备好了,有一个spam-ignore.txt的配置文件可以让你做到这一点
  
  3, 安装
  1) go to http://www.enderunix.org/spamguard/ 下载最新稳定版,目前为v1.6
  % tar xzvf spamguard-VERSION.tar.gz
  % cd spamguard-VERSION
  2)% make
  3)% su root -c 'make install'
  生成的可执行文件安装到/usr/local/bin.一个示例的spamguard.conf.sample文件被安装到/usr/local/etc下% cp spamguard.conf.sample spamgurad.conf
  4)接下来要进行的工作时对spamguard.conf文件进行配置(以qmail为例)
  例如,以下是我的配置文件
  logtype = "qmail" ###服务器类型
  
  logfile = "/var/log/qmail/spamgurad.log" ##你的服务器产生的日志文件的位\置,以供spamguard读取
  ##logfile = "/var/log/maillog" ## ßsendmail
  
  ignorefile = "/usr/local/etc/spam-ignore.txt" #文章前面提到的需要spamguard\忽略的邮件地址存放文件,格式可参照其提供的\spam-ignore.txt.sample文件
  
  badmailfile = "/var/qmail/control/badmailfrom" ###你的邮件服务器揪出来的\黑名单将放入此文件中\ 如果是sendmail,将是 /etc/mail/access;
  
  sysadmin = "my-name@mydomain.com" #spamguard警告的发送人,设为邮件系统管理员即可
  
  hostname = "badusers.spam.org" ##如果垃圾邮件发送者的主机名没有找到,则自动添加为你的设置
  
  mail_command = "/bin/mail" ###本地邮件程序,以便使用此命令给上面定义的sysadmin发信
  
  ###makemap_command = "makemap hash /etc/mail/access   
  statfile = "/usr/local/etc/spamguard.stat" ##内部使用,不用理会之
  
  wcnt = 10 ##警告界限,并不放入$BADMAILER
  
  bcnt = 20 ##阻止界限
  
  pcnt = 200 ## 在ignorefile中被忽略的邮件地址极限数目.
  
  而后,编辑/etc/crontab文件,让spamguard每隔5分钟(请根据情况自行定义)运行一次检查:添加以下一行:
  
  0-59/5 * * * * /usr/local/bin/spamguard 可能大家会担心spamgurad处理log文件的速度和对系统的载荷,其实,spamGuard 能够在10秒内处理85M大小的log文件. 但由于log文件总是越来越大的,所以,用户可运行以下脚本,并将其放置于/etc/cron.weekly中每周运行一次:
  % chmod 755 /etc/cron.weekly/log-rotate.sh
  % cat /etc/cron.weekly/log-rotate.sh
  #! /bin/sh
  #
  #use log-rotate.sh script every week by using crond
  #define LOGFILE "/var/log/qmail/spamguard.log"
  #
  LOGDIR=/var/log/qmail
  LOG=spamguard.log
  
  if test -d $LOGDIR
  then
  cd $LOGDIR
  if test -s $LOG
  then
  /etc/rc.d/init.d/qmail stop
  kill `ps -ef | grep qmail- | grep -v grep | awk '{print $2; }'`
  ##*可能你的qmail的停止命令与此不一样,请调整*##
  test -f $LOG.6 && mv $LOG.6 $LOG.7
  test -f $LOG.5 && mv $LOG.5 $LOG.6
  test -f $LOG.4 && mv $LOG.4 $LOG.5
  test -f $LOG.3 && mv $LOG.3 $LOG.4
  test -f $LOG.2 && mv $LOG.2 $LOG.3
  test -f $LOG.1 && mv $LOG.1 $LOG.2
  test -f $LOG.0 && mv $LOG.0 $LOG.1
  mv $LOG $LOG.0
  touch $LOG
  /etc/rc.d/init.d/qmail start
  fi
  fi
  
  如此,每周重新启动qmail一次,备份日志文件,并产生新的一个日志文件,以避免日志文件过大引起的速度和效率问题
推荐阅读
  • 探讨在数据库中存储URL时,删除尾部斜杠的安全性和潜在影响,以及如何确保URL的一致性。 ... [详细]
  • Elasticsearch基础操作指南:使用Postman进行数据管理
    本文将介绍如何利用Postman工具执行基本的日志写入和数据管理操作。通过本教程,您将了解如何连接至Elasticsearch服务,创建索引,存储及检索数据。 ... [详细]
  • CSGO
    CSGOTimeLimit:40002000MS(JavaOthers)MemoryLimit:524288524288K(JavaOthers)ProblemDescriptio ... [详细]
  • 本文详细介绍了C++中常见的容器(如列表、向量、双端队列等)及其迭代器的实现方式,通过具体代码示例展示了如何使用这些容器和迭代器。 ... [详细]
  • 掌握Python岗位,你需要了解的关键技能
    最近,在社交平台脉脉上,一条关于Python岗位的消息引起了广泛关注。本文将探讨Python岗位的实际价值,并深入解析阿里巴巴等大公司在面试Python开发者时常见的问题。 ... [详细]
  • CGroups: 资源管理和控制
    CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ... [详细]
  • 框图|中将_DA14531 学习笔记经验总结
    框图|中将_DA14531 学习笔记经验总结 ... [详细]
  • Kafka 示例项目中 Log4j 的配置与调试
    本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ... [详细]
  • 本文探讨如何通过贪心算法有效地安排一系列活动,确保使用最少数量的会场来完成所有活动的调度。 ... [详细]
  • 本文探讨了使用匈牙利算法解决二分图中的最大权匹配问题,并通过HDU1533题目实例进行详细解析。代码实现中包括了必要的数据结构定义、输入处理以及求解过程。 ... [详细]
  • Django框架的使用教程mysql数据库[三]
    Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
  • 本文详细解析了 Mongolass 中 populate 方法的正确使用方式及其限制,特别是与 Mongoose 在使用上的差异。 ... [详细]
  • 统计报表模板及其实现方法
    本文介绍两个实用的统计报表模板,并提供如何将这些静态模板转换为动态JSP页面的方法。同时,文中附上了详细的代码示例。 ... [详细]
  • 解析骁龙660AIE与骁龙660的主要差异
    随着智能手机市场的不断发展,处理器技术也在不断进步。近期,一些手机开始采用骁龙660AIE处理器,这引发了消费者对其与标准版骁龙660之间差异的好奇。本文将详细探讨这两款处理器的区别,帮助您更好地了解它们各自的特点。 ... [详细]
  • 本文介绍了三款实用的Chrome插件:Gooreplacer用于加速访问依赖特定外部接口的网站;HTTP Request Blocker帮助过滤无法加载的图片请求;Browse Manager则能有效阻止恼人的弹出广告。通过合理配置这些工具,可以显著提升上网体验。 ... [详细]
author-avatar
平凡岁月ss
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有