 |  |
|
난이도 : 중급 Martin Brown, 자유기고가, IT 컨설턴트/프리랜서 작가
2008 년 3 월 25 일 이 기사는 스팸어새신과 아마비스 같은 도구 활용법을 넘어서 사용자의 전자편지 폴더를 가득 채우는 스팸 숫자를 줄이도록 추가적인 필터링 기능을 제공하고 확장하는 법을 설명합니다. 대다수 회사는 유닉스(UNIX®) 플랫폼에서 스팸과 바이러스 필터링 서비스를 사용하는데, 필터링 점수를 높이고 스팸이 받은 편지함에 도착하지 못하도록 만드는 몇 가지 방법이 있습니다.
이 연재에 대해
전형적인 유닉스(UNIX®) 관리자는 관리 작업을 위해 자신들이 주기적으로 사용하는 광범위한 유틸리티, 트릭, 시스템으로 무장하고 있다. 핵심 유틸리티, 명령행 연결, 스크립트는 관리 작업을 단순하게 만들어준다. 이런 도구 중 몇 가지는 운영체제에 따라 오지만, 대다수 트릭은 여러 해에 걸친 경험과 시스템 관리자의 삶을 편하게 만들고자 하는 욕구에서 비롯된다. 이 연재의 핵심은 이기종 환경에서 관리 작업을 단순화하는 방법을 비롯하여 다양한 유닉스 환경에서 사용 가능한 도구 중에서 최고를 뽑아내는 데 있다.
스팸과 바이러스 필터링 기초
유닉스 서버 단에서 스팸을 걸러 제거하는 다양한 도구와 시스템이 존재한다. 스팸어새신과 같은 도구와 (스팸어새신에 연동되는 인터페이스, 다양한 바이러스 검사기, 레이저(Razor)와 같은 기타 스팸 도구를 포함하는) 아마비스와 같은 세부적인 에이전트는 스팸을 인식해서 잡아내는 다양한 기법을 활용한다.
이런 기법은 다음과 같은 기술을 사용하지만 여기에만 국한되지 않는다.
- 직접 탐색: 이 기법은 메시지에 들어있는 특정 문자열을 찾는데 편지 본문, 메시지 헤더, 제목, 전자편지 주소를 대상으로 한다. 특정 스팸과 스팸 발송기는 동일한 템플릿, 가짜 헤더, 심지어 똑같이 (잘못된) 코드와 구조를 사용해 편지를 만들어낸다.
- 패턴 탐색: 이 기법은 공유 목록에 사용하는 네 글자짜리 코드와 같은 문자열 패턴, 스팸을 이용해 판매하려는 여러 가지 약품 이름을 기술하는 다양한 패턴을 찾는다.
- 지문 탐색: 낱말과 구를 조합해 좀더 복잡한 패턴을 찾는다. 동일한 기본 정보를 포함하지만 이름, 연령, 날짜와 같은 사소한 변화만 가한 경우가 흔하다. 전자편지의 기본 구조를 지문으로 만드는 방법으로 스팸을 인식할 수 있다.
- 베이즈 기법: 베이즈 이론은 전자편지에 들어있는 일반 낱말 개수와 스팸 낱말 개수를 비교한 다음에 스팸일 가능성이 얼마나 되는지를 알려주는 확률값을 계산해낸다. 이 기법은 아주 단순하지만, 동일한 낱말을 포함하거나 동일한 낱말을 반복하는 대다수 스팸을 걸러내는 데 아주 효과적이다.
- DNS 블랙리스트: 스팸을 보내고 전달한다고 알려진 공개된 호스트 목록이다.
- 화이트리스트와 블랙리스트: 이론은 아주 단순하다. 신뢰하는 전자편지 주소를 기록한 화이트리스트와 신뢰하지 못하는 전자편지 주소를 기록한 블랙리스트를 참조해 스팸을 판단한다.
I스팸을 완벽하게 인식하려면 위에서 소개한 기법 중 한두 개만 의존해서는 효과가 없으며, 다양한 기법을 조합해 스팸 필터 품질을 높여야 한다.
기법 하나만 사용해서는 충분하지 않다는 사실을 보여주기 위해 친구에게서 온 편지를 생각해보자. 친구 전자편지 주소를 화이트리스트에 추가했지만, 스팸 발송자가 (속임수를 써서) 친구 전자편지 주소로 위조해 편지를 보내면 어떻게 할까? 블랙리스트와 화이트리스트만 사용했기에, 스팸은 문제없이 방어막을 뚫는다. 하지만 스팸이 몇몇 약품 선전 문구를 포함하면, 탐색 기법 중 한 가지나 베이즈 기법이 이 편지를 스팸으로 인식할 확률이 높아진다.
T효과적으로 작업하기 위해 대다수 해법은 점수 기법을 활용한다. 일반적으로 점수가 높을수록 해당 전자편지는 스팸일 가능성이 높다. 스팸 필터링 기법마다 다른 점수를 부여함으로써 궁극적으로 효율적인 점수를 매길 수 있다. 예를 들어, 앞서 스팸 발송자가 친구로 가장해 발송한 전자편지에 화이트리스트가 -10점이라는 점수를 부여하지만, 베이즈 기법은 15점이라는 점수를 준다고 가정해보자. 또한 패턴과 직접 탐색에 걸리는 바람에 이 전자편지에 5점이라는 점수를 추가로 부여한다고 하면, 최종 점수는 10점(-10 + 15 + 5)이 된다. "스팸" 점수를 7점으로 설정해 놓았다면, 이 편지는 스팸으로 취급되어 삭제되거나 검역 대상으로 올라간다.
스팸 처리 과정을 개선하는 방법을 설명하기 위해, 그림 1은 전형적인 스팸 필터 해법으로 전자편지가 도착해 필터링 과정을 거치고 개별 편지함으로 전송되는 장소를 보여준다.
그림 1. 전형적인 스팸 필터링 아키텍처
초기 시스템 설정은 전체 해법의 일부일 뿐이다. 장기 계획을 통해 스팸 문제를 최우선으로 놓고 생각할 필요가 있다. 스팸 발송자는 항상 새로운 해결책과 트릭을 찾으러 다니므로 스팸 필터링 해법을 설치해 놓아도 100% 완벽한 수준에 이르지 못하기 때문이다.
잡히지 않은 스팸을 걸러내어 보고하도록 만드는 방법부터 시작하자.
보고 편지함 설정
베이즈 스팸 필터링 기법은 "스팸" 낱말과 "일반" 낱말을 비교하는 방법으로 동작한다. 문제점은 일반 낱말과 스팸 낱말을 어떻게 분류하느냐에 있다. 결과는 사람에 따라 달라진다.
예를 들어, 제약업계에서 일한다면 약품 이름을 포함하는 수 많은 편지를 받을 가능성이 높다. 불행하게도 약품은 종종 스팸을 통해 팔리며, 진짜 전자편지를 시스템이 잡아낼 수도 있다. 다행스럽게도 베이즈 시스템은 과거 경험을 토대로 판단하므로, 무엇이 스팸이 아니고 무엇이 스팸인지 베이즈 필터에 더 많이 알려줄수록 필터가 전자편지를 올바르게 골라낼 확률이 더 높아진다.
학습을 지원하는 모든 시스템은 메시지 텍스트를 받아들이는 스크립트나 응용 프로그램 형태를 띤다. 예를 들어, 스팸어새신은 sa-learn 스크립트를 제공해 메시지가 스팸인지 햄(정상 편지)인지 구분하도록 만든다. 또한 보고 과정을 거쳐 이익을 얻는 다른 기법도 있다. 레이저 스팸 필터는 서버 기반 서비스에 스팸을 보고하도록 만들어 놓았으므로 전자편지를 스팸으로 인식한 결과를 다른 사람과 공유할 수 있다.
이렇게 하려면, 전자편지함이나 시스템을 설정해 사용자가 전자편지를 보내면 베이즈 필터가 전자편지를 탐색해 스팸인지(시스템이 진짜 편지라고 생각한 스팸), 햄인지(시스템이 스팸이라고 생각한 진짜 편지)를 "잡아"내도록 만든다.
일반적으로 스팸을 담아 놓는 편지함과 햄을 담아 놓는 다른 편지함을 구분해 설정하는 편이 손쉽다. 사용자 단위로 학습을 지원하는 시스템에서는 사용자를 위한 개별 전자편지함에 폴더를 설정할 수도 있다. 이 기사에서 다루는 예제에서는 스팸어새신과 IMAP 기반 편지 시스템을 사용하며, 편지 내용을 읽어서 해석한 다음에 스팸어새신이 결과를 학습한다고 가정한다. 하지만 이 기사에서 소개하는 기본 원리는 다른 스팸 필터링 환경에도 쉽게 적용할 수 있다.
Listing 1은 전체 편지함에 접근해 각 메시지를 내려받아 내용을 스팸어새신과 레이저에 보고하는 간단한 펄 스크립트를 보여준다.
Listing 1. 스팸을 보고하고 학습하는 스크립트
#! /usr/bin/perl
$SpamFolder = "INBOX";
$Server = 'imap.mcslp.pri';
$User = 'spam';
$Password = 'ilovespam';
use Mail::IMAPClient;
# 전자편지 서버에 접속한다.
my $SPAMIMAP = Mail::IMAPClient -> new (Server => $Server,
User => $User,
Password => $Password);
if (!defined($SPAMIMAP))
{
print "Error: $@\n";
}
# 스팸함을 선택한다.
$SPAMIMAP->select($SpamFolder);
# 메시지 식별자 목록을 얻는다.
my @MIDs = $SPAMIMAP->messages();
# 처리할 메시지가 없으면 종료한다.
if (scalar(@MIDs) == 0)
{
exit(0);
}
# 메시지 텍스트를 저장할 임시 디렉터리를 생성한다.
mkdir '/tmp/spamreport',0000;
# 식별자 별로 처리한다.
foreach $MID (@MIDs)
{
# 메시지 텍스트를 얻어서 테스트 파일에 기록한다.
my $path = "/tmp/spamreport/$MID";
my $msgtext = $SPAMIMAP -> message_string($MID);
open(FILE,">$path");
print FILE $msgtext;
close(FILE);
# 해당 파일에 대해 스팸어새신 학습 스크립트를 돌린다.
system("cat $path|sa-learn --spam");
# 메시지 내용에 대해 레이저 보고작성기를 돌린다.
system("cat $path|razor-report");
# 원본 메시지를 지운다.
$SPAMIMAP->delete_message($MID);
# 임시 파일을 삭제한다.
unlink($path);
}
# 쓰레기 통을 비우고 연결을 끊는다.
$SPAMIMAP->expunge();
$SPAMIMAP->disconnect();
|
스팸으로 잘못 파악된 메시지를 햄 폴더로 넣도록 지원하기 위해 메시지를 폴더에 복사하는 기능을 사용자에게 열어놓도록 스팸 스크립트를 햄 보고 버전으로 수정할 수도 있다. 이 폴더를 만들 때는 특히 주의해야 하는데, 이론적으로 이 폴더에 접근 가능한 어떤 사용자라도 다른 사람에게 도착한 진짜 전자편지를 읽을 가능성이 있기 때문이다. 이런 목적으로 전역 편지함을 만들어 놓을 경우에는 햄 편지가 모두에게 공개될 가능성이 있다.
이런 시스템을 구축해 놓으면 무엇이 스팸이고 무엇이 스팸이 아닌지를 시스템이 축적해 나감에 따라 스팸 필터링이 정교해지는데, 그림 2는 스팸 해법을 개선한 버전이다.
그림 2. 자동 보고와 학습 메커니즘
한걸음 더 나간 개선 방안은 전자편지 발송자 신원 확인을 강화하고 일반적인 스팸 내용을 점검하기 앞서 전자편지를 걸러내는 데 도움을 준다.
화이트리스트와 블랙리스트 갱신
스팸 필터링에서 활용하는 화이트리스트와 블랙리스트의 기본 원리는 아주 단순하다. 화이트리스트는 신뢰하는 전자편지 주소를 담고 있는 반면에, 블랙리스트는 신뢰하지 않는 전자편지 주소를 담고 있다. 전자편지가 화이트리스트나 블랙리스트에 등장해 해당 점수를 얻는 가능성을 나타내는 정보의 상대적인 가중치는 여러분에게 달려있다.
화이트리스트와 블랙리스트에는 몇 가지 제약이 있다.
- 블랙리스트는 엄청 길어질 수 있다. 스팸 발송자는 종종 스팸 발송 주소에 다양한 주소를 사용하기 때문이다. 블랙리스트가 길어질수록 스팸을 해석하는 시간이 길어지고, 궁극적으로 블랙리스트를 사용하기 어렵도록 장벽이 생긴다. 특히 자동 블랙리스트 서비스를 스팸 해법에 포함할 때는 주의해야 하는데, 스팸으로 분류된 모든 전자편지 주소를 블랙리스트에 올리기 때문이다.
- 자동 블랙리스트 서비스는 또한 유효한 전자편지가 스팸으로 인식될 경우에 문제를 일으킨다. 다시 말해, 진짜 믿을만한 전자편지 주소가 스팸 전자편지 주소로 인식되므로 결과를 왜곡한다.
- 동일한 규칙을 자동 화이트리스트 서비스에 적용할 수 있는데, 기술적으로 스팸 편지라고 생각할지라도 필터를 벗어난 스팸 발송자 주소가 화이트리스트에 추가된다.
이런 제약을 해결하는 단순한 방법은 존재하지 않지만, 전자편지를 자동으로 처리해 리스트를 갱신하는 기법으로 화이트리스트와 블랙리스트 품질을 높이도록 작업할 수 있다.
예를 들어, 주어진 환경에서 다음과 같은 방식으로 화이트리스트를 자동 갱신할 수 있다.
- 개인 주소록이나 전역 주소록에 담겨있는 모든 전자편지 주소
- 시스템 사용자를 위한 모든 전자편지 주소
- 클라이언트나 협력 업체 등 이미 잘 알려져 있는 전자편지 주소
한걸음 더 나가, (예를 들어 이 기사 앞에서 설명한 스팸과 햄 처리 판별법을 적용하느라) 사용자 전자편지함에 접근이 가능하다면 화이트리스트에 전자편지 주소를 추가하도록 전자편지를 처리할 수 있다. 이런 방법을 채택할 경우 전자편지가 유효하다고 판명될 경우에만 화이트리스트에 추가해야 한다. 필터링 해법을 사용해보자(표준 필터링 도구 활용하기 절 참조).
화이트리스트와 블랙리스트를 사용하면 스팸 해법에 또 다른 기능을 추가하게 된다(그림 3 참조).
그림 3. 자동으로 화이트리스트와 블랙리스트 갱신하기
마지막으로 전자편지 발송 과정에서 스팸을 "최종적"으로 필터링하는 방법을 살펴보자.
표준 필터링 도구 활용하기
스팸 필터링 해법을 사용하면 상당한 스팸을 잡아낼 수 있지만, 상당수가 100% 신뢰도에 도달하지 못한다. 이렇게 되는 원인 중 일부는 스팸 발송자들이 아주 교활해 필터를 통과하도록 스팸을 만들어내기 때문이다.
다행스럽게도, 스팸 발송자는 송신자와 수신자 항목에 광범위한 전자편지 주소를 활용하는 버릇이 있으므로 당신이 알고 있는 누군가의 주소나 당신 주소와 실제로 일치하지 않는 경우가 많다. 화이트리스트와 블랙리스트는 스팸 문제를 완화하기 위한 효율적인 방법이지만, 대다수 스팸 발송자가 광범위한 주소 범위를 쓰므로 스팸이 종종 필터를 뚫고 사용자 편지함에 도착한다.
스팸 필터링과 제거를 위한 마지막 방어막으로, 다양한 서버 기반이나 클라이언트 기반 필터링 메커니즘을 활용해 전자편지를 일반 폴더에 밀어넣거나 명시적으로 필터에 부합하지 않는 편지를 '검역' 폴더에 밀어넣는 방법이 있다. 사용자는 수동으로 메시지를 선택해(필요하다면 필터를 갱신해) 프론트 엔드 단에서 스팸 필터링 해법 품질을 개선하기 위해 미리 만들어 놓은 스팸과 햄 폴더에 떨어뜨리는 방법을 활용할 수 있다.
이렇게 하는 방법에는 세 가지가 있다.
- 필터에 부합하는 모든 편지를 폴더에 옮기고, 필터에 부합하지 않아 수동 필터링이 필요한 전자편지를 위한 검역 폴더로 남겨둔다.
- 필터에 부합하는 모든 편지를 무시하지만(예를 들어 필터를 하지 마라), 인식하지 못한 전자편지를 검역 폴더로 옮긴다.
- 필터에 부합하는 모든 편지를 특정 폴더로 옮기고, 그렇지 않은 편지는 검역 폴더로 옮긴다.
서버나 클라이언트 단에서 필터링 시스템을 사용하면 스팸 필터를 통해 들어오는 스팸을 처리하는 좀더 단순한 규칙을 활용할 수 있다. 몇몇 스팸은 스팸을 진짜라고 여기거나 이미 탐색이 되었다고 여기게 만들어 스팸 가중치를 떨어뜨리는 트릭을 써서 필터를 통과하기도 한다. 이런 문제점을 없애기 위해 좀더 단순하게 스팸 파악이 가능할 경우 직접 필터를 고안한다.
또한 종종 원하지 않은 편지가 전혀 스팸과 무관할 경우도 있다.더 이상 편지를 받고 싶지 않은 진짜 메일링 리스트일 경우에 발송 회사에 문의하려고 노력해보지만 여전히 몇몇 메일링 리스트는 제거가 불가능하다. 또한 종종 사용자가 실수로 다른 사용자 주소를 등록해 엉뚱한 편지가 배달되기도 한다.
사용하는 기법에 무관하게, 필터링 기법은 또 다른 계층(더욱 중요하게는 또 다른 필터)을 편지 시스템 기반 구조에 추가하므로 최종적인 스팸 필터링 해법은 그림 4와 같이 구성된다.
그림 4. 스팸 필터링 아키텍처에서 전자편지함 필터링
이 모든 필터를 만들어놓고 나서, 변경 내역을 측정해야 한다는 사실을 잊어버리기 쉽다.
통계 취합과 보고서 작성
스팸과 바이러스를 점검하기 위해 전자편지를 필터링할 경우, 여러분이 적용한 해법이 스팸 제거에 얼마나 효과를 보이는지 감시하도록 척도를 만드는 작업을 잊어버리기 쉽다. 기록과 측정은 또한 스팸 처리 과정을 더욱 정교하게 만들기 위해 다양한 스팸 처리 방식을 개발하는 과정에서, 특정한 경향과 사례를 파악하는 효과적인 방법이다.
아마비스와 같은 도구를 사용한다면, 개별 전자 편지 처리 결과를 로그 파일을 분석함으로써 얻을 수 있다. Listing 2에 아마비스 로그 파일에서 행 하나를 따왔다.
Listing 2. 아마비스 로그 파일에서 따온 행 하나
Nov 26 11:33:45 constable.example.com /usr/bin/amavisd[2257]: (02257-04)Blocked SPAM,
[83.237.69.122] [64.18.7.11] <jqyay@quintiles.com> ->
<null@gendarme.example.com>, quarantine: quarantine@gendarme.example.com,
Message-ID: <1d9b01c83020$3150e150$c0a8008f@Ned>, mail_id: YDOXKqndoiPU,
Hits: 69.428, 11621 ms
|
"Blocked SPAM"은 로그 결과물에서 유용한 패턴인데, 전자편지가 어떻게 인식되었는지 여기에 무슨 일이 생겼는지를 말해주기 때문이다. 첫 번째 낱말은 전자편지가 막혔는지 통과했는지를 알려준다. 두 번째는 스팸, (바이러스) 감염, 잘못된 헤더, 금지 상태, 깨끗함을 포함한 유형을 기술한다. Listing 3은 이런 정보를 뽑아내 요약하는 펄 스크립트를 보여준다.
Listing 3. 로그 결과를 뽑아내는 펄 스크립트
#!/usr/bin/perl
my $stats = {};
while(<STDIN>)
{
chomp;
next unless (m{/usr/bin/amavisd\[\d+\]: \(\d+-\d{2}\)});
if (m/(Passed|Blocked) [A-Z]+/)
{
my ($proc_mode,$proc_type) = (m/(Passed|Blocked) ([-A-Z]+)/);
$stats->{$proc_mode}->{$proc_type}++;
}
}
foreach my $mode (sort keys %{$stats})
{
my $modetotal = 0;
print "$mode\n";
foreach my $type (sort keys %{$stats->{$mode}})
{
printf("\t%-20s %7d\n",$type,$stats->{$mode}->{$type});
$modetotal += $stats->{$mode}->{$type};
}
printf("\t%-20s %7d\n",'Total',$modetotal);
}
이 스크립트를 돌리기 위해 파일 내용을 파이프로 전달한다:
$cat amavis.log |perl parse_amavis.pl
Blocked
BANNED 32793
CLEAN 1
INFECTED 766
SPAM 85499
Total 119059
Passed
BAD-HEADER 1415
CLEAN 70588
SPAM 356
Total 72359
|
불행하게도 받은 편지 중 62%가 스팸이므로 막혔다는 사실을 보여준다.
추가 작업을 조금 더 하면, 로그에서 정보를 인출한 다음에 데이터베이스에 자료를 기록할 수 있다. Listing 4는 아마비스 로그 정보를 좀더 세부적으로 해석하는 스크립트 골격을 보여준다.
Listing 4. 아마비스 로그를 해석하는 스크립트 골격
#!/usr/bin/perl
use Time::ParseDate;
while(<STDIN>)
{
chomp;
next unless (m{/usr/bin/amavisd\[\d+\]: \(\d+-\d{2}\)});
next if (m{(mcfilter|slpfliter)});
if (m/(Passed|Blocked) [A-Z]+/)
{
my ($datetime,$host,$proc_mode,$proc_type,
$sender,$recip,$hits,$msgid,$mailid);
my @blocks = split(/\s+/);
# 자료를 추출한다.
$datetime = parsedate(sprintf("%s %s %s",@blocks[0..2]));
# 호스트를 추출한다.
$host = $blocks[3];
# 처리한 정보를 추출한다.
($proc_mode,$proc_type) = (m/(Passed|Blocked) ([-A-Z]+)/);
# 송/수신자 정보를 추출한다.
($sender,$recip) = (m/<(.*?)> -> <(.*?)>/);
# 스팸 점수를 추출한다.
# 음수는 0으로 변환한다(통과).
($hits) = (m/Hits: ([-0-9.]+),/);
$hits = 0 if ($hits eq '-');
# 이제 정보를 데이터베이스에 밀어넣는다.
}
}
|
이 정보를 데이터베이스 테이블에 쓰는 프로그램은 독자들에게 연습문제로 남긴다. 이 스크립트를 활용하기로 결정했다면 시각, 전자편지 주소, 스팸 점수, 처리 과정, 기타 정보를 기록해야 한다. 이렇게 하면 데이터베이스로부터 정보를 최대한 추출할 수 있게 된다.
일단 이런 정보를 데이터베이스에 저장하면 어떤 작업이 가능할지 보여주는 예를 들기 위해 그림 5에 아마비스에서 얻은 로그 결과를 해석한 데이터베이스로부터 만들어낸 그래프를 보여준다.
그림 5. 그래프로 표현한 스팸 통계
이런 자료를 통해 깨끗하게 통과한 편지(녹색)와 막힌 편지(적색) 사이에 존재하는 차이점을 좀더 명확하게 파악할 수 있다.
일관성
마지막으로 이런 해법 모두를 조합해 현존하는 스팸 필터링 해법과 결합하더라도 문제를 완벽하게 해결하기 어렵다는 사실을 명심하자.
향후 시스템에 대해 일관성 있는 접근 방법을 적용한다면 상황을 개선할 수 있다. 예를 들어, 이 기사에서 다양한 해법을 살펴보았지만 다음과 같은 사실을 명심하자.
- 자동 스팸 구분 보고 해법은 또한 항상 통계를 갱신해야 한다.
- 필요하다면 자동 스팸 구분 해법은 화이트리스트와 블랙리스트를 갱신해야 한다.
- 서버 기반 필터링과 전체 전자편지 주소를 포함한 규칙을 활용할 경우 서버 기반 필터가 화이트리스트와 블랙리스트를 갱신해야 한다.
- 사용자가 화이트리스트와 블랙리스트를 갱신하도록 허용하기 위해 데이터베이스나 프론트엔드를 고려하자.
궁극적으로 전자편지 시스템과 스팸 필터링 해법이 스팸을 효과적으로 걸러내도록 만들기 위해 올바른 정보와 올바른 정보 품질을 유지하도록 노력하자.
요약
스팸 필터링 해법은 오늘날 전자편지 환경에서 필요악이다. 모든 스팸을 막아내기란 사실상 불가능하며, 전자편지 주소를 공개하지 않더라도 스팸을 받을 가능성이 있다.
이 기사에서 살펴보았듯이, 대다수 스팸 해법은 전자편지 시스템으로 침투하는 스팸을 걸러내기 위한 다양한 기법을 활용하지만, 사용자와 스팸 필터와 함께 작업하는 방법으로 필터링 품질을 높일 수 있다. 놓친 스팸을 보고하고, 자동으로 블랙리스트와 화이트리스트를 갱신하고, 보조 필터 시스템을 활용하면, 받은편지함에 도착하는 스팸 개수를 줄일 수 있다. 이 기사에서 소개하는 기법을 활용해 수작업으로 시스템을 갱신하는 책임에서 벗어나거나 전반적인 스팸 필터링 해법을 개선하는 과정에서 도움을 받기 바란다.
참고자료 교육
제품 및 기술 얻기
-
IBM 평가판 소프트웨어:
developerWorks에서 직접 내려받아 다음번 프로젝트에 활용하자.
-
아마비스는 전자편지 필터링 해법으로 스팸 어새신, 레이저, 기타 바이러스 탐색기와 연계하는 인터페이스를 제공한다.
-
스팸어새신: 이 도구는 기본 탐색은 물론이고 스팸 가능성을 지시하는 점수를 전자편지에 부여하는 베이즈 기법을 비롯해 다양한 기법을 활용하는 스팸 탐색기로 환경 설정이 자유롭다.
-
nmap: 이 도구는 네트워크 호스트와 포트를 탐색해 잠재적으로 권한이 없는 호스트와 서비스에 대한 정보를 제공한다.
토론
필자소개  | |  | Martin Brown은 7년 넘게 기술 필자로 활약해왔다. Brown은 다양한 주제를 다루는 수 많은 책을 집필했고 기사를 작성했다. Brown은 펄, 파이썬, 자바(Java™), 자바스크립트, 베이직, 파스칼, 모듈라-2, C, C++, 레볼, gawk, 셸 스크립트, 윈도우(Windows®), 솔라리스, 리눅스, BeOS, 맥 OS X을 비롯하여 웹 프로그래밍, 시스템 관리, 통합에 이르리까지 다양한 개발 언어와 플랫폼을 경험했다. Brown은 마이크로소프트(Microsoft®) SME(Subject Matter Expert)이며 ServerWatch.com, LinuxToday.com, IBM developerWorks에 주기적으로 기고한다. Brown은 또한 컴퓨터월드, 애플 블로그, 기타 사이트에 주기적으로 블로그 기사를 올린다. 연락 주소는 Brown이 운영하는 웹 사이트를 참조하기 바란다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|  |