はじめに
DMARCの履歴ファイルを元に送信元ドメインへレポート送付する場合は、
- 履歴ファイル(c:\mail\dmarc\report\epstdmarc.dat) を履歴データとしてSQLサーバへ追加する。
- 定期的にSQLから抽出したデータよりレポート生成する。
- レポートをメールとして送信元ドメインへ送信する。
- SQL上から過去となる履歴データ(デフォルト90日後)を削除する。
といった手順を日時で行うように設定します。
なおSQLへ蓄えられたデータは、簡易なものですが、ブラウザ上で参照可能です。
http://<example.co.jp>/dmarc/dashboard.php 登録データ一覧
http://<example.co.jp>/dmarc/index.php データ分類:円グラフ
WINDOWS環境での構築手順
- SQLサーバのインストール
MySQL 5.6 のインストーラのダウンロードページからダウンロードします。
インストール項目は、"Server Only"を選択します。
この際Windows Visualstadio2010コンポ―ネントも一緒にインストールします。
デフォルトのインストール先は、"C:\ProgramData\MySQL\MySQL Server 5.6"となっています。
DBの管理ユーザの"root" パスワードは任意に設定します。
インストール完了後に、"C:\ProgramData\MySQL\MySQL Server 5.6\my.ini"の以下の箇所を書き換えて保存します。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" |
↓ "STRICT_TRANS_TABLES"を削除。 |
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" |
設定後、サービスの再起動(管理者コマンドプロンプトから)を行います。
C:\Users\Administrator>sc stop mysql56
C:\Users\Administrator>sc start mysql56
|
- データベースの構築
initdb.bat(以下の内容)を使ってSQLサーバのデータベースを一括で構築します。
※ epstdmarc-v1.0x.zipの解凍先、"C:\Program Files\EPOST\MS\epstdmarc\report"に同ファイルが用意されています。
echo "CREATE DATABASE epstdmarc;" > initrcdb.sql
echo "CREATE USER 'epstdmarc'@'localhost' IDENTIFIED BY 'epstsecret';" >> initrcdb.sql
echo "GRANT ALL PRIVILEGES ON epstdmarc.* TO epstdmarc;" >> initrcdb.sql
echo "flush privileges;" >> initrcdb.sql
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -h localhost -u root -p<rootに設定したいパスワード(デフォルトは"secret"にしてあります。)> < initrcdb.sql
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -h localhost -u epstdmarc -pepstsecret < ./db/schema.mysql
echo sql db success.
|
作成後、コマンドプロンプトからinitdb.batを実行しデータベースとスキーマを一括登録します。
作成が出来ているかを以下コマンドを実行し確認します。
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -h localhost -u root -p<rootで設定したパスワード>
SQLサーバのポートを変更している(例:9000に設定している)場合は、
C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -h localhost -u root -p<rootで設定したパスワード> --port 9000
|
としてデータベースへ接続を行い、データベース名 "epstdmarc" が作成されていることを確認します。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| epstdmarc |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
|
ユーザ名 "epstdmarc" が作成されていることを確認します。
mysql> select user,host from mysql.user;
|
一旦接続を終了します。
作成テーブル(domains,ipaddr,etc...)が作成したアカウントで操作できることを確認します。
C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -h localhost -u epstdmarc -pepstsecret
mysql> use epstdmarc;
mysql> show tables;
+---------------------+
| Tables_in_epstdmarc |
+---------------------+
| domains |
| ipaddr |
| messages |
| reporters |
| requests |
| signatures |
+---------------------+
6 rows in set (0.00 sec)
|
DBが正しく作成されていることが確認できたので接続を終了します。
- Perlのインストール
Unix/Linux環境のPerlと近い感覚で使うことができる、Strawberry Perlをダウンロードして、インストールします。
新たにコマンドプロンプトを起動させ、"Strawberry Perl"のPATHが設定されているかを確認します。
C:\Users\Administrator>set path
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin
:
|
インストール後に、コマンドプロンプトから以下コマンドを実行させ"Switch.pm"モジュールを追加します。
C:\Users\Administrator>cpan install Switch.pm
Loading internal logger. Log::Log4perl recommended for better logging
CPAN: CPAN::SQLite loaded ok (v0.217)
CPAN: LWP::UserAgent loaded ok (v6.42)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
CPAN: YAML::XS loaded ok (v0.80)
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
Creating database file ...
:
Running make install for CHORNY/Switch-2.17.tar.gz
Installing C:\STRAWB~1\perl\site\lib\Switch.pm
Appending installation info to C:\STRAWB~1\perl\lib/perllocal.pod
CHORNY/Switch-2.17.tar.gz
C:\STRAWB~1\c\bin\gmake.exe install UNINST=1 -- OK
|
次に、スクリプトが動作可能か確認します。
cd "C:\Program Files\EPOST\MS\epstdmarc\report"
C:\Program Files\EPOST\MS\epstdmarc\report>perl opendmarc-expire
|
上記実行で何らかのエラーが出ていないことを確認します。
- PHPのインストール
今回は php7.4.2を使用。
PHP For Windows: Binaries and sources ReleasesからNon Thread Safe版の zipファイルをダウンロードし、好きな場所に展開(解凍)してください。
解凍後、解凍先フォルダへコマンドプロンプトを移動し確認のため、"php"を実行します。
このとき、"vcruntime140.dll 14.0 not compatible with PHP build"などDLLが不足しているメッセージが表示される場合は、以下リンクから
https://visualstudio.microsoft.com/ja/downloads/
その他のツールとフレームワーク下にある、"Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ"(64bit版OSは、x64とx86両方)をダウンロードしてインストールします。
PHPを展開(解凍)したフォルダ内にある"php.ini-development"を"php.ini"としてコピーします。
コピーした、php.iniの以下の箇所を編集しPHPからのmysqlへ接続可能にするため以下行を書き換えて保存します。
;extension_dir = "ext" | ⇒ extension_dir = "c:\<PHPをインストールしたフォルダ>\ext" |
;extension=mysqli | ⇒ extension=php_mysqli.dll |
- IISのインストール
[インターネット インフォメーション サービス]
⇒ [World Wide Web サービス]
⇒ [アプリケーション開発機能]
⇒ [CGI]
|
にチェックが入っていることを確認してインストールしてください。
- IIS上でPHPを動作可能にする。
- 仮想ディレクトリの作成
- エイリアス:dmarc
- 物理パス:C:\Program Files\EPOST\MS\epstdmarc\report\web
- アクセス権限の設定
- 仮想ディレクトリ"dmarc"のフォルダのプロパティーを開く。
- [セキュリティ] タブの [編集] をクリックする。
- [追加] をクリックする。
- 場所の指定をコンピュータに設定し、オブジェクト名にiis_iusrsと入力して [名前の確認] をクリックする。
- 選択するオブジェクト名が認識されたら、[OK] をクリックする。
- アクセス許可は特に変更せず、[OK] をクリックする。
- IISへのPHPランタイムの登録
- 接続ペイン内のコンピューター名のノードをクリックする。
- 機能ビューが表示されていることを確認し、[ハンドラー マッピング] をダブルクリックする。
- 操作ペインから [モジュールマップの追加] をクリックする。
- 以下の内容を入力する。i.要求パス → *.php
- モジュール → FastCgiModule
- 実行可能ファイル → <PHPをインストールしたフォルダ>\php-cgi.exe
- 名前 → PHP_via_FastCGI
- [要求の制限] ボタンをクリックする。
- マップタブの [要求のマップ先が次の場合のみハンドラーを呼び出す] にチェックを入れ、[ファイルまたはフォルダー] を選択して [OK] をクリックする。
- [OK] をクリックする。
★ 設定変更後は、IISをコンピュータ名単位で再起動させ、以下リンクが表示できるか確認します。
http://<example.co.jp>/dmarc/test.phpPHP設定情報一覧
http://<example.co.jp>/dmarc/testsql.phpSQL接続確認結果
正常に接続できた後は、"test.php"および"testsql.php"は不要となりますので、フォルダから削除しておきます。
- 日時処理の登録
DMARCの検査で作成された履歴データを定期的にデータベースへ保存後、必要なら送信元ドメインへレポート送信し、90日を過ぎたデータを削除する設定をバッチファイル"epstdmarc-send-reports.bat"として作成し、タスクマネージャへ登録します。
[epstdmarc-send-reports.bat] (太字の箇所を適切に設定してください。)
cd "c:\program files\epost\ms\dmarc\report"
set SMTPSERVER=172.0.0.1
set SMTPPORT=25
set FROMADDR=noreply-dmarc-support@example.co.jp
set DOMAIN=example.co.jp
REM Database and History File Info
set DBHOST=localhost
set DBUSER=epstdmarc
set DBPASS=epstsecret
set DBNAME=epstdmarc
set HISTDIR=c:\mail\dmarc\report
set HISTFILE=epstdmarc
REM Move history file temp dir for processing
move %HISTDIR%\%HISTFILE%.dat %HISTDIR%\%HISTFILE%.$$
REM Import temp history file data and send reports
perl opendmarc-import -dbhost=%DBHOST% -dbuser=%DBUSER% -dbpasswd=%DBPASS% -dbname=%DBNAME% -verbose < %HISTDIR%\%HISTFILE%.$$
perl opendmarc-reports -dbhost=%DBHOST% -dbuser=%DBUSER% -dbpasswd=%DBPASS% -dbname=%DBNAME% -verbose -interval=86400 -smtp-server %SMTPSERVER% -smtp-port %SMTPPORT% -report-email %FROMADDR% -report-org %DOMAIN%
perl opendmarc-expire -dbhost=%DBHOST% -dbuser=%DBUSER% -dbpasswd=%DBPASS% -dbname=%DBNAME% -verbose
REM Delete temp history file
del %HISTDIR%\%HISTFILE%.$$
|
- タスクマネージャーへの登録
コマンドラインで、以下のように登録(ログオンされていなくても18時に処理実行する場合:日時処理)します。
C:\Users\Administrator>schtasks /create /ru "" /rp /tn "DMARC Report" /tr "C:\PROGRA~1\EPOST\MS\epstdmarc\report\epstdmarc-send-reports.bat" /sc daily /st 18:00:00
|
- 統計情報の参照
データベースへ履歴ファイルが登録されるようになると、以下の参照が可能になります。
http://<example.co.jp>/dmarc/dashboard.php登録データ一覧
http://<example.co.jp>/dmarc/index.php円グラフ
Copyright© E-POST Inc. 2020
-許可なく内容の転載を禁じます。-