AnNyung Official Homepage Home > White Paper [ Domainkey ]  

HOME
What is AnNyung
Documents
Packages System
White Paper
  . 2.0 Pkg Catalog
  . PHP Guide
  . AnNyung Tuning
  . A.P.M Setting
  . migration to 1.3
  . autoupdate
  . Oracle Ready
  . Quota Doc
  . CheckRootKit
  . Multibyte DNS
  . Sendamil STARTTLS
  . MySQL 4.1 Update
  . Time Server
  . Domain Key
  . VPN with PPTPd
  . VPN with OpenVPN
Download
Update
FAQ
Hardware
RoadMap
Gallery

  Go oops.org
  AnNyung banner 88x31

  AnNyung 1 banner 80x15
  AnNyung 2 banner 80x15
  AnNyung 3 banner 80x15
  AnNyung banner 80x15
  AnNyung banner 80x15



Support DK-MILTER for Sendmail

  이 문서는 안녕에서 제공되는 sendmail 에 Yahoo! 의 ANTI SPAM 정책 Domain Key 를 사
  용할 수 있도록 하기 위한 문서이다. 안녕에서 제공하는 dl-milter 를 사용하기 위해서
  는 안녕 리눅스의 sendmail 8.13.5-2 버전 이후부터 가능하다.


  1. dk-milter 설치

    dk-milter 설치는 안녕의 Packages system 을 이용하여 할 수 있다.

 Hanterm - pkgadd -u dl-milter

 [oops@main dir]$ pkgadd -u dk-milter
  dk-milter       :
    ==> 의존성 패키지 sendmail-cf 성공
    ==> dk-milter Update 성공

 [oops@main dir]$ 


    dk-milter 등 안녕 리눅스에서 제공하는 milter 들은 sendmail-cf package 에 의해서
    제어가 되므로 위와 같이 의존성 패키지로 같이 설치가 된다. 이미 설치가 되어 있다
    면 위와 같이 출력되지는 않는다.


  2. Key 생성

    Domain Key 는 private key 와 public key 그리고 public key 를 DNS 에 등록을 하여
    인증을 하는 구조이다. 이 문서는 dk-milter 를 사용하기 위한 문서이므로 이에 대한
    자세한 사항은 http://elancer.co.kr 의 Domain Key 문서를 참조하도록 한다.

    안녕의 dk-milter 는 설치시에 키가 존재하지 않으면 기본으로 hostname 을 이용하여
    키를 자동으로 생성하도록 되어 있다. /usr/share/ssl/certs/dk-milter 를 보면 생성
    된 키를 볼 수 있다. 키가 자동 생성이 되어 있더라도 다시 생성하도록 한다.

    안녕에서는 Domain Key 를 생성하기 위하여 dk-milter-sec 라는 명령을 제공한다.

 Hanterm - dk-milter-sec <selector> [<domain>]

 [oops@main dir]$ dk-milter-sec --help
  USAGE: /usr/sbin/dk-milter-sec [keyname] [domain]

 [oops@main dir]$ 


    dk-milter-sec 는 2 개의 인자를 가지고 명령을 수행한다.  첫 번째 인자인 keyname
    (또는 selector 라고 한다.) 은 Domain Key 의 key 를 매치하기 위하여 사용할 값을
    지정한다. 어렵게 생각하지 말고 맘에 드는 단어 하나를 만들면 된다. 2번째 인자인
    domain 은 dk-milter 가 설치된 서버에서 발송이 되는 메일에 대하여 DNS 인증을 위
    한 도메인을 지정한다. 대충 메일 주소에 사용할 도메인을 지정하면 된다.

    여기서 서버에 메일 주소로 사용하는 도메인이 여러개일 경우 고민을 하게되는데, 고
    민할 필요 없이 그 중에 하나만 지정하면 된다. (이는 도메인 질의를 위해 필요한 것
    이기 때문이다.)

 Hanterm - dk-milter-sec yellow oops.org

 [oops@main dir]$ dk-milter-sec -y yellow oops.org
 [oops@main dir]$ ls /usr/share/ssl/certs/dk-milter
  dk-milter.pem  gentxt.sh  yellow._domainkey.oops.org
  yellow.private  yellow.public

 [oops@main dir]$ 



  3. dk-milter 설정

    /etc/sysconfig/dk-milter 에서 다음의 설정값을 확인하도록 한다.

 Hanterm - dk-milter-sec yellow oops.org

 [oops@main dir]$ vi /etc/sysconfig/dk-milter
  # sign 한 도메인 이름
  dkey="oops.org"

  # key path
  # /usr/sbin/dk-milter-sec signkey hostname 를 실행하면
  # /usr/share/ssl/certs/dk-milter 에 pem 파일이 생성됨
  keypath="/usr/share/ssl/certs/dk-milter/dk-milter.pem"

  # sign 시에 사용할 Selector
  selector="yellow"

 [oops@main dir]$ 


    위의 3 옵션의 값을 2 번 section 에서 키를 만들 때 사용했던 selector 와 domain,
    그리고 생성된 key file 을 설정에 반영해 주도록 한다.


  4. dk-milter 등록

    /etc/mail/sendmail.mc 를 /etc/mail 에 hostname.mc 로 하나를 복사해 놓도록 한다.
    다음 hostname.mc 의 가장 마지막 라인 "dnl OOPS" 상단에 다음과 같이 설
    정을 하도록 한다.

 Hanterm - cat /etc/mail/hostname.mc

 [oops@main dir]$ cat /etc/mail/hostname.mc
  MAILER(smtp)dnl
  MAILER(procmail)dnl

  INPUT_MAIL_FILTER(
      `dk-filter',
      `S=local:/var/lib/dk-milter/dk-filter.sock, T=C:1m;S:1m;R:1m;E:5m'
  )dnl

  dnl OOPS

 [oops@main dir]$ m4 /etc/mail/hostname.mc > /etc/mail/sendmail.cf
 [oops@main dir]$ /etc/init.d/sendmail restart
  Shutting down spfmilter:                                   [  확인  ]
  clamav-milter를 종료하고 있습니다:                         [  확인  ]
  Shutting down dk-milter:                                   [  실패  ]
  sendmail를 종료하고 있습니다:                              [  확인  ]
  Starting spfmilter:                                        [  확인  ]
  clamav-milter (을)를 시작합니다:                           [  확인  ]
  Start dk-milter:                                           [  확인  ]
  sendmail (을)를 시작합니다:                                [  확인  ]

 [oops@main dir]$ 

    hostname.mc 에 dk-milter 를 등로한 후, m4 명령으로 sendmail.cf 를 재생성 한다.
    재 생성 후에 sendmail 을 재 구동하면 dk-milter 까지 같이 구동이 된다.


  5. Domain Key 등록

    4 번 섹션까지 설정을 했다면 서버에서의 설정은 완료 되었다. 이제 마지막으로 도메
    인키를 DNS 에 등록할 차례이다.

    2 번 섹션에서 생성한 파일중 ._domainkey. 파일에 DNS 등록을 위
    한 값이 생성이 되어 있다.

 Hanterm - cat /usr/share/ssl/certs/dk-milter/yello._domainkey.oops.org

 [oops@main dir]$ cat /usr/share/ssl/certs/dk-milter/yello._domainkey.oops.org
  yellow._domainkey IN TXT "g=; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4G
  NADCBiQKBgQCp0wDJRB/ByFf0T2mbcRjo3kyNWJZuikV3WhGrJJsDuD1h5vUowHLmvU
  n5gbATUT/YriKcayat2lxSmGopWUVKeqTD 4Nz2GIUbDUp417KI01YqQn+B3wQFGCKV
  s4MgDQZfXZx82G1iDP4lnFfzJ/h/ZIE6 oK8O4oFvVn4ZZPlSSQIDAQAB" ;
  ----- DomainKey yellow for oops.org

 [oops@main dir]$ 


    위의 예제는 보기 좋기 하기 위하여 여러줄로 나누어 놓았지만 실제로는 한줄로 나온
    다. 위의 출력 중 붉은색 부분인 따옴표 안의 내용을 복사하여 DNS 에 등록을 한다.

    key 를 생성할 때 사용한 domain 을 관리하는 zone file 에서 다음과 같이 등록을 하
    도록 한다.

 Hanterm - cat oops.zone

 [oops@main dir]$  cat oops.zone
  ...
  yello._domainkey.oops.org. 60  IN  TXT "g=; k-rsa; t=y; p=MIG....DAQAB"
  ...
 [oops@main dir]$ 


    등록 완료 후에 DNS 를 reload 하도록 한다. zone 에 등록되는 도메인 형식은

    SELECTOR._domainkey.DOMAIN.  60  IN TXT "KEY CONFIG"

    의 형식으로 등록을 한다.


  6. 확인

    다음의 dig 와 nslookup 명령으로 DNS 등록을 확인하도록 한다.

 Hanterm - cat oops.zone

 [oops@main dir]$ dig +short <selector>._domainkey.<domain> txt
 [oops@main dir]$ nslookup
  > set q=txt
  > <selector>._domainkey.<domain>
 [oops@main dir]$ 


    등록이 된 것을 확인을 했다면

    http://domainkeys.sourceforge.net/selectorcheck.html

    에서 유효성 확인을 하도록 한다.

    "This selector appears valid "

    라고 나온다면 제대로 설정이 된 것이다.

    여기까지 작업을 마쳤다면, 이제 Domain Key 를 제공하는 Gmail 이나 Yahoo! Mail
    에서 메일을 보내고 받고 해 보도록 한다. 주고 받은 메일의 헤더에서

    Authentication-Results: main.oops.org from=addr; domainkeys=pass (testing)
    DomainKey-Status: good (test mode)

    와 같은 헤더를 찾아 보도록 한다.

    참고로 Goolge 에서 받는 메일은 DomainKey-Status 가 남으며,  dk-milter 가 설치된
    서버에서 받은 메일에는 Authentication-Results 헤더가 남게 된다.


    



 Home > White Paper [ Domainkey ]

Copyright 2015 OOPS Development Organization 
LAST MODIFIED: 2012/08/28