たいとる(´・ω・`)おんりぃ。(コラ
rootを使えてネームサーバーのレコードを弄れるのであればそれほど難しいことではないかと思います。
参考サイト:
PostfixにDKIMの設定をする(blog.fetus.jp)
OpenDKIM(ArchWiki)
以下設定については随時更新予定。やりかたはほぼ参考サイトの通りでOKです。
1.OpenDKIMのインストール
普通にEPELからYumでOpenDKIMをインストールするだけ。以上w
2.DKIM鍵の生成
秘密鍵とネームサーバーに登録する公開鍵の設定をします。
本当は鍵長を2048bitにしたかったのですが、収容サービスのネームサーバーではTXTレコードが256文字までしか使えなかったため、やむなくデフォルトの1024bitにしました。
参考までに、登録するレコード長が 1024bitで240文字強、2048bitでは410文字強となります。
# mkdir /etc/opendkim/keys/foxmaster.jp # cd /etc/opendkim/keys/foxmaster.jp/ # opendkim-genkey -d foxmaster.jp -s 20170201 # ls -l 合計 8 -rw------- 1 root root 887 2月 1 08:35 2017 20170201.private -rw------- 1 root root 314 2月 1 08:35 2017 20170201.txt # chown -R opendkim. /etc/opendkim/keys/foxmaster.jp # chmod 700 /etc/opendkim/keys/foxmaster.jp
-s
オプションで指定している文字列は任意ですが、判りやすいように作成日としました。
秘密鍵 20170201.private と公開鍵 20170201.txt が作成されます。
該当ファイルに他者がアクセスできないよう、所有者とパーミッションを変更しておきます。
3.ネームサーバーにDKIM公開鍵を登録
公開鍵をネームサーバーに登録します。
# cat /etc/opendkim/keys/foxmaster.jp/20170201.txt 20170201._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0G … jwIDAQAB" ) ; ----- DKIM key 20170201 for foxmaster.jp
「20170201._domainkey」というサブドメインを作成し、TXTレコードに先ほどの文字列を設定します。
このサブドメインにはAレコード等は不要です。
文字列が長いため複数行に別れていますが、「v=DKIM1;~AQAB」までを1行にまとめて登録します。
登録したらDNSレコードがある程度反映されるまで1回休み。
4.OpenDKIMの設定
先ほど登録したTXTレコードが dig
で引けるようになったら、手始めに /etc/sysconfig/opendkim
へ
AUTOCREATE_DKIM_KEYS=NO
って書いておくと 幸せになれます 起動時に余計なエラーが表示されなくなります。
次に /etc/opendkim.conf
を編集します。
該当サーバーは複数ドメインを収容しているので、一覧は別ファイルにまとめます。
修正する箇所はつぎのようになります。
Mode sv #KeyFile /etc/opendkim/keys/default.private (コメントアウト) KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts
これだけでも充分ですが、TCPソケットではなくUnixソケットを使用するため更に修正します。
## Create a socket through which your MTA can communicate. #Socket inet:8891@localhost Socket local:/var/run/opendkim/opendkim.sock
/etc/opendkim/KeyTable
にドメインとDKIMセレクタ名、秘密鍵のファイルパスを記載します。
20170201._domainkey.foxmaster.jp foxmaster.jp:hoge:/etc/opendkim/keys/foxmaster.jp/20170201.private
/etc/opendkim/KeyTable
に署名を適用するメールアドレスとDKIMセレクタ名を記載します。
*@foxmaster.jp 20170201._domainkey.foxmaster.jp
なお、/etc/opendkim/TrastedHost
はデフォルトのまま(ローカルホストIPアドレスが記載されている)でOK。(無論SMTPを別サーバーで稼働させている場合はそのアドレスを記載する必要があると思います)
このままだと Postfix がUnixソケットにアクセスできず OpenDKIM と通信できないできないため、ディレクトリのパーミッションを弄ります。(TCPソケット使用時は不要)
# chgrp mail /var/run/opendkim # chmod g+sw /var/run/opendkim # ls -la /var/run/opendkim/ 合計 12 drwxrwsr-x 2 opendkim mail 4096 2月 1 17:51 2017 . drwxr-xr-x. 23 root root 4096 2月 1 08:33 2017 .. -rw-r--r-- 1 root mail 6 2月 1 17:51 2017 opendkim.pid srwxrwxr-x 1 opendkim mail 0 2月 1 17:51 2017 opendkim.sock
※起動後にsocketファイルが作成された状態
その後、opendkimデーモンを起動します。
# /etc/rc.d/init.d/opendkim start
5.SMTPサーバー(Postfix)の設定
Postfix の設定ファイル /etc/postfix/main.cf
にOpenDKIMのフィルターを実行する設定を追加します。
smtpd_milters = unix:/var/run/opendkim/opendkim.sock #smtpd_milters = inet:127.0.0.1:8891 # TCPソケットを使う場合はこちら non_smtpd_milters = $smtpd_milters milter_default_action = accept
postfix を起動します。
# /etc/rc.d/init.d/postfix restart