본문 바로가기

Home > White Domain / SPF > SPF 이용

SPF 이용

SPF 이용 상세내용
제목 Ubuntu 운영체제 적용
첨부파일 첨부파일8. postfix_ubuntu.pdf
개요
SPF(메일서버 등록제)란?
메일서버등록제(SPF: Sender Policy Framework)는 메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금 이메일에 표시된 발송자 정보가 실제 메일서버의 정보와 일치하는지를 확인할 수 있도록 하는 인증 기술이다.

대다수 스팸발송자가 자신의 신원을 감추기 위하여 발송자 주소나 전송 경로를 허위로 표기하거나 변경하는 경우가 많다는데 착안되었다.

※ SPF를 DNS에 설정하는 방법은 http://www.kisarbl.or.kr > White Domain 등록 > SPF 작성도우미 메뉴를 참고한다.

SPF를 이용하여 스팸메일을 차단하기 위해서는 메일서버에 SPF 인증 기능이 적용되어 있어야 한다.

Ubuntu 환경에서 기본적으로 설치된 메일서버에는 SPF 인증 기능이 적용되어 있지 않으므로 SPF 모듈 설치 및 패치를 해야 한다. 본 안내서는 메일 수신 서버에 SPF 인증 기능을 쉽게 적용하는 방법을 소개한다.
SPF를 이용한 이메일 인증 절차
발신자 :자신의 메일서버 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록
수신자 :이메일 수신시 발송자의 DNS에 등록된 SPF 레코드를 확인하여 해당 이메일에 표시된 발송IP와 대조하고 그 결과 값에 따라 수신여부를 결정
(메일서버나 스팸차단솔루션에 SPF 인증 기능이 설치되어 있어야 함)
[그림 1] SPF 인증 흐름도
postfix, SPF 인증 모듈 설치
본 안내서는 운영체제 및 메일서버를 처음 구축하는 것을 기준으로 작성하였다. 설치 과정에서 사용하는 모든 명령어는 root 권한으로 실행해야 한다.
postfix 설치 여부 확인
Ubuntu에는 postfix가 기본적으로 설치되어 있다. 아래는 telnet 명령어를 이용하여 tcp/25번 포트에 접속하여 메일 전송 프로그램(MTA: Mail Transfer Agent)이 동작하고 있는 상태를 확인하는 것으로써 postfix가 동작하고 있음을 알 수 있다.
root@spf:~# telnet 0 25 (메일서버 25번 포트 접속)
Trying 0.0.0.0...
Connected to 0 (0.0.0.0).
Escape character is '^]'.
220 spf.kisa.or.kr ESMTP Postfix(Ubuntu)
quit (접속 종료)
221 2.0.0 Bye
libmail-spf-perl 설치
postfix에서 SPF 인증 기능을 적용할 수 있는 라이브러리로는 perl 스크립트로 작성된 'postfix-policyd-spf-perl'이 있다.

이 모듈을 사용하기 위해서는 'Mail::SPF' perl 모듈이 설치되어 있어야 한다.

해당 모듈은 'libmail-spf-perl' 패키지에 포함되어 있으므로 아래와 같이 패키지 관리 도구인 apt-get을 이용하여 설치한다.
root@spf:~# apt-get install libmail-spf-perl
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
..............(중략)
    libdigest-hmac-perl libdigest-sha1-perl liberror-perl libnet-dns-perl
    libnet-ip-perl libnetaddr-ip-perl
