ÓʼþÍø¹ØÊÇÓÃÀ´×öΪ¹«Ë¾ÔÓзþÎñÆ÷Ö®¹ýÂËÆ÷£¬ËüÊǼÜÉèÔÚÔÓÐµÄ ·þÎñÆ÷֮ǰ¶Ë£¬¿É½«¹ã¸æÐźͲ¡¶¾ÓʼþÔÚÓʼþÍø¹Ø ÄÚ×öÍê¹ýÂ˵͝×÷Ö®ºó£¬ÔÙ°ÑÐżþ´«Ë͵½ÔÓй«Ë¾µÄÓʼþ·þÎñÆ÷ÉÏ£¬ÍêÈ«²»Óøü¸Äµ½Ô±¾¹«Ë¾ÄÚ²¿µÄÄÇ̨Óʼþ·þÎñÆ÷£¬Èç´Ë¾Í¿ÉÒÔʡȥºÜ¶à²»±ØÒªµÄÂé·³£¬°²×° ÓʼþÍø¹Ø ±ØÐèÅäºÏ DNS Server µÄÉ趨£¬Òª½« MX ¼Ç¼µÄµÚÒ»¸ö¼Ç¼ָÏòÓʼþÍø¹Ø£¬ÔÙ°ÑMX ¼Ç¼µÄµÚ¶þ¼Ç¼ָÏòÔÓй«Ë¾µÄÄÇ̨Óʼþ·þÎñÆ÷£¬ÕâÑù¾Í¿ÉÒÔÓÐÈÝ´íµÄ¹¦ÄÜ£¬Èç¹û ÓʼþÍø¹ØÓ²¼þË𻵻ò¹Ø»úʱ£¬Óʼþ»¹ÊǻᴫË͵½ÔÓеÄÓʼþ·þÎñÆ÷¶ø²»»áÒÅʧ¡£
ËùÐèÐÅÏ¢£º
OS : FreeBSD 6.0 Release
postfix-2.3.2 : /usr/ports/mail/postfix
clamav-0.88 : /usr/ports/security/clamav
uvscan-dat: /usr/ports/secutity/uvscan-dat
vscan: /usr/ports/secutity/vscan
amavis-stats-0.1.12 /usr/ports/security/amavis-stats
amavisd-new-2.4.1 : /usr/ports/security/amavisd-new
ÓʼþÍø¹Ø IP : 202.104.144.195(¼ÙÉè)
Óʼþ·þÎñÆ÷ IP : 202.104.144.196£¨¼ÙÉ裩
ÓòÃû£ºtest.domain £¨¼ÙÉ裩
°²×°¿ªÊ¼==========¡µ
ÐÂװϵͳÏÈÓÃcvsup¸üÐÂports¡£
°²×° Clamav
#cd /usr/ports/security/clamav
#make install clean
±à¼Æô¶¯µµ #vi /etc/rc.conf
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
#cd /usr/local/etc
#cp clamd.conf.default clamd.conf
#cp freshclam.conf.default freshclam.conf
±à¼É趨µµ£º #vi /usr/local/etc/clamd.conf
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 2M
LogTime
LogSyslog
LogVerbose
PidFile /var/run/clamav/clamd.pid
LocalSocket /var/run/clamav/clamd
StreamSaveToDisk
MaxDirectoryRecursion 15
User clamav
AllowSupplementaryGroups
ScanMail
ScanArchive
ArchiveMaxFileSize 10M
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000
ClamukoScanOnOpen
ClamukoScanOnClose
ClamukoScanOnExec
ClamukoIncludePath /home
ClamukoMaxFileSize 1M
ClamukoScanArchive
°²×°uvscan
#cd /usr/ports/security/uvscan-dat
#make install clean
# cd /usr/usr/ports/security/vscan
#make install clean
Ôö¼Ó¶¨Ê±¸üв¡¶¾¿â
#crontab ¨Ce
20 0 * * * /usr/local/sbin/update_dat
ÔÙ¼Ó×° Amavisd-new
#cd /usr/ports/security/amavisd-new/
#make install clean
#cp /usr/local/etc/amavisd.conf-sample /usr/local/etc/amavisd.conf
#vi /usr/local/etc/amavisd.conf
****************************************************************
# Section I - Essential daemon and MTA settings
$mydomain = 'test.domain';
$myhostname = 'viruswall.test.domain';
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
# Section II - MTA specific
û¸ü¸Ä±äʹÓÃÔ¤Éè
# Section III - Logging
$DO_SYSLOG = 1;
$DO_SYSLOG = 5;
# Section IV - Notifications/DSN, bounce/reject/discard/pass, quarantine
$final_virus_destiny = D_BOUNCE; # (defaults to D_DISCARD)
$final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_spam_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
# Section V - Per-recipient and per-sender handling, whitelisting, etc.
$virus_admin = "virusalert\@$myhostname";
$spam_admin = "spamalert\@$myhostname";
# Section VI - Resource limits
û¸ü¸Ä±äʹÓÃÔ¤Éè
# Section VII - External programs, virus scanners, SpamAssassin
$sa_tag_level_deflt = -999;
$sa_tag2_level_deflt = 10;
$sa_kill_level_deflt = 20;
['ClamAV-clamd', # ¿ªÆô clamav ¸ú amavisd-new ´îÅä
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
# Section VIll - Resource limits
$sa_spam_subject_tag = '***SPAM*** ';
$sa_spam_modifies_subj = 1;
# Section IX - Policy banks (dynamic policy switching)
û¸ü¸Ä±äʹÓÃÔ¤Éè
****************************************************************
ÐÂÔö log ÎļþËùҪʹÓõÄĿ¼¼°¸Ä±äĿ¼ȨÏÞ£º
#mkdir /var/log/amavis
#chown vscan:vscan amavis
#cd amavis
#touch amavis.log
#chown vscan amavis.log
#cd /var
#chown -R vscan:clamav amavis
ÔÚ×îеÄAMaVisd-newÒѾ½áºÏÁËSpamassassin¹¦ÄÜ£¬ËùÒÔÖ»ÒªÓà ports°²×°ÁË AMaVisd-new£¬ÄÇSpamassassin Ò²ÒѾ°²×°ºÃÁË¡£
Ìí¼ÓÐèÒªµÄÓû§
# pw useradd spam -c "Spam Bayes Learner" -d /var/empty -s /sbin/nologin
# pw useradd notspam -c "Not Spam Bayes Learner" -d /var/empty -s /sbin/nologin
ÐÞ¸Ä/usr/local/etc/mail/spamassassin/local.cf
use_bayes 1
bayes_path /var/amavis/.spamassassin/bayes
auto_learn 1
auto_learn_threshold_nonspam -2
auto_learn_threshold_spam 15
¼ÓÈë SapmAssassin µÄѧϰÉ趨µµ£º
#vi /var/amavis/.spamassassin/user_prefs
required_hits 5.0
rewrite_subject 1
# Text to prepend to subject if rewrite_subject is used
rewrite_header Subject ****SPAM(_SCORE_)****
# Encapsulate spam in an attachment
report_safe 1
# Use terse version of the spam report # Óþ«¼òµÄ·½Ê½À´»Ø±¨À¬»ø¸ø¹ÜÀíÕß
use_terse_report 1
# Enable the Bayes system # ʹÓñ´ÊÏѧϰϵͳ
use_bayes 1
# Enable Bayes auto-learning # ¿ªÆð±´ÊÏ×Ô¶¯Ñ§Ï°¹¦ÄÜ
auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
# - chinese
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
# Disabled scores
score HEADER_8BITS 0
score HTML_COMMENT_8BITS 0
score SUBJ_FULL_OF_8BITS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score UPPERCASE_75_100 0
#chown vscan:vscan user_prefs
½¨Á¢×Ô¶¯Ñ§Ï°Ìåϵ
l# vi /usr/local/sbin/my-sa-learn.sh
#!/bin/sh
if [ -e /var/mail/spam ]; then
/usr/local/bin/sa-learn --spam -p /var/amavis/.spamassassin/user_prefs --mbox /var/mail/spam
rm /var/mail/spam > /dev/null
fi
if [ -e /var/mail/notspam ]; then
/usr/local/bin/sa-learn --ham -p /var/amavis/.spamassassin/user_prefs --mbox /var/mail/notspam
rm /va/mail/notspam > /dev/null
fi
# chmod a+x /usr/local/sbin/my-sa-learn.sh
½¨Á¢Ñ§Ï°ÖªÊ¶¿â£º
mail# /usr/local/bin/sa-learn --rebuild -p /var/amavis/.spamassassin/user_prefs
¼ÓÈë×Ô¶¯ÔËÐУº
mail# crontab -e
5 0 * * * /usr/local/sbin/my-sa-learn.sh
±à¼Æô¶¯µµ #vi /etc/rc.conf Ôö¼Ó£º
amavisd_enable="YES"
spamd_enable="YES"
¼Ó×° Postfix MTA
#cd /usr/ports/mail/postfix
#make install # ¿ÉÒÔʲôѡÏî¶¼²»ÓÃÑ¡£¬°²×°¹ý³Ì»áÓÐÁ½¸öÐèÒª»Ø´ðµÄÎÊÌⶼѡ Yes ¼´¿É
#vi /usr/local/etc/postfix/master.cf # ×¢ÒâÏÂÃæ -o ֮ǰ±ØÐëÒª¿ÕÒ»¸ñ postfix ²Å»áÕý³£Æô¶¯
smtp-amavis unix - - n - 2 smtp
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
#vi /usr/local/etc/postfix/main.cf
myhostname = viruswall.test.domain
mydomain = test.domain
mynetworks = 202.104.144.196/28, 127.0.0.0/8
alias_maps = hash:/usr/local/etc/postfix/aliases
content_filter = smtp-amavis:[127.0.0.1]:10024
relay_domains = $mydestination, test.domain
transport_maps = hash:/usr/local/etc/postfix/transpor
#cd /usr/local/etc/postfix/
#vi aliases
virusalert: admin
spamalert: admin
#vi transport
test.domain smtp:[202.96.144.196]
.test.domain smtp:[202.104.144.196]
viruswall.test.domain local:
localhost.test.domain local:
#postalias aliases
#postmap transport
#postfix start
#postfix reload
#netstat -na |grep LISTEN # ²é¿´ 25 , 10024 , 10025 ÕâÈý¸ö port ÓÐÎÞ up
tcp4 0 0 127.0.0.1.10025 *.* LISTEN
tcp4 0 0 *.25 *.* LISTEN
tcp4 0 0 127.0.0.1.10024 *.* LISTEN
°²×°amvis-stats
#cd /usr/ports/secrity/amavis-stats
#make install clean
# cd /usr/local/www/data
# ln -s ../amavis-stats ./
# crontab -e -u amavis
*/5 * * * * /usr/local/sbin/amavis-stats /var/log/maillog 2>&1 > /dev/null
ÓйØapache2Óëphp4µÄÏà¹ØÉ趨¾Í²»ÔÙ†ªà¡£
ÔÚ
http://viruswall.test.domain/amavis-stats ¾Í¿ÉÒÔ·ÃÎÊÍø¹Ø·þÎñÆ÷À¹½Ø²¡¶¾ÓëÀ¬»øÓʼþµÄ³É¼¨Í¼¡£ÆäÖÐÀ¹½ØµÄ²¡¶¾ÓëÀ¬»øÓʼþ±»·ÅÖÃÔÚ/var/virusmailsÀҪ¶¨ÆÚÇåÀí£º
#crontab ¨Ce
50 23 * * * find /var/virusmails/ -ctime +7 -type f -delete -print |mail -s "Delete Virusmail" root@test.domain