gpt4 book ai didi

regex - Logstash grok过滤器标记接收和退回的邮件

转载 作者:行者123 更新时间:2023-12-02 23:28:25 25 4
gpt4 key购买 nike

Sthg让我发疯,我想解析Postfix日志以了解电子邮件的状态,这是我到目前为止尝试的操作:

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日04:18:34 mx12后缀/清理[20659]: 3mfHGL1r9gzyQP : message-id = <3mfHGL1r9gzyQP@www.mydomain.fr>

Jul 26 04:18:34 mx12 postfix / smtp [20662]: 3mfHGL1r9gzyQP :to =,relay = 127.0.0.2 [127.0.0.2]:25,delay = 0.53,delays = 0.13 / 0 / 0.23 / 0.16,dsn = 2.0.0, 状态=已发送 / 退回

结果1:

我将电子邮件发送到现有的电子邮件地址,mail.log中的状态为:

sent (250 ok) : OKAY



但是,这就是Logstash所说的:

enter image description here

..我看到每个后缀程序(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的条目–记录:QID,dsn
  • 与message-id = 匹配的所有条目–记录: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} &"
    }
    }
    }

    但是我的过滤器有一个问题,使我发疯,

    任何的想法 ??

    最佳答案

    我发现了问题。

    它来自此测试:

    if [message] =~ /[ "bounced" ]/ {
    mutate {add_tag => [ "bounce" ]}
    }

    正则表达式是 /之间的部分,因此您的正则表达式的评估如下:
    https://regex101.com/r/eaB5jp/2

    这样,您所有的行都将匹配并获得标签。

    为了工作,测试应该是:
    if [message] =~ /bounced/ {
    mutate {add_tag => [ "bounce" ]}
    }

    关于regex - Logstash grok过滤器标记接收和退回的邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821663/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com