Ubuntu Server 22.04でPostfixとOpenDMARCを連携させて、メールを受信する際にDMARCの認証を行えるようにするための方法です。
メールサーバ構築手順
- 【Ubuntu Server 22.04】Postfix + SMTP-AUTH + Dovecotでメールサーバを構築
- 【Ubuntu Server 22.04】DovecotをSSL通信で暗号化
- 【Ubuntu Server 22.04】PostfixでTLSを有効化して通信を暗号化
- 【Ubuntu Server 22.04】PostfixにDKIMの設定を追加
- 【迷惑メール対策】ざっくり説明SPFの設定方法(送信側)
- 【迷惑メール対策】ざっくり説明DMARCの設定方法(送信側)
- 【Ubuntu Server 22.04】PostfixにSPFチェック機能を追加(policyd-spf)
- 【Ubuntu Server 22.04】PostfixとOpenDMARCでDMARC認証を行う方法
OpenDMARC
OpenDMARCのインストールと設定を行っていきます。
インストール
aptを使ってopendmarcをインストールしていきます。
$ sudo apt update $ sudo apt install opendmarc
インストールしている最中にデータベースを設定するかの問い合わせがあった場合はnoを入力します。
Configure database for opendmarc with dbconfig-common? [yes/no] no
データベースは、DMARCのレポート作成に必要なのですが、今回はレポートの作成は行わないので「no」を選択しています。
個人や小〜中規模な人数で使用しているメールサーバの場合は、特に必要が無いのであればレポートを作成しなくても良いでしょう。
設定
OpenDMARCの設定ファイルである/etc/opendmarc.confを編集していきます。
$ sudo cp -p /etc/opendmarc.conf /etc/opendmarc.conf_$(date +%Y%m%d-%H%M%S) $ sudo vi /etc/opendmarc.conf
設定内容
既存の設定を変更する部分と新規に作成する項目があります。
# 認証結果をメールヘッダーに記述する際に使用する名前
# AuthservID name (変更前)
AuthservID OpenDMARC
# ポリシーがreject(p=reject)の場合、リジェクトするするようになる
# RejectFailures false (変更前)
RejectFailures true
# ソケットをinetへ変更 (DKIMでもinetを使用しているのであわせています)
# Socket local:/run/opendmarc/opendmarc.sock (変更前)
Socket inet:8893@127.0.0.1
# 信頼できるAuthservIDsとしてメールサーバのホスト名を設定
# Postfixのmain.cfで設定してあるmyhostnameと一致させる必要がある
# TrustedAuthservIDs HOSTNAME(変更前)
TrustedAuthservIDs メールサーバ名
## 追加で新規作成する設定
# DMARCの認証を行わないホストの設定
IgnoreHosts /etc/opendmarc/ignore.hosts
# SPFの結果がヘッダーにない場合SPFチェックを行う
SPFSelfValidate true
# SMTP AUTHで認証済みのクライアントからのメールはDMARCのチェックを無視する
IgnoreAuthenticatedClients true
# RFC5322に準拠していないメールヘッダーのを拒否
RequiredHeaders true
ignore.hostsファイルを作成
/etc/opendmarcディレクトリを作成し所有者をopendmarcに設定してから、ignore.hostsファイルを作成していきます。
$ sudo mkdir /etc/opendmarc/ $ sudo chown opendmarc:opendmarc /etc/opendmarc $ sudo vi /etc/opendmarc/ignore.hosts
設定内容
DMARCの認証を行わないホストとして、ローカルホスト(自分自身)を記述しておきます。
127.0.0.1 ::1
他に認証を行いたくないホストがあれば追記してください。
設定反映
opendmarcを再起動させて設定を反映させます。
$ sudo systemctl restart opendmarc
PostfixとOpemDMARCを連携
/etc/postfix/main.cfにOpenDMARCとPostfixを連携させるための設定を追加します。
$ cd /etc/postfix $ sudo cp -p main.cf main.cf_$(date +%Y%m%d-%H%M%S) $ sudo vi main.cf
設定内容
smtpd_miltersにinet:127.0.0.1:8893を追加します。
私の場合、DKIMの設定としてinet:127.0.0.1:8891がすでに記述されてるので、その後に設定を追記しています。
smtpd_milters = inet:127.0.0.1:8891, inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters milter_default_action = accept
設定反映
Postfixを再起動して設定を反映します。
$ sudo postfix check $ sudo systemctl restart postfix
動作テスト
受信したメールのヘッダーにOpenDMARCの認証メッセージが表示されていることを確認してください。
下記はgmailからメールを送信して、受信したメールのヘッダーです。
Authentication-Results:OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com
/var/log/mail.logにもopendmarcのログが記録されるので、こちらで確認することも出来ます。
opendmarc[291767]: E32E2120196: gmail.com pass
コメント