Amazon Linux 2でDKIMの設定 (ついでにSPF/DMARCも)


Amazon Linux 2でDKIM (Domainkeys Identified Mail)の設定をする手順です。
なお、postfixはインストール済みの状態です。
ドメインは、example.comとして進めていきます。

手順

EPELからOpenDKIMのインストール

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install opendkim

OpenDKIMの設定

mkdir /etc/opendkim/keys/example.com
opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default

cat /etc/opendkim/keys/example.com/default.txt
----
default._domainkey  IN  TXT ( "v=DKIM1; k=rsa; "
      "p=MIGfMA0GCSqGSIb3DQEBAQGbSNDw3SSSKBgQClp8S3Ved8FOYD5rMPX0s/BgvgThAiehj0V2s40A+99Eb1nqLPZOdEYz9wJ9UcnCGKaInhzFFwjIslLS78hfmKrJOe9hZJwjJk1YaIDDd0nOmSD6rtgzbm+5iSOBUgAuFYV4U0Rw2J5vouamcsUEC4VGTrQ07cEr06l1DaIoJQ5QIDAQAB" )  ; ----- DKIM key default for example.com
----

chown -R opendkim:opendkim /etc/opendkim/keys     

vi /etc/opendkim.conf
----
# Selects operating modes. Valid modes are s (signer) and v (verifier). Default is v.
#sは送信時の署名、vは受信時の確認
#Mode    v
Mode    sv  

# コメントアウト
# KeyFile /etc/opendkim/keys/default.private

#KeyTable       /etc/opendkim/KeyTable
KeyTable       refile:/etc/opendkim/KeyTable  

#SigningTable   /etc/opendkim/SigningTable
SigningTable    refile:/etc/opendkim/SigningTable

#ExternalIgnoreList     refile:/etc/opendkim/TrustedHosts
ExternalIgnoreList     refile:/etc/opendkim/TrustedHosts

#InternalHosts  refile:/etc/opendkim/TrustedHosts 
InternalHosts  refile:/etc/opendkim/TrustedHosts 
-----

vi /etc/opendkim/KeyTable
----
default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
----

vi /etc/opendkim/SigningTable
-----
*@example.com default._domainkey.example.com
----


systemctl start opendkim.service
systemctl enable opendkim.service

## PostfixでDKIMを使うように設定

vi /etc/postfix/main.cf
-----

# DKIM (追記)
smtpd_milters     =    inet:127.0.0.1:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
-----

systemctl restart postfix.service     

DNSの設定

DKIMを設定したのならSPFやDMARCも併せて設定しておきましょう。

DKIMのレコード

Name: default._domainkey
Type: txt
Value: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClp8S3Ved8FOYD5rMPX0s/BgvgThAiehj0V2s40A+99Eb1nqLPZOdEYz9wJ9UcnCGKaInhzFFwjIslLS78hfmKrJOe9hZJwjJk1YaIDDd0nOmSD6rtgzbm+5iSOBUgAuFYV4U0Rw2J5vouamcsUEC4VGTrQ07cEr06l1DaIoJQ5QIDAQAB"

SPFのレコード

Name: @ (サブドメインなし)
Type: txt
Value: "v=spf1 ip4:xx.xx.xx.xx -all"

Route53の場合は、spfというレコードタイプも準備されているので設定しておきます。

Name: @ (サブドメインなし)
Type: spf
Value: "v=spf1 ip4:xx.xx.xx.xx -all"

DMARCのレコード

Name: _dmarc
Type: txt
Value: "v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]"

また、EC2からメール送信を行う場合は、逆引きやメール送信制限解除の申請もお忘れなく。

参考
https://support.serverworks.co.jp/hc/ja/articles/115008315608-EC2%E3%81%8B%E3%82%89%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%E5%88%B6%E9%99%90%E8%A7%A3%E9%99%A4%E7%94%B3%E8%AB%8B%E3%81%A8%E9%80%86%E5%BC%95%E3%81%8D%E8%A8%AD%E5%AE%9A%E7%94%B3%E8%AB%8B%E3%82%92%E8%A1%8C%E3%81%84%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99-%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B-

送信テスト

mailコマンドなどでgmail宛にメールを送信して、ヘッダ(メッセージのソース)をチェックしてSPF、DKIM、DMARCが全てPASSとなっていればOKです!

雑感

最近のEC2からのメール送信はSPF、DKIM、DMARCが揃っていないとgmailで迷惑メール判定されやすくなっているようです。
メールが少しでも相手に確実に届くように設定をすることをお勧めします!