免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5893 | 回复: 37
打印 上一主题 下一主题

[Mail] 关于垃圾邮件方面的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-08 15:09 |只看该作者 |正序浏览
对于邮件服务器来说防垃圾邮件是一件很重要的事情,因为目前大量垃圾邮件时时刻刻在不停的冲击着邮件服务器,对邮件服务器的处理和稳定性能带来极大的考验。这对每个邮件服务器维护和管理的人员带来极大的不便和无奈……

在此有几个问题问大家,希望大家能帮忙告诉一下

1.请问大家的邮件服务器每个星期能收到多少垃圾邮件?
2.公司领导怎么对待服务器中的垃圾邮件问题?
3.采取什么样的预防措施?效果怎么样?希望能用什么更有效的方式解决?
4.是否对防垃圾邮件系统感兴趣?
5.如果防垃圾邮件的设备能在邮件服务器前有效拦截垃圾邮件是否会引起你们的兴趣?
6.怎么看待现在的防垃圾邮件产品?

[ 本帖最后由 爱之旅 于 2006-2-8 15:14 编辑 ]

论坛徽章:
0
38 [报告]
发表于 2006-03-29 10:52 |只看该作者
30人50000不多啊,呵呵...
我们公司老大以前每天300-500封垃圾邮件,真不知道他是怎么搞的,不过现在用SA后少多了,再加上RBL/CBL可好一点

论坛徽章:
0
37 [报告]
发表于 2006-03-28 16:53 |只看该作者
30个人,每天就50000,你们发什么信啊
太可怕 了

论坛徽章:
0
36 [报告]
发表于 2006-03-27 14:43 |只看该作者

回复 35楼 linuxjeffery 的帖子

很抱歉,由于习惯于使用商用软件,我自己的开发能力很差,我的大部分经验都基于对现有工具的使用和配置。

我的邮件系统软件为sun one messaging server ,大部分地区搭配了symantec antivirus for smtp gateway 防病毒网关。由于这两个产品的匹配不是很好,搭配使用总会有漏洞,因此我对于以前的邮件架构稍微改变了一下,增加了本地smtp认证(smtp gw原来不支持认证),区别定义了内部、外部、本地等不同的邮件通道并且根据邮件流向配置了acl 。。。。。。

一般意义上的防护可以通过配置以上两个产品就可以。
sunone 是个好东西,可开发的地方还有很多,我接下来想继续对他的内部命令进行研究,自己写一些比较有用的管理程序,比如imsimta qm的用法在处理邮件队列时非常有用。

此外,我还测试了另一套邮件安全产品,它和我的服务器结合的非常好,效果也不错。
你说的问题也是他解决的主要问题,在服务器上安装一个代理,通过简单的配置将邮件转发到专用服务器上过滤,然后再转发回MTA.
虽然道理大家都明白,但是必须解决好切入点!
切入太早了,那就是纯粹的网关,切入太晚了,邮件服务器资源一样消耗。
根据不同的邮件系统寻找这个切入点,把通过认证的原始邮件转出过滤,然后再递交回来进行MT.

论坛徽章:
0
35 [报告]
发表于 2006-03-27 09:46 |只看该作者

架构

上面这位朋友应该对邮件服务器比较了解吧,能不能大概介绍一下你的服务器的总体配置呢?
我现在做的事情是向POSTFIX的端口写程序,把邮件过滤的功能从服务器独立出来,这样来降低服务器的压力.
能不能给我介绍一下你在维护邮件服务器方面的一些经验和问题?
谢谢!

论坛徽章:
0
34 [报告]
发表于 2006-03-24 23:00 |只看该作者
我的系统内部有大量的病毒邮件,或者病毒产生的垃圾邮件,同时系统与外网的接口也在我这里,来自外网的垃圾邮件最多,其次是病毒邮件和邮件攻击。

无用的邮件大约占30-60%,目前严格控制下基本上低于30%。
开发我不太行,我只会利用现有的手段,配置安全策略。
控制内部邮件,我通过增加smtp认证,mta 专用通道,定义有效转发等方法,减少邮件转发和病毒产生的随机邮件。
控制外部的,我通过控制群发人数、统计ip发送数目以及配合专用的邮件安全产品进行管理。

我可以使本地邮件相当安全,但是我系统内的分布邮件服务器还没有进行安全加固,因此还存在30%左右的问题邮件。

网了说一下,系统内部大约有40台邮件服务器,分布在不同的省和直辖市,每台客户端数量1500-5000,每天的邮件总量大约在10万-25万之间。

[ 本帖最后由 ajoe 于 2006-3-24 23:03 编辑 ]

论坛徽章:
0
33 [报告]
发表于 2006-03-24 18:27 |只看该作者

