Estou usando com sucesso o Postfix no Debian para retransmitir meu e-mail interno e estou enviando logs do arquivo mail.log para uma instância do Logstash, e estou mostrando-os em painéis do Kibana para procurar e-mails não entregues e devolvidos .
O problema que estou tendo é que o Postfix envia informações sobre e-mails entregues em várias linhas de log , por exemplo:
Oct 9 18:19:58 mailserver postfix/smtpd[11513]: 7958440AA2: client=client.fqdn[123.123.123.123]
Oct 9 18:19:59 mailserver postfix/cleanup[11518]: 7958440AA2: message-id=<>
Oct 9 18:19:59 mailserver postfix/qmgr[26050]: 7958440AA2: from=<[email protected]>, size=841, nrcpt=1 (queue active)
Oct 9 18:19:59 mailserver postfix/smtpd[11513]: disconnect from client.fqdn[123.123.123.123] helo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Oct 9 18:20:10 mailserver postfix/smtp[11519]: 7958440AA2: to=<[email protected]>, relay=relay.fqdn[111.111.111.111]:25, delay=12, delays=1/0.01/10/1.3, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 1F2BF9679C4)
Oct 9 18:20:10 mailserver postfix/qmgr[26050]: 7958440AA2: removed
No Kibana estou exibindo logs com a tag status= , para saber se a mensagem foi entregue com sucesso ou não, mas desta forma estou perdendo a informação sobre o remetente, que é exibida em outra linha de log do Postfix.
Existe uma maneira de permitir que o Postfix insira a tag from= também na mesma linha de log com a tag success= ?
Ou existe uma maneira de "mesclar" vários logs no Logstash para ter as tags from= e success= em um painel do Kibana?
Você pode usar um
aggregate
plug-in do Logstash para extrair dados da entrada de várias linhas porqueue-id
. Existem alguns exemplos para esta abordagem disponíveis no Github