- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-09-02T14:17:54+09:00","default:nowsky","nowsky")
作成中
#author("2018-09-03T23:19:09+09:00","default:nowsky","nowsky")
*OpenDMARC [#be94facd]
メールのSPF・DKIMを補強する送信ドメイン認証技術(DMARC)を取り扱うプログラム。
別途スクリプトを組み合わせる事で、ドメイン認証レポート送信する事も出来る。
DMARCは仕組み上、単体利用する事が出来ない点に注意する。
- 参考情報
[[OpenDMARC - ArchWiki:+https://wiki.archlinux.jp/index.php/OpenDMARC]]
[[OpenDMARC Document:+http://www.trusteddomain.org/opendmarc/]]
~
*構築環境 [#s1e1fcd5]
今回検証した環境はこちら
-Debian 9.5 x86_64
-CentOS 7.5 x86_64
-openSUSE 42.3 x86_64
~
他には下記の通りに構築。
-今回は、OpenDKIMを構築済みの環境にOpenDMARCを新規構築
-OpenDKIMは [127.0.0.1:&color(#ff0000){TCP/10027};] で待ち受ける
-OpenDMARCは [127.0.0.1:&color(#ff0000){TCP/20027};] で待ち受ける
-汎用性を持たせる為、LocalSocketは利用しない
~
*構築 [#j6a59623]
&size(16){&font(b){1. インストール};};
OpenDMARCはディストリビューション毎にパッケージ名の差異が無いので、
各パッケージ管理システムに応じてインストールする。
- Debian
# apt-get install opendmarc
- CentOS
# yum install opendmarc
- openSUSE
# zypper install opendmarc
&size(16){&font(b){2. 設定};};
項目についてはOpenDMARCのドキュメントに詳細が書いてあるので割愛。
DMARC評価結果はAuthentication-Resultsヘッダに追記するので、必要に応じてauthserv-idを設定する。
#region(&color(#ff0000){設定内容};)
&size(14){&font(b){/etc/opendmarc.conf};};
[01] AuthservID mx.test.org
[02] AuthservIDWithJobID false
[03] AutoRestart true
[04] Background true
[05] Socket inet:20027@127.0.0.1
[06] Syslog true
[07] SyslogFacility mail
[08] UMask 007
[09] UserID opendmarc:opendmarc
[10] IgnoreHosts /etc/opendmarc/ignorehosts
[11] IgnoreMailFrom mail.test.org
[12] BaseDirectory /var/run/opendmarc
[13] PidFile /var/run/opendmarc/opendmarc.pid
[14] HistoryFile /var/run/opendmarc/opendmarc.dat
[15] SPFIgnoreResults false
[16] SPFSelfValidate true
--------------------------------------------------
[01] Authentication-Resultsヘッダに使用するauthserv-idの変更
[02] trueにするとDMARCのヘッダにジョブIDを含める。false推奨
[03] 評価失敗時にプロセスを自動再起動させる
[04] daemonをバックグラウンドで実行
[05] TCP/IP待受け設定。ポート番号とIPアドレスが逆なので注意する。
[06] OpenDMARCのログをsyslogから出力
[07] syslogのファシリティ設定
[08] ソケットファイル生成時のUMASK値
[09] OpenDMARCを実行するユーザ:グループ設定
[10] DMARC評価を除外する接続元IPアドレス
[11] DMARC評価を除外するドメイン名
[12] デフォルトディレクトリの設定
[13] OpenDMARCのPIDファイル
[14] DMARC評価結果(プレーンテキスト)の保存先
[15] メールヘッダにSPF結果が含まれている時、既存の評価結果を無視する
[16] メールヘッダにSPF結果が見つからない場合、OpenDMARCでSPF評価を実行する
&size(14){&font(b){/etc/opendmarc/ignorehosts};};
LocalRelayしていないMTAの場合、ローカルアドレスを設定
---
127.0.0.1
::1
#endregion
&size(16){&font(b){3. MTA設定};};
OpenDMARCを呼び出す為、MTA(Postfix)にmilter設定を追加する。
milterを追加する時、DKIM認証の前にDMARCを追加すると&color(#ff0000){DKIM認証が崩れる。};
回避するにはDKIM認証を弱く(relaxed/relaxed)するか、&font(b){DKIM認証の後にDMARC評価を追加する。};
下記は、DKIM認証後にDMARC評価を行うmilter設定となる。
- &size(14){&font(b){/etc/postfix/main.cf};};
smtpd_milters=inet:127.0.0.1:10027,inet:127.0.0.1:20027
non_smtpd_milters=$smtpd_milters
~
*稼働テスト [#gc1c1471]
実際にメールを受信してSPF/DKIM/DMARCのヘッダーが追加されるかテストする。
GmailはSPF/DKIM/DMARC全てに対応しているので、Gmailからメールを送信する事でテストを行う。
設定が正常に出来ていると下記の様なヘッダが追加される。
Authentication-Results: mx.***-*****.com; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: mx.***-*****.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=********;
Authentication-Results: mx.***-*****.com; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=209.85.***.***.; helo=***.google.com; envelope-from=*****@gmail.com; receiver*****@***.***.***)