..............(중략)
libmail-spf-perl (2.006-0ubuntu2) 설정하는 중입니다 ...
postfix-policyd-spf-perl 설치 및 연동
1. 다운로드 및 압축 해제
아래와 같이 perl 기반의 SPF 인증 모듈인 'postfix-policyd-spf-perl'을 다운로드 한 후 압축을 해제한다.
root@spf:~# apt-get install postfix-policyd-spf-perl
패키지 목록을 읽는 중입니다... 0%
패키지 목록을 읽는 중입니다... 완료
..............(중략)
postfix-policyd-spf-perl 패키지를 푸는 중입니다 (.../postfix-policyd-spf-perl_2.007-1_all.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
postfix-policyd-spf-perl (2.007-1) 설정하는 중입니다 ...
2. master.cf 설정 변경
postfix를 구동할 때 사용되는 master 프로세스의 설정 파일인 master.cf 파일의 마지막 라인에 아래와 같이 추가한다.
root@spf:~# vi /etc/postfix/master.cf
..............(중략)
policy unix - n n - 0 spawn (엔터)
(한 칸 공백) user=nobody argv=/usr/sbin/postfix-policyd-spf-perl
※ 주의) 'user=nobody'로 시작하는 라인의 첫 한 칸을 공백으로 둔다.
3. main.cf 설정 변경
postfix의 설정 파일인 main.cf의 마지막 라인에 아래와 같은 설정을 추가하고 postfix 서비스를 재시작 한다.
root@spf:/etc/postfix# vi /etc/postfix/main.cf
..............(중략)
smtpd_recipient_restrictions =
reject_unauth_destination
check_policy_service unix:private/policy

