メール配信システムを設計する際のメモ

[基本原則]

  • 配信プログラムのチェック機能は配信情報入力系とは分けて考える(配信データを信用しない)。
  • 少しでも問題があったら安全側に振れるようなロジックにする。
  • 考えられる最悪の事故とは本文やヘッダから他人のメアドが流出すること。

[課題]

  • 配信ログを残す(異常終了時の状況確認等)。
  • エンベロープFromを設定する。
  • httpdの子プロセスとして起動しない(Apacheが終了すると配信が止まる)。
  • 重複配信を避けるために件名および本文が過去と同一のメールは送らない。
  • 配信リストにメアドの重複があれば除外する(sort|uniq)。
  • できれば全メアドの形式を再チェックして異常があればアベンドさせる。
  • PHPを使用する場合、スクリプト実行時間の制限設定を確認(php.ini)。
  • タスクのステータスは配信開始と配信終了時の2回更新する。
  • 配信プログラムが二重起動することが無いよう一件一件タスク処理する。
  • 配信リストはWebからGETできるところに保存しない。
  • 配信開始と終了時に管理者にメールを送る。

[例外処理の対応]

 以下の事故例を想定した例外処理を織り込む

  • テストメール送信事故
  • 管理系操作ミス事故
  • 空白メール事故
  • 本文へのアドレスリスト記載事故
  • ウィルス添付事故
  • BCCとCCを間違えてリストを流出してしまう事故
  • 改行文字事故
  • エスケープ文字事故
  • 文字コード事故
  • 重複送信事故
  • URLリンク切れ事故