STHG讓我瘋了,我想分析Postfix的日誌,瞭解郵件的狀態,這裏是我試過到目前爲止:Logstash神交過濾器標籤接收和退回的郵件
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的例子:
年07月26 4點18分34秒MX12後綴/清理[20659]:3mfHGL1r9gzyQP:消息-ID = < [email protected]>
7月26日四時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):還好吧
但這裏是Logstash講述:
..我看到,對於每個後綴程序生成的所有信息(QMGR ,smtp,qmgr再次..)。換句話說,即使不包含「status = bounced」的所有消息。
然後我也試過:
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