메일 서버 · 4 min read · Sep 24, 2025
amavisd-new을 사용하여 스팸 및 바이러스 스캔하기
Postfix에 amavisd-new 통합하기 위한 스팸 및 바이러스 스캔
버전 1.0
저자: Falko Timme
이 문서에서는 amavisd-new을 Postfix 메일 서버에 통합하여 스팸 및 바이러스 스캔을 수행하는 방법을 보여줍니다. amavisd-new은 Postfix와 같은 MTA와 콘텐츠 검사기(바이러스 스캐너 및/또는 SpamAssassin) 간의 고성능 인터페이스입니다. 이 튜토리얼에서는 바이러스 스캔을 위해 ClamAV를 사용하고 스팸 스캔을 위해 SpamAssassin을 사용할 것입니다.
먼저, 이러한 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 제가 선택한 방법입니다. 이 방법이 귀하에게 작동할 것이라는 보장은 하지 않습니다!
1 사전 참고
이 튜토리얼에서는 Debian Etch/Ubuntu 6.10 Edgy Eft(두 배포판 모두 동일한 단계) 및 Debian Sarge에서 amavisd-new을 설치/구성하는 방법을 설명합니다. amavisd-new 구성은 시스템 사용자가 이메일 계정으로 사용되는 시스템에 적합합니다. 가상 사용자를 사용하는 경우 amavisd-new 구성에 몇 가지 수정이 필요할 수 있습니다(하지만 이는 실제 설정에 따라 다릅니다). 가상 이메일 사용자를 사용하는 경우 다음 두 튜토리얼을 참조하십시오:
- Postfix, Courier 및 MySQL을 사용한 가상 사용자 및 도메인(Fedora Core 5)
- Postfix, Courier 및 MySQL을 사용한 가상 사용자 및 도메인(Debian Sarge)
amavisd-new은 다음과 같이 작동합니다: Postfix는 포트 25에서 이메일을 수신하고, 이를 포트 10024의 amavisd-new으로 전달한 다음 ClamAV 및 SpamAssassin을 호출하고, 이후 amavisd-new은 포트 10025에서 Postfix로 메일을 다시 주입하여 최종적으로 메일을 배달합니다(깨끗한 경우). 프로세스의 작은 레이아웃은 다음과 같습니다:
[SpamAssassin]
^
|
이메일 --> [(포트 25) Postfix] --> [(10024) amavisd-new] --> [(10025) Postfix] --> 메일박스
|
v
[ClamAV]Postfix와 이메일 계정이 이미 설정되어 작동하고 있다고 가정합니다. 여기서는 Postfix 설치/구성을 다루지 않습니다.
이 튜토리얼의 모든 단계는 root로 수행되므로 root로 로그인되어 있는지 확인하십시오.
2 Debian Etch/Ubuntu 6.10 Edgy Eft
먼저 amavisd-new, SpamAssassin 및 ClamAV와 몇 가지 다른 프로그램(주로 amavisd-new이 아카이브를 풀기 위해 필요한 프로그램)을 함께 설치합니다. 이메일에는 첨부 파일로 아카이브가 포함될 수 있습니다:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop그 후 amavisd-new을 구성해야 합니다. 구성은 /etc/amavis/conf.d 디렉토리에 있는 여러 파일로 나뉘어 있습니다. 각 파일을 살펴보아 구성에 익숙해지십시오. 대부분의 설정은 괜찮지만 두 개의 파일을 수정해야 합니다:
먼저 /etc/amavis/conf.d/15-content_filter_mode에서 @bypass_virus_checks_maps 및 @bypass_spam_checks_maps 줄의 주석을 제거하여 ClamAV 및 SpamAssassin을 활성화해야 합니다:
vi /etc/amavis/conf.d/15-content_filter_mode파일은 다음과 같아야 합니다:
| use strict; # 이 파일을 수정하여 spamassassin을 통한 SPAM 검사를 다시 활성화하고 # 바이러스 검사를 다시 활성화할 수 있습니다. # # 기본 바이러스 검사 모드 # 아래 두 줄의 주석을 제거하여 다시 활성화하십시오. # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # 기본 SPAM 검사 모드 # 아래 두 줄의 주석을 제거하여 다시 활성화하십시오. # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # 정의된 반환 보장 |
그런 다음 /etc/amavis/conf.d/20-debian_defaults에서 스팸 설정 및 스팸/바이러스 메일에 대한 작업을 살펴보아야 합니다. 기본 설정이 괜찮다면 아무것도 변경할 필요가 없습니다. 파일에는 많은 설명이 포함되어 있으므로 여기서 설정을 설명할 필요는 없습니다:
vi /etc/amavis/conf.d/20-debian_defaults| $QUARANTINEDIR = "$MYHOME/virusmails"; $log_recip_templ = undef; # 수신자별 레벨-0 로그 항목 비활성화 $DO_SYSLOG = 1; # syslogd를 통해 로그 기록(선호) $syslog_ident = 'amavis'; # 모든 메시지에 추가되는 syslog 식별 태그 $syslog_facility = 'mail'; $syslog_priority = 'debug'; # 디버그 출력을 줄이려면 info로 전환 $enable_db = 1; # BerkeleyDB/libdb 사용 활성화(SNMP 및 nanny) $enable_global_cache = 1; # $enable_db=1인 경우 libdb 기반 캐시 사용 활성화 $inet_socket_port = 10024; # 기본 수신 소켓 $sa_spam_subject_tag = '*SPAM* '; $sa_tag_level_deflt = 2.0; # 해당 수준 이상일 경우 스팸 정보 헤더 추가 $sa_tag2_level_deflt = 6.31; # 해당 수준에서 '스팸 감지' 헤더 추가 $sa_kill_level_deflt = 6.31; # 스팸 회피 조치 트리거 $sa_dsn_cutoff_level = 10; # DSN이 전송되지 않는 스팸 수준 $sa_mail_body_size_limit = 200*1024; # 메일이 더 크면 SA에서 시간을 낭비하지 않음 $sa_local_tests_only = 0; # 인터넷 액세스가 필요하지 않은 테스트만? [...] $final_virus_destiny = D_DISCARD; # (데이터 손실 없음, 바이러스 격리 참조) $final_banned_destiny = D_BOUNCE; # 프론트 엔드 MTA일 때 D_REJECT $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # 오탐지 가능성 있음(스팸의 경우) [...] |
그 후 clamav 사용자를 amavis 그룹에 추가하고 amavisd-new 및 ClamAV를 재시작하는 명령을 실행합니다:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart다음으로 Freshclam 데몬의 구성 파일을 편집해야 합니다(이 데몬은 정기적으로 최신 바이러스 서명을 ClamAV 미러에서 자동으로 가져옵니다) 왜냐하면 작은 버그가 있기 때문입니다. /etc/clamav/freshclam.conf를 열고 NotifyClamd 줄을 아래와 같이 수정합니다:
vi /etc/clamav/freshclam.conf| [...] NotifyClamd /etc/clamav/clamd.conf [...] |
그런 다음 Freshclam을 재시작합니다(다른 ClamAV 설치의 Freshclam 프로세스가 실행 중이지 않은지 확인하십시오. 그렇지 않으면 Freshclam이 시작되지 않습니다):
/etc/init.d/clamav-freshclam restart이제 Postfix를 구성하여 수신 이메일을 amavisd-new을 통해 파이프해야 합니다:
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'그 후 /etc/postfix/master.cf에 다음 줄을 추가합니다:
vi /etc/postfix/master.cf| [...] amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet 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 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 |
그런 다음 Postfix를 재시작합니다:
/etc/init.d/postfix restart이제 다음을 실행합니다:
netstat -tap그러면 Postfix(마스터)가 포트 25(smtp) 및 10025에서 수신 대기하고 amavisd-new이 포트 10024에서 수신 대기하는 것을 볼 수 있어야 합니다:
server1:~# netstat -tap
활성 인터넷 연결 (서버 및 설립됨)
프로토콜 수신-Q 전송-Q 로컬 주소 외부 주소 상태 PID/프로그램 이름
tcp 0 0 *:4069 *:* LISTEN 3457/rpc.statd
tcp 0 0 localhost.localdo:10024 *:* LISTEN 6886/amavisd (maste
tcp 0 0 localhost.localdo:10025 *:* LISTEN 7268/master
tcp 0 0 *:sunrpc *:* LISTEN 3083/portmap
tcp 0 0 *:auth *:* LISTEN 3417/inetd
tcp 0 0 *:smtp *:* LISTEN 7268/master
tcp6 0 0 *:imaps *:* LISTEN 4952/couriertcpd
tcp6 0 0 *:pop3s *:* LISTEN 4872/couriertcpd
tcp6 0 0 *:pop3 *:* LISTEN 4815/couriertcpd
tcp6 0 0 *:imap2 *:* LISTEN 4905/couriertcpd
tcp6 0 0 *:ssh *:* LISTEN 3438/sshd
tcp6 0 0 *:smtp *:* LISTEN 7268/master
tcp6 0 148 server1.example.com:ssh localhost:3117 ESTABLISHED3519/0원하신다면 Razor, Pyzor 및 DCC를 SpamAssassin에 추가하여 필터링 성능을 향상시킬 수 있습니다. Razor, Pyzor 및 DCC는 협업 필터링 네트워크를 사용하는 스팸 필터입니다. 설치하려면 다음을 실행하십시오:
apt-get install razor pyzor dcc-client이제 SpamAssassin에 이 세 프로그램을 사용하도록 지시해야 합니다. /etc/spamassassin/local.cf를 편집하고 다음 줄을 추가합니다:
vi /etc/spamassassin/local.cf| [...] # dcc use_dcc 1 dcc_path /usr/bin/dccproc dcc_add_header 1 dcc_dccifd_path /usr/sbin/dccifd #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
그 후 amavisd-new을 재시작합니다:
/etc/init.d/amavis restart이제 모든 것이 완료되었습니다. amavisd-new이 제대로 작동하는지 확인하려면 메일 로그(/var/log/mail.log)를 주시하십시오. amavisd-new은 스팸 또는 바이러스 이메일을 찾을 때마다 로그를 기록합니다. amavisd-new을 (재)시작할 때 스팸 및 바이러스 스캔 코드를 로드한다고 로그를 남겨야 합니다(그렇지 않으면 잘못된 작업을 수행했을 가능성이 있습니다).
메일 로그를 실시간으로 보려면 다음 명령을 사용할 수 있습니다:
tail -f /var/log/mail.log(로그를 종료하려면 CTRL + c를 누르십시오.)
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.