CentOS5.5 Postfix で DKIM ( OpenDKIM ) に対応する
こんなエントリ(ネットショップ運営者必見?迷惑メール扱いを回避する手順 :: drk7jp )があるので、とりあえずDKIMを導入してみる。
DKIMを導入するに以前は dkim-milter を使うのが一般的だったようだけど、最近では OpenDKIM を使うようだ。
参考:
準備
OpenDKIMのインストール
※rpmforgeまたはepelリポジトリが必要。
$ sudo yum install opendkim ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Installing: opendkim i386 2.5.2-1.el5.rf rpmforge 258 k Installing for dependencies: libopendkim i386 2.5.2-1.el5.rf rpmforge 159 k Transaction Summary ============================================================================================================== Install 2 Package(s) Upgrade 0 Package(s)
秘密鍵の作成
ドメインごとに保管場所を作成する必要があるのでまずは保管場所を作る。
$ sudo mkdir /etc/opendkim/keys/clicktx.jp
OpenDKIMに付属しているスクリプトで鍵ペアを作成する
$ sudo opendkim-genkey -D /etc/opendkim/keys/clicktx.jp/ -d clicktx.jp -s default
default.private default.txt という鍵ペアが出来る。
DNSに登録
default.txt の内容(TXTレコード)をDNSに設定するのだけれど、バグがあるので注意。
元の内容
default._domainkey IN TXT "v=DKIM1;=rsa; p=MIGfMA...." ; ----- DKIM default for clicktx.jp
修正後の内容
default._domainkey IN TXT "v=DKIM1;k=rsa; p=MIGfMA...." ; ----- DKIM default for clicktx.jp
※ =rsa を k=rsa に直すこと。
うちはValueDomainのDNSサーバを使っているので、
txt default._domainkey v=DKIM1;k=rsa; p=MIGf...中略...IDAQAB
として設定する。
うちのDNSサーバは ns*.value-domain.com を使っているのでこの方法でいいみたいだけど、eNom「dns*.name-services.com」の場合は設定方法が違うみたいなので注意。
参考:Google Appsの「DKIM」をVALUE-DOMAINで設定する - 風見鶏の目
TXTレコードの確認
DNSが浸透してから行う必要がある。
nslookup コマンドで
$ nslookup -q=txt default._domainkey.clicktx.jp
Non-authoritative answer: *** Can't find default._domainkey.clicktx.jp: No answer
こんなんでたらまだ浸透していません。
オーナー変更
TXTレコードが正しく引けるようなら秘密鍵の所有者を変更してopendkim が読み込めるようにする。
$ sudo chown -R opendkim:opendkim /etc/opendkim/keys
OpenDKIMの設定
設定ファイル /etc/opendkim.conf
$ sudo vi /etc/opendkim.conf # Selects operating modes. Valid modes are s (signer) and v (verifier). Default is v. #Mode v Mode sv ←追記 sは送信時の署名、vは受信時の確認 # Gives the location of a private key to be used for signing ALL messages. # KeyFile /etc/opendkim/keys/default.private ←コメントアウト # Gives the location of a file mapping key names to signing keys. In simple terms, # this tells OpenDKIM where to find your keys. If present, overrides any KeyFile # setting in the configuration file. #KeyTable /etc/opendkim/KeyTable KeyTable refile:/etc/opendkim/KeyTable ←追記 # Defines a table used to select one or more signatures to apply to a message ba sed # on the address found in the From: header field. In simple terms, this tells # OpenDKIM how to use your keys. #SigningTable /etc/opendkim/SigningTable SigningTable refile:/etc/opendkim/SigningTable ←追記 # Identifies a set of "external" hosts that may send mail through the server as one # of the signing domains without credentials as such. ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ←コメントを外す # Identifies a set internal hosts whose mail should be signed rather than verifi ed. InternalHosts refile:/etc/opendkim/TrustedHosts ←コメントを外す
KeyTableの設定
KeyTable には、TXT フィールドとシグニチャをつけるドメイン、セレクタ、対応する秘密鍵を1行につき1ドメインずつ書いていく。
ドメインに対する秘密鍵を指定いてあげるのかな。
$ sudo vi /etc/opendkim/KeyTable default._domainkey.clicktx.jp clicktx.jp:default:/etc/opendkim/keys/clicktx.jp/default.private
SigningTableの設定
SigningTable には、どのメールアドレスに対してはどの TXT フィールドを参照するかを指定する。ここではワイルドカードが使える。
ワイルドカードを使って ***@clicktx.jp のメールが参照するTXTレコードを指定してあげる。
$ sudo vi /etc/opendkim/SigningTable *@clicktx.jp default._domainkey.clicktx.jp
TrustedHostsの設定
TrustedHosts には、DKIM シグニチャをつけるべきメールサーバをリストアップしておく。
との事。ローカルサーバだけでいいのかな?
デフォルトで 127.0.0.1 が指定してある。そのままでもおkの模様。
$ sudo vi /etc/opendkim/TrustedHosts 127.0.0.1
# opendkim起動
$ sudo /etc/rc.d/init.d/opendkim start
# 自動起動の設定
マシンを再起動した時に自動起動。
$ sudo /sbin/chkconfig opendkim on
Postfixの設定
main.cfの最終行に追記
$ sudo vi /etc/postfix/main.cf # DKIM smtpd_milters = inet:127.0.0.1:8891
Postfixを再起動
$ sudo /etc/rc.d/init.d/postfix restart
DKIMのテスト
sa-test@sendmail.net へ空メールを送る。
DKIMだけじゃなく他のチェックもしてくれる。
Spamhausとかに登録されているとブラックリストに載っているよ!って弾かれます...。
ヘッダではなく本文に記載されます。
以下のようになっていればおk?
Authentication System: DomainKeys Identified Mail (DKIM)
Result: DKIM signature confirmed GOOD
Description: Signature verified, message arrived intact
Reporting host: services.sendmail.com
More information: http://dkim.org/
Sendmail milter: http://opendkim.org/
その他
ドメインごとに用意しなくてはならないのかな?
自分で管理しているドメインならデフォルトのキーペアを設定して使い回してしまってもいいのかしら?
-
前の記事
Bootstrapでfluidレイアウトの時にthumbnailsを使うとズレる問題の解決策 2012.08.15
-
次の記事
Gunma.web #10 に行ってきたよ。 2012.09.19