プロジェクト

全般

プロフィール

DKIM(ARC)認証

SympaでDKIM/ARCを使用する場合の手順(※Postfix側ではなくSympaで使用する)

鍵の準備

*鍵を作るようにopenDKIMを導入

dnf install opendkim
dnf install opendkim-tools

  • 鍵ファイルの配置
    mkdir /etc/opendkim/keys/ドメイン名
    cd /etc/opendkim/keys/ドメイン名
    
    opendkim-genkey -d ドメイン名
    chown -R opendkim.opendkim /etc/opendkim/keys
    chmod 600 default.private
    chmod 644 default.txt
    
  • DNSの設定
    cat default.txt
    
  • セレクタ名の設定
    ここでは例として「default」とする。
    セレクタ名は任意だが、定期的にローテーションさせてセキュリティを高めるので実際には連番付与するといいかも。
  • 公開鍵のDNSレコードの作成
    鍵の長さが256文字を超える場合、複数レコードにわける必要がある場合がある。
    default._domainkey.[ドメイン名].  IN TXT "v=DKIM1; k=rsa; p=公開鍵" 
    
  • 署名に対する対応のレコードを作成する。
    _adsp._domainkey.[ドメイン名].  IN TXT "dkim=レコード値" 
    
    ・レコード値の内容
    dkim=unknown    DKIM署名していないメールも送信する。
    dkim=all    送信するメールはすべてDKIM署名をおこなっている。
    dkim=discardable    DKIM署名がされていなかったり不正な署名のメールはすべて削除してよい
    

ARCを使用する場合

ARCを使用する場合、OpenDMARCをMTAで判定できるようにしておく必要があります。
つまり、DMARC判定に必要なDKIMとspfも必要ということになります。
「Sympaの機能でDKIMを付与する」のみであれば、この項目は必要ありません。

DKIM/ARCの設定

  • OpenDKIMの鍵をコピーし、Sympaで読めるようにします。
    これは分散管理するか双方が読めるようにパーミッションを変えるか悩ましいが、今回は権限は維持し全社とします。
    cp -R /etc/opendkim/keys /etc/sympa
    chown -R sympa.sympa /etc/sympa/keys
    
  • Sympaで扱うためにDKIMモジュールを導入
    yum install perl-Mail-DKIM
    
  • そのうえで、次項のsympa.confやrobot.confにグローバル設定を追記し、サービスを再起動します。
    systemctl restart sympa wwsympa
    
  • が、下記の条件ではその設定を行って以降作成したリストにしか効果がないので注意!!!!
    • グローバル設定の変更が反映されない場合の注意
      confを「cache_list_config」でconfig.binにバイナリ化している とキャッシュが悪さして変更が反映されない。
      グローバル設定のままのDKIM/ARC設定はリストのconfにもDBにも記載がなく、config.binにグローバル設定と
      思われる内容が記録されています。
    • 対策
      つまり、DKIM/ARC(に限らず、リスト別に影響のある設定は)のグローバル設定を変更したあとに
      下記コマンドでバイナリの更新を実行する必要がある。これでWeb画面上でも変更が適用されます。
      (リスト数が多いと数分かかることもあります)
      # sympa.pl --reload_list_config --robot=ドメイン名
      

      これを行わずに設定が適用されていないと思いリスト別に変更すると、リスト個別の設定ファイルに
      独自の内容が保存されてしまい、以後設定ファイルの項目をvi等で消すまでグローバル設定が適用
      されなくなるため注意すること。

DKIMの場合

  • sympa.confに以下の値を設定
    dkim_feature on
    dkim_parameters.private_key_path PEMキーのパス
    dkim_parameters.selector DKIMレコードのsタグ、セレクタ名(ここではdefault)
    dkim_parameters.signer_domain DKIMレコードのdタグ(リストのドメイン名)
    dkim_signature_apply_on any(DKIMで署名するもの。any=すべて、none=なにもしないなど)
    
    • 意図的に行わない場合でも後々可能性がある場合、有効化と鍵設定は行って「none」にしてみるのも良いかと思う
  • 設定後、sympaとwwsympaを再起動します。

ARCの場合

  • 注意
    ARCを使用するようにする場合、「必ずDKIMが付与され、1個目のARCシールがつく」ため、前述の「dkim_signature_apply_on」
    でDKIMの付与を細かく制御している場合はシナリオを自分で描く必要があるかも。これはリファレンスやヘルプにも匂わせてある。
    (現状では解決策がよく分からない)
  • sympa.confに以下の値を設定
    通常はDKIMで設定した鍵やセレクタなどが利用されるため、この有効無効だけ設定すれば動作します。
    arc_feature on
    
    • DKIMと違う鍵やセレクタなどを使う場合のみ、下記を設定する(通常は設定しなくて良い)
      arc_parameters.private_key_path PEMキーのパス(基本DKIMとおなじもの)
      arc_parameters.selector DKIMレコードのsタグ、セレクタ名(ここではdefault)(基本DKIMとおなじもの)
      arc_parameters.signer_domain DKIMレコードのdタグ(リストのドメイン名)(基本DKIMとおなじもの)
      
  • 設定後、sympaとwwsympaを再起動します。

動作確認

上記を設定したsympaのMLにメールを送り、配送されたヘッダに「ARC-Seal:」「ARC-Message-Signature:」
「DKIM-Signature:」といった各種署名が付与されていることを確認します。

注意事項

デフォルトではDKIM/ARC設定はリストごとに調整ができるようになっていますが、これを変更するとリスト別の
設定ファイルに個別設定が書かれてしまい、グローバル設定の変更に追従しなくなるため注意!

保存項目は変更した項目のみ(子項目の場合はその親項目ごと)なので、過剰なDMARC対策等でリスト別に緩和
する場合などにはその点を留意すること。