bash-3.00# /etc/init.d/postfix restart
SPF 적용 여부 확인 및 차단
SPF 인증 결과, 메일 발송 IP와 SPF 레코드에 지정된 IP의 일치 여부에 따라서 'SPF pass'와 'SPF fail/softfail'로 구분된다. 확인 방법은 다음과 같다.
SPF pass인 경우
아래와 같이 '/var/log/syslog' 파일에서 SPF 인증이 통과(pass)된 로그의 내용을 확인할 수 있다. 해당 메일은 정상적으로 수신되었다.
root@spf:/etc/postfix# cat /var/log/maillog | grep pass
Jul 13 13:11:33 spf postfix/policy-spf[3136] Policy action=PREPEND
Received-SPF: pass (kisarbl.or.kr: x.x.x.x is .............. (중략)
helo=test.com; client-ip=x.xx.x
SPF fail/softfail인 경우
아래는 telnet 명령어를 이용하여 SPF 인증 기능이 적용된 메일서버로 접속하여 메일 발송을 테스트하는 과정이다. 메일 발송 IP와 SPF 레코드의 IP가 일치하지 않기 때문에 메일 수신 주소를 입력하는 단계에서 차단된 것을 확인할 수 있다.

표시된 URL에서는 SPF 인증이 실패(fail/softfail)하여 거부된 상세 사유를 확인할 수 있다.
[root@ ~]# telnet mail.yourdomain.com 25
Connected to your (1.2.3.4).
220 mail.yourdomain.com ESMTP Postfix (Ubuntu)
ehlo kisarbl.or.kr
250 mail.yourdomian.com Hello example.com, pleased to meet you
mail from: test@kisarbl.or.kr
250 2.1.0 Ok
rcpt to: root@kisarbl.or.kr
550 5.7.1 <root@kisarbl.or.kr>: Recipient address rejected: Please see http://www.openspf.org/Why?s=mfrom;id=test@%40kisarbl.or.kr;ip=1.2.3.5
reject 사유 페이지 확인
'http://spf.pobox.com/why.html?sender=kisa%40kisarbl.or.kr&ip=x.x.x.x&receiver=0' 페이지에서 거부(reject) 사유와 해결 방법을 확인할 수 있다.
[그림 2] SPF fail/softfail 시 차단 확인 페이지
procmail을 이용한 스팸 차단 방법
1. procmail이란?
유닉스 계열에서는 메일을 수신한 후 메일 박스에 전달할 때 마지막 처리를 담당하는 MDA(Mail Delivery Agent) 프로그램으로서 procmail이 가장 널리 사용되고 있다.

procmail을 spfmilter와 연동하여 'SPF fail/softfail' 발생 시 메일을 차단하는 대신에 메일의 제목에 [SPAM] 태그를 추가하여 스팸 분류를 하도록 한다.

메일 사용자들이 '아웃룩 익스프레스' 등의 메일 클라이언트(MUA)를 이용하여 스팸으로 자동 분류를 할 수 있게 된다.
2. procmail 설치
아래와 같이 패키지 관리 도구인 dpkg를 이용하여 procmail의 설치 여부를 확인한 후 설치되어 있지 않으면 apt-get을 이용하여 설치한다.
root@spf:~# dpkg -l | grep procmail
procmail 3.22-16ubuntu5
root@spf:~# apt-get install porcmail
3. main.cf 설정 변경
postfix의 설정 파일인 main.cf에 아래와 같은 설정을 추가하고 postfix 서비스를 재시작 한다.
root@spf:~# vi /etc/postfix/main.cf
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = procmail -a "$EXTENSION"
# The mailbox_transport specifies the optional transport in master.cf
root@spf:~# /etc/init.d/postfix restart
4. procmail 룰셋 작성
메일의 제목에 [SPAM] 태그를 추가하기 위한 룰셋을 아래와 같이 '/etc/mail/procmailrc' 파일에 작성한다.
※ '/etc/mail/procmailrc'는 모든 사용자에게 적용되는 필터를 정의할 때 사용하며, 만약 특정 사용자만 적용하려면, 해당 사용자의 '~/.procmailrc' 파일에 아래의 설정을 추가한다.
[root@spf log]# vi /etc/mail/procmailrc
LOGFILE=/var/log/procmail
VERBOSE=no
PATH=/usr/bin:/usr/local/bin:/bin
SHELL=/bin/sh
SPAM_SPF_LOG = "/var/log/SPAM_SPF.log"
:0 :
* ^Received-SPF: \/(fail|softfail)
{
        STAT = "$MATCH"
       # From
        :0
        :* ^From: \/.*
        {
                FROM = "$MATCH"
        }
        # Subject
        :0
        * ^Subject: \/.*
        {
                SUBJECT = "$MATCH"
        }
        LOG="=====SPF_filter($STAT) F=$FROM, S=$SUBJECT"
        :0fwh
        * ^Subject: \/.*
        | formail -I "Subject: [SPAM] $SUBJECT"
        | $SPAM_SPF_LOG
}
5. 스팸 차단 확인
다음과 같이 '/var/log/procmail' 파일에서 procmail의 로그를 확인할 수 있다. SPF 인증 결과가 'fail/softfail'인 경우에 해당 메일 제목에 [SPAM] 태그가 추가되었으며 사용자의 메일 박스(/var/mail/kisa)에 저장되었다.
[root@spf log]# cat /var/log/procmail
procmail: Extraneous locallockfile ignored
=====SPF_filter(softfail) F="TESTER" <webmaster@kisarbl.co.kr>,
S==?ks_c_5601-1987?B?xde9usauIF8gc3BmIHNvZnQgZmFpbLfOIMDOx9EgU1BBTS
DFwg==?= =?ks_c_5601-1987?B?sdfD37Ch?=
procmail: Skipped "| $SPAM_SPF_LOG"

From webmaster@kisarbl.or.kr Wed Jul 21 18:24:46 2010
Subject: [SPAM] =?ks_c_5601-1987?B?xde9usauIF8gc3BmIHNvZnQgZmFpbLfOIMDOx9EgU1B
Folder: /var/mail/kisa              2295

procmail: Extraneous locallockfile ignored
procmail: Skipped "| $SPAM_SPF_LOG"
From webmaster@kisarbl.or.kr Wed Jul 21 18:25:49 2010
Subject: 테스트 SPF pass인 경우
Folder: /var/mail/kisa              766

목록

이전글 또는 다음글
이전글 ▲ SunOS 운영체제 적용
다음글 ▼ SunOS 운영체제 적용

컨텐츠 문의 : 불법스팸대응센터 / (국번없이) 118 / 118@kisa.or.kr
KISARBL 및 화이트 도메인 문의 / (061) 820-2721 / ksrt@kisa.or.kr