메일 서버 · 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를 누르십시오.)

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.