Sthgは私が狂気になり、私はここでは、電子メールの状況を知るためにPostfixのログを解析したいメッセージをバウンス私がこれまで試したものです:Logstash GROKフィルタと
input {
file {path => "/var/log/mail.log"}
}
filter {
kv {
trim => "<>"
}
if [message] =~ /[ "status=bounced" ]/ {
grok {
patterns_dir => "/etc/logstash/patterns"
match => {"message" => "%{SYSLOGBASE} (?<QID>[0-9A-F]{10}): %{GREEDYDATA:message}"}
add_tag => "bounce"
}
}
}
output {
if "bounce" in [tags] {
stdout { codec => rubydebug }
}
}
たmail.logの例:
7月26日4時18分34秒MX12接尾辞/クリーンアップ[20659]:3mfHGL1r9gzyQP:メッセージID = < [email protected]>
7月26日午前4時18分34秒MX12接尾辞/ SMTP [20662]:3mfHGL1r9gzyQP:=に、リレー= 127.0.0.2 [127.0.0.2]:25、遅延= 0.53、遅延= 0.13/0/0.23/0.16、DSN = 2.0.0、状態=/を送っ
結果1バウンス:
を、私は、既存の電子メールアドレス、メール内のステータスに電子メールを送信します。ログは:
は(250 OK)を送っ:OKAY
しかし、ここではLogstashが告げるものです:
...と私はQMGR(各接尾プログラムによって生成されたすべてのメッセージのためにいることがわかり、smtp、qmgrもう一度..)。つまり、「ステータス=バウンス」を含まないすべてのメッセージに対してです。
は、それから私も試してみました:
if [message] =~ /[ "bounced" ]/ {
mutate {add_tag => [ "bounce" ]}
}
if [message] =~ /[ "message-id", "(.*)\@www\.mydomain\.fr" ]/ {
mutate { add_tag => [ "send" ] }
}
grok {
match => {"message" => "%{SYSLOGBASE} (?<QID>[0-9A-F]{10}): %{GREEDYDATA:message}"}
}
結果2:期待バウンス+送信:(
結果:
Logstashをいつもここ2タグを追加します私がやろうとしているのは、という設定ファイルです。しかし、それはLogstashの古いバージョンで作られた(例えば、「grepが」今は利用できません)が、これは私が作業作ってみるまさにです:
http://tales.itnobody.com/2013/07/using-logstash-to-log-smtp-bounces-like-a-boss.html
一言で:
DSNと- すべてのエントリ - RECORD:QID、DSN
- すべてのエントリに一致するメッセージID = < hashRegex> - RECORD:QID、メッセージID
:
output{
if "bounce" in [tags] {
exec {
command => "php -f /path/LogDSN.php %{QID} %{dsn} &"
}
}
if "send" in [tags] {
exec {
command => "php -f /path/LogOutbound.php %{QID} %{message-id} &"
}
}
}
しかし、私はクレイジーになり、私のフィルタに問題がある、
任意のアイデア?
あなたのログの例を追加してもらえますか? – baudsp
@baudsp質問にログを追加しました – Julien