[리눅스 서버] 메일 필터링

spamfiltering

스팸메일에는 바이러스 및 기타 맬웨어(malware) 등을 포함시켜 우리들을 골치아프게 한다.
여기서는 Amavisd-new, Spamassassin 및 ClamAV를 Postfix Mail Transport Agent (MTA)와 통합하는 방법에 대해 설명한다.

Amavisd-new는 스팸 탐지, 바이러스 백신 등을 위해 원하는 수의 콘텐츠 필터링 프로그램을 호출 할 수있는 래퍼 프로그램이고, Spamassassin은 메시지 내용에 따라 전자 메일을 필터링하기 위해 다양한 메커니즘을 사용한다. ClamAV는 오픈 소스 바이러스 백신 응용 프로그램이다.

opendkim은 DKIM (DomainKeys Identified Mail) 표준에 대한 Sendmail 메일 필터 (Milter)를 구현한다. python-policyd-spf를 사용하면 Postfix에서 SPF (Sender Policy Framework) 검사를 수행 할 수 있다.

이 프로그램들의 작동방식은 먼저 전자 메일 메시지는 Postfix에서 받아들이고, 메시지는 외부 필터 opendkim과  통해 전달되며, 그런 다음 Amavisd-new는 메시지를 처리합니다.

ClamAV는 오픈 소스 바이러스 백신 응용 프로그램이다. ClamAV는 메시지를 검사하는 데 사용되며, 메시지에 바이러스가 있으면 Postfix가 메시지를 거부하는 방식으로 운영된다.

그런 다음 메시지가 스팸인지 알아보기 위해 Spamassassin에서 정리 된 메시지를 분석한다. 그러면 Spamassassin은 X-Header 라인을 추가하여 Amavisd-new에서 메시지를 더 조작 할 수있게한다.
예를 들어 메시지의 스팸 점수가 50 이상이면받는 사람이 귀찮게 할 필요없이 메시지를 대기열에서 자동으로 삭제할 수 있다. 플래그가 지정된 메시지를 처리하는 또 다른 방법은 사용자가 적합하다고 판단되는 메시지를 처리 할 수 있도록 메일 사용자 에이전트 (MUA)에 메시지를 전달하는 것이다.

1. 설치

1) Amavisd-new, Spamassassin, ClamAV 및 opendkim postfix-policyd-spf 설치


2) Spamassassin의 향상된 스팸탐지를 위해 pyzor과 razor도 함께 설치


3) 첨부파일에 포함된 압축파일을 풀어 검사할 수 있도록 압축유틸리티도 추가로 설치

 

2. 설정

1) ClamAV 설정
ClamAV의 기본 설정은 특별히 수정할 것이 없을 것이다. 설정파일은 /etc/clamav 에 위치한다.
Amavisd-new이 파일을 검색 할 적절한 액세스 권한을 갖기 위해서는 amavis 그룹에 clamav 사용자를 추가해야 한다.


2) Spamassassin 설정

Spamassassin은 옵션 구성 요소(pyzor, razor)를 자동으로 감지하여 사용하기 때문에 pyzor과 razor은 별도의 설정이 필요 없다.
/etc/default/spamassassin을 편집하여 Spamassassin 데몬을 활성화 시키자.

설정 변경 후 Spamassassin 데몬을 시작시킨다.


3) Amavisd-new 설정

/etc/amavis/conf.d/15-content_filter_mode에서 아래와 같이 수정하여 Amavisd-new에서 스팸 및 바이러스 차단 탐지를 먼저 활성화시킨다.


/etc/amavis/conf.d/21-ubuntu_defaults를 열어보면, 우분투에서는 스팸처리 방법이 삭제로 기본 설정되어 있다. 또한, 아래 옵션 조정을 통하여 더 많은 메시지를 스팸으로 필터링 할 수 있다.

서버의 호스트 이름이 도메인의 MX 레코드와 다른 경우 $ myhostname 옵션을 수동으로 설정해야 할 수 있고, 서버가 여러 도메인의 메일을 수신하는 경우 @local_domains_acl 옵션을 사용자 정의해야 하고, /etc/amavis/conf.d/50-user를 수정한다.

또한, 여러 도메인을 포함한 경우에는 아래와 같이 할 수 있다.

여기까지 진행한 후 Amavisd-new를 리스타트 시킨다.


4) DKIM Whitelist 설정

Amavisd-new는 유효한 도메인 키가있는 도메인의 주소를 자동으로 허용하도록 구성 할 수 있다. /etc/amavis/conf.d/40-policy_banks에는 사전 구성된 도메인이 있다.

도메인에 대한 허용 목록을 구성하는 방법에는 여러 가지가 있다.

‘example.com’ => ‘WHITELIST’, example.com 도메인의 주소를 허용 목록에 추가
‘.example.com’ => ‘WHITELIST’, 유효한 서명이있는 ‘example.com’의 하위 도메인에서 주소를 허용 목록에 추가
‘.example.com/@example.com’, example.com의 서명을 사용하는 “example.com”의 하위 도메인을 부모 도메인으로 허용 목록에 추가
./@example.com’ => ‘WHITELIST’, “example.com”의 유효한 서명이있는 주소를 추가. 일반적으로 메시지에 서명하는 토론 그룹에 사용됨.


5) Postfix 설정

postconf 명령으로 아래와 같이 Postfix 설정을 추가한다.

다음으로 /etc/postfix/master.cf를 편집하고 파일 끝에 다음을 추가하자.

또한 “pickup” transport service 바로 아래에 다음 두 줄을 추가하자.

이렇게하면 스팸에 대해 보고하도록 생성 된 메시지가 스팸으로 분류되지 않는다.

이제 Postfix를 다시 시작하면, 스팸메일 및 바이러스 탐지를 통한 콘텐츠 필터링이 활성화 된거다.


6) Amavisd-new와 Spamassassin

Amavisd-new와 Spamassassin를 함께 사용할 때, /etc/spamassassin/local.cf를 편집하여 베이 필터링을 비활성화하고, cron을 사용하여 nightly rules를 업데이트하면 많은 양의 오류 메시지가 amavisd-new cron 작업을 통해 amavis 사용자에게 전송 될 수 있다.

이 상황을 처리 할 수있는 몇 가지 방법이 있다.

* 보지 않으려는 메시지를 필터링하도록 MDA를 구성해보자.
* /usr/sbin/amavisd-new-cronjob 의 테스트 문 앞에 다음을 추가하고 저장한다.

 

3. 테스트

먼저 Amavisd-new SMTP가 수신 대기 중인지 테스트 해보자.

다음으로 콘텐츠 필터를 통과하는 메시지의 헤더에 다음이 표시되나 확인해 본다.

 

 

[참고자료]
1. 우분투 서버 가이드>>이메일 서비스>>메일 필터링

 


답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.