我最近在开发反垃圾邮件网关,有空交流一下.我的MSN是jefferychang2006@hotmail.com

我最近在开发反垃圾邮件网关,有空交流一下.我的MSN是jefferychang2006@hotmail.com.

论坛徽章:
0
32 [报告]
发表于 2006-02-15 00:44 |只看该作者

This new future will help if you use sendmail

greet_pause - Adds the greet_pause ruleset which enables open proxy and SMTP slamming protection. The feature can take an argument specifying the milliseconds to wait:


FEATURE(`greet_pause', `5000') dnl 5 seconds


If FEATURE(`access_db') is enabled, an access database lookup with the GreetPause tag is done using client hostname, domain, IP address, or subnet to determine the pause time:


GreetPause:my.domain 0 GreetPause:example.com 5000 GreetPause:10.1.2 2000 GreetPause:127.0.0.1 0


When using FEATURE(`access_db'), the optional FEATURE(`greet_pause') argument becomes the default if nothing is found in the access database. A ruleset called Local_greet_pause can be used for local modifications, e.g.,

--http://alanpae.tripod.com/sendmail/Databases.htm

论坛徽章:
0
31 [报告]
发表于 2006-02-14 18:10 |只看该作者
原帖由 abel 于 2006-2-14 14:54 发表

看得懂就看,看不懂就算了,
[code]
# 這個檔案需要存在 $HOME/.procmailrc , 做為 sendmail 的Mlocal 中的 procmail 取用,屬於
# User 的個人設定,不同於 /etc/procmailrc 之內容
PATH=$PATH
SHELL=/bin/sh ...


非常感谢abel的热心回帖,虽然还不是很明白 还是非常感谢,图表很清楚显示这个拦截效果确实很显著  

先收藏再慢慢领悟吧   谢谢了

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
30 [报告]
发表于 2006-02-14 14:54 |只看该作者
原帖由 爱之旅 于 2006-2-11 12:00 发表

能具体说一下吗?

看得懂就看,看不懂就算了,

  1. # 這個檔案需要存在 $HOME/.procmailrc , 做為 sendmail 的Mlocal 中的 procmail 取用,屬於
  2. # User 的個人設定,不同於 /etc/procmailrc 之內容
  3. PATH=$PATH
  4. SHELL=/bin/sh
  5. MAILDIR=/var/spool/mail
  6. VERBOSE=yes
  7. LOGABSTRACT=all
  8. SENDMAIL=/usr/sbin/sendmail
  9. # LOG FILE , 可以不設,或設了後使用 logrotate resize
  10. # 需建立 $HOME/procmail 目錄,以存放 log 檔以利除錯及統計
  11. LOGFILE=$HOME/procmail/procmail.log
  12. # 暫存檔名,需建 $HOME/procmail/mail_folder 目錄,並為該 user 權限
  13. FILE=`echo $HOME`/procmail/mail_folder/mail-`date +%Y%m%d%H%I%S`-`echo $$`.eml
  14. # 存檔並改變檔案屬性
  15. tmp=`formail > $FILE; chmod 644 $FILE`
  16. # 取得郵件中的標題
  17. tmp=`formail -zxSubject:`
  18. #還原標題中的 MIME/QP 編碼(無編碼不處理),去除標題的一些特殊符號,以免 shell 出錯
  19. SUBJ=`/etc/parser_subj "$tmp"| sed -e "s/[\$,\(,\),\',\\]//g"`
  20. # 取得寄件人 From
  21. FROM=`formail -zxFrom:| sed -e 's/.*<\(.*\)>.*/\1/g'`
  22. # 取得收件人
  23. TO=`formail -zxTo:|tr ',' '\n'|  sed 's/\(.*\) \(.*\)/\2/'`
  24. # 從何而以的 IP ,不使用 head -1 時可得所有經過的 IP
  25. IP=`formail -zxReceived:|grep ^from|sed -e 's/.*\[\(.*\)\.\(.*\)\.\(.*\)\.\(.*\)\].*/\1.\2.\3.\4/g'|head -1`
  26. # 轉成反解格式,以利 RBL使用
  27. PTR=`formail -zxReceived:|grep ^from|sed -e 's/.*\[\(.*\)\.\(.*\)\.\(.*\)\.\(.*\)\].*/\4.\3.\2.\1/g'|head -1`
  28. # 計算 Mail Size , 做為統計用 (尚無作用)
  29. MAIL_SIZE=`formail | wc -c | awk '{print $1}'`
  30. # 資料庫連線參數
  31. MYSQL="mysql -h procmail.mydomain.net.tw -u abel -pPASSWORD procmail"

  32. # 這個 Rule 是取回信時所使用,可見 www/back_to_me.cgi, 並注意自身的 CGI 執行權限
  33. :0 H
  34. * ^X-resend:
  35. /var/spool/mail/$LOGNAME

  36. # 白名單,符合即可進入 MailBox,免檢查,此名單由 User 從 Web 介面去設定,
  37. # 詳可見 www/SPAM/show_white_list.php 及 TABLE 中的 WHITE_LIST
  38. #下列的$($..)用法在做檢查,為 Header 中只有有 match 即可通過到 $ORGMAIL(Mailbox)
  39. WHITE_LIST=`echo "SELECT WHITE_NAME FROM WHITE_LIST WHERE USERNAME='$LOGNAME' AND instr('$FROM', WHITE_NAME ) or instr('$SUBJ', WHITE_NAME )"| $MYSQL |  tr '\n' '|' ; echo "aaaaaaaazzzzzzzzzggggggggg"`
  40. :0 H
  41. * $($WHITE_LIST)
  42. $ORGMAIL


  43. # 黑名單,符合即可進入 SPAM List,此名單由 User 從 Web 介面去設定,
  44. #下列的$($..)用法在做檢查,為 Header 中只有有 match 即歸類到 SPAM 中
  45. WHITE_LIST=`echo "SELECT BLACK_NAME FROM BLACK_LIST WHERE USERNAME='$LOGNAME' AND instr('$FROM', BLACK_NAME ) or instr('$SUBJ', BLACK_NAME )"| $MYSQL |  tr '\n' '|' ; echo "aaaaaaaazzzzzzzzzggggggggg"`
  46. :0 H
  47. * $($WHITE_LIST)
  48. {
  49.         :0 fw
  50.         | echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN,IP ) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','發信軟體','mailserver 信商發出','$IP')"    | $MYSQL

  51.         :0
  52.         /dev/null
  53. }

  54. # 巳被標為 SPAM,因為不是我們判斷的,所以另外做一個,若不 Care 亦可直接設於 Patten
  55. # 檢查中,請注意,信一進來時,巳經另存新檔了,所以此處的 mysql 在做 Record 的記錄
  56. # /dev/null 則是不希望它進入信箱中
  57. :0 HD
  58. * ^Subject: .*SPAM.*
  59. {
  60.         :0 fw
  61.         |  echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN,IP ) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','SPAM','標題 SPAM','$IP')"    | $MYSQL

  62.         :0
  63.         /dev/null
  64. }

  65. # 不為 自己的 user 所寄,且 IP 不為 mydomain user 使用的網段,但 Message-ID 帶
  66. # mydomain 的名稱,判為 SPAM,因為這種情況是發信軟體所產生,一般不為該 Domain
  67. # User 一定會先經過別的 Mail Server Relay 過來,一過 Server 即會標示
  68. # Message-ID
  69. :0 H
  70. * !^From: .*@mydomain.net.tw.*
  71. * !^Received: .*(111\.172\.21[0-1]\.|127.0.0.1|local).*
  72. * ^Message-Id: .*@mydomain.net.*
  73. {
  74.         :0 fw
  75.         | ( echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN,IP ) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','發信軟體','Message-ID 為 mydomain','$IP')"    | $MYSQL )

  76.         :0
  77.         /dev/null
  78. }

  79. # 檢舉廣告信後的 SpamCop 回函,此回函為 text ,帶有一個 link, 主要在取出此
  80. # Link 中的 id 值,做為批次 Submit 依據,詳可見 TABLE SPAMCOP_ID , 及
  81. # www/SPAM/show_result.php 中的大量檢舉,及 www/SPAM/submit_to_SPAMCop.cgi
  82. # www/SPAM/spamcop.sh (cronjob)
  83. # 其中 submit 該程式為套用 Spamcop 的 From 的自動 submit, 以 Perl 寫成,需
  84. # 裝有該 Perl module 方能作用,若不做檢舉功能,則可拿掉這些相關程式及 rule
  85. :0 H
  86. * ^Subject: .*SpamCop has accepted.*
  87. {
  88. SPAMID=`formail -I ""|grep '/sc?id=' | sed -e 's/.*id=\(.*\)/\1/g'`
  89.         :0 fw
  90.         | ( echo "insert into SPAMCOP_ID(SPAM_ID) values('$SPAMID')" | $MYSQL)

  91.         :0
  92.         /dev/null
  93. }

  94. # 數字型收件者,例如 123.txt 等明顯的 SPAM
  95. :0 HD
  96. * ^To: .*[0-9][0-9][0-9].*
  97. {
  98.         :0 fw
  99.         | echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN ,IP) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','發信軟體','數字型收件者','$IP')"    | $MYSQL

  100.         :0
  101.         /dev/null
  102. }

  103. # From 為 mydomain 但 IP 不屬 mydomain, 檢查使用者是否存在,這個檢查以 /home 下的
  104. # 目錄為主,不同可自行修改
  105. :0 HD
  106. * ^From: .*@mydomain.net.tw.*
  107. * !^Received: .*111\.172\.21[0-1]\..*
  108. {
  109.         :0 fw
  110.         | (username=${FROM%%@*};if [ -d /home/$username ] ; then formail -A "Bogus: No"; else formail -A "Bogus: Yes";  echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN ,IP) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','寄件人不存在','$FROM ','$IP')" | $MYSQL ;fi  );

  111.         :0
  112.         * ^Bogus: Yes
  113.         /dev/null
  114. }

  115. # 簡體信件,不為 cnnic 來源者皆檔,放行 chinaunix
  116. :0 H
  117. * ([Gg][Bb][Kk]|[Gg][Bb]2312)
  118. * !^From: .*(mydomain|cnnic|chinaunix).*
  119. {
  120.         :0 fw
  121.         | (echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN,IP ) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','簡體信件','GBK/GB2312 編碼','$IP')"    | $MYSQL)

  122.         :0
  123.         /dev/null
  124. }


  125. # 主旨過濾,這個過濾較費資源,所以排到後面才做
  126. # 直接以 mysql INSTR 函數做字串比對,比對結果不為 NULL 表示為 SPAM
  127. # patten2 主要在處理呈現的結果
  128. # CNT 的加一主要在讓 user 了解什麼主旨的過濾狀況

  129. :0 HD
  130. * ! ^From: .*@mydomain.net.tw.*
  131. {
  132. patten=`echo "select concat(\"'\",PATTEN,\"'\") from SPAM_PATTEN where USERNAME='$LOGNAME' and instr('$SUBJ',PATTEN)"|$MYSQL | grep -v 'PATTEN'| tr '\n' ','`
  133. patten2=`echo $patten | sed -e "s/'//g"`

  134.         :0 fw
  135.         * ? test -n "$patten"
  136.         | ( formail -A "Spam: $patten" ;        \
  137.         echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN ,IP) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','符合特定字串','$patten2','$IP'); update SPAM_PATTEN set CNT=CNT+1 where USERNAME='$LOGNAME' and PATTEN in ($patten ''); " | $MYSQL ;\
  138.         )

  139.         :0
  140.         * ^Spam: .*
  141.         /dev/null
  142. }

  143. # RBL的檢查,雖然可直接於 sendmail 中直接使用 FEATURE(`DNSBL...'),但其退信
  144. # 不好補救,所以仍採用類似作法,但留存記錄供 user 查看
  145. # rbl 的 domain 設在 mysql 中,從 mysql 中取出所設的 rbl domain
  146. # (Ex:bl.spamcop.net), 再加以 dig $PTR.$DOMAIN, 來查詢其黑名單結果
  147. # 本處所有之三個 RBL, 為經過一個月的實際 100 個以上的 RBL Domain, 在準確度
  148. # 及誤判率下之最好之結果

  149. :0
  150. * ! ^From: .*@(mydomain.net.tw|mydomain.net).*
  151. * ! ^Received: .*159\.226\.*
  152. {
  153. rbl=`for spam in $(echo "select RBL_DOMAIN from SPAM_SOURCE order by SN"| $MYSQL | grep -v 'RBL_DOMAIN'); do  rbl=$(host $PTR.$spam| grep 'has address'); test -n "$rbl" && echo $PTR.$spam && break; done`

  154.         :0 fw
  155.         |( test -n "$rbl" && (echo "insert into SPAM(MAIL_FROM,RCPT_TO,SUBJ,FILE_NAME,MAIL_TYPE,USERNAME,REASON,PATTEN,IP ) values('$FROM ','$TO ','$SUBJ ','$FILE',1,'$LOGNAME','來自 RBL IP','$rbl.$spam','$IP')" | $MYSQL) && formail -A "Spam: From_RBL $rbl.$spam" )

  156.         :0
  157.         * ^Spam: .*
  158.         /dev/null
  159. }

  160. # 通過以上檢查,則信件進入使用者信箱
  161. # 但請注意,沒有 100% 的 anti SPAM 效果,也沒有 0% 的失誤率
  162. # 但據個人使用,結果是令人滿意的
  163. # 如果要加載 SA 可於後面補上
  164. #:0fw
  165. #* < 256000
  166. #| /usr/local/bin/spamc

  167. # SA header 動作
  168. # ...

复制代码


以上還是存在許多可以優化的地方,不過這對我們來說並不重要
結果頁面

一週走勢 uptime 從未過 3 !

[ 本帖最后由 abel 于 2006-2-14 14:59 编辑 ]
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP