さてSPFに続いて、DKIMの設定を行う。
まずはdkimを入れる呪文。
# apt-get install opendkim opendkim-tools
色々な設定方法がネットに落ちているが、debian10(Buster)でインストールしたバイナリは以下のことに注意する。
- /etc/opendkim.confを参照する。
- opendkim はroot権限で動く。
- pidファイルは /var/run/opendkim/opendkim.pid となる。
なお、データファイルを /etc/mail , /etc/mail/keys に纏めた。/etc/opendkim なるディレクトリを作って、そこに纏めたほうが、第三者から見て見やすいかとは思う。
opendkim.confの雛形は /usr/share/doc/opendkim/examples/ 以下にある。
# cp -p /usr/share/doc/opendkim/examples/opendkim.conf.sample.gz /etc/
こいつを/etc/mail 以下に解凍し、opendkim.conf.example を /etc/opendkim.conf としてコピー保存する。また、秘密鍵を保存する /etc/mail/keys ディレクトリを作って、パーミッションを700にする。
# gunzip opendkim.conf.sample.gz
# cp -p opendkim.conf.sample opendkim.conf
# mv opendkim.conf ..
# mkdir keys
# chmod 700 keys
秘密鍵と公開鍵を"opendkim-genkey"で作成する
# opendkim-genkey -b 2048 -s 20200612hsol -d h-sol.jp
# ls
20200612hsol.private 20200612hsol.txt
#
秘密鍵と公開鍵ができた。
公開鍵の.txtは、bindのzoneファイルに貼れるようになっている(Zoneファイルの書き方で後述)
次に /etc/mail/ 以下にsigning.table と key.table なるファイルを作る。/etc/opendkim.conf で場所を定義して、参照される。
# cd /etc/mail
# vi signining.table
*@h-sol.jp h-sol
#vi key.table
h-sol h-sol.jp:20200612hsol:/etc/mail/keys/20200612hsol.private
# vi trusted.hosts
127.0.0.1
::1
localhsot
153.127.50.48
ik1-423-43544.vs.sakura.ne.jp
h-sol.jp
#
パーミッションの設定
# ls
keys key.table m4 opendkim.conf.sample signining.table trusted.hosts
# chmod 644 *
# mv m4 .m4
# chown -R opendkim:opendkim *
# chmod 700 keys
# cd /etc/mail/keys
# chmod -R 600 *
# ls
20200612hsol.private 20200612hsol.txt
# ls -al
total 16
drwx------ 2 opendkim opendkim 4096 Jun 12 10:07 .
drwxr-xr-x 4 root root 4096 Jun 12 10:08 ..
-rw------- 1 opendkim opendkim 1679 Jun 12 09:48 20200612hsol.private
-rw------- 1 opendkim opendkim 514 Jun 12 09:48 20200612hsol.txt
# cd ..
# ls -al
total 52
drwxr-xr-x 4 root root 4096 Jun 12 10:08 .
drwxr-xr-x 81 root root 4096 Jun 12 09:44 ..
drwx------ 2 opendkim opendkim 4096 Jun 12 10:07 keys
-rw-r--r-- 1 opendkim opendkim 64 Jun 12 10:04 key.table
drw-r--r-- 2 root root 4096 Jun 12 09:34 .m4
-rw-r--r-- 1 opendkim opendkim 21800 May 11 2015 opendkim.conf.sample
-rw-r--r-- 1 opendkim opendkim 17 Jun 12 10:04 signining.table
-rw-r--r-- 1 opendkim opendkim 77 Jun 12 10:05 trusted.hosts
#
/etc/opendkim.conf と /etc/default/opendkim の設定
# cd /etc/default
# vi opendkim
# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
#DAEMON_OPTS=""
# Change to /var/spool/postfix/var/run/opendkim to use a Unix socket with
# postfix in a chroot:
#RUNDIR=/var/spool/postfix/var/run/opendkim
RUNDIR=/var/run/opendkim
#RUNDIR=/run/opendkim
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
# default:
# SOCKET=local:$RUNDIR/opendkim.sock
#local:/var/spool/postfix/opendkim/opendkim.sock
# listen on all interfaces on port 54321:
#SOCKET=inet:54321
# listen on loopback on port 12345:
#SOCKET=inet:12345@localhost
# listen on 192.0.2.1 on port 12345:
#SOCKET=inet:12345@192.0.2.1
#USER=opendkim
#GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=
root で稼働するので以下の設定は不要
# adduser postfix opendkim
bindの設定
# vi /etc/bind/named.conf.local
zone "h-sol.jp" {
check-names ignore;
type master;
file "/etc/bind/h-sol_zone";
};
zone "50.127.153.in-addr.arpa" {
type master;
file "/etc/bind/h-sol.rev";
};
#
ここで再起動、少なくとも10分待つ。
$ sudo su
# cd /etc/mail/keys
# opendkim-testkey -d h-sol.jp -s 20200612hsol -k 20200612hsol.private -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key loaded from 20200612hsol.private
opendkim-testkey: checking key '20200612hsol._domainkey.h-sol.jp'
opendkim-testkey: key not secure
opendkim-testkey: key OK
#
ここで
OKが出ればOK
-----------------------------------------------------------
ここからドツボにハマる
root@ik1-423-43544:/etc/postfix# opendkim-testkey -d h-sol.jp -s 20200612hsol -k /etc/mail/keys/20200612hsol.private -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key loaded from /etc/mail/keys/20200612hsol.private
opendkim-testkey: checking key '20200612hsol._domainkey.h-sol.jp'
opendkim-testkey: key not secure
opendkim-testkey: key OK
root@ik1-423-43544:/etc/postfix#
これはOK
root@ik1-423-43544:/etc/postfix# dig 20200612hsol._domainkey.h-sol.jp txt
; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> 20200612hsol._domainkey.h-sol.jp txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31415
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 260c0fceb55cd654a53da80b5ee41eb52c617f5119eca5e4 (good)
;; QUESTION SECTION:
;20200612hsol._domainkey.h-sol.jp. IN TXT
;; ANSWER SECTION:
20200612hsol._domainkey.h-sol.jp. 600 IN TXT "v=DKIM1; h=sha256; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApxlYXhq6irYb7SnoiEZDYtiJz+9XOCh5zlYSAsezikPcAheXwDlhwrH20/y10isRo0m2uP4LD14A4wqbndM2C9FmnQZ1C2T+P/oO9LvqT1tnCEVf8EUIkylqf1aXEHs4+T5QQSeZIJc1NYNODPi10GpzwK6GMwc5eZNeOC4Li77CEeeTGZfRdhFlHaUtoEjiQ7y44JwxYqhcWf" "y+FduIfMTuSttMJ61EFJ6kO2LgaQig0w2yGddp1AY1uTr1+LfC5P2LT9OAhCrTlxuuqi/0I8pfRXYzrXvrqkNh5bPAeM6MTucXaVq53H8QYSCGFy/s3TFJ4+CdBN5QSejUeIaAjQIDAQAB"
;; AUTHORITY SECTION:
h-sol.jp. 600 IN NS ns1.dns.ne.jp.
h-sol.jp. 600 IN NS ns2.dns.ne.jp.
;; ADDITIONAL SECTION:
ns1.dns.ne.jp. 31773 IN A 61.211.236.1
ns2.dns.ne.jp. 31773 IN A 133.167.21.1
;; Query time: 0 msec
;; SERVER: 153.127.50.48#53(153.127.50.48)
;; WHEN: Sat Jun 13 09:32:53 JST 2020
;; MSG SIZE rcvd: 599
root@ik1-423-43544:/etc/postfix#
これもOKみたいだ。
----------------------------------------------------
長い試行錯誤を経て、
opendkim は rootで動く。→ /etc/mail /var/run/opendkim のパーミッション注意。
/etc/opendkim.conf は opendkim.conf.sample から、下記の様に書き換える。
# diff mail/opendkim.conf.sample opendkim.conf
129a130
> Canonicalization relaxed/simple
162c163
< Domain example.com
---
> Domain h-sol.jp
203a205
> ExternalIgnoreList /etc/mail/trusted.hosts
229a232
> InternalHosts /etc/mail/trusted.hosts
247c250,251
< KeyFile /var/db/dkim/example.private
---
> # KeyFile /var/db/dkim/example.private
> KeyFile /etc/mail/keys/20200612hsol.private
258a263
> KeyTable /etc/mail/key.table
339c344
< # Mode sv
---
> Mode sv
359c364,368
< # MultipleSignatures no
---
> # MultipleSignatures yes
> # KeyTable /etc/mail/key.table
> # SigningTable refile:/etc/mail/signing.table
> # ExternalIgnoreList /etc/mail/trusted.hosts
> # InternalHosts /etc/mail/trusted.hosts
434a444
> PidFile /run/opendkim/opendkim.pid
572c582,583
< Selector my-selector-name
---
> # Selector my-selector-name
> Selector 20200612hsol
632a644
> SigningTable refile:/etc/mail/signing.table
660c672,674
< Socket inet:port@localhost
---
> #Socket inet:port@localhost
> Socket inet:8891@localhost
> #Socket local:/var/spool/postfix/opendkim/opendkim.sock
#
コメント