メールアドレスをマスクしてpostfixのログをfluentdに流す

前回の記事fluent-plugin-filter-parse-postfixはデフォルトでメールアドレスをマスクするようにしている。

<source>
  @type tail
  path /var/log/maillog
  pos_file /var/log/td-agent/postfix-maillog.pos
  tag postfix.maillog
  format none
</source>

<filter postfix.maillog>
  @type grep
  regexp1 message status=
</filter>

<filter postfix.maillog>
  @type parse_postfix
  mask true # デフォルト値
  #include_hash ture
</filter>
{
  "time":"Feb 27 09:02:38",
  "hostname":"MyHOSTNAME",
  "process":"postfix/smtp[26490]",
  "queue_id":"5E31727A35D",
  "to":"*********@myemail.net",
  "domain":"myemail.net",
  "relay":"gateway-f1.isp.att.net[204.127.217.17]:25",
  "conn_use":2, // 一応数値型…
  "delay":0.58, // 一応数値型…
  "delays":"0.11/0.03/0.23/0.20",
  "dsn":"2.0.0",
  "status":"sent",
  "status_detail":"(250 ok ; id=en4req0070M63004172202102)"
}

メールアドレスはstatus_detailなどにも入っているが、それらについてもマスクするようにしている。(spec) あと、 include_hash tureというオプションを追加するとsha512のハッシュ値も付加されて、マスクされたデータを検索することもできる*1

なんでまあ、一応便利に使ってます。

*1:要openssl-devel/libssl-dev