Mailfiltering Gateway/ko

이 안내서는 Postfix의 스팸 차단 기능에 대한 과정별 안내서입니다. 이 과정에서 Amavisd-new, 스팸 어쌔신, ClamAV, 그레이 리스팅, SPF를 활용합니다.

도입부
이 안내서에서는 스팸 및 바이러스를 걸러내는 메일 게이트웨이를 설치하는 방법을 과정별로 설명합니다. 단일 서버 솔루션에 적용할 때 꽤 단순합니다.

대략적인 그림
이 문서는 다중 도메인에 대한 스팸 차단 메일 게이트웨이 설정 방법을 설명합니다. 이 서버는 메일 계정을 실제로 보유하고 있는 메일 서버(마이크로소프트 익스체인지 또는 로터스 노츠 등)의 앞단에서 실행합니다.

이 설치 과정에서 적절한 보안 레코드와 알아보기 쉬운 설정 파일을 갖춘 프로그램을 선택합니다. 전자메일 MTA로는 적절한 보안레코드를 보유하고 있으며 설정을 올바르게 처리하는데 상당히 쉬운 postfix를 활용합니다. Postfix는 메일 수신에 보통 25번 포트로 감청합니다. 이 과정에서 Amavisd-new에 10024번 포트를 통해 전달합니다. Amavisd-new 는 다음 메일 서버로 메일을 전달할 10025번 포트를 통해 Postfix로 메일을 다시 되돌리기 전에 다양한 필터를 거칩니다.

Amavisd-new는 내용 기반 차단 프레임워크이며 바이러스 및 스팸을 차단하는 도우미 프로그램을 제대로 동작하게 합니다. 이 설치 과정에서 바이러스를 차단하는 ClamAV 그리고 스팸을 차단하는 스팸 어쌔신을 두가지 도우미 프로그램으로 활용하겠습니다. 스팸 어쌔신 자체는 내용 기반 차단 프레임워크 계층 기능을 잇따라 수행하며, Vipul's Razor2와 DCC 도우미 프로그램을 동작합니다.

RBL 및 기타 스팸 처리 기능 프로그램과는 달리 스팸 어쌔신은 단순히 일회 시험만을 기반으로 하는 전자메일 수용, 거절 기능만을 수행하지 않습니다. 내부 시험과 외부 도우미 프로그램을 통해 거쳐간 모든 전자메일을 기반으로 스팸 가중치를 계산합니다. 이 가중치는 다음 시험 과정을 기반으로 합니다:


 * 베이지안 필터링
 * 정규 표현식에 기반한 정적 규칙
 * 분산 협업 네트워크
 * RBLs
 * Razor2
 * Pyzor
 * DCC

안내서의 첫부분(1~4장)에서는 메일 차단 게이트웨이의 기본 설정을 설명합니다. 다음 장에서는 이전 장과 관계없이 제각각 구현할 수 있습니다. 아래 언급 한 장에서는 다음 방법에 대해 설명합니다:


 * 베이지언 필터 숙지 동작과 거짓 양성 메일 배달을 처리할 특수 IMAP 폴더 설정
 * Postfix로 그레이리스팅 설정
 * Amavisd-new에서 사용자 설정을 담을 MySQL 백엔드 사용 설정
 * Spamassassin에서 AWL과 Bayes 데이터를 담을 MySQL 백엔드 사용 설정

계획한 다섯번째 부분에서는 성능과 관련있는 내용 그리고 알고 싶은 부분(루트를 전환한 환경에서 실행, postfix 제한, 등)에 대한 다양한 실마리를 제공합니다.

준비
설치한 Postfix가 잘 동작하는지 확인하기 전에 메일을 주고 받을 수 있는 네트워크에 백엔드 메일 서버가 필요합니다. Postfix를 설정해본 경험이 없다면 한번에 모든 부분을 설정해야 한다고 할 경우 상당히 복잡한 느낌이 바로 찾아올 것입니다. 도움이 필요하다면 젠투 위키에 있는 가상 메일 서버 완벽 안내서 를 참고하십시오

필요한 프로그램 설치
가장 중요한 Amavisd-new, Spamassassin, ClamAV 프로그램 설치로 시작하겠습니다.

DNS 설정
프로그램을 이머지하는 동안 다른 쉘을 띄우시고 필요한 DNS 레코드를 만드십시오.

