はじめに
前回 AWSにPostfixでメール送信を行う環境を構築したので、今回はDKIMやDMARKといったなりすまし対策を実施します。
目標
- DKIM/DMARCの設定と、送信時のSSL/TLS対応を行う
手順
DKIMの設定
Postfix環境でDKIMの対応を行う場合、OpenDKIM
を別途インストールし設定を行う必要があります。
- OpenDKIMのインストール
yumを使用しインストールを行います。
# amazon-linux-extras install -y epel # yum install -y opendkim opendkim-tools # yum list installed | grep opendkim libopendkim.x86_64 2.11.0-0.1.el7 @epel opendkim.x86_64 2.11.0-0.1.el7 @epel
- 鍵の作成
OpenDKIMで使用する鍵を作成します。
opendkim-toolは -sでセレクタ名を指定しないとdefault
がセレクタ名として作成されます。
# cd /etc/opendkim/keys/ # mkdir example.com (ドメイン名) # chmod 750 example.com/ # opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com(-D でディレクトリ、-d でドメイン名を指定) # chown -R opendkim:opendkim /etc/opendkim/keys/
- TXTレコードをDNSに登録する
公開鍵の値がテキストファイルに記載されているので確認します。
# cat /etc/opendkim/keys/example.com/default.txt default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ) ; ----- DKIM key default for example.com
出力された値をDNSレコードに登録します。
登録内容は以下を参考にしてください。
default._domainkey.example.com / TXT / "v=DKIM1; k=rsa;p=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- レコードの検証
DKIMのレコードが登録されていることを以下サイトで確認します。
セレクタ名は上記の場合、default
です。
https://dmarcian.com/dkim-inspector/
Congratulations! Your DKIM record is valid.
- OpenDKIM設定ファイルの修正
メール送信時の署名のみを行う場合、Modeの設定はs
のみで良いです。
# cp -ip /etc/opendkim.conf /etc/opendkim.conf.org # vi /etc/opendkim.conf --- Mode v # KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable ↓ Mode s KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable
Mode: sは送信時の署名、vは受信時の検証
KeyTable: 署名に使用する鍵のパスを指定するファイル
SigningTable: 署名を行うドメインとセレクタのペアを指定するファイル
- キーテーブルの設定ファイル修正
# cp -ip /etc/opendkim/KeyTable /etc/opendkim/KeyTable.org # vi /etc/opendkim/KeyTable --- #default._domainkey.example.com example.com:default:/etc/opendkim/keys/default.private ↓ default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
default
の値はセレクタ名なので、適宜変更してください。
- SigningTableの設定ファイル修正
# cp -ip /etc/opendkim/SigningTable /etc/opendkim/SigningTable.org # vi /etc/opendkim/SigningTable --- #*@example.com default._domainkey.example.com ↓ *@example.com default._domainkey.example.com
default
の値はセレクタ名なので、適宜変更してください。
- サービスの起動
OpenDKIMのプロセスを起動します。
# systemctl start opendkim # systemctl status opendkim # systemctl enable opendkim
- Postfixとの連携
メール送信する際に署名するよう、Postfixの設定ファイルに設定を追記します。
# cp /etc/postfix/main.cf /etc/postfix/main.cf.org # vi /etc/postfix/main.cf --- # 以下を追記 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept
- Postfixの再起動
設定を変更したので、Postfixを再起動します。
# systemctl restart postfix # systemctl status opendkim
- テストメールの送信
任意のメールアドレス宛にメールを送信します。
dkimの欄がPASS
になっていれば完了です。
メール送信の手順は前回の記事を参考にしてください。
DMARC対応
DMARCの設定はDKIMと異なり、DNSにレコードを1行追加するのみとなります。
以下を参考にレコードの登録を行います。
_dmarc.example.com IN TXT "v=DMARC1 ; p=none ; rua=mailto:認証レポートを受け取る任意のメールアドレス; ruf=mailto:認証レポートを受け取る任意のメールアドレス;"
DMARCが設定されているか、以下サイトから確認可能です。
https://dmarcian.com/dmarc-inspector/
メール送信を行い、DMARC欄がPASS
となっていれば完了です。
SSL/TLS設定
Postfixに1行設定を追記するだけで、メール送信時の暗号化が有効化されます。
smtp_tls_security_level = may
上記を設定後メール送信を行うと、メール受信時に暗号化が有効化されていることが確認できます。
終わりに
今回はPostfixのメールサーバ構築からメール送信時のなりすまし対策と、2回に分けて説明を行いました。
AWSでメールサーバの構築を行う場合、参考にしてみてください。