DKIMの設定(Dmarc,SPFを含む)Debian用

1.はじめに
迷惑メール対策で、DKIM,DMarc,SPFがある。
DKIM、DMarc,SPFとも、DNS(Bind)のZoneファイルに記述する。特にDKIMは公開鍵をDNSでアナウンスするので、DNSに裏打ちされたホストから 発信されたという証拠になるものだ。

前回のDKIM設定では、親のドメイン(1個)に対して設定をおこなうものであった。今回はサブドメインのZoneファイルにもDKIMを設定し、親ドメインを使 うユーザと、サブドメインを使うユーザの双方にDKIMを有効化する設定のメモである。

2.環境
Debian 10 (x86) VPS
Bind9 を運用。”h-sol.jp”
Postfix + Sasl + Dovecot がインストールされている

3.今回の変更点
今回新たに、user-01@h-sol.jp を追加する
PostfixのVirtualで、user@subdom-01.h-sol.jp を user-01 に転送。
subdom-01のZoneをBind9に追加して、DKIMの設定をおこなう。
DKIMで取り扱うドメインが複数に対応し、/etc/dkim.confを改訂。

4.ユーザの追加
自分としては、ユーザ設定の復旧が容易になるように、コマンドをメモするようにしてます。

#/usr/sbin/groupadd -g 30001 user-01
# /usr/sbin/useradd -u 30001 -g 30001 -p `perl -e “print(crypt(‘password’, ’12’));”` \
-s /bin/bash -m -d /home/user-01 user-01

5./etc/postfix/virtual

下記の行を追加

user@subdom-01.h-sol.jp user-01

その後、/etc/postfix/virtual.db を更新。

# cd /etc/postfix
# postmap virtual

6. Subゾーン:”subdom-01.h-sol.jp”の作成

/etc/bind/master/h-sol_zone にsubdom-01を定義

$ORIGIN h-sol.jp.
:
(編集後にSerial値を上げる)
:
:
pop A 153.127.50.48
mail A 153.127.50.48
www A 153.127.50.48
subdom-01 A 153.127.50.48

次に、/etc/bind/subdom01-h-sol_zoneを定義

$ORIGIN subdom-01.h-sol.jp.
:
(編集後にSerial値を設定)
:
:
@ A 153.127.50.48

7.DKIM鍵の生成

cd /etc/mail/keys
opendkim-genkey -b 2048 -s 210517subdom01 -d subdom01.hsol.jp

ここで2048は鍵長、-s は鍵の名称、 -dは対象ドメインを指定する。

8.設定ファイル(/etc/opendkim.conf)の編集

ちょっと冗長ではあるが、新旧ファイルのdiffを掲載する。

root@ik1-423-43544:/etc# diff opendkim.conf opendkim.conf.org
163c163
< # Domain h-sol.jp

> Domain h-sol.jp
232c232
< # InternalHosts /etc/mail/trusted.hosts

> InternalHosts /etc/mail/trusted.hosts
251c251
< # KeyFile /etc/mail/keys/20200612hsol.private

> KeyFile /etc/mail/keys/20200612hsol.private
263c263
< # KeyTable /etc/mail/key.table

> KeyTable /etc/mail/key.table
364,369c364,368
< ## Changed 2021/05/17
< MultipleSignatures yes
< KeyTable /etc/mail/key.table
< SigningTable refile:/etc/mail/signing.table
< ExternalIgnoreList /etc/mail/trusted.hosts
< InternalHosts /etc/mail/trusted.hosts

> # MultipleSignatures yes
> # KeyTable /etc/mail/key.table
> # SigningTable refile:/etc/mail/signing.table
> # ExternalIgnoreList /etc/mail/trusted.hosts
> # InternalHosts /etc/mail/trusted.hosts
584c583
< # Selector 20200612hsol

> Selector 20200612hsol
645c644
< # SigningTable refile:/etc/mail/signing.table

> SigningTable refile:/etc/mail/signing.table
root@ik1-423-43544:/etc#

ざっくりと内容を解説;

163:
Domain をコメントアウトする。

232:
InternalHostsもコメントアウトする。

263:
KeyTableもコメントアウトする