메일 게이트웨이에  레코드를 우선 생성하고, 다음 목적지의   레코드를 생성하십시오.

방화벽 개방
일반 메일 흐름을 허용하려면 서버 통신을 확인하는 네트워크에서 몇가지 서비스를 방화벽을 뚫어 허용해야합니다.

Razor 은 어떤 서버가 가장 가까운 곳에 있는지 찾을 때 ping을 활용합니다.

Postfix 설정
우선 에게 포트 10025번에서의 감청을 지시하고, 포트 25번에서 감청중인    인스턴스에 적용한 상당부분의 제약을 제거해야합니다. 또한 10025 포트는 로컬 연결만 기다립니다. 이 조건을 충족하기 위해 의 마지막 부분에 다음 내용을 추가해야합니다.

파일은 postfix master 프로그램에 개별 postfix 프로세스를 실행하는 방식을 지시합니다. 더 많은 내용은 명령을 참고하십시오.

다음 10024 포트에서 대기중인 로 오는 메일을 걸러내기 위해   인스턴스를 25번 포트에서 대기하도록 해야합니다.

또한 메일의 다음 홉 대상을 설정해야합니다. postfix에게 모든 메일이 외부 컨텐트 필터를 거치도록하고, postfix가 메일을 어디로 전달할 지 알도록 명시한 경로 지정을 활성화하십시오.

postfix는 에 설정할 많은 옵션이 있습니다. 파일에 대한 더 많은 정보는 명령 또는 동일한 내용을 지닌 Postfix 설정 매개변수 온라인 문서를 참고하십시오.

파일의 형식은 일반 postfix 해시 파일입니다. 왼편에 있는 도메인에 보내는 메일은 오른편에 있는 목적 대상으로 전달합니다.

파일을 편집하고 나면 명령을 실행해야합니다. postfix는 이 파일을 실제로 읽지 않기 때문에 명령을 통해 적당한 형식으로 편집한 파일을 변환해야합니다. 이 명령은 파일을 만듭니다. postfix에서 바뀐 설정을 자동으로 가져오므로 postfix를 통해 설정을 다시 불러올 필요가 없습니다.

처음 메일을 보냈을때 메시지 결과가 되돌아온다면, 어딘가에 설정 오류를 안고 있을지도 모릅니다. 설정 문제를 해결하는 동안 를 임시로 활성화 하십시오. 이 옵션을 설정하면 postfix 가 전송 오류 때문에 되돌아오는 메일을 일시적 오류에 의한 반송으로 간주합니다. 옵션을 비활성화했거나 제거할 때까지는 메일 큐에서 대기중인 메일을 그대로 둡니다.

동작하는 설정을 만들어 마무리했다면  옵션을 비활성화하거나 제거하시고 postfix를 재가동하십시오.

Amavisd-new 설정
Amavisd-new는 모든 필터링을 관리하고 여러가지 제각각의 기술을 쉽게 연계할 수 있도록 하는데 사용하빈다. 메일 메시지를 받을 때 메일을 추출하고, 몇가지 개별 필터로 걸러내며, 화이트/블랙 리스팅 처리한 후 여러가지 바이러스 검색기로 메일을 걸러낸 다음 스팸 어쌔신을 활용하여 메일을 최종적으로 걸러냅니다.

Amavisd-new 자체에는 몇가지 추가 기능이 있습니다:


 * 위험한 첨부 파일을 식별하고 이 파일을 처리할 정책을 보유합니다
 * 사용자별, 도메인 별 시스템 범위 정책:
 * 화이트리스트
 * 블랙리스트
 * 스팸 가중치 한계치 설정
 * 바이러스 및 스팸 처리 정책

와  와는 별개로   사용자로 모든 프로그램을 실행하겠습니다.

에서 다음 부분을 편집하십시오

사용자에게 배달을 원치 않는 바이러스 메일를 보관할 격리 디렉터리를 만드십시오.

ClamAV 설정
바이러스 검사기로 상업용 프로그램과 거의 비슷하게 양호한 감지율을 보이는 ClamAV를 활용하겠습니다. 상당히 빠르고 게다가 오픈소스 소프트웨어입니다. 기록 파일을 좋아하니  에게   로그를 만들게 하고 로그 내용을 자세하게 뽑도록 하겠습니다. 를  계정으로 실행하지 마십시오. 이제 파일을 편집하겠습니다.

