【Ubuntu Server 22.04】PostfixとOpenDMARCでDMARC認証を行う方法

Ubuntu Server 22.04でPostfixとOpenDMARCを連携させて、メールを受信する際にDMARCの認証を行えるようにするための方法です。

メールサーバ構築手順

  1. 【Ubuntu Server 22.04】Postfix + SMTP-AUTH + Dovecotでメ>ールサーバを構築
  2. 【Ubuntu Server 22.04】DovecotをSSL通信で暗号化
  3. 【Ubuntu Server 22.04】PostfixでTLSを有効化して通信を暗号化
  4. 【Ubuntu Server 22.04】PostfixにDKIMの設定を追加
  5. 【迷惑メール対策】ざっくり説明SPFの設定方法(送信側)
  6. 【迷惑メール対策】ざっくり説明DMARCの設定方法(送信側)
  7. 【Ubuntu Server 22.04】PostfixにSPFチェック機能を追加(policyd-spf)
  8. 【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

コメント

タイトルとURLをコピーしました