Spam 관리 · 11 min read · Dec 25, 2025
완벽한 SpamSnake - Ubuntu Jeos 10.10 Maverick Meerkat - 페이지 3
8. Baruwa
커스텀 baruwa deb 패키지를 다운로드합니다:
cd /usr/src
wget baruwa_1.0.1-2sn_all.deb Updated 021811
wget baruwa-doc_1.0.1-2_all.deb
gdebi baruwa*.deb로그를 위한 baruwa db 설정을 하라는 메시지가 표시됩니다. 여기에는 Baruwa 스크립트에서 사용할 액세스 사용자 이름과 비밀번호가 포함됩니다. Baruwa 프론트엔드의 관리자 사용자 정보 설정을 위한 메시지도 표시됩니다.
vi /usr/share/pyshared/baruwa/settings.py격리 호스트 URL을 원하는 대로 변경합니다:
QUARANTINE_REPORT_HOSTURL = 'http://baruwa-alpha.local'vi /opt/MailScanner/etc/MailScanner.conf다음 옵션이 설정되어 있는지 확인해야 합니다:
Always Looked Up Last = &BaruwaSQL
Is Definitely Not Spam = &BaruwaWhitelist
Is Definitely Spam = &BaruwaBlacklist
Required SpamAssassin Score = &BaruwaLowScore
High SpamAssassin Score = &BaruwaHighScore Baruwa 업그레이드
*참고: 이 섹션은 이전 버전의 Baruwa를 실행 중인 사용자만 해당됩니다. 새로 설치하는 경우 이 부분을 건너뛰십시오.
최신 baruwa deb 패키지를 다운로드합니다:
cd /usr/src
wget baruwa_1.0.2-4sn_all.deb Updated 052011
wget baruwa-doc_1.0.2-4_all.deb
gdebi baruwa*.debmysql db 설정을 하라는 메시지가 표시되면 “아니오”를 선택합니다. 현재 db와 설정을 재사용할 것입니다.
연결하기 전에 /usr/share/pyshared/baruwa/settings.py가 올바른 데이터베이스 정보로 설정되어 있는지 확인하십시오. 그렇지 않으면 연결이 실패합니다.
vi /usr/share/pyshared/baruwa/settings.pyDATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' 또는 'oracle'.
DATABASE_NAME = 'baruwa' # sqlite3를 사용하는 경우 데이터베이스 파일의 경로.
DATABASE_USER = 'baruwa' # sqlite3와 함께 사용되지 않음.
DATABASE_PASSWORD = 'password' # sqlite3와 함께 사용되지 않음.
DATABASE_HOST = '' # localhost의 경우 빈 문자열로 설정. sqlite3와 함께 사용되지 않음.
DATABASE_PORT = '' # 기본값의 경우 빈 문자열로 설정. sqlite3와 함께 사용되지 않음.*참고: 몇 가지 사소한 업그레이드 충돌로 인해 Baruwa를 올바르게 업그레이드하기 위해 이러한 단계를 수행해야 할 수 있습니다.
/opt/MailScanner가 제거된 경우:
ln -s /opt/MailScanner-version /opt/MailScanner
rm -r /etc/MailScanner
ln -s /opt/MailScanner/etc /etc/MailScanner
ln -s /opt/MailScanner/lib/MailScanner/CustomFunctions /etc/MailScanner/etc/MailScanner/CustomFunctions/*.pm 파일에서 데이터베이스 연결 문자열을 업데이트해야 합니다.
마지막으로 실행합니다:
manage.py syncdbUwsgi와 Nginx를 재시작합니다:
/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restartBaruwa는 102-4sn으로 업그레이드되어야 합니다.
Baruwa 102-4에서 111-3sn으로 업그레이드
Rabbitmq-Server 2.2.0을 설치하고 db/user/password를 설정합니다:
cd /usr/src
wget http://ppa.launchpad.net/drizzle-developers/ppa/ubuntu/pool/main/r/rabbitmq-server/rabbitmq-server_2.2.0-1~maverick0_all.deb
gdebi rabbit*localhost에 바인딩하기 위해 vi /etc/rabbitmq/rabbitmq.conf를 엽니다:
export RABBITMQ_NODENAME=rabbit@localhost
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
export ERL_EPMD_ADDRESS=127.0.0.1데이터베이스 자격 증명을 추가합니다:
rabbitmqctl add_user baruwa password
rabbitmqctl add_vhost baruwa
rabbitmqctl set_permissions -p baruwa baruwa ".*" ".*" ".*"rabbitmq-server를 재시작합니다:
/etc/init.d/rabbitmq-server restartBaruwa 1.1.1-3의 소스를 추가하고 종속성을 설치합니다:
wget -O - http://apt.baruwa.org/baruwa-apt-keys.gpg | apt-key add -vi /etc/apt/sources.list
#baruwa
deb http://apt.baruwa.org/ubuntu maverick main종속성을 설치합니다:
apt-get update
apt-get install python-django-celery python-importlib*참고: 위 명령은 Baruwa의 모든 종속성을 설치해야 합니다.
Baruwa1.1.1-3sn을 다운로드하고 설치합니다:
mkdir /usr/src/baruwa1113 && cd /usr/src/baruwa1113
wget https://docs.google.com/open?id=0B9cN15Q3pKnwY2YyMmMwOTQtNGJkMi00ZDc2LWFjMjMtY2UxMzFlYWY5Mzk2
mv open* baruwa_1.1.1-3sn_all.deb
wget https://docs.google.com/open?id=0B9cN15Q3pKnwODk2OGViYmMtMGZmYS00NmJjLTkwZWUtNTJjYTQ1YzAzOTg1
mv open* baruwa-doc_1.1.1-3sn_all.deb
gdebi baruwa_1.1.1-3sn_all.deb
gdebi baruwa-doc_1.1.1-3sn_all.deb*참고: 패키지 유지 관리자의 버전 파일을 설치하라는 메시지가 표시되면 선택하십시오. mysql 설정을 하라는 메시지에는 “아니오”를 선택하십시오. 이전 버전에서 업그레이드하고 있습니다.
settings.py의 심볼릭 링크를 수정합니다:
rm –r /usr/share/pyshared/baruwa/settings.py && ln –s /etc/baruwa/settings.py /usr/share/pyshared/baruwa/vi /etc/baruwa/settings.py를 열고 baruwa 데이터베이스 구성을 수정합니다:
DATABASES = {
'default': {
# 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' 또는 'oracle'.
'ENGINE': 'django.db.backends.mysql',
# sqlite3를 사용하는 경우 데이터베이스 파일의 경로.
'NAME': 'baruwa',
# sqlite3와 함께 사용되지 않음.
'USER': 'baruwa',
# sqlite3와 함께 사용되지 않음.
'PASSWORD': 'password',
# localhost의 경우 빈 문자열로 설정. sqlite3와 함께 사용되지 않음.
'HOST': '',
# 기본값의 경우 빈 문자열로 설정. sqlite3와 함께 사용되지 않음.
'PORT': '',
}
}Baruwa 데이터베이스 구조를 업데이트합니다:
baruwa-admin syncdb --noinput업그레이드를 시작하기 위해 가짜 마이그레이션을 실행합니다:
for name in $(echo "accounts messages lists reports status config"); do
baruwa-admin migrate $name 0001 --fake;
done정상 마이그레이션을 실행합니다:
for name in $(echo "accounts messages lists reports status fixups config"); do
baruwa-admin migrate $name;
donevi /etc/MailScanner/MailScanner.conf에서 다음을 변경합니다:
Run As Group = celeryd
Quarantine User = celeryd
Quarantine Group = celerydvi /etc/MailScanner/conf.d/baruwa.conf:
Quarantine User = postfix #(또는 `Run As User`로 설정한 사용자)
DB DSN = DBI:mysql:database=baruwa;host=localhost;port=3306 #유효한 DSN으로 설정
DB Username = baruwa # 데이터베이스 사용자 이름
DB Password = password # 데이터베이스 비밀번호vi /etc/init.d/mailscanner를 열고 그룹 항목을 www-data에서 celeryd로 변경합니다:
check_dir /var/spool/MailScanner ${user:-postfix} ${group:-celeryd}
check_dir /var/lib/MailScanner ${user:-postfix} ${group:-celeryd}
check_dir /var/run/MailScanner ${user:-postfix} ${group:-celeryd}
check_dir /var/lock/subsys ${user:-root} ${group:-root} #폴더 생성에 필요
check_dir /var/lock/subsys/MailScanner ${user:-postfix} ${group:-celeryd}
start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix:celeryd --exec $DAEMON --name $NAME -- $DAEMON_ARGS \celeryd 사용자를 clamav 그룹에 추가합니다:
usermod -a -G celeryd clamav격리 폴더와 콘텐츠의 그룹 소유권을 변경합니다:
chgrp -R celeryd /var/spool/MailScanner/quarantine서명을 사용할 경우 다음을 실행하여 초기화합니다:
baruwa-admin initconfig그렇지 않으면 /etc/MailScanner/conf.d/baruwa.conf에서 옵션을 비활성화합니다:
#Inline HTML Signature = htmlsigs.customize
#Inline Text Signature = textsigs.customize
#Signature Image Filename = sigimgfiles.customize
#Signature Image  Filename = sigimgs.customize시스템을 재부팅하고 Baruwa 111-3sn을 즐기십시오.
9. Uwsgi와 Nginx
Chris Lea의 Launchpad에서 Nginx와 Uwsgi를 모두 다운로드하고 설치합니다:
wget https://launchpad.net/~chris-lea/+archive/nginx-devel/+files/nginx_1.0.0-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-common_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-extra_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-python2.6_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi_0.9.6.6-1chl1%7Emaverick1_all.deb
apt-get install libsctp1
dpkg -i nginx*
dpkg -i uwsgi*다음 구성 파일을 uwsgi 및 nginx에 사용합니다:
vi /etc/uwsgi/uwsgi-python2.6/baruwa.ini[uwsgi]
socket = /var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock
pythonpath = /usr/share/pyshared/baruwa/
master = true
processes = 2
env = DJANGO_SETTINGS_MODULE=baruwa.settings
module = django.core.handlers.wsgi:WSGIHandler()vi /etc/nginx/sites-available/baruwa.conf server {
listen 80;
server_name example.com;
root /usr/share/pyshared/baruwa;
#주 접근 로그
access_log /var/log/nginx/access.log;
#주 오류 로그
error_log /var/log/nginx/error.log;
location /static {
root /usr/share/pyshared/baruwa/static/;
}
# 정적 리소스
location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
{
expires 30d;
break;
}
location / {
uwsgi_pass unix:///var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock;
include uwsgi_params;
}
}*참고: example.com을 설정에 맞는 FQDN으로 변경해야 합니다.
기본 가상 호스트를 제거하고 uwsgi_params를 복사합니다:
rm -r /etc/nginx/sites-enabled/default
cp /usr/share/doc/uwsgi-extra/nginx/uwsgi_params /etc/nginx/uwsgi_params
ln -s /etc/nginx/sites-available/baruwa.conf /etc/nginx/sites-enabled/baruwa.conf서비스를 재시작합니다:
/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart모든 설정이 완료되어야 합니다.
크론 작업 설정
manage.py에 대한 심볼릭 링크를 생성합니다:
ln -s /usr/share/pyshared/baruwa/manage.py /usr/bin/manage.py
chmod +x /usr/bin/manage.py크론 작업을 추가합니다:
@daily manage.py cleanquarantine &> /dev/null #격리 청소
@daily manage.py sendquarantinereports &> /dev/null #격리 보고서 전송
@monthly manage.py dbclean &> /dev/null #메일 로그 청소
@weekly manage.py updatesarules &> /dev/null #spamassassin 규칙 업데이트
@daily manage.py sendpdfreports &> /dev/null #PDF 보고서 전송MailScanner를 시작합니다:
/etc/init.d/mailscanner start브라우저를 http://hostname_used로 열고 관리자 사용자 및 비밀번호로 로그인하여 작업을 시작합니다. 이제 인터페이스를 사용하여 사용자를 추가하고 메시지를 처리할 수 있습니다.
Baruwa 설정 지침
Baruwa에 관리자로 로그인 –> 설정 –> 계정 –> 계정 생성
사용자 계정을 생성하면 해당 페이지에 프로필 설정 및 관련 주소라는 두 개의 새 탭이 표시됩니다.
프로필 설정을 작성하고 도메인 관리자를 선택한 다음 낮은 점수를 6으로, 높은 점수를 9로 설정하고 이메일 스캔을 체크합니다.
관련 주소 아래의 + 기호를 클릭하고 사용자가 관리하는 도메인(예: domain.com)을 입력합니다. domain.com은 관련 주소 아래에 표시됩니다.
domain.com을 클릭하면 도메인 정보로 이동하여 SMTP 배달 정보를 설정할 수 있습니다. 수신 SMTP 서버 또는 수신 SMTP 서버의 IP를 추가하십시오. 활성화 선택 후 비표준 포트를 사용하는 경우 설정하고, 그렇지 않으면 25를 사용하십시오. 완료되면 연필 옆의 테스트 버튼을 클릭하여 수신 서버가 연결을 수락할 수 있는지 확인하십시오.
이제 관리자로 로그아웃하고 방금 설정한 사용자로 로그인하면 메일이 흐르기 시작합니다.
/etc/postfix/main.cf의 relay_recipients, relay_domains 및 transports 설정은 Baruwa에서 제공한 항목을 사용합니다. 따라서 해시 파일이 필요하지 않습니다.
mysql cf 파일의 관련 쿼리는 올바른 형식으로 결과를 가져와 postfix에서 사용할 수 있도록 제공합니다.
그러나 구성 파일 중 하나에 해시를 사용하려면 /etc/postfix/main.cf를 설정하는 방법의 예로 다음을 사용하십시오:
relay_recipient_maps = hash:/etc/postfix/relay_recipients물론 해시 파일을 생성하고 채우고 postfix에서 사용할 수 있도록 postmap해야 합니다.
*참고: 특정 도메인에 대해 relay_recipients에 해시를 사용하는 경우 해당 도메인을 /etc/postfix/access에서 제거해야 합니다. 다른 모든 도메인 사용자는 여전히 look_ahead를 사용하여 확인할 수 있습니다.
또한 mx 조회를 수행해야 하는 경우 /etc/postfix/mysql-transports.cf 쿼리를 다음과 같이 수정해야 합니다:
concat('smtp:', mail_hosts.address, ':', port) 'transport'[ 및 ]는 MX 조회를 허용하기 위해 제거되었습니다.
Baruwa를 즐기십시오!
10. SPF 설치 및 구성
postfix-policyd-spf-perl 패키지는 Mail::SPF 및 NetAddr::IP Perl 모듈에 의존합니다.
/usr/src/ 디렉토리에 postfix-policyd-spf-perl을 다운로드하고 /usr/lib/postfix/ 디렉토리에 설치해야 합니다:
cd /usr/src
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.007.tar.gz
tar xvfz postfix-policyd-spf-perl-2.007.tar.gz
cd postfix-policyd-spf-perl-2.007
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl그런 다음 /etc/postfix/master.cf를 편집하고 끝에 다음 구문을 추가합니다:
vi /etc/postfix/master.cfpolicy unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl(leading spaces는 Postfix가 이 줄이 이전 줄에 속한다는 것을 알 수 있도록 중요합니다!)
*참고: main.cf에 대한 항목은 이미 postfix 설정 스크립트를 사용하여 추가했습니다.
그런 다음 Postfix를 재시작합니다:
/etc/init.d/postfix restart그게 전부입니다.
11. FuzzyOcr 설치 및 구성
FuzzyOCR에는 ocrad 및 gocr와 같은 몇 가지 필수 구성 요소가 있으며, 다음과 같이 설치할 수 있습니다:
apt-get install fuzzyocr netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl libdigest-md5-perl libdbd-mysql-perl imagemagick tesseract-ocr
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.6.0.tar.gz
tar xvfz fuzzyocr-3.6.0.tar.gz
cd FuzzyOcr-3.6.0/이제 FuzzyOCR가 설치되었으므로 구성해야 합니다. FuzzyOCR의 구성 파일은 /etc/spamassassin/FuzzyOcr.cf입니다. 해당 파일의 거의 모든 것이 주석 처리되어 있습니다. 이제 해당 파일을 열고 몇 가지 수정을 합니다:
vi /etc/spamassassin/FuzzyOcr.cf다음 줄의 주석을 제거합니다:
focr_global_wordlist /etc/spamassassin/FuzzyOcr.words
focr_preprocessor_file /etc/spamassassin/FuzzyOcr.preps
focr_scanset_file /etc/spamassassin/FuzzyOcr.scansets<
focr_enable_image_hashing 3
focr_digest_db /etc/spamassassin/FuzzyOcr.hashdb
focr_db_hash /etc/spamassassin/FuzzyOcr.db
focr_db_safe /etc/spamassassin/FuzzyOcr.safe.db
focr_bin_helper convert, tesseract경로를 주석 처리합니다:
#focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin이미지 해시를 mysql 데이터베이스에 저장하여 성능을 개선하여 이미 스캔한 이미지는 다시 스캔하지 않도록 합니다.
MySQL 데이터베이스 생성:
sql 스크립트는 fuzzyocr를 위한 데이터베이스를 생성합니다:
mysql -p < FuzzyOcr.mysql권한 부여:
mysql –u root –p
GRANT ALL ON FuzzyOcr.* TO fuzzyocr@localhost IDENTIFIED BY ‘password’;FuzzyOcr.cf 업데이트:
vi /etc/spamassassin/FuzzyOcr.cf다음 줄을 활성화합니다:
focr_mysql_db FuzzyOcr
focr_mysql_hash Hash
focr_mysql_safe Safe
focr_mysql_user fuzzyocr
focr_mysql_pass fuzzyocr
focr_mysql_host localhost
focr_mysql_port 3306
focr_mysql_socket /var/run/mysqld/mysqld.sock*참고: 빨간색으로 표시된 줄을 변경해야 합니다.
FuzzyOcr 데이터베이스 클리너 설정:
vi /usr/sbin/fuzzy-cleanmysql#!/usr/bin/perl
#MySQL 테이블의 데이터를 정리하는 스크립트. 기본값은 Safe에 1일, Hash에 10일 동안 데이터를 남깁니다.
#Fuzzyocr-cleanmysql
use Getopt::Long;
use DBI;
use MLDBM qw(DB_File Storable);
my %Files = (
db_hash => '/var/lib/fuzzyocr/FuzzyOcr.db',
db_safe => '/var/lib/fuzzyocr/FuzzyOcr.safe.db',
);
use DBI;
$database = "FuzzyOcr";
$hostname = "localhost";
$socket = "/var/run/mysqld/mysqld.sock";
$port = "3306";
$username = "fuzzyocr";
$password = 'password';
# 기본값
my $cfgfile = "/etc/spamassassin/FuzzyOcr.cf";
my %App;
my %age;
$age{'age'} = 10*24; # 10일
$age{'hash'} = $age{'age'};
$age{'safe'} = 0;
my $help = 0;
my $verbose = 0;
GetOptions( \%age,
'age=i',
'config=s' => \$cfgfile,
'hash=i',
'help' => \$help,
'safe=i',
'verbose' => \$verbose,
);
if ($help) {
print "Usage: fuzzy-cleanmysql [Options]\n";
print "\n";
print "Available options:\n";
print "--age=i Global age in hours to keep in db\n";
print "--config=s Specify location of FuzzyOcr.cf\n";
print " Default: /etc/spamassassin/FuzzyOcr.cf\n";
print "--hash=i Number of hours old to keep in Hash db\n";
print "--safe=i Number of hours old to keep in Safe db\n";
print "--verbose Show more informations\n";
print "\n";
exit 1;
}
# 시간을 초로 변환
$age{'age'} *= 60 * 60;
$age{'hash'} *= 60 * 60;
$age{'safe'} *= 60 * 60;
$age{'safe'} = $age{'safe'} ? $age{'safe'} : $age{'age'};
# FuzzyOcr.cf에서 사용자 정의 경로 읽기
my $app_path = q(/usr/local/netpbm/bin:/usr/local/bin:/usr/bin);
open CONFIG, "< $cfgfile" or warn "Can't read configuration file, using defaults...\n";
while () {
chomp;
if ($_ =~ m/^focr_bin_(\w+) (.+)/) {
$App{$1} = $2;
printf "Found custom path \"$2\" for application \"$1\"\n" if $verbose;
}
if ($_ =~ m/^focr_path_bin (.+)/) {
$app_path = $1;
printf "Found new path: \"$1\"\n" if $verbose;
}
if ($_ =~ m/^focr_enable_image_hashing (\d)/) {
$App{hashing_type} = $1;
printf "Found DB Hashing\n" if ($verbose and $1 == 2);
printf "Found MySQL Hashing\n" if ($verbose and $1 == 3);
}
if ($_ =~ m/^focr_mysql_(\w+) (.+)/) {
$MySQL{$1} = $2;
printf "Found MySQL option $1 => '$2'\n" if $verbose;
}
if ($_ =~ m/^focr_threshold_max_hash (.+)/) {
$App{max_hash} = $1;
printf "Updated Thresold{max_hash} = $1\n" if $verbose;
}
}
close CONFIG;
# 이 임계값이 설정되어 있는지 확인
$App{max_hash} = 5 unless defined $App{max_hash};
# bin_util에 대한 검색 경로, 구성 파일에 이미 지정되지 않은 경우
foreach my $app (@bin_utils) {
next if defined $App{$app};
foreach my $d (split(':',$app_path)) {
if (-x "$d/$app") {
$App{$app} = "$d/$app";
last;
}
}
}
sub get_ddb {
my %dopts = ( AutoCommit => 1 );
my $dsn = "DBI:mysql:database=$database";
if (defined $socket) {
$dsn .= ";mysql_socket=$socket";
} else {
$dsn .= ";host=$hostname";
$dns .= ";port=$port" unless $port == 3306;
}
printf "Connecting to: $dsn\n" if $verbose;
return DBI->connect($dsn, $username, $password,\%dopts) or die("Could not connect!");
}
if ($App{hashing_type} == 3) {
my $ddb = get_ddb();
if ($ddb) {
my $sql;
foreach my $ff (sort keys %Files) {
$ff =~ s/db_//;
$sqlbase = "FROM $MySQL{$ff} WHERE $MySQL{$ff}.\`check\` < ?";
my $timestamp = time;
$timestamp = $timestamp - $age{$ff};
$sql = "DELETE $sqlbase";
if ( $verbose ) {
printf "Delete from Table $MySQL{$ff}\n";
print "$sql, $timestamp\n";
print "Timestamp is ", scalar(localtime($timestamp)), "\n";
print "That's $age{$ff} seconds earlier than now.\n";
print "\n";
}
$ddb->do($sql,undef,$timestamp);
}
$ddb->disconnect;
}
}chmod +x /usr/sbin/fuzzy-cleanmysql크론에 추가합니다:
crontab -e@weekly /usr/sbin/fuzzy-cleanmysql &> /dev/null #FuzzyOcr DB 클리너이제 FuzzyOCR 구성이 완료되었습니다. 이제 예상대로 작동하는지 확인해 보겠습니다.
이 이메일을 SpamAssassin에 제공하여 FuzzyOCR이 SpamAssassin에 올바르게 연결되었는지 확인할 수 있습니다.
spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.6.0/samples/ocr-gif.eml > /dev/null이제 많은 출력이 표시되어야 하며, 끝은 다음과 같아야 합니다:
[...]
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: 금요일 8월 4일, 오후 4:01 ET
[10025] dbg: FuzzyOcr: 라스베가스, 네바다--(마켓 와이어)--2006년 8월 4일 -- 양자 에너지, lnc. (OTC
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-
[10025] dbg: FuzzyOcr: 양자 에너지, lnc.는 프랑크푸르트 증권 거래소에 상장하기 위해 신청했음을 기쁘게 발표합니다. 이 회사는 신청을 지원하기 위해 독일 함부르크의 발틱 투자 그룹의 서비스를 유지했습니다.
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: _ qEGY,OB "12. ClamAV로 PDF, XLS 및 피싱 스팸 필터링 (Sanesecurity 서명)
현재 스팸의 상당수가 스팸 “정보”가 .pdf 또는 .xls 파일로 첨부되어 있으며, 때때로 .zip 파일 안에 숨겨져 있습니다. 이러한 스팸 메일은 예를 들어 SpamAssassin이나 Bayes 필터로 잡기가 쉽지 않지만, ClamAV 바이러스 스캐너는 올바른 서명을 제공하면 쉽게 잡을 수 있습니다.
sanesecurity를 위한 폴더를 만들고 스크립트를 다운로드하여 적절한 권한을 부여합니다.
apt-get install curl rsync
mkdir /usr/src/sanesecurity && cd /usr/src/sanesecurity
wget http://www.inetmsg.com/pub/clamav-unofficial-sigs.tar.gz
tar -zxf clamav-unofficial-sigs.tar.gz && cd clamav-unofficial-sigs-3.7.1
mv clamav-unofficial-sigs.sh /usr/sbin
mv clamav-unofficial-sigs.conf /etc/
chmod +x /usr/sbin/clamav-unofficial-sigs.sh
vi clamav-unofficial-sigs.conf다음 변수를 설치에 맞게 변경합니다:
clam_dbs="/var/lib/clamav"clamd.pid의 경로:
clamd_pid="/var/run/clamav/clamd.pid"업데이트 후 다시 로드:
reload_dbs="yes"
reload_opt="kill -USR2 `cat $clamd_pid`" #DB를 다시 로드하도록 PID에 신호를 보냅니다작업 디렉토리:
work_dir="/var/lib/clamav"구성이 완료되면 다음을 “yes”로 설정합니다:
user_configuration_complete="yes" 이제 업데이트 스크립트를 실행하여 다운로드가 작동하는지 확인합니다:
clamav-unofficial-sigs.sh크론에 추가합니다:
00 04 * * * /usr/sbin/clamav-unofficial-sigs.sh -c /etc/clamav-unofficial-sigs.conf &> /dev/null /etc/clamav-unofficial-sigs.conf를 편집하고 MalwarePortal 데이터베이스 섹션을 주석 처리하십시오. 이 정의를 사용할 때 많은 잘못된 긍정이 발생했습니다.
13. Greyfix로 그레이리스트
Greyfix는 매우 잘 작동하고 자원 소모가 적은 작은 그레이리스트 데몬입니다.
설치:
cd /usr/src && wget http://www.kim-minh.com/pub/greyfix/greyfix-0.3.9.tar.gz
tar -xf greyfix-0.3.9.tar.gz && cd greyfix-0.3.9
./configure --localstatedir=/var
make
make installvi /etc/postfix/master.cf다음 내용을 추가합니다:
greyfix unix - n n - - spawn
user=nobody argv=/usr/local/sbin/greyfix --greylist-delay 60 -/ 24main.cf에 대한 항목은 이미 postfix 설정 스크립트를 사용하여 추가했습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.