LoginSignup
3
2

More than 5 years have passed since last update.

sendmailで任意のメールヘッダーをsyslogに出力する

Last updated at Posted at 2014-06-15

sendmailで手軽にヘッダーをログに出力するための設定。
X-Mailer や User-Agent を指定すれば、
ユーザがどんなメーラーを使用しているかわかります。

1. sendmail.mc に下記コードを追加し、sendmail.cfを作成

sendmail.mc
LOCAL_CONFIG
 # syslog 出力の定義、スペースを # に置換して出力する
Klog syslog -S\#
 # MAILER-DAEMONを判定する定義、MAILER-DAEMON の場合は OK を返す
Kcheck_md regex -T@TEMP -a@OK ^[M]AILER-DAEMON$
 # Headers クラスを定義
F{Headers}/etc/mail/headerlists
 # 全てのヘッダーに output_header ルールを適用
H*: $>output_header
 #
LOCAL_RULESETS
Soutput_header
 # Envelope From が MAILER-DAEMON か確認
R$*         $: <$(check_md $&f $)> <$1>
 # MAILER-DAEMON であれば、ここで終了
R<@OK><$*>      $@ $1
 # MAILER-DAEMON でなければ、ヘッダー名を挿入
R<$*><$*>       $: <$&{hdr_name}> <$2>
 # Headers クラスと ヘッダー名が一致した場合、syslog に出力
R<$={Headers}><$*>  $: $(log "header=" $1 ", value=" $2 $) $2
 # おまじない
R<$*><$*>       $: $2
 # LHS , RHS は tab 区切りで記述すること

2. 出力するヘッダーを設定(完全マッチ)

# vi /etc/mail/headerlists
Subject
From
To

3. sendmail の再起動

# service sendmail restart

4. テスト

入力データ
Subject: ma3ki.net 1402812640
From: <test@ma3ki.net>
To: <nobody>

syslog
Jun 15 15:10:40 localhost sendmail[32460]: s5F6Adb8032460: header=Subject, value=ma3ki.com#1402812640
Jun 15 15:10:40 localhost sendmail[32460]: s5F6Adb8032460: header=From, value=<test@ma3ki.com>
Jun 15 15:10:40 localhost sendmail[32460]: s5F6Adb8032460: header=To, value=<nobody>

3
2
0

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
3
2