ClamAV는 바이러스 서명 업데이트를 주기적으로 확인하는  데몬을 포함하고 있습니다. 가 바이러스 서명을 하루에 두번 업데이트 하게 하는 대신 매 두시간마다 업데이트하게 하도록 하겠습니다.

를 수정하여 초기화 스크립트로 와  를 시작하십시오.

마지막으로 파일에서 새 소켓 위치 값으로 바꾸십시오.

Vipul's Razor 설정
Razor2는 협업 분산 스팸 검사합 네트워크입니다. 명령으로 설치하고 필요한 설정 파일을 만드십시오. 사용자로 다음  를 입력하여 실행하십시오.

분산 검사합 정리 저장소(Distributed Checksum Clearinghouse : dcc) 설정
Razor2와 같이 dcc는 협업 분산 스팸 검사합 네트워크입니다. 이 프로그램의 동작 개념은 제각각의 메일을 식별하도록 주어진 메일의 여러 수신자를 퍼지 체크섬을 통해 계수하는 것입니다.

Spamassassin 설정
Amavis는 스팸 어쌔신 펄 라이브러리를 바로 활용하므로 서비스를 시작할 필요가 없습니다. 또한 에 일부 스팸 어쌔신 설정을 넣고 의 옵션을 덮어쓰므로 설정상 혼동을 유발합니다.

모든 바람직한 규칙에는 마찬가지로 바람직한 예외가 있습니다
Once mail really starts passing through this mail gateway you will probably discover that the above setup is not perfect. Maybe some of your customers like to receive mails that others wouldn't. You can whitelist/blacklist envelope senders quite easily. Uncomment the following line in.

파일에는 완전한 전자메일 주소를 넣거나 도메인 부분만 넣고 양/음 가중치를 표기하여 스팸 가중치를 추가할 수 있습니다.

While waiting for a better method you can add the following to to bypass spam checks for   and   mailboxes.

더 많은 규칙 추가
If you want to use more rules provided by the SARE Ninjas over at the SpamAssassin Rules Emporium you can easily add and update them using the  mechanism included in Spamassassin.

A brief guide to using SARE rulesets with  can be found here.

설정 시험
이제 을 시작하기 전에 동작하는지 직접 확인할 수 있습니다.

이제 최신 바이러스 정의를 받았고 가 제대로 동작함을 알았습니다.

freshclam과 amavisd를 명령행 인터페이스와 amavisd 시험 메일로 시험해보십시오. 다음 명령으로 와   를 시작하십시오:

모든게 잘 처리됐다면 는 25번 포트를 통해 메일을 기다리며 10024번을 통해 메일을 다시 넣습니다. 동작을 확인하려면 로그 파일을 확인하십시오.

이제 로그 파일에 이상한 메시지가 안나타난다면 새로 테스트 해볼 시간입니다.

으로 에 접속할 때 10024 포트를,  에 접속할 때 10025 포트를 활용하십시오.

와 를   런레벨에 추가하십시오.

spamtrap 사용자 만들기
spamtrap 계정과 디렉터리를 민드십시오.

spamtrap 사용자에게 제대로 된 암호를 부여하십시오.

If you manually want to check some of the mails to ensure that you have no false positives you can use the following  recipe to sideline spam found into different mail folders.

.procmailrc 만들기
이제 Postfix 에서 메일을 전달할 때 을 사용하는지 확인하십시오.

메일 폴더 만들기
이제 햄과 스팸을 처리할 공유 폴더를 만들겠습니다.

Amavisd-new needs to be able to read these files as well as all mailusers. Therefore we add all the relevant users to the mailuser group along with amavis.

This makes the spam and ham folders writable but not readable. This way users can safely submit their ham without anyone else being able to read it.

사용자로 다음 명령을 실행하십시오:

크론 작업 추가
Now run  to edit the amavis crontab to enable automatic learning of the Bayes filter every hour.

amavisd.conf 수정
Now modify amavis to redirect spam emails to the  account and keep spamheaders.

정리
We don't want to keep mail forever so we use  to clean up regularily. Emerge it with. Only  is able to run   so we have to edit the   crontab.