364-369:
コメントアウト部分を外して、複数の鍵に対応可能にする。
MultipleSignatures yes
見晴らしが良いように直下に
KeyTable,SigningTable,ExternalIgnoreList,InternalHostsの定義。

584:
Selectorをコメントアウトする

645:
SigningTableもコメントアウトする。

引き続いて、key.tableの書式

root@ik1-423-43544:/etc# cat /etc/mail/key.table
20200612hsol h-sol.jp:20200612hsol:/etc/mail/keys/20200612hsol.private
210517subdom01 subdom01.h-sol.jp:210517subdom01:/etc/mail/keys/subdom01.private
root@ik1-423-43544:/etc#

赤字:セレクタ(keygenのときに-sで指定した文字列)
橙色:ドメイン(keygenのときに-sで指定した文字列)
残り:秘密鍵のフルパス

というカタチでkey.tableに書き連ねる。
引き続いて/etc/mail/signing.tableを下記。

root@ik1-423-43544:/etc/mail# cat signing.table
*@h-sol.jp 20200612hsol
*@subdom01.h-sol.jp 20210517subdom01
root@ik1-423-43544:/etc/mail#

key.tableで定義したドメイン名とセレクタを追記する。
残るtrusted.hosts

root@ik1-423-43544:/etc/mail# cat trusted.hosts
127.0.0.1
::1
localhsot
153.127.50.48
ik1-423-43544.vs.sakura.ne.jp
h-sol.jp
subdom01.h-sol.jp
root@ik1-423-43544:/etc/mail#

最後に今回追加したsubdomainを追加する。
なお、/etc/postfix/main.cf末尾のOpenDkim関係の設定は変更無し。

# Milter configuration
# OpenDKIM
milter_default_action = accept
milter_protocol = 6
# smtpd_milters = local:/opendkim/opendkim.sock
# non_smtpd_milters = local:/opendkim/opendkim.sock
# smtpd_milters = local:/var/spool/postfix/opendkim/opendkim.sock
# non_smtpd_milters = local:/var/spool/postfix/opendkim/opendkim.sock
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

9.ゾーンファイル(/etc/bind/subdom01-h-sol_zone)にTXT追加

root@ik1-423-43544:/etc/bind# cat subdom-h-sol_zone
$ORIGIN subdom01.h-sol.jp.
@ IN SOA ns.h-sol.jp. root.h-sol.jp.(
:
:
20210517subdom-h-sol._domainkey IN TXT ( “v=DKIM1; h=sha256; k=rsa; “
“p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApPusw4/WPSQeyl9nOMuvxBSfKFy9yUzp4huNa1YlYepABRMhd183cznmhVA/dVOIMl9Akdve0UTBMqiE/br5N0S6l/aanwNVlnOQ7AxPPMKvuUPoW7UO/3yJlFr1dsFwUAvANzAudhUbr0dOYdMaH8hW2Y2snQJJuAO1E6lmXUVE3F8Ej/IJoSaeHOH+2/SOqVSjcwLfpATb7e”
“DM/mWK3YtZnFs8i8cuudi1qUiQIDXtL6cbK7VHTq+g59/OuV7rDkd+RnHv71/VCkNwh1831hs2v9NwZKjywLLs5x9rZwkZbvT7IZQOlqAGMiEOj/bfzID9wMm4IV8HsTgKhcMZqQIDAQAB” ) ; —– DKIM key 20210517subdom01 for subdom01.h-sol.jp
_adsp._domainkey IN TXT “dkim=unknown”
_dmarc IN TXT “v=DMARC1; p=none; rua=mailto:root@subdom01.h-sol.jp”
@ IN TXT “v=spf1 ip4:153.127.50.0/24 ~all”
@ IN A 153.127.50.48
root@ik1-423-43544:/etc/bind#

と、赤字部分のDKIM設定に加えて、SPFとDMarcの設定を追加する。

bind,opendkim,postfixをそれぞれ再起動し、不具合が無いようだったら、最後に動作試験でgmailにメール発信してみる。メッセージのソースを見て、DKIM、DMarc、SPFがOKとなっていることを確認する。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です