見出し画像

さくらのVPSにDKIMの設定をする

DKIMは設定箇所が多いので結構大変ですが、手順通りに設定すれば対応できると思います。

参考にしたのは以下のサイトです。
CentOSのPostfixで迷惑メール判定されないようDKIMを設定する
DKIM認証を導入してみた

私のサイトより上記サイトを参考にしたほうが良いとは思います。

以下、手順です。私は Rocky Linuxです。
※ 手順に出てくる私のコメント行はコピペしないで、コードのみコピペしてください。

ポートの許可

さくらのコントロールパネルにアクセスして、TCP 8891 を許可します。

コンソール作業です。ルートになります。

sudo su

インストール

dnf install opendkim
dnf install opendkim-tools

鍵の作成

鍵を保存するフォルダを作成します。

mkdir /etc/opendkim/keys/あなたのドメイン

// 例
// mkdir /etc/opendkim/keys/sample.com

鍵を作ります。default という文字で作ると設定が楽です。

opendkim-genkey -D /etc/opendkim/keys/あなたのドメイン/ -d あなたのドメイン -s default

// 例
// opendkim-genkey -D /etc/opendkim/keys/sample.com/ -d sample.com -s default

所有者変更を変更します。

chown -R opendkim:opendkim /etc/opendkim/keys/あなたのドメイン/

確認します。

ll /etc/opendkim/keys/あなたのドメイン/

opendkim の設定

// ファイルをバックアップします
cp -a /etc/opendkim.conf /etc/opendkim.conf.$(date +%Y%m%d)

// ファイルを開きます。
vi /etc/opendkim.conf

変更箇所です。

Mode v
↓
Mode sv


SoftwareHeader  yes
↓
SoftwareHeader  no


KeyFile        /etc/opendkim/keys/default.private
↓
#KeyFile        /etc/opendkim/keys/default.private


# KeyTable      /etc/opendkim/KeyTable
↓
KeyTable      /etc/opendkim/KeyTable


# SigningTable  refile:/etc/opendkim/SigningTable
↓
SigningTable  refile:/etc/opendkim/SigningTable


# ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
↓
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts


# InternalHosts refile:/etc/opendkim/TrustedHosts
↓
InternalHosts refile:/etc/opendkim/TrustedHosts


#Socket  inet:8891@localhost
Socket local:/run/opendkim/opendkim.sock
↓
Socket  inet:8891@localhost
#Socket local:/run/opendkim/opendkim.sock

KeyTable の設定

// ファイルをバックアップします
cp -a /etc/opendkim/KeyTable /etc/opendkim/KeyTable.$(date +%Y%m%d)

// ファイルを開きます。
vi /etc/opendkim/KeyTable

変更箇所です。「あなたのドメイン」の箇所は example.com のようにサイトのドメインを入れてください。

#default._domainkey.example.com example.com:default:/etc/opendkim/keys/default.private
↓
default._domainkey.あなたのドメイン あなたのドメイン:default:/etc/opendkim/keys/あなたのドメイン/default.private

SigningTable の設定

// ファイルをバックアップします
cp -a /etc/opendkim/SigningTable /etc/opendkim/SigningTable.$(date +%Y%m%d)

// ファイルを開きます。
vi /etc/opendkim/SigningTable

変更箇所です。

// 最終行に追加
*@あなたのドメイン default._domainkey.あなたのドメイン

opendkim 起動

systemctl start opendkim

// もしくはリスタート

systemctl restart opendkim

opendkim 自動起動の設定

systemctl enable opendkim


// 自動起動の確認
systemctl is-enabled opendkim

//「enabled」と表示されれば設定完了です。

Postfixの設定

sudo vi /etc/postfix/main.cf

最終行に以下を追加します。コメント行も入れておくと良いですね。

# DKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

main.cf ファイルのチェック

postfix check

main.cf ファイルの反映

systemctl restart postfix

DNSレコードの作成

お名前.com なら以下の設定です。

ADSPレコード

  • ホスト名

    • _adsp._domainkey

  • TYPE

    • TXT

  • TTL

    • 3600

  • VALUE

    • dkim=unknown

  • 状態

    • 有効

DKIMレコード

  • ホスト名

  • TYPE

    • TXT

  • TTL

    • 3600

  • VALUE

    • 後述

  • 状態

    • 有効

value の値は以下のファイルを開いて、

/etc/opendkim/keys/あなたのドメイン/default.txt

以下のようになっているので、

default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfM ...割愛... IDAQ00" )  ; ----- DKIM key default for sample.com

必要コードをうまく取り出します。改行は無くして、ダブルコーテーションも削除します。この値を DNSレコード の VALUE に登録します。

v=DKIM1; k=rsa; p=MIGfM ...割愛... IDAQ00

テストメールの送信

以下のコードでテスト送信できます。
「送信元メールアドレス」と「送信先@gmail.com」のメールアドレスを書き換えて送信します。

echo "テストメールです" | sendmail -t -f 送信元メールアドレス 送信先@gmail.com

メールログを見ます。

cat /var/log/maillog

私は最初の頃に以下のようなエラーが出ていました。

SSL error:1E08010C:DECODER routines::unsupported
dkim_eom(): resource unavailable: PEM_read_bio_PrivateKey() failed

最初のほうに書きました参考サイトをよく読んで解消できましたので、ここに書いた手順通りなら、このようなエラーは出ないと思います。

Gmail の メッセージのソースを確認して DKIM が PASS になっていたら成功です。お疲れ様でした。

この記事が気に入ったらサポートをしてみませんか?