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 banner 80x15
  AnNyung banner 80x15
  AnNyung banner 80x15
  AnNyung 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 2014 OOPS Development Organization 
LAST MODIFIED: 2012/08/28