sendmail에 Domainkey 적용하는 방법

sendmail에 Domainkey 적용하는 방법

이 문서는 sendmail 에 Yahoo! 의 ANTI SPAM 정책인 Domain Key를 사용할 수 있는 방법을 설명한다.

작성자 : hasu0707@gmail.com

■ 시험 환경


1. CentOS 5.3 (최소 설치 환경에서 Development Kit만 추가로 설치된 상태)

2. 구축 및 시험할 도메인은 esvali.com 이다.

3. sendmail에 Domain Key를 적용하기 위해서는 DNS 환경 또한 변경이 필요하므로 네임서버환경을 편집할 수 있어야 한다.

■ 준비사항


1. sendmail-devel RPM 패키지 파일

2. sendmail용 domainkeys-milter (http://sourceforge.net/projects/dk-milter/)

3. Berkeley DB 가 필요하나 sendmail이 동작 중이면 보통 설치되어 있다.

4. openssl, sendmail은 이미 설치가 되어 있는 것으로 간주한다.

■ sendmail-devel과 dk-milter 설치


1. sendmail-devel RPM을 설치한다.

# rpm –Uvh sendmail-devel-8.13.8-8.el5.rpm
또는
# rpm –Uvh –nodeps sendmail-devel-8.13.8-8.el5.rpm

2. domainkeys-milter를 빌드한다.


/work에 다운로드 받은 dk-milter-1.0.2.tar.gz 를 넣고 압축을 푼 후 빌드한다.

# cd dk-milter-1.0.2
# sh Build
....

빌드가 끝나면 설치한다.
# sh Build install



■ public key와 private key 생성하기


# openssl genrsa -out rsa.private 768

# openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM

- 만들어진 개인 키를 /var/db/domainkeys에 mail.key.pem이란 이름으로 이동시킨다.

# mkdir -p /var/db/domainkeys

# mv rsa.private /var/db/domainkeys/mail.key.pem

■ 네임서버 설정에 public key 명시하기


# cd /var/named/chroot/var/named
# vi esvali.com
도메인 설정파일에 아래와 같은 내용을 추가해 준다.

; 아래 부분을 추가한다. p=여기에 BASE64 인코딩된 public key를 넣는다.
; 위에서 만든 rsa.public을 참조하라.
mail._domainkey IN      TXT     "k=rsa; p=MEww......DAQAB"
_domainkey      IN      TXT     "t=y; o=~"

■ sendmail 에 domainkey milter 설정하기


1. /etc/mail/sendmail.mc에 아래 부분을 추가해 준다.

INPUT_MAIL_FILTER(`dk-filter', `S=inet:8891@localhost')

sendmail 재시작

# /etc/rc.d/init.d/sendmail restart

2. dk-filter를 아래와 같이 실행한다.
(rc.local에 삽입하여 매 부팅 시 마다 자동으로 실행되도록 해준다.)

/usr/bin/dk-filter -l -p inet:8891@localhost -c simple -d esvali.com -s /var/db/domainskeys/mail.key.pem -S mail -u hasu0707 -m MSA

※ hasu0707은 실행 리눅스 계정이므로 root를 제외한 다른 계정으로 사용하여도 무방하다.

 ■ 적용 시험


1. autorespond+dk@dk.elandsys.com 으로 메일을 보내 본다. (내용은 상관없다.)

2. 잠시 후 답장이 아래와 같이 오면 성공한 것이다.

The results are as follows:

DomainKeys Signature validation: pass (testing) : 성공 !!
DomainKeys Policy: "t=y\; o=~"

DomainKeys Selector: mail
"k=rsa\;
p=MEwwDQYJ...........DAQAB"
.........

■ dk-filter


dk-filter - DomainKeys filter for sendmail

SYNOPSIS
dk-filter -p socketspec [-a peerlist] [-A] [-b modes] [-c canon] [-C
config] [-d domains] [-D] [-f] [-i ilist] [-I eilist] [-h] [-H] [-k]
[-l] [-m mtas] [-M macro[=value][,...]] [-o hdrlist] [-P pidfile] [-q]
[-R] [-s keyfile] [-S selector] [-T secs] [-u userid] [-U popdb] [-V]


■ 참고 자료
http://domainkeys.sourceforge.net/
http://www.elandsys.com/resources/sendmail/domainkeys.html


위로 스크롤