Open-dkim 은 서버에 설치되어 운영 되고 발송되는 메일의 스팸처리 확률을 낮추어 주는 메일 익스텐션 이라고 보면 된다.
사이트를 운영하면서 구글에 대량메일을 보내려면 필수 적이라고 보면 된다.
회원 가입 축하메일등의 짜잘한 부분 말고 ‘ㅅ’a
뭐 안내라든가 그런거 수천통씩 보내야 할때.. 국내에서는 kisarbl 에 화이트IP를 등록하는 방법으로
보내지지만 구글한텐 안통하기 때문에 구글에서 제안한 opendkim을 서버에 설치해서 해결 하는것이다.
여기서는 CentOS6 + Sendmail 에 적용 하는 방법을 나열함. ‘ㅅ’a
open-DKIM 은 epel 레포지트리에 포함 되어 있어서 yum 으로 설치 할수 있다.
1 2 3 |
~]# yum -y install epel-release ~]# yum -y install opendkim |
설치는 벌써 끝. ‘ㅅ’a
근데 open-DKIM은 설정이 어렵다 ‘ㅅ’a
폴더를 만들고.
1 2 |
~]# mkdir -p /etc/opendkim/keys/enteroa.com ~]# cd /etc/opendkim/keys/enteroa.com |
그다음 DKIM 키를 생성한다.
1 2 3 4 |
~]# /usr/sbin/opendkim-genkey -D /etc/opendkim/keys/enteroa.com -d enteroa.com -s default ~]# chown -R root.opendkim /etc/opendkim/keys/enteroa.com ~]# chmod 640 /etc/opendkim/keys/enteroa.com/default.private ~]# chmod 644 /etc/opendkim/keys/enteroa.com/default.txt |
이후 생성한 DKIM 정보를 아래 파일들에 삽입해야 한다 ‘ㅅ’a
/etc/opendkim/KeyTable (키테이블이 사용할 DKIM key를 선언.)
1 |
default._domainkey.enteroa.com enteroa.com:default:/etc/opendkim/keys/enteroa.com/default.private |
/etc/opendkim/SigningTable (사용할 메일주소와 키테이블을 매칭한다.)
1 2 |
enteroa@enteroa.com default._domainkey.enteroa.com noreply@enteroa.com default._domainkey.enteroa.com |
/etc/opendkim/TrustedHosts 이파일은 sendmail 메일의 access.db 와 기능이 설정법 및 기능이 같다.
즉 DKIM사이닝을 해줄 IP 및 사이닝을 사용할 도메인을 추가한다.
1 2 3 4 |
127.0.0.1 ::1 enteroa.com mail.enteroa.com |
이후에 아래 명령어로 생성된 DKIM 값을 발췌해서.
1 2 3 |
~]# cat /etc/opendkim/keys/enteroa.com/default.txt default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDj0y2e92Mkp4f1DBvBOQXgGCaCfEBKsgJ7Jh4NBNtKQevMq3nLGH0RQUuo5pGKMx+p6eTNJwueh+BN2svHmQTVGfHSNk8qWg2r8Yvfycf2ijs3Mmt126yKILo0nywv3d2z2UX7JWNjPOKxcRQe4u9wtDI+o+w5uF7TjzbidZnhowIDAQAB" ) ; ----- DKIM key default for enteroa.kr |
DNS 서버의 zone 파일에서 아래와 같이 TXT 값을 삽입한다. – 괄호랑 주석은 제거한다. ‘ㅅ’a
1 2 |
@ IN TXT "spf1 include:enteroa.com ~all" default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDj0y2e92Mkp4f1DBvBOQXgGCaCfEBKsgJ7Jh4NBNtKQevMq3nLGH0RQUuo5pGKMx+p6eTNJwueh+BN2svHmQTVGfHSNk8qWg2r8Yvfycf2ijs3Mmt126yKILo0nywv3d2z2UX7JWNjPOKxcRQe4u9wtDI+o+w5uF7TjzbidZnhowIDAQAB;" |
/etc/opendkim.conf 을 아래와 같이 수정한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
## BASIC OPENDKIM CONFIGURATION FILE PidFile /var/run/opendkim/opendkim.pid Mode sv Syslog yes SyslogSuccess yes LogWhy yes UserID opendkim:opendkim Socket inet:8891@localhost Umask 002 SendReports yes SoftwareHeader yes Canonicalization relaxed/relaxed Selector default MinimumKeyBits 1024 KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts OversignHeaders From |
그후 서비스 시작 및 init.d에 등록.
1 2 |
~]# /etc/init.d/opendkim start ~]# chkconfig --level 2345 opendkim on |
자 이제 sendmail 에 open-DKIM 연결고리만 만들어 주면 된다 ‘ㅅ’b
/etc/mail/sendmail.mc 파일에 아래와 같은 내용을 삽입한다.
1 |
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1')dnl |
그후에 적용 및 sendmail 재시작.
1 2 3 4 |
~]# cd /etc/mail ~]# make 혹은 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ~]# service sendmail restart |
그후에 메일 발송 테스트를 해서 메일 헤더에 DKIM-Signature 부분이 삽입이 되었는지 확인한다 ‘ㅅ’b
구글 메일로 메일을 발송하고 아래와 같이 확인한다.