「OpenDMARC」の版間の差分
(要約執筆中に誤ってページを保存してしまったため,取り消します.) |
(systemdユニットファイルにRuntimeDirectoryを追加し,これの利用にユーザとグループを指定しないとソケット作成時に権限エラーが発生するため,セキュリティの内容を統合しました) |
||
| 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 |
||
}} |
}} |
||
| 50行目: | 49行目: | ||
別のマシンで 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 ユニットファイルを作成してください。 |
||
| − | * {{ic|opendmarc.service}} を起動・有効化してください。詳しくは[[デーモン]]を読んでください。 |
||
| − | |||
| − | === Postfix の統合 === |
||
| − | 以下の行を {{ic|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 よりも後に宣言する必要があります。 |
||
| − | |||
| − | == セキュリティ == |
||
| − | 上の {{ic|UserID}} の設定によってデーモンの権限を落とすことができます。デーモンを動かすのに root 権限は必要ないため、適切なユーザーで起動することができます。その場合、以下の systemd ユニットファイルを使ってください。そして設定の {{ic|UserID}} をコメントアウトしてください。 |
||
{{hc|/etc/systemd/system/opendmarc.service|<nowiki> |
{{hc|/etc/systemd/system/opendmarc.service|<nowiki> |
||
| 70行目: | 60行目: | ||
User=opendmarc |
User=opendmarc |
||
Group=postfix |
Group=postfix |
||
| + | RuntimeDirectory=opendmarc |
||
| − | ExecStart=/usr/bin/opendmarc -c /etc/opendkim/opendmarc.conf |
||
| + | ExecStart=/usr/bin/opendmarc -c /etc/opendmarc/opendmarc.conf |
||
[Install] |
[Install] |
||
WantedBy=multi-user.target</nowiki> |
WantedBy=multi-user.target</nowiki> |
||
}} |
}} |
||
| + | |||
| + | デーモンを動かすのに root 権限は必要ないため、systemd ユニットファイル内で起動するユーザとグループを適切なものに指定し、権限を落としています。また、{{ic|RuntimeDirectory}} オプションを利用することで、前述した UNIX ドメインソケットの親ディレクトリである {{ic|/run/opendmarc}} が systemd ユニットファイル内で指定したユーザとグループでデーモン起動時に自動的に作成され、デーモン終了時に自動的に削除されるように設定できます。 |
||
| + | |||
| + | * {{ic|opendmarc.service}} を起動・有効化してください。詳しくは[[デーモン]]を読んでください。 |
||
| + | |||
| + | === Postfix の統合 === |
||
| + | 以下の行を {{ic|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 よりも後に宣言する必要があります。 |
||
== 参照 == |
== 参照 == |
||
2016年11月13日 (日) 12:13時点における版
Domain-based Message Authentication, Reporting and Conformance (DMARC) はメール転送のポリシーです。一般的なメールプロバイダによってサポートされています。DMARC は SPF と DKIM に依存します。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 が失敗した場合にレポートを作成します。
バリデータ
インストール
基本設定
メインの設定ファイルは /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 よりも後に宣言する必要があります。