Posted at

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

More than 1 year has passed since last update.

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:info@example.com; ruf=mailto:info@example.com"

また、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です!

スクリーンショット 2018-08-28 09.37.50.png


雑感

最近のEC2からのメール送信はSPF、DKIM、DMARCが揃っていないとgmailで迷惑メール判定されやすくなっているようです。

メールが少しでも相手に確実に届くように設定をすることをお勧めします!