免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 爱之旅
打印 上一主题 下一主题

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

论坛徽章:
0
21 [报告]
发表于 2006-02-09 18:02 |只看该作者
原帖由 思一克 于 2006-2-9 17:07 发表
To Abel,

明白了。一般的公司绝不会那么多。


不过垃圾邮件确实比较多

在北京我就见过50人的公司一个星期能接受十万封左右的信笺,其中正常邮件大概是5%还不到(其中也包括订阅期刊、电子杂志的)

论坛徽章:
0
22 [报告]
发表于 2006-02-09 23:22 |只看该作者
to abel:
服了,真是具体问题具体分析呀!

论坛徽章:
0
23 [报告]
发表于 2006-02-10 01:20 |只看该作者

Answer to your email spam question

1.请问大家的邮件服务器每个星期能收到多少垃圾邮件?

  4 mail servers.

Totall messages 2250661    100%
Rejected (spam) 1465616    65.119%
Viruses   12715   .564%
accepted  772330  34.315%
               
2.公司领导怎么对待服务器中的垃圾邮件问题?

They leave it to us. It is up to us deal with it. Not them.

3.采取什么样的预防措施?效果怎么样?希望能用什么更有效的方式解决?

We use sendmail. RBL, spamassasin, etc. And other self invented methods.

4.是否对防垃圾邮件系统感兴趣?

No. We believe we have construct the best for our environment.

5.如果防垃圾邮件的设备能在邮件服务器前有效拦截垃圾邮件是否会引起你们的兴趣?

It is just a "claim". If it simply doesn't work, why do people need it?

6.怎么看待现在的防垃圾邮件产品?

Never use. Spam change their strategy everyday. How fast can you upgrade yours?
Also, for special institute, certain words are not consider as spam. i.e. Viagra from Sex Therapist.

论坛徽章:
0
24 [报告]
发表于 2006-02-10 10:03 |只看该作者
原帖由 LiaoKong 于 2006-2-10 01:20 发表
3.采取什么样的预防措施?效果怎么样?希望能用什么更有效的方式解决?

We use sendmail. RBL, spamassasin, etc. And other self invented methods.

  ...

能否具体说说你们的策略吗???也可以供参考一下 谢谢

论坛徽章:
0
25 [报告]
发表于 2006-02-11 12:00 |只看该作者
原帖由 abel 于 2006-2-8 18:21 发表

而且我的程式才 120 行.....因為定義都是由 mysql 來設定的
...

能具体说一下吗?

论坛徽章:
0
26 [报告]
发表于 2006-02-11 14:38 |只看该作者
原帖由 爱之旅 于 2006-2-8 17:02 发表

这个要说明下,防垃圾邮件的设备有很多是硬件产品,所以不会消耗邮件服务器的系统资源

单位只有30人肯定不适合用硬件产品,不过可以考虑用软件啊

    不能单纯以人数多少衡量系统负荷。

论坛徽章:
0
27 [报告]
发表于 2006-02-13 15:31 |只看该作者
正在做邮件系统

论坛徽章:
0
28 [报告]
发表于 2006-02-14 05:58 |只看该作者

回复 24楼 爱之旅 的帖子

You can subscript to the mailing list of mimedefang.

http://www.mimedefang.org/

After years go by, you will know.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
29 [报告]
发表于 2006-02-14 09:14 |只看该作者
原帖由 LiaoKong 于 2006-2-14 05:58 发表
You can subscript to the mailing list of mimedefang.

http://www.mimedefang.org/

After years go by, you will know.

用這個東西要對 perl 及 sendmail 有一定的了解,
而這個確實好用,可以讓人對 Mail 得到完全的控制

论坛徽章:
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