免费注册 查看新帖 |

Chinaunix

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

[Mail] [原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-22 16:21 |只看该作者 |倒序浏览
  1. 在POSTFIX服务器上建立防病毒防垃圾屏障
  2. 适用用于linux + postfix系统

  3. 一、反病毒部分

  4. 1.        下载软件包:

  5. amavisd-new-20030616-p6.tar.gz
  6. clamav-0.65.tar.gz
  7. unrar-3.2.3-2.9.i386.rpm
  8. zoo-2.10-11.9.i386.rpm
  9. unzoo-4.4-2.i386.rpm
  10. arc-5.21e-6.i386.rpm
  11. nomarch-1.3-1mdk.i586.rpm
  12. unarj-2.65-3.9.i386.rpm
  13. arj-3.10-0.1.i386.rpm
  14. freeze-2.5.0-7.i386.rpm
  15. compress-4.0.1.tar.gz

  16. 2. 安装clamav:

  17. # tar zvxf clamav-0.65.tar.gz
  18. # cd clamav-0.65
  19. # groupadd clamav
  20. # useradd -g clamav -d /var/run/clamav -s /bin/false clamav
  21. # ./configure
  22. # make
  23. # make install
  24. # vi /usr/local/etc/clamav.conf

  25. =============================================================
  26. #Example
  27. LogFile /var/log/clamd.log
  28. LogFileMaxSize 1M
  29. LogVerbose
  30. LogTime
  31. LocalSocket /var/amavis/clamd/clamav.socket
  32. PidFile /var/run/clamav/clamd.pid
  33. DataDirectory /usr/local/share/clamav
  34. MaxDirectoryRecursion 15
  35. User root
  36. ScanMail
  37. ScanArchive
  38. ClamukoMaxFileSize 6M
  39. ArchiveMaxFileSize 10M
  40. ArchiveMaxRecursion 5
  41. ArchiveMaxFiles 1000
  42. =============================================================

  43. # clamd                          ##运行程序
  44. # freshclam                           ##升级病毒库
  45. # ps -aux | grep clamd
  46.   clamav    2653  0.0  3.1 23556 12228 ?       S    13:59   0:00  

  47. 3. 建立clamd的启动脚本:

  48. # vi /etc/init.d/clamd

  49. =============================================================
  50. #! /bin/bash
  51. #
  52. # crond   Start/Stop the clam antivirus daemon.
  53. #
  54. # chkconfig: 2345 90 60
  55. # description: clamdis a standard UNIX program that scans for Viruses.
  56. # processname: clamd
  57. # config: /usr/local/etc/clamd.conf
  58. # pidfile: /var/run/clamav/clamd.pid

  59. # Source function library.
  60. . /etc/init.d/functions

  61. RETVAL=0

  62. # See how we were called.

  63. prog="clamd"
  64. progdir="/usr/local/sbin"

  65. # Source configuration
  66. if [ -f /etc/sysconfig/$prog ] ; then
  67.     . /etc/sysconfig/$prog
  68. fi

  69. start() {
  70.         echo -n $"Starting $prog: "
  71.         daemon $progdir/$prog
  72.         RETVAL=$?
  73.         echo
  74.         [ $RETVAL -eq 0 ] && touch /tmp/clamd
  75.         return $RETVAL
  76. }

  77. stop() {
  78.         echo -n $"Stopping $prog: "
  79.         killproc $prog
  80.         RETVAL=$?
  81.         echo
  82.         [ $RETVAL -eq 0 ] && rm -f /tmp/clamd
  83.         return $RETVAL
  84. }

  85. rhstatus() {
  86.         status clamd
  87. }

  88. restart() {
  89.         stop
  90.         start
  91. }

  92. reload() {
  93.         echo -n $"Reloading clam daemon configuration: "
  94.         killproc clamd -HUP
  95.         retval=$?
  96.         echo
  97.         return $RETVAL
  98. }

  99. case "$1" in
  100.   start)
  101.         start
  102.         ;;
  103.   stop)
  104.         stop
  105.         ;;
  106.   restart)
  107.         restart
  108.         ;;
  109.   reload)
  110.         reload
  111.         ;;
  112.   status)
  113.         rhstatus
  114.         ;;
  115.   condrestart)
  116.         [ -f /var/lock/subsys/clamd ] && restart || :
  117.         ;;
  118.   *)
  119.         echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
  120.         exit 1
  121. esac

  122. exit 0
  123. =============================================================

  124. # chmod 755 /etc/init.d/clamd
  125. # chkconfig --add clamd
  126. # chkconfig clamd on
  127. # clamscan -r test                                      ##测试杀毒
  128. # touch /var/log/clam-update.log                    ##病毒库升级日志
  129. # chmod 644 /var/log/clam-update.log
  130. # chown clamav /var/log/clam-update.log            
  131. # freshclam -d -c 2 -l /var/log/clam-update.log  
  132. # touch /etc/cron.daily/freshclam                   ##建立定时升级任务
  133. # vi /etc/cron.daily/freshclam

  134. =============================================================
  135. #!/bin/bash
  136. freshclam --quiet -d -c 2 -l /var/log/clam-update.log
  137. =============================================================

  138. # chmod a+xr /etc/cron.daily/freshclam

  139. 4. 安装amavisd-new

  140. # rpm -ivh unrar-3.2.3-2.9.i386.rpm
  141. # rpm -ivh zoo-2.10-11.9.i386.rpm
  142. # rpm -ivh unzoo-4.4-2.i386.rpm
  143. # rpm -ivh arc-5.21e-6.i386.rpm
  144. # rpm -ivh nomarch-1.3-1mdk.i586.rpm
  145. # rpm -ivh unarj-2.65-3.9.i386.rpm
  146. # rpm -ivh arj-3.10-0.1.i386.rpm
  147. # rpm -ivh freeze-2.5.0-7.i386.rpm
  148. # mkdir cmpress
  149. # tar -zxvf compress-4.0.1.tar.gz -C compress
  150. # cd compress
  151. # make
  152. # make install

  153. 通过perl网络安装amavis运行环境

  154. # perl -MCPAN -e shell        ##在安装前确定你的系统语言不是UTF-8

  155. =============================================================
  156. cpan>;

  157. Instalando
  158. -----------
  159. cpan>; install File::MMagic
  160. cpan>; install Config::IniFiles
  161. cpan>; install Convert::TNEF
  162. cpan>; install Convert::UUlib
  163. cpan>; install Compress::Zlib
  164. cpan>; install Archive::Tar
  165. cpan>; install Archive::Zip
  166. cpan>; install Unix::Syslog
  167. cpan>; install MIME::Base64
  168. cpan>; install Net::Server
  169. cpan>; install Net::SMTP
  170. Should all FTP connections be passive (y|n) ? [no] no
  171. cpan>; install Digest::MD5
  172. cpan>; install Time::HiRes
  173. cpan>; install Mail::SpamAssassin
  174. cpan>; exit
  175. =============================================================

  176. # adduser -s /bin/false -c "Amavis User" -d /var/amavis amavis
  177. # tar -zxvf amavisd-new-20030616-p6.tar.gz
  178. # cd amavisd-new-20030616
  179. # mkdir -p /var/amavis/clamd
  180. # chown -R amavis:amavis /var/amavis
  181. # chmod -R 750 /var/amavis/
  182. # cp amavisd /usr/local/sbin/
  183. # ln -s /usr/local/sbin/amavisd /usr/sbin/amavisd
  184. # cp amavisd.conf /etc/
  185. # mkdir /var/virusmails
  186. # chown amavis:amavis /var/virusmails
  187. # cp amavisd_init.sh /etc/init.d/amavisd
  188. # chmod 744 /etc/init.d/amavisd
  189. # chkconfig --add  amavisd
  190. # chkconfig amavisd on
  191. # vi /etc/amavisd.conf
  192. ========================================================================
  193. $MYHOME = '/var/amavis';          # (default is '/var/amavis')
  194. $mydomain = 'nero.3322.org';     # (no useful default)
  195. $daemon_user  = 'amavis';         # (no default;  customary: vscan or amavis)
  196. $daemon_group = 'amavis';         # (no default;  customary: vscan or amavis)

  197. $QUARANTINEDIR = '/var/virusmails';

  198. $log_level = 0;

  199. $final_virus_destiny      = D_BOUNCE;  # (defaults to D_BOUNCE)
  200. $final_banned_destiny     = D_BOUNCE;  # (defaults to D_BOUNCE)
  201. $final_spam_destiny       = D_PASS;   # (defaults to D_REJECT)
  202. $final_bad_header_destiny = D_PASS;  # (defaults to D_PASS), D_BOUNCE suggested

  203. $sa_spam_subject_tag = '***SPAM***'

  204. $virus_admin = "root\@$mydomain";
  205. $mailfrom_notify_admin     = "root\@$mydomain";
  206. $mailfrom_notify_recip     = "root\@$mydomain";

  207. ['Clam Antivirus-clamd',
  208.    \&ask_daemon, ["CONTSCAN {}\n", '/var/amavis/clamd/clamav.socket'],
  209.    qr/\bOK$/, qr/\bFOUND$/,
  210.    qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
  211. ========================================================================
  212. # amavisd debug
  213. Mar 20 10:36:21 home amavisd[1252]: starting.  amavisd at home amavisd-new-20030616-p6, Unicode aware, LANG=en_US
  214. Mar 20 10:36:21 home amavisd[1252]: Perl version               5.008
  215. Mar 20 10:36:21 home amavisd[1252]: Module Amavis::Conf        1.15
  216. Mar 20 10:36:21 home amavisd[1252]: Module Archive::Tar        1.08
  217. Mar 20 10:36:21 home amavisd[1252]: Module Archive::Zip        1.09
  218. Mar 20 10:36:21 home amavisd[1252]: Module Compress::Zlib      1.33
  219. Mar 20 10:36:21 home amavisd[1252]: Module Convert::TNEF       0.17
  220. Mar 20 10:36:21 home amavisd[1252]: Module Convert::UUlib      1.01
  221. ------------------------
  222. 启动amavisd服务
  223. # service amavisd start

  224. 测试amavis的工作情况
  225. # telnet 127.0.0.1 10024
  226. Trying 127.0.0.1...
  227. Connected to home (127.0.0.1).
  228. Escape character is '^]'.
  229. 220 [127.0.0.1] ESMTP amavisd-new service ready
  230. QUIT
  231. 221 2.0.0 [127.0.0.1] (amavisd) closing transmission channel
  232. Connection closed by foreign host.

  233. 设置postfix,在/etc/postfix/master.cf添加如下内容
  234. ========================================================================
  235. smtp-amavis unix -     -       n       -       2  smtp
  236.         -o smtp_data_done_timeout=1200
  237.         -o disable_dns_lookups=yes
  238.                                                                                 
  239. 127.0.0.1:10025 inet n -       n       -       -  smtpd
  240.         -o content_filter=
  241.         -o local_recipient_maps=
  242.         -o relay_recipient_maps=
  243.         -o smtpd_restriction_classes=
  244.         -o smtpd_client_restrictions=
  245.         -o smtpd_helo_restrictions=
  246.         -o smtpd_sender_restrictions=
  247.         -o mynetworks=127.0.0.0/8
  248. ========================================================================
  249. 设置postfix,在/etc/postfix/main.cf添加如下内容
  250. ============================================================================
  251. content_filter = smtp-amavis:[127.0.0.1]:10024
  252. ========================================================================
  253. 测试postfix是否工作
  254. # telnet 127.0.0.1 10025

  255. Trying 127.0.0.1...
  256. Connected to localhost (127.0.0.1).
  257. Escape character is '^]'.
  258. 220 nero.3322.org ESMTP Postfix
  259. QUIT
  260. 221 Bye
  261. Connection closed by foreign host.

  262. 5. 功能测试:

  263. 扫描/home/data下的所有邮件,并将扫描结果保存在/root下的scan_report文件中

  264. # clamscan -r -l /root/scan_report /home/data
  265. # less scan_report

  266. =============================================================
  267. /home/data/mail/test/Maildir/courierimapkeywords/.3597840.1079351764.M170269P1241V0000000000000302I00093221_0.home,S=733: Empty file.
  268. /home/data/mail/test/Maildir/courierimapuiddb: OK
  269. /home/data/mail/llzqq/Maildir/courierimapuiddb: OK
  270. /home/data/mail/.bash_history: OK

  271. ----------- SCAN SUMMARY -----------
  272. Known viruses: 20482
  273. Scanned directories: 20
  274. Scanned files: 3
  275. Infected files: 0
  276. Data scanned: 0.00 MB
  277. I/O buffer size: 131072 bytes
  278. Time: 0.681 sec (0 m 0 s)
  279. [root@home root]# less scan_report
  280. --------------------------------------
  281. Scan started: Tue Mar 16 10:46:09 2004

  282. -- summary --
  283. Known viruses: 20482
  284. Scanned directories: 20
  285. Scanned files: 3
  286. Infected files: 0
  287. Data scanned: 0.00 MB
  288. I/O buffer size: 131072 bytes
  289. Time: 0.681 sec (0 m 0 s)
  290. =====================================================



  291. 二、防垃圾邮件部分

  292. 安装SpamAssassin
  293. SpamAssassin在上面的过程中安装了
  294. 配置SpamAssassin

  295. 把下面的内容放进/etc/mail/spamassassin/local.cf
  296. ========================================================================

  297. # How many hits before a message is considered spam.
  298. required_hits           5.0

  299. # Whether to change the subject of suspected spam
  300. rewrite_subject         1

  301. # Text to prepend to subject if rewrite_subject is used
  302. subject_tag             *****SPAM*****

  303. # Encapsulate spam in an attachment
  304. report_safe             1

  305. # Use terse version of the spam report
  306. use_terse_report        0

  307. # Enable the Bayes system
  308. use_bayes               1

  309. # Enable Bayes auto-learning
  310. auto_learn              1

  311. # Enable or disable network checks
  312. skip_rbl_checks         1
  313. use_razor2              0
  314. use_dcc                 0
  315. use_pyzor               0

  316. # Mail using languages used in these country codes will not be marked
  317. # as being possibly spam in a foreign language.
  318. # - chinese english
  319. ok_languages            zh en

  320. # Mail using locales used in these country codes will not be marked
  321. # as being possibly spam in a foreign language.
  322. ok_locales              en zh
  323. score           SUBJ_FULL_OF_8BITS      2

  324. ========================================================================

复制代码

论坛徽章:
0
2 [报告]
发表于 2004-03-22 22:28 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

论坛徽章:
0
3 [报告]
发表于 2004-03-22 22:28 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

有没有FOR sendmail的?

论坛徽章:
0
4 [报告]
发表于 2004-03-23 15:38 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障


好东西

论坛徽章:
0
5 [报告]
发表于 2004-03-24 01:29 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

[quote]原帖由 "hiandy"]有没有FOR sendmail的?[/quote 发表:


sendmail有个包不过忘了名, 你到google 找找..

论坛徽章:
0
6 [报告]
发表于 2004-03-26 09:05 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

怎么过滤带指定附件的邮件啊,

论坛徽章:
0
7 [报告]
发表于 2004-04-25 10:46 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

有必要搞什么启动脚本么?
我可是直接运行的clamd
一点问题都没有。

论坛徽章:
0
8 [报告]
发表于 2004-04-25 14:51 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

原帖由 "hefish" 发表:
有必要搞什么启动脚本么?
我可是直接运行的clamd
一点问题都没有。


只是想搞个启动脚本。

论坛徽章:
0
9 [报告]
发表于 2004-05-22 22:55 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

/usr/local/sbin/amavisd[20610]: No $file,         not using it
/usr/local/sbin/amavisd[20610]: No $arc,          not using it
/usr/local/sbin/amavisd[20610]: No $gzip,         not using it
/usr/local/sbin/amavisd[20610]: No $bzip2,        not using it
/usr/local/sbin/amavisd[20610]: No $lzop,         not using it
/usr/local/sbin/amavisd[20610]: No $lha,          not using it
/usr/local/sbin/amavisd[20610]: No $unarj,        not using it
/usr/local/sbin/amavisd[20610]: No $uncompress,   not using it
/usr/local/sbin/amavisd[20610]: No $unfreeze,     not using it
/usr/local/sbin/amavisd[20610]: No $unrar,        not using it
/usr/local/sbin/amavisd[20610]: No $zoo,          not using it
/usr/local/sbin/amavisd[20610]: No $cpio,         not using it
/usr/local/sbin/amavisd[20610]: No $rpm2cpio,     not using it
/usr/local/sbin/amavisd[20610]: No $cabextract,   not using it
/usr/local/sbin/amavisd[20610]: No $dspam,        not using it


我也是按照这个安装的,amavis debug,出现如下提示,而上面提到的的这些命令大部分都是存在的,跟踪了一下午的那个perl程序,发现在函数find_program_path()似乎有问题,在这个函数刚开始的时候写一个测试的命令,比如:
print("stat ok\n" if stat('/usr/local/sbin/amavisd');
结果正常输出,在这里stat()没问题,继续往下走...,在for()循环里面的最后一个else中无论如何,stat均失败,真是奇怪:
} else {                         # walk through the specified PATH
print("stat ok\n" if stat('/usr/local/sbin/amavisd');
do_log(0,"stat ok\n";

结果没有print,只有do_log执行了,不知道为什么会这样,我用的版本amavisd-new-20040422,请搞手指教,谢谢!

论坛徽章:
0
10 [报告]
发表于 2004-05-23 00:17 |只看该作者

[原]在LINUX+POSTFIX服务器上建立防病毒防垃圾屏障

原帖由 "yejr" 发表:
No $dspam,        not using it


我也是按照这个安装的,amavis debug,出现如下提示,而上面提到的的这些命令大部分都是存在的,跟踪了一下午的那个perl程序,发现在函数find_program_path()似乎有问题,在这?.........


原来是设置了
daemon_chroot_dir
这个参数导致的,现在可以了~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP