環境 †OS:CentOS6.3(64bit) ミドルウェア: DKIMについて †DKIMとは、DomainKeys Identified Mailの略で、これを入れることで何が出来るかというと、迷惑メール扱いされなくなる、ということ。 spfレコード(txtレコード)だけでもそれなりの効果もあるが、最近はそれでも迷惑メールに振り分けられるこもある。 今回はpostfix + opendkimでの構築をしていく。 難易度としてはやや高いほう。
インストール †CentOS6.3の標準リポジトリでインストールできる。 # yum -y install opendkim 構築 †構築に関してはそれほど難しくないので一気に記述。 鍵の生成 †# mkdir /etc/opendkim/keys/ml.jitaku-svr.info # opendkim-genkey -D /etc/opendkim/keys/ml.jitaku-svr.info/ -d ml.jitaku-svr.info -s default TIPS: -Dはどこに鍵を作成するか -d ドメイン名を指定 -s セレクタ名 セレクタ名はとりあえず何でも良い。何でもいいけど、ヘッダの中にも入ってくるので、あまり恥ずかしいものはやめたほうが無難。 鍵準備 †上記のコマンドを実行すると以下のファイルが出来上がる。 # ls /etc/opendkim/keys/ml.jitaku-svr.info/ 中身の確認 # cat /etc/opendkim/keys/ml.jitaku-svr.info/default.private -----BEGIN RSA PRIVATE KEY----- ~~秘密鍵~~ -----END RSA PRIVATE KEY----- # cat /etc/opendkim/keys/ml.jitaku-svr.info/default.txt default._domainkey IN TXT "v=DKIM1; k=rsa; p=~~公開鍵~~" ; ----- DKIM key default for ml.jitaku-svr.info default.privateは今後もファイルの指定をすることが多いので、長いからファイル名を変更(もちろんそのままでもOK) # mv /etc/opendkim/keys/ml.jitaku-svr.info/default.private /etc/opendkim/keys/ml.jitaku-svr.info/default ・権限変更 # chown -R opendkim:opendkim /etc/opendkim/keys # ls -la /etc/opendkim/keys/ml.jitaku-svr.info/default -rw------- 1 opendkim opendkim 891 Aug 7 14:43 /etc/opendkim/keys/ml.jitaku-svr.info/default 以上で準備OK。 メイン設定ファイルの編集 †# vim /etc/opendkim.conf PidFile /var/run/opendkim/opendkim.pid Mode sv ←sは送信時の署名、vは受信時の確認 Syslog yes SyslogSuccess yes LogWhy yes UserID opendkim:opendkim Socket inet:8891@localhost Umask 002 Canonicalization relaxed/simple #KeyFile /etc/opendkim/keys/default.private ←コメントアウト KeyTable refile:/etc/opendkim/KeyTable ←パスの前にrefileを記述 SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts ※コメントアウト部分は省略 KeyTableファイルの編集 †KeyTableはメールを送信する際にヘッダに付与させる鍵の情報を示すファイル # vim /etc/opendkim/KeyTable default._domainkey.ml.jitaku-svr.info ml.jitaku-svr.info:default:/etc/opendkim/keys/ml.jitaku-svr.info/default SigningTableファイルの編集 †SigningTableはFromに対する鍵を付与する設定。 # vim /etc/opendkim/SigningTable *@ml.jitaku-svr.info default._domainkey.ml.jitaku-svr.info TrustedHostsファイルの編集 †どのサーバから通信を受けるかの設定。 # vim /etc/opendkim/TrustedHosts 127.0.0.1 ExternalIgnoreListファイルの編集 †特定のサーバを拒否する設定。 ここまででopendkimの設定は完了。 最後にopendkimを起動させる。 # /etc/init.d/opendkim start postfixの設定 †opendkimがメールにヘッダを付与させるには、postfixからメールをもらわなくてはいけないので、postfixに以下の設定を追加する。 # vim /etc/postfix/main.cf #DKIM smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept 設定を変更したらpostfixを再起動。 # /etc/init.d/postfix restart BINDの設定方法 †zoneファイルに以下を追加 IN MX 10 ml.jitaku-svr.info. jitaku-svr.info. IN A 49.212.182.151 ml IN A 49.212.182.151 _adsp._domainkey.ml.jitaku-svr.info. IN TXT "dkim=unknown" default._domainkey.ml.jitaku-svr.info. IN TXT "v=DKIM1; k=rsa; t=y; p=~~公開鍵~~" ; ----- DKIM key default for ml.jitaku-svr.info TIPS: default._domainkey~の項目はprivate.txtに書かれてる行をそのままコピペでOK。 default._domainkey IN TXT "v=DKIM1; k=rsa; p=~~公開鍵~~" ; ----- DKIM key default for ml.jitaku-svr.info こうなっているので、少し修正してあげる。 zoneを変更したので、serialを変更し、zoneの再読み込み。 # rndc reload テスト †opendkimからメールに鍵が付与されているかをチェックする。 ③については環境によってメールを受信できなかったりするので、なくてもOKだと思う。 ①は確実に出来るはずなので、google,yahoo,hotmailなどでテストしてみる。 From root Mon Aug 19 12:01:57 2013 X-Apparently-To: XXXXXXXXX@yahoo.co.jp via 114.111.99.84; Mon, 19 Aug 2013 12:01:58 +0900 Return-Path: <root@ml.jitaku-svr.info> X-YMailISG: BmBzX94WLDs0IS_gYuUkpeU72l70cMKuDXe_0BOfhn3haQFE pKK6eMF9oLvud2vZpew.GlP3.lSST.CJkw4.vO9u1sptnfV8mgstmAFQPn6Q g7WfGS8ytt2i3hnRQ12nJmE5EB4Ft1GpaFvShAUkjcTwXmHQhhsJogyB92iO mghNP_A5joLeFXo.w7E.fMxgW63C8m1rwq7etbvu6USQg3hobSILNVlA_X8L DqcGVl7dwD2VZWHQ4EDvLhwcq9KF2VWPP5fifdiaypFbXGcnd1Ss5zB45nls Xr1L7l_y1KhpTInQIKX1CEagHyL.P2JJGor6BlxvCZtA8YZ8UpqdFZtoeEvu DrfVG8N.xlB4.XJohtDT.D6vNlazvnHKOQ7bnicWLDT4SpzpD5t0zCGNMCzr ZavGPVilmF76o8Rw7YEAEVhDezyv3y5p6iLe86peS4paT.lZnI9bH5fjuD6S 7ptQOAntPvgpGKnHkbsQL7iwAOcyIKPih5.U4_O23LoNNQHjgNnYb0xLaEgD rxF7MMhNQfbOOpH79mvxkAUrWV7xtGV0UEMvCbg9qvJ20yLf9Q7w6KrkW8b6 sHJtbkrOVvdWApIRdbwfBvCc0AAfZilpVaFU7DF4UqhfbHLPkR3Jm4QLXGSN qRtsmyJRP7uUFPpVQv_zEXjz8_5jrLU4pRXk0cgxgbHgKcIJWIF4EQpW4ebp XLDMiOBwu970BcZjFTJPBWjmPF2MqjevhIDyEsWaO4W9LUc_OtXojnry6T.n hbONP10l10YIqwnwOX38v1FDaTqteBv.cy76OE2agG5qR8A2MPXOJcNyjjq5 JW9MXg2e1LRQDI.Ra5836PHOB7olqA1nY952W.GdBbPy6kInZa.kiqFDKBWK WYrnWZb20dZpDbobAc79VyGSXEktJ85KsEpuwwcXJbGtDUEt4QBHLlT.z64A ..1nX3zAehJfNA_RBNWKXm.eROhWWNjjZ4g60r8_hSFiOMhbgSs1LLMAkl29 NvnIazl0lKH5.99fVXITTSGIL5VsYqIwj9TW7tW3.r5sh2igMImG23Q9Lxau So0WQr8YFHK4pI5rqnqN6wIDNO4fvNqcLosrKQobOUotp_8lsNbM.apdySaP oJhxZCFcSUdzzPJ1pIn1r9BRcfburSHY6XOV X-Originating-IP: [49.212.182.151] Received-SPF: pass (ml.jitaku-svr.info: domain of root@ml.jitaku-svr.info designates 49.212.182.151 as permitted sender) receiver=ml.jitaku-svr.info; client-ip=49.212.182.151; envelope-from=root@ml.jitaku-svr.info; Authentication-Results: mta510.mail.kks.yahoo.co.jp from=ml.jitaku-svr.info; domainkeys=neutral (no sig); dkim=pass (ok); header.i=@ml.jitaku-svr.info Received: from 49.212.182.151 (EHLO ml.jitaku-svr.info) (49.212.182.151) by mta510.mail.kks.yahoo.co.jp with SMTP; Mon, 19 Aug 2013 12:01:58 +0900 Received: by ml.jitaku-svr.info (Postfix, from userid 0) id EB7B1806CA; Mon, 19 Aug 2013 12:01:57 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.jitaku-svr.info; s=default; t=1376881317; bh=Phj6rpM4SpDxcpxtnTKAfOjvWayPv0m9f8iyFr/pEg4=; h=Date:To:Subject:From; b=M+9xYAB6Sn6PjlheokbL93Tnbceboa5etKFRMxhvnP+dkhLXcv/LdbKRXB5o4hLJY ksGXypgnHQojQBTQTM0LthcjuhOJhXp73DjaJMKAg0p67/F51WFdWDTvFuz3YIXFXj tkp/RqClZTsahUQnfsDVCOf+xGZnRitI1b1+SywM= Date: Mon, 19 Aug 2013 12:01:57 +0900 To: XXXXXXXXX@yahoo.co.jp Subject: testmail User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20130819030157.EB7B1806CA@ml.jitaku-svr.info> From: root@ml.jitaku-svr.info (root) Content-Length: 15 ↓に注目 Authentication-Results: mta510.mail.kks.yahoo.co.jp from=ml.jitaku-svr.info; domainkeys=neutral (no sig); dkim=pass (ok); header.i=@ml.jitaku-svr.info dkim=pass (ok)となれば問題ない。 Authentication-Results: mta552.mail.kks.yahoo.co.jp from=ml.jitaku-svr.info; domainkeys=neutral (no sig); dkim=permerror (no key); header.i=@ml.jitaku-svr.info という感じでerrorが出てしまうとどこかおかしい。 エラー †権限エラー †opendkimの権限周りでエラーが出たので、念のため。 Aug 19 11:37:05 xxxxxxx opendkim[2582]: can't load key from /etc/opendkim/keys/ml.jitaku-svr.info/default: Permission denied Aug 19 11:37:05 xxxxxxx opendkim[2582]: 440E5806CC: error loading key 'default._domainkey.ml.jitaku-svr.info' 読んで字のごとくパーミッションがおかしい。 設定ファイルミス †maillogに出ていた opendkim.confで各ファイルをファイル指定でIncludeする箇所。具体的には↓ SigningTable refile:/etc/opendkim/SigningTable 上記にrefileでファイルを指定する箇所が"refile"を付け忘れていたので、エラーとなっていた。 参考 †http://damelog.com/computer/server-administration/postfix-dkim-milter%E3%81%8B%E3%82%89opendkim%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B/ |