도입부
Greylisting is one of the newer weapons in the spam fighting arsenal. As the name implies it is much like whitelisting and blacklisting. Each time an unknown mailserver tries to deliver mail the mail is rejected with a try again later message. This means that mail gets delayed but also that stupid spam bots that do not implement the RFC protocol will drop the attempt to deliver the spam and never retry. With time spam bots will probably adjust, however it will give other technologies more time to identify the spam.

Postfix 2.1 come with a simple Perl greylisting policy server that implements such a scheme. However it suffers from unpredictable results when the partition holding the greylisting database run out of space. There exists an improved version that do not suffer this problem. First I will show how to install the builtin greylisting support that come with Postfix and then I will show how to configure the more robust replacement.

간단한 그레이 리스팅
We need the file but unfortunately the ebuild does not install it as default.

Now we have the file in place we need to create the directory to hold the greylisting database:

그레이 리스팅 설정
Now that we have all this ready all that is left is to add it to the postfix configuration. First we add the necessary information to the :

The postfix spawn daemon normally kills its child processes after 1000 seconds but this is too short for the greylisting process so we have to increase the timelimit in :

We don't want to use greylisting for all domains but only for those frequently abused by spammers. After all it will delay mail delivery. A list of frequently forged MAIL FROM domains can be found online. Add the domains you receive a lot of spam from to :

더 많은 목록을 살펴보시려면:

Now we only have to initialize the database:

이제 간단한 그레이 리스팅 설정은 끝났습니다.

postgrey로 그레이 리스팅 설정 개선하기
간단한 명령으로 개선된 그레이 리스팅 정책 서버를 설치할 수 있습니다:

를 설치한 후 를 편집해야 합니다. 바꿀 내용은 이미 그레이리스팅한 내용과 거의 정확하게 비슷합니다.

마지막으로, 서버를 시작하고 적당한 런레벨에 추가하십시오.

도입부
SPF는 도메인 소유자가 어떤 IP 주소를 해당 도메인에서 메일을 보내도록 허용할지 DNS 레코드에 상태를 언급하도록 합니다. 이 설정은  를 스푸핑한 스패머를 막아줍니다.

우선 도메인 소유자가 특수  DNS 레코드를 만들어야합니다. 이렇게 하면 SPF 활성 MTA에서 이 부분을 확인할 수 있고, SPF에 명시하지 않은 서버에서 온 메일을 거절할 수 있습니다. 예제 항목은 다음과 같습니다:

은 기본적으로 모든 메일을 거절하지만,  ,   DNS 레코드의 조건에 일치하는 도메인에서 온 메일은 허용한다는 의미입니다. 더 많은 내용을 찾아보려면 페이지 하단의 자료를 참고하십시오.

스팸 어쌔신 3.0에서는 SPF를 지원합니다만, 기본적으로 활성화 상태가 아니며 Postfix의 새 정책 데몬에서 SPF를 지원합니다. 따라서, Postfix의 SPF 지원을 설치하겠습니다.

준비
우선 postfix 2.1을 위에서 설명한대로 설치하십시오. 소스코드를 가져왔으면 을 찾아 다음 명령을 수행하십시오:

펄 스크립트는 현재 포티지에 없는 펄 라이브러리를 필요로하지만, 설치는 여전히 단순합니다:

이제 적재적소에 갖춰야할 모든 것을 갖췄으니 이제 필요한 모든건 postfix를 새 정책을 기반으로 동작하도록 설정하는 일입니다.

SPF 검사항목을 에 추가하십시오. 제대로 설정한 SPF에는 문제가 없어야 하며 모든 도메인에 대해 SPF를 점검할 수 있어야합니다:

MySQL 설정
거대 도메인에 대해 에서 설정할 수 있는 기본 값은 모든 사용자에게 적절한 값이 아닐 수도 있습니다. amavisd-new와 MySQL 지원기능을 함께 쓰도록 설정한다면 사용자 또는 사용자의 그룹별로 각각 설정할 수 있습니다.

이제 데이터베이스를 만들었으니 필요한 테이블을 만들겠습니다. mysql 프롬프트에 다음 구문을 잘라다가 붙여넣을 수 있습니다:

화이트리스팅 및 블랙리스팅을 활용하려면  에 송신자와 수신자의 전자메일 주소간 관계를 만들고 난 후   에 송신자 및 수신자 메일 주소를 추가하고, 화이트리스트 처리할 지, 블랙리스트 처리할 지를 명시해야합니다.

