PostfixにOpenDKIMを追加したときのメモ + DMARC
サーバ
Lastmod: 2023-11-30
Published: 2022-05-20

昨今spam判定が厳しいご時世なので、個人で使っているメールサーバにDKIMを導入してみることにしました。
その時のメモです。

DMARCの設定については、2023年11月追記を参照してください。

環境

  • Ubuntu 20.04

OpenDKIM

  • インストール
# apt install opendkim opendkim-tools
  • 鍵の配置ディレクトリの作成
# install -d /etc/opendkim/key
# cd !$
  • 鍵の生成(複数ドメイン分)
# install -d masa23.jp
# opendkim-genkey -D masa23.jp -d masa23.jp
# install -d example.jp
# opendkim-genkey -D example.jp -d example.jp

default.private  default.txt が各ディレクトリの生成されます
  • 所有権を変更
# chown -R opendkim:opendkim /etc/opendkim/
  • OpenDKIMの設定
# vi /etc/opendkim.conf
Socket                  inet:8892@localhost

#Domain
#KeyFile
#Selector
KeyTable refile:/etc/opendkim/key_table
SigningTable refile:/etc/opendkim/signing_table
# cat << _EOF_ > /etc/opendkim/key_table
default._domainkey.masa23.jp masa23.jp:default:/etc/opendkim/key/masa23.jp/default.private
default._domainkey.example.jp example.jp:default:/etc/opendkim/key/example.jp/default.private
_EOF_
# cat << _EOF_ > /etc/opendkim/signing_table
*@masa23.jp default._domainkey.masa23.jp
*@example.jp default._domainkey.example.jp
_EOF_
  • opendkimの起動と起動設定
# systemctl start opendkim
# systemctl enable opendkim

Postfixの設定

  • milterとして追加
# vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8892
non_smtpd_milters = inet:127.0.0.1:8892
  • 設定のチェック
# postfix check
  • postfix reload
# systemctl reload postfix

DNSへの公開鍵の登録

  • 公開鍵の確認
# cat /etc/opendkim/key/masa23.jp/default.txt
default._domainkey      IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5jqnqaMgv8fFl8yQHDfPdU/7j0YvFza2YIMIYivVV/CaItZizlkY6emj9o6MZBK3RU9ni4BPCQ1do64+HhZHUanAPojZd0PsyusCBNBFU1wY6/xpcuoPf+Ru15UvLI2/o+9ElO4vF3l2YoTSOE5ljnBNd2EWihqmUQazEpu3PT1a7BbHZkW/7WdK5ipgU8+u/iyRai0Dnrhgoi"
          "ArzoDjFgm4TRJQGhD+EUOmnwFa3Xz5eQg50IigS7WKyHwF3HSZPzrkEFf5hIXYdoeIr6OqKg5sldONF/hY9voEITHZqtHOnrBlaBH2DTTI6uQH7Uc4JLv12xD6Gh1rlZy5zdMTwQIDAQAB" )  ; ----- DKIM key default for masa23.jp

このレコードをDNSに登録します。

  • あわせてADSPの設定を行います
    今回はそこまで厳格に見てもらう必要もないため、unknownとしておきます。
_adsp._domainkey    IN  TXT "dkim=unknown"

2023年11月追記

ADSPは廃止されたようです。

ということで、SPFレコードが設定済みの想定で、DMARCの設定を行います。

  • DMARCの設定
_dmarc  IN  TXT "v=DMARC1; p=quarantine;"

pの値は、none, quarantine, rejectのいずれかを指定します。

q意味
noneメイン所有者は、メッセージの配信に関して特定のアクションを要求しません。
quarantineドメイン所有者は、DMARCメカニズムのチェックに失敗したメールを、メール受信者が疑わしいものとして処理することを望んでいます。
rejectドメイン所有者は、DMARCメカニズムチェックに失敗したメールをメール受信者が拒否することを望んでいます。