Rspamd DKIM署名ガイド

提供: FirstWiki
ナビゲーションに移動 検索に移動

DKIM署名:設定ガイド完全版

DKIM(DomainKeys Identified Mail)署名により、送信メールを暗号的に署名し、そのメールが自社ドメインから送信されたものであり、改ざんされていないことを証明できます。 このチュートリアルでは、Rspamd を使用した DKIM 署名の導入手順を段階的に説明します。


DKIM って?

DKIMは公開鍵暗号を用いて送信メールにデジタル署名を追加します

  • 秘密鍵:メッセージ署名用にメールサーバーで保持
  • 公開鍵:検証用にDNSで公開
  • セレクター:ドメインごとに複数の鍵を許可

DKIMは以下の点で役立ちます

  • メールの認証と配信可能性の向上
  • なりすましの防止
  • ドメインの信頼性構築
  • セキュリティコンプライアンス要件の達成

基本設定

Step 1: DKIM 鍵の生成

ドメインについて DKIM 鍵ペアを生成します

# Generate keys for your main domain
sudo mkdir -p /etc/rspamd/dkim
cd /etc/rspamd/dkim

# Generate a 2048-bit RSA key (recommended)
rspamadm dkim_keygen -s mail -d example.com -k mail.key

# This creates:
# - mail.key (private key)  
# - mail.txt (DNS record to publish)

だいたいこんな感じで出力が出ます

# DNS record to publish:
mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

# Private key written to mail.key

Step 2: DKIM 署名の設定

DKIM署名設定を作成します:

# /etc/rspamd/local.d/dkim_signing.conf

# Enable DKIM signing
enabled = true;

# Default signing configuration
domain {
  example.com {
    selector = "mail";
    path = "/etc/rspamd/dkim/mail.key";
  }
}

# Sign outbound mail only
sign_authenticated = true;
sign_local = true;
sign_inbound = false;

# Default settings
use_esld = true;
check_pubkey = true;

Step 3: ファイルのパーミッションを確認

秘密キーの保護

# Set proper ownership and permissions
sudo chown -R _rspamd:_rspamd /etc/rspamd/dkim/
sudo chmod 600 /etc/rspamd/dkim/*.key
sudo chmod 644 /etc/rspamd/dkim/*.txt

Step 4: DNSレコードを公開する

生成された .txt ファイルからDNSレコードを追加します:

; Add this to your DNS zone
mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4f5wg5l2hKdVBqpxdqTqDPbaohNcGI94vs9lxjzHZl9j7u2B..."

Step 5: テストと再起動

# Test configuration
sudo rspamadm configtest

# Restart Rspamd
sudo systemctl restart rspamd

# Test DKIM signing
echo "Test message" | rspamc -d example.com -f test@example.com

高度な設定

複数ドメインの設定

複数のドメインに対する署名設定を構成します:

# /etc/rspamd/local.d/dkim_signing.conf

enabled = true;

# Multiple domain configuration
domain {
  example.com {
    selector = "mail";
    path = "/etc/rspamd/dkim/example.com/mail.key";
  }
  
  subdomain.example.com {
    selector = "sub";
    path = "/etc/rspamd/dkim/subdomain.example.com/sub.key";
  }
  
  anotherdomain.org {
    selector = "rspamd";
    path = "/etc/rspamd/dkim/anotherdomain.org/rspamd.key";
  }
}

# Sign authenticated and local mail
sign_authenticated = true;
sign_local = true;

各ドメインのキーを生成する:

# Create directory structure
sudo mkdir -p /etc/rspamd/dkim/{example.com,subdomain.example.com,anotherdomain.org}

# Generate keys for each domain
rspamadm dkim_keygen -s mail -d example.com -k /etc/rspamd/dkim/example.com/mail.key
rspamadm dkim_keygen -s sub -d subdomain.example.com -k /etc/rspamd/dkim/subdomain.example.com/sub.key  
rspamadm dkim_keygen -s rspamd -d anotherdomain.org -k /etc/rspamd/dkim/anotherdomain.org/rspamd.key