이제 테이블을 만들었으니 test 사용자와 test 정책을 넣어보겠습니다:

이 구문은 test 사용자와 Test 정책을 넣습니다. 이 예제를 요구에 맞춰 약간 조절해나가십시오. 설정 이름에 대한 더 많은 설명은 에서 찾을 수 있습니다.

MySQL을 활용하여 amavisd 설정
이제 amavis에 MySQL을 사용하라고 할 준비가 되었습니다:

MySQL을 활용하도록 스팸 어쌔신 설정
스팸 어쌔신 3.0에서 Bayes와 AWL 데이터를 MySQL에 저장할 수 있습니다. MySQL이 다른 데이터베이스에 비하면 무난한 동작을 수행할 수 있으므로 MySQL을 백엔드로 활용하겠습니다. 두가지 데이터 모음을 처리하는데 MySQL을 활용하면 시스템 관리가 더 쉬워집니다. 쉽게 처리하는 방법을 보여드리겠습니다.

우선 새 MySQL 사용자를 만들고 필요한 테이블을 만드십시오.

이제 데이터베이스를 만들었으니 필요한 테이블을 만들겠습니다. mysql 프롬프트에 다음 구문을 잘라다가 붙여넣을 수 있습니다:

MySQL 백엔드를 사용하도록 스팸 어쌔신 설정
DBM 데이터베이스에서 오래된 Bayes 데이터베이스를 보유하고 있고 다음 절차를 통해 유지하려면:

이제 필요한 정보를 스팸 어쌔신에 제공하십시오:

다음 보안 수준을 만족스러운 수준으로 끌어올리기 위해 권한을 바꾸십시오:

이제 해야 할 일은 명령의 실행입니다.

Amavisd-new
Amavisd-new 문제를 해결하려면 명령으로 서비스를 멈추고  명령으로 전면 실행하여 출력 내용에 이상한 점이 없는지 관찰하십시오.

스팸 어쌔신
스팸 어쌔신의 문제를 찾을 때 명령으로 전자메일을 걸러볼 수 있습니다. 헤더에 문제가 없는지 확인하려면 다른 머신에서 IMAP으로 메일을 가져올 수 있습니다.

동일한 정보와 Amavisd-new 동작에 대한 더 많은 정보를 가져오고 싶게 하려면 명령을 사용하십시오.

설치 후 작업 반복 처리
이 안내서에서 언급한 일부 처리 과정은 업그레이드를 하고 나서도 반복해야합니다. 예를 들면, 의 섹션에서 언급한   명령은 amavisd-new를 업데이트한 후 매번 반복해야합니다.

다행스럽게도 젠투에서는 이 과정을 자동으로 처리하는 수단을 제공합니다. 이머지 프로세스 후킹 편에서 젠투 핸드북은 각 꾸러미 설치 후 작업을 실행하는 방법을 다음과 같이 설명하고 있습니다:

도움 받기
도움이 필요하다면 amavis-user 메일링 리스트가 바람직한 곳이 되겠습니다. 질문을 올리기 전에 Amavis 사용자 메일링 리스트 보관소에서 검색해보십시오. 만약 답변을 못찾았다면 Amavis 사용자 메일링 리스트에 가입할 수 있습니다.

질문이 스팸 어쌔신, DCC, Razor, Postfix에 관련된 질문이라면 하단에 언급한 각각의 홈페이지를 참고하십시오.

더 많은 정보

 * Amavisd-new INSTALL
 * Amavisd-new Postfix README
 * Amavisd-new Policy bank documentation
 * Spamassassin SQL README
 * Greylisting
 * Postfix SMTPD_POLICY_README
 * Blocking spammers with Postfix HELO controls
 * SPF Overview
 * Jim Seymour's Postfix Anti-UCE Cheat Sheet

일반 자료

 * 스팸 어쌔신
 * Amavisd-new
 * Amavisd-new 문서 모음
 * Vipuls's Razor
 * Pyzor
 * 분산 검사합 정리 저장소
 * Maia Mailguard

다른 설명서

 * OpenBSD, Postfix, Amavisd-new, 스팸 어쌔신, Razor, DCC를 활용한 매우 안전한 스팸 차단 게이트웨이