23
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sisimaiでバウンスメールを解析してみる

Posted at

内容

バウンスメールの解析用ライブラリであるSisimaiを会社で使う機会があったのでメモ。
(Perl版とRuby版がありますが、今回はRuby版を使ってます)
機能的にはbounceHammerのパース部分を抜き出した感じ。
(残念ながらこちらは2016/2/29を以ってEOL。すでにダウンロードできなくなってます。。。)

入手元とかマニュアルとか

URL: http://libsisimai.org/
GitHub: https://github.com/sisimai
ライセンス: 2条項BSDライセンス

検証環境

Amazon Linux
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

導入方法

# gem install sisimai
# gem list
...
sisimai (4.17.0)
oj (2.14.6)
...

使い方

Sisimai.make("filename")でバウンス理由などをパースした結果を返してくれる。
dumpでJSON形式で出力してくれるので、DBに突っ込むとかいろいろ加工するとか。
超適当なスクリプトで実験。

sisimai-parser.rb
require 'sisimai'

param=ARGV[0]
files = Dir.glob(param + "/*")
unless files == nil
  files.each do |file|
    data = Sisimai.make(file)
    unless data == nil
      data.each do |d|
        mail = d.dump
        print(mail)
      end
    end
  end
end
sisimai-parser.sh
#!/bin/bash
if [ $# -ne 1 ]; then
  echo "ディレクトリが指定されていません"
  exit 1
else
  ruby ./sisimai-parser.rb $1
  exit 0
fi

GitHubのset-of-emailsレポジトリ下にテスト用のバウンスメールがあるので、適当に食わせてみる。(jqで見やすく表示してます)

# ./sismai-parser.sh set-of-emails | jq
...(略)...
{
  "token": "d0ded153a6032bcf57faf0e0cf6a533ffdbe1f98",
  "lhost": "mv-osn-hcb007.ocn.ad.jp", 
  "rhost": "mx01.example.co.jp",  
  "alias": "kijitora@example.co.jp",
  "listid": "",
  "reason": "userunknown",
  "action": "failed",
  "subject": "TEST",
  "messageid": "A8F82EDD-E518-4F5C-8C70-BC4EFF24AB9F@example.ne.jp",
  "replycode": "550",
  "smtpagent": "Postfix",
  "softbounce": 0,
  "smtpcommand": "RCPT",
  "destination": "example.co.jp",
  "senderdomain": "example.ne.jp",
  "feedbacktype": "",
  "diagnosticcode": "550 5.1.1 Address rejected kijitora@example.co.jp",
  "diagnostictype": "SMTP",
  "deliverystatus": "5.1.1",
  "timezoneoffset": "+0900",
  "addresser": "shironeko@example.ne.jp",
  "recipient": "kijitora@example.co.jp",
  "timestamp": 1274695609
}

すごい便利です。

23
25
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?