📧

PostfixにDKIMを設定してみた

2024/02/20に公開

はじめに

今回Googleのメール送信者のガイドラインが変更されるとのことで、初学者としてメールの仕組みを学ぶ機会も少ないと思い自ら社内サーバーにOpenDKIMをインストールしてPostfixに設定してみました。手順を振り返りながら、思ったことを書いていこうと思います。

まずDKIMとは

DomainKeys Identified Mailの略称で、簡単にまとめると電子署名を用いたドメインの認証技術です。設定することで電子署名が、メールヘッダーに追加されてメール送信者を詐称されていないか判断します。これにより送信者の偽装や迷惑メールを未然に防ぐようになります。

SPFとDMARCの関係は?

SPF(Sender Policy Framework)はIPアドレスを認証する技術なのでDKIMとは認証の対象が違います。

そしてDMARC(Domain-based Message Authentication, Reporting, and Conformance)は
DKIMやSPFのような認証技術を用いてメールの扱い方を設定するものです。

これらすべてを設定することでセキュリティの向上に繋がるわけですね。以前まではSPFかDKIMどちらか設定すればメール送信は出来たそうで、今回はガイドラインに従って全部設定することにして、自分はDKIMを担当しました。

設定手順

  1. Opendkimのインストール
    epelのインストールも記載してますが既にインストール済の方は無しで大丈夫です。
yum install -y epel-release
yum install -y opendkim
  1. 鍵の格納先を作成
mkdir -p /etc/opendkim/keys/example
  1. 鍵の作成
    セレクタ名を日付で設定している記事が多かった印象がありますが各々の管理しやすい名称で良いと思います。
opendkim-genkey -D 格納先指定 -d ドメイン名 -s セレクタ名
↓
opendkim-genkey -D /etc/opendkim/keys/example -d example.com -s selector
  1. 実行後指定したディレクトリに公開鍵(.txt)と秘密鍵(.private)が発行(作成)されているか確認します。
cat /etc/opendkim/keys/example/selector.txt
  1. 所有者の変更
    変更しないとOpendkim実行時にエラーが表示されました。(権限関連のエラー)
chown -R opendkim:opendkim /etc/opendkim/keys*
  1. Opnendkim.conf の設定を以下に変更
    ネットの記事だとViコマンドで変更するように丁寧に記載されていましたがクライアントソフトでエディタ使って編集するのとは何が違うのか、その辺りまだ知識不足なのかなと感じました。改めて調べようと思います。
# モードの変更 s:送信時に署名する v:受信時に確認する
Mode    sv

# OpenDKIMのソフトウェアバージョンの公開有無(yes/no)
SoftwareHeader no

# 認証するドメイン名に以下追加 ※コメント外す
Domain example.com

# セレクタ名をdefaultから設定したセレクタ名に変更
Selector selector

# 署名に使う秘密鍵の場所を自分で設定したパスに変更
KeyFile  /etc/opendkim/keys/example/selector.private

※複数キー発行して管理するならKeyTableなどのコメントを外すようにconfファイルを書き換えて、その後SigningTableなども書き換える必要がありますが詳細の説明は割愛させていただきます。

  1. 発行された公開キーを各DNSに登録
    値に関して P= の後に記載する文字列は3.で発行した公開キーになります。ただコピペするのではなく"で囲われた文字列だけコピペしてp=の後に繋げます。
Title Type
サブドメイン selector._domainkey
対象 TXT
v=DKIM1; k=rsa; p=◯◯
  1. ADSPレコードをDNSサーバに登録
    メール送信側ドメインについて署名方法を指定できるようにします。OpenDKIMのオプションallやdiscardableも値に設定出来ますが、とりあえずはunknownでOKかと思います。
Title Type
サブドメイン _adsp._domainkey
対象 TXT
dkim=unknown
  1. 秘密鍵を自動生成しないように設定
    etc/sysconfig/opendkim に以下を追加します。
AUTOCREATE_DKIM_KEYS=NO
  1. Postfix.conf に以下を追加
milter_default_action = accept
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
  1. opendkim起動+自動起動設定
systemctl start opendkim.service
systemctl enable opendkim.service
  1. 実行して問題無いかチェックして、postfix起動
systemctl check postfix.service
systemctl start postfix.service
  1. 設定反映されているか確認
    PASSになっていたら成功(FAILEだったらエラー内容確認)

感想

簡単ではありますが、振り返りも兼ねてOpendkimのインストール手順を紹介しました。
今までサーバー設定など触る機会も少なかったので、実装時はずっと緊張していましたが、調べながら設定していくのが楽しく勉強にもなったので良い経験になりました。最後にpostfixもopendkimもそうですが、設定変更前のバックアップとスタート前のチェックコマンドは忘れず行いましょう。

ユニフォームネクスト株式会社

Discussion