たくさんの人にメールを一斉送信する「somen」(Rails製)を公開します。

github.com

概要

たくさんの人にメールを一斉送信できるRails製のWebシステムです。
メール本文にはURLを含むことができて、URLリンクのクリックデータを取得することができます。

  • マーケティング
  • アンケート
  • ここのところ話題の標的型攻撃メール対応訓練

などに使えます。

デプロイ

さっそくですがデプロイの方法です。

  1. clone します
    git clone https://github.com/ozamasa/somen.git
  2. heroku にログインしプロジェクトを作ります
    herokuにアカウントがない場合は事前に作っておきましょう。
    herokuのプロジェクト名は適当なものを設定してください。

    ※ もちろん、GitHubからHerokuへ直接デプロイしてもよいです。
    cd somen
    heroku login
    heroku create somen
  3. heroku に push します
    git push heroku master
  4. db:migrate します
    heroku run rake db:migrate
    ちなみに、MacでherokuのPostgreSQLを触るには「PG Commander」が超便利です。

  5. basic認証のためのユーザー名、パスワードを設定します
    heroku config:set AUTH_USERNAME=hogehoge
    heroku config:set AUTH_PASSWORD=fugafuga
    このシステム全体には一部を除きbasic認証が入っています。認証するための適当なユーザー名とパスワードを設定します。

  6. mandrillのユーザー名、APIキーを設定します f:id:Ozamasa:20151025103300p:plain SMTPにMandrillアドオンを使っているので、まずは、Herokuの管理ページにいって、Mandrillアドオンを有効にします。

    ※ MandrillにはFreeプランがあったはずなんだけど見当たらないので変更があったみたい。無料で運用する場合には別のSMTPアドオンを使ってください。
    SMTPアドオンには送信制限があるので、事前に確認しましょう。

    Mandrillアドオンを有効にしたら、Mandrill管理ページに行き、さらに「Get API Keys」のページに行くと、USERNAMEやAPIKEYが発行されているので、それを環境変数に突っ込みます。
    heroku config:set MANDRILL_USERNAME=xxx@heroku.com
    heroku config:set MANDRILL_APIKEY=xxxxxx

  7. ブラウザで確認できます
    heroku open
    
  8. ブラウザが起動し、basic認証が出ればとりあえずOKです。上記で設定したユーザー名とパスワードで認証すると、こんな画面が出てきます。 f:id:Ozamasa:20151025103317p:plain

デモサイト

デモサイトってほどのことでもないけど、ここです。

http://somen.herokuapp.com

basic認証は「hogehoge/ fugafuga」で突破できます。メールの送信はできません。

使い方

簡単に使い方も書いておきます。

  1. 組織を作ります
    ここの組織はターゲットの組織です。つまりエンドユーザーさんです。
    「新規組織」のページに進んで、もろもろ入力して組織を作ります。
    f:id:Ozamasa:20151025103330p:plain
  2. メールフォームを作ります
    組織を選択して、「新規メールフォーム」をクリックすると、メールの入力フォームになります。
    f:id:Ozamasa:20151025103324p:plain
    - 「To」
      送信先のメールアドレスで、改行して入力すると複数アドレスに同時に送れます。
    - 「本文」
      送信されるメール本文はHTML形式です。よって、HTMLタグを含むことができます。URLを偽装する場合は、アンカータグのhrefに設定してください。
    - 「ランディングページ」
      URLをクリックしたときに表示するページです。自前で持つ場合は、public下にファイルをデプロイしてください。
  3. メールを送信します f:id:Ozamasa:20151025103336p:plain
    メールフォームの右肩の「メール送信」ボタンをクリックするとメールが送信されます。

    ちなみに、送信されたメールはこんな感じ。 f:id:Ozamasa:20151025103243p:plain
  4. 結果を確認します f:id:Ozamasa:20151025103351p:plain
    メールフォームの下にある「結果」ボタンをクリックすると結果画面が表示されます。リンクをクリックしたメールアドレスと時間などが見れます。

公開の経緯

このシステムは、実際の標的型攻撃メール対応訓練で使ったものを改変したものです。魑魅魍魎の独自要求に応えることができないので、ソースを公開してしまいます。テストコードはないけど、ご自由にお使いください。

「手動でメール送信→URLのクリック結果を自分でCSVファイルにまとめてお渡し」と、自分がオペレーションすることしか想定していなかったので、他の人が使うとなったときにはいろんな問題が起きると想像できます。

例えば、

  • メール本文の誤字・脱字
  • メールの誤配信
  • メールが迷惑メール入りする
  • メールがスパム判定される
  • プログラムの誤動作とかエラー(バグ含み)
  • 動作環境に起因する想定外の動作

などなど。

あ、もし、標的型攻撃メール対応訓練を考えていたら、ご連絡ください。少なくとも上記の問題が発生することはないし、プラスαでいろんな提案もできます。