megutech

自身の備忘録として主にWEBサーバー周りの技術について投稿しています。

CentOS7にDKIM設定をして迷惑メール対策

初めに

{} 内は適宜環境に合わせて読み替えてください。

環境

CentOS7.6 + Postfix 2.10.1

OpenDKIMのインストール

$ yum install --enablerepo=epel opendkim

暗号化キーの作成

$ mkdir /etc/opendkim/keys/{DOMAINNAME.com}
$ opendkim-genkey -D /etc/opendkim/keys/{DOMAINNAME.com}/ -b 1024 -d {MYDOMAIN.com} -s default

各オプションについて

オプション 内容
-D 生成ディレクト
-b 鍵のビット長。1024や2048などお好きに。
-d ドメイン
-s セレクタ名。自分が分かりやすいようにお好きに。

オーナーの変更

これを忘れて私は後でエラーになりました。

$ chown -R opendkim: /etc/opendkim 

OpenDKIM Configファイルの設定

/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

/etc/opendkim/KeyTable

default._domainkey.{DOMAN.com} {DOMAN.com}:default:/etc/opendkim/keys/{DOMAN.com}/default.private

/etc/opendkim/TrustedHosts

自サーバーからメールを送信するので特に設定なし

127.0.0.1
::1

/etc/opendkim/SigningTable

*@{DOMAIN.com} default._domainkey.{DOMAIN.com}

/etc/sysconfig/opendkim

AUTOCREATE_DKIM_KEYS=NO

OpenDKIMの起動

configの設定が完了すればDKIMを起動します。

$ systemctl start opendkim
$ systemctl status opendkim

問題なければ完了です。

後は必要に応じて自動起動も設定しておくといいでしょう。

$ systemctl enable opendkim

DNSを更新

利用しているDNSサーバーでTXTゾーンにDKIMの内容を反映させます。

$ cat /etc/opendkim/keys/{DOMAIN.com}/default.txt
{DOMAIN.com}._domainkey     IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfMA.........." )  ; ----- DKIM key default for {DOMAIN.com}

今回はムームードメインムームDNSを使用しました。

サブドメイン 種別 内容
default._domainkey.{DOMAIN.com} A IPアドレス
default._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA........;

Postfix Config設定

PostfixDKIM設定を有効にします。

/etc/postfix/main.cf

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Postfixを再起動して設定を反映します。

$ systemctl restart postfix

終わり

最後に適当にGmailなりにでもメールを送信してみて、受信側のヘッダに dkim=pass とかあれば完了です。