「OpenDMARC」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(OpenDMARC設定でUMaskを変更しない場合,postfixグループからdmarc.sockへのアクセスがPermission Deniedとなるため,UMaskも変更するように加筆しました.)
(UNIXドメインソケットの親ディレクトリである/run/opendmarcがデーモン起動時に自動作成されるようにsystemdユニットファイルを書き換え,作成時の権限の都合でユニットファイル内でのユーザ)
44行目: 44行目:
 
{{hc|/etc/opendmarc/opendmarc.conf|
 
{{hc|/etc/opendmarc/opendmarc.conf|
 
Socket unix:/run/opendmarc/dmarc.sock
 
Socket unix:/run/opendmarc/dmarc.sock
UserID opendmarc
 
 
UMask 007
 
UMask 007
 
}}
 
}}
   
別のマシンで DMARC バリデータを動作させたい場合、Socket フィールドを {{ic|inet:9999@10.0.0.4}} などに変更する必要があります (IP アドレスは省略すると 0.0.0.0 を使うようになります)。UMaskフィールドの変更は、PostfixからOpenDMARCを使うために必要となります。 {{ic|007}} とすることで、Socketフィールドで指定したUNIXドメインソケットを所有者と所有グループが読み・書き・実行できるようになります。
+
別のマシンで DMARC バリデータを動作させたい場合、Socket フィールドを {{ic|inet:9999@10.0.0.4}} などに変更する必要があります (IP アドレスは省略すると 0.0.0.0 を使うようになります)。UMask フィールドの変更は、Postfix から OpenDMARC を使うために必要となります。 {{ic|007}} とすることで、Socket フィールドで指定した UNIX ドメインソケットを所有者と所有グループが読み・書き・実行できるようになります。
  +
  +
* 以下の systemd ユニットファイルを作成してください。
  +
  +
{{hc|/etc/systemd/system/opendmarc.service|<nowiki>
  +
[Unit]
  +
Description=OpenDMARC daemon
  +
After=network.target remote-fs.target nss-lookup.target
  +
  +
[Service]
  +
Type=forking
  +
User=opendmarc
  +
Group=postfix
  +
RuntimeDirectory=opendmarc
  +
ExecStart=/usr/bin/opendmarc -c /etc/opendmarc/opendmarc.conf
  +
  +
[Install]
  +
WantedBy=multi-user.target</nowiki>
  +
}}
  +
  +
デーモンを動かすのに root 権限は必要ないため、systemd ユニットファイル内で起動するユーザとグループを適切なものに指定し、権限を落としています。また、{{ic|RuntimeDirectory}} オプションを利用することで、前述した UNIX ドメインソケットの親ディレクトリである {{ic|/run/opendmarc}} が systemd ユニットファイル内で指定したユーザとグループでデーモン起動時に自動的に作成され、デーモン終了時に自動的に削除されるように設定できます。
   
 
* {{ic|opendmarc.service}} を起動・有効化してください。詳しくは[[デーモン]]を読んでください。
 
* {{ic|opendmarc.service}} を起動・有効化してください。詳しくは[[デーモン]]を読んでください。

2016年11月13日 (日) 11:57時点における版

Domain-based Message Authentication, Reporting and Conformance (DMARC) はメール転送のポリシーです。一般的なメールプロバイダによってサポートされています。DMARC は SPFDKIM に依存します。DMARC は送信されるメールのポリシーを提供し、受信したメールがポリシーに適合しているか確認します。ポリシーは DNS TXT レコードを使って公開されます。TXT レコードについてはレコードセクションで説明しています。ポリシーの検証はデーモンで行います。デーモンの設定についてはバリデータセクションで説明しています。詳しい情報は ドラフト を見てください。

レコード

レコードは v=DMARC1;p=quarantine;pct=100;rua=mailto:postmaster@example.org;ruf=mailto:forensik@example.org;adkim=s;aspf=r のように、メインドメインの _dmarc サブドメインとして TXT レコードに入力します。

タグ名 目的
v プロトコルのバージョン v=DMARC1
pct フィルタリングするメッセージの割合 pct=20
ruf フォレンジックレポートを報告するための URI ruf=mailto:authfail@example.com
rua アグリゲートレポートを報告するための URI rua=mailto:aggrep@example.com
p 組織的ドメインのポリシー p=quarantine
sp サブドメインのポリシー sp=reject
adkim DKIM のアライメントモード  adkim=s
aspf SPF のアライメントモード aspf=r
fo フォレンジックレポートのオプション fo=1
rf レポートの形式。afrf または iodef。 rf=afrf
ri アグリゲートレポートを報告する間隔。 ri=86400

DKIM と SPF のアライメントモードは s (strict) と r (relaxed) が指定できます。後者の場合は From ヘッダにサブドメインを使用することができますが前者では使用できません。ドメインとサブドメインのポリシー (p) には monitor, quarantine, reject が指定できます。フォレンジックレポートのオプションが "0" の場合、全ての認証メカニズムが DMARC を通過しなかった場合にレポートを作成し、"1" の場合はどれかの認証が失敗した場合にレポートを作成し、"d" の場合は DKIM 署名が検証できなかった場合にレポートを作成し、"s" の場合は SPF が失敗した場合にレポートを作成します。

バリデータ

インストール

opendmarc パッケージをインストールしてください。

基本設定

メインの設定ファイルは /etc/opendmarc/opendmarc.conf です。

  • サンプル設定ファイル /etc/opendmarc/opendmarc.conf.sample/etc/opendmarc/opendmarc.conf にコピーして以下のオプションを変更してください:
/etc/opendmarc/opendmarc.conf
Socket                  unix:/run/opendmarc/dmarc.sock
UMask                   007

別のマシンで DMARC バリデータを動作させたい場合、Socket フィールドを inet:9999@10.0.0.4 などに変更する必要があります (IP アドレスは省略すると 0.0.0.0 を使うようになります)。UMask フィールドの変更は、Postfix から OpenDMARC を使うために必要となります。 007 とすることで、Socket フィールドで指定した UNIX ドメインソケットを所有者と所有グループが読み・書き・実行できるようになります。

  • 以下の systemd ユニットファイルを作成してください。
/etc/systemd/system/opendmarc.service
[Unit]
Description=OpenDMARC daemon
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
User=opendmarc
Group=postfix
RuntimeDirectory=opendmarc
ExecStart=/usr/bin/opendmarc -c /etc/opendmarc/opendmarc.conf

[Install]
WantedBy=multi-user.target

デーモンを動かすのに root 権限は必要ないため、systemd ユニットファイル内で起動するユーザとグループを適切なものに指定し、権限を落としています。また、RuntimeDirectory オプションを利用することで、前述した UNIX ドメインソケットの親ディレクトリである /run/opendmarc が systemd ユニットファイル内で指定したユーザとグループでデーモン起動時に自動的に作成され、デーモン終了時に自動的に削除されるように設定できます。

  • opendmarc.service を起動・有効化してください。詳しくはデーモンを読んでください。

Postfix の統合

以下の行を main.cf に追加してください:

non_smtpd_milters = unix:/run/opendkim/dkim.sock, unix:/run/opendmarc/dmarc.sock
smtpd_milters = unix:/run/opendkim/dkim.sock, unix:/run/opendmarc/dmarc.sock

DMARC の milter は DKIM の milter よりも後に宣言する必要があります。

セキュリティ

上の UserID の設定によってデーモンの権限を落とすことができます。デーモンを動かすのに root 権限は必要ないため、適切なユーザーで起動することができます。その場合、以下の systemd ユニットファイルを使ってください。そして設定の UserID をコメントアウトしてください。

/etc/systemd/system/opendmarc.service
[Unit]
Description=OpenDMARC daemon
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
User=opendmarc
Group=postfix
ExecStart=/usr/bin/opendmarc -c /etc/opendkim/opendmarc.conf

[Install]
WantedBy=multi-user.target

参照