長期化したAI開発に、ようやく区切り。DMARC Monitor MVPが完成【DMARC Monitor開発②】

AIと取り組むDMARC Monitor開発記録|第2回

前回の記事では、自社ドメインのなりすましメール対策をきっかけに、ChatGPTとClaude Codeを使った「DMARC Monitor」の開発を始めたことをご紹介しました。

当初は比較的シンプルなツールを想定していましたが、安全性や検証を重視するあまり、開発は思いのほか長期化。

そこで、これまでの開発成果をいったん凍結し、本当に必要な機能に絞ったMVP(Minimum Viable Product)として開発を進め直すことにしました。

あれから約2週間。

2026年11月、ようやくMVPの基本機能が完成し、実際のDMARCレポートを分析できるところまで到達しました。

今回は、方針転換から完成までの取り組みをご紹介します。

開発が長期化した理由を、改めて考える

振り返ると、長期化した原因は、AIがプログラムを書けなかったことではありません。

むしろ、必要な機能を追加したり、テストを増やしたりすること自体は、AIの得意分野でした。

問題は、開発を進めるたびに「さらに確認しておいた方がよいこと」が増えていったことです。

監査ログの整合性、データベースの保護、バックアップ、復旧手順、プログラムの変更検知など、どれも大切な要素です。

しかし、それらを際限なく充実させようとすると、肝心の「DMARCレポートを分かりやすく表示する」という目的が後回しになってしまいます。

そこで、基本的な安全対策は残しながら、追加の監査機能や高度な自動化は後回しにすることにしました。

「何が完成すれば、実際に使い始められるのか?」

この基準を明確にしたことが、開発を前に進める転機になりました。

ChatGPTとClaude Codeの役割を明確にする

開発体制も整理しました。

ChatGPTが全体の進行管理、実装方針の検討、レビューを担当します。

Claude Codeは、承認された範囲内でソースコードの修正とテストをまとめて実行します。

実際のDMARCレポートやデータベースを扱う重要な操作は、人間が実行します。

特に効果があったのは、一つひとつの細かな変更を承認するのではなく、必要な機能をまとめて実装する方式に切り替えたことでした。

もちろん、AIが自由に実データを書き換えられるわけではありません。

開発用データと実データを分け、作業範囲を明確にしたうえで、実装とテストを進めています。

AIに任せる部分と、人間が判断する部分を整理することも、AIを使った開発では重要だと感じています。

完成したDMARC Monitor MVP

今回のMVPでは、次の機能を実装しました。

  • XML、GZIP、ZIP形式のDMARCレポートの取り込み
  • 重複レポートの検出
  • SPF、DKIM、DMARCの認証結果の集計
  • ドメイン別・送信元IP別の分析
  • 既知の送信元と未知の送信元の分類
  • HTMLレポートの一括生成
  • 取り込み前のdry-runと、バックアップ・変更検知による保護

動作環境には、当社で常時稼働している小型Linuxコンピューター「Odroid」を使用しています。

データベースはSQLiteです。

大規模なクラウド環境を新たに構築するのではなく、手元にある機器を活用して、小さく運用できる仕組みを目指しました。

実際のDMARCレポートを可視化

今回は、当社が管理する2つのドメインについて、実際に受信したDMARC集計レポートを取り込みました。

初期段階で取り込んだ7件のレポートには、合計10通分のメール認証結果が含まれていました。

そのうちDMARC認証に合格したものは6通、不合格は4通です。

取り込んだデータからHTMLレポートを生成し、別のLinuxパソコンのブラウザーでも確認できました。

集計結果だけでなく、送信元IPアドレスや認証の成否を一覧できるようになり、XMLファイルを一つずつ読む必要がなくなりました。

ただし、DMARC認証に失敗したことだけで、なりすましメールと断定できるわけではありません。

外部サービスの設定やメールの転送などが影響することもあります。

大切なのは、これまで見えにくかった情報を確認できるようになったことです。

正規のメール送信元を登録する

もう一つ、今回のMVPで実装したのが「baseline」と呼ぶ既知送信元の登録機能です。

当社ではConoHa WINGのメールサーバーを利用しています。

そこで、DMARCレポートに記録されている送信元IPアドレスを、公開されているSPF設定と照合しました。

確認した送信元IPを登録することで、今後のレポートでは、登録済みの送信元と未知の送信元を区別できるようになります。

未知の送信元が見つかったとしても、それだけで不正な送信と決めつけることはありません。

あくまでも、さらに確認するための手掛かりとして利用します。

現在、baseline設定の読み込みは実データ環境で確認済みです。新しい分類ルールについては、今後のレポート取り込みを通じて引き続き検証していきます。

544件のテストを経て、MVPが完成

開発の最終段階では、544件のユニットテストと12件の回帰テストがすべて成功しました。

実際のデータを使ったHTML生成や、ブラウザーでの表示も確認できています。

もちろん、テストに成功したことが、すべての問題がなくなったことを意味するわけではありません。

メールの自動取得、より詳細なアラート表示、設定ファイルのバックアップ強化など、改善したい部分はまだ残っています。

それでも、必要な基本機能を備え、実データを扱えるMVPとして、一つの区切りをつけることができました。

AIを使った開発で学んだこと

今回の経験で感じたのは、AIによってプログラムを書く作業が効率化されても、開発全体が自動的に効率化されるわけではない、ということです。

機能を追加することは比較的容易になりました。

しかし、追加すべき機能と、今は追加しなくてよい機能を見極めることは、人間に残された重要な仕事です。

安全性を軽視するわけにはいきませんが、完成させなければ実際に使うこともできません。

今回は、そのバランスを考え直す良い経験になりました。

次は実際の運用へ

DMARC Monitor MVPの基本開発は、ここでひとまず完了です。

今後は、過去に受信した未取り込みのDMARCレポートや、新しく届くレポートを順次登録し、自社ドメインのメール認証状況を継続的に確認していく予定です。

実際に運用することで、開発段階では気づかなかった課題や、新しい発見が出てくるかもしれません。

また、現在は手動で行っているレポートの取り込みについても、将来的には自動化を検討したいと考えています。

運用を通じてお伝えできるような成果がまとまれば、改めてこのTech Blogでご紹介したいと思います。

AIを使って何でも作ることよりも、本当に必要なものを完成させ、使い続けること。

今回のDMARC Monitor開発で得た、一番大きな学びかもしれません。


※本記事は、ナミキアソシエイツ株式会社によるAI活用・IT技術検証の記録です。DMARC Monitor MVPは自社運用を目的としたシステムであり、商用サービスとして提供しているものではありません。

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA