hi Jaren,

I would recommend to divide the task into two parts:
1) normalization of log messages and the creation of one synthetic
event from three raw log events
2) writing a thresholding rule for synthetic events generated during step 1

As I understand from examples, each incoming e-mail generates three
messages with the same numerical message ID. This message ID can be
utilized during normalization, and here is a simple example that
involves three Single rules:

type=single
ptype=RegExp
pattern=Mail\s(\d+):from=(.+@(.+))
desc=store sender address
action=create SENDER_$1 5; add SENDER_$1 $2; add SENDER_$1 $3

type=single
ptype=RegExp
pattern=Mail\s(\d+):subject=(.*)
context=SENDER_$1
desc=store subject
action=create SUBJECT_$1 5; add SUBJECT_$1 $2

type=single
ptype=RegExp
pattern=Mail\s(\d+):status=(.+)
context=SENDER_$1
desc=generate synthetic event for mail message
action=shift SENDER_$1 %email; shift SENDER_$1 %domain; \
       shift SUBJECT_$1 %subject; delete SENDER_$1; delete SUBJECT_$1; \
       event 
MAIL_$1_STATUS_$2_EMAIL_%{email}_DOMAIN_%{domain}_SUBJECT_%{subject}

The first and second rule match the e-mail and subject messages,
respectively, and use contexts with a short lifetime to store relevant
information extracted from these events. It is assumed that the
subject message always comes after the e-mail message (as you can see,
the second rule checks if SENDER_$1 context exists that has been
created by first rule). The third rule reacts to the status message
and creates a synthetic event from information extracted from all
three events for the given message ID. For example, for the example
events from your previous post, the following synthetic events are
created:

MAIL_1_STATUS_delivered_EMAIL_sec@sec.com_DOMAIN_sec.com_SUBJECT_Sec
Configuration Rule
MAIL_2_STATUS_delivered_EMAIL_pinker@sec.com_DOMAIN_sec.com_SUBJECT_Sec
Configuration Rule
MAIL_3_STATUS_delivered_EMAIL_plaster@sec.com_DOMAIN_sec.com_SUBJECT_Sec
Configuration Rule
MAIL_4_STATUS_delivered_EMAIL_plaster@panik.com_DOMAIN_panik.com_SUBJECT_Sec
Configuration Rule
MAIL_4_STATUS_Notdelivered_EMAIL_plaster@paniki.com_DOMAIN_paniki.com_SUBJECT_Sec
Configuration Rule

Once the normalization is done, you can use simple SingleWithThreshold
rules for thresholding, without having a need to consider the
"multiline event issue" each time you have to write a rule. For
example, the following rule fires if 3 e-mails from the same domain
with the same subject line have been delivered within 60 seconds:

type=SingleWithThreshold
ptype=RegExp
pattern=MAIL_(\d+)_STATUS_delivered_EMAIL_(\S+?@\S+?)_DOMAIN_(\S+?)_SUBJECT_(.*)
desc=3 e-mails from domain $3 with the same subject $4 have been
delivered within 1 minute
action=write - %s
thresh=3
window=60


Hopefully these examples are helpful,
risto



2017-06-06 13:45 GMT+03:00 Jaren Peich <burkol...@gmail.com>:
> Hi,
>
> I want to get all email from the same domain with the same subjects and
> check if they have been delivered(status=delivered) with a thresh. The
> problem is that the email log is split in different lines. The email comes
> with more lines but i´m only interested to get this(Log file lines).
>
> I have made 2 approches but i can´t validate domain variable in varmap with
> their aliaes to attach different context to a general context and validate
> all rule.
> desc field must be "subject" variable.
>
> I´m using SEC 2.6.2 with strawberry perl.
>
> Log file(Sometimes could come disordered):
>
> Mail 1:from=s...@sec.com
> Mail 1:subject=Sec Configuration Rule
> Mail 1:status=delivered
> Mail 2:from=pin...@sec.com
> Mail 2:subject=Sec Configuration Rule
> Mail 2:status=delivered
> Mail 3:from=plas...@sec.com
> Mail 3:subject=Sec Configuration Rule
> Mail 3:status=delivered
> Mail 4:from=plas...@panik.com
> Mail 4:subject=Sec Configuration Rule
> Mail 4:status=delivered
> Mail 4:from=plas...@paniki.com
> Mail 4:subject=Sec Configuration Rule
> Mail 4:status=Notdelivered
>
> ________________________________________________________________________________
>
>
> First idea:
>
> type    = Single
> ptype   = RegExp
> continue = Takenext
> context= Domain_$+{domain}
> desc    = $0
> pattern = Mail\s(\d+)\:from\=(.*@(.*))
> varmap= mid=1; email=2;domain=3;
> action  = alias Domain_$+{domain} HIT_Domain_$+{mid};fill  Domain_$+{domain}
> $+{domain}
>
>
> type    = Single
> ptype   = RegExp
> continue = Takenext
> context= !Domain_$+{domain}
> desc    = $0
> pattern = Mail\s(\d+)\:from\=(.*@(.*))
> varmap= mid=1; email=2;domain=3;
> action  = create Domain_$+{domain} 86400; alias Domain_$+{domain}
> HIT_Domain_$+{mid};
>
>
>
>
> type=EventGroup2
> ptype=regexp
> pattern=Mail\s(\d+)\:subject\=(.*)
> varmap= mid=1; subject=2
> context = HIT_Domain_$+{mid}
> thresh=2
> count=alias Domain_$+{domain} Domain_Subject_$+{mid};
> ptype2=regexp
> pattern2=Mail\s(\d+)\:status\=delivered
> varmap2= mid=1;
> context2 = Domain_Subject_$+{mid} && HIT_Domain_$+{mid}
> thresh=2
> desc=Domain_$+{subject}
> action= write - "Test String"
> window=86400
>
> _______________________________________________________________________________
>
> Second idea:
>
> type=EventGroup4
> ptype   = RegExp
> continue = Takenext
> context= Domain_$+{domain}
> desc    = $0
> pattern = Mail\s(\d+)\:from\=(.*@(.*))
> varmap= mid=1; email=2;domain=3;
> count = alias Domain_$+{domain} HIT_Domain_$+{mid};
> ptype2   = RegExp
> continue2 = Takenext
> context2= !Domain_$+{domain}
> pattern2 = Mail\s(\d+)\:from\=(.*@(.*))
> varmap2= mid=1; email=2;domain=3;
> count2 = create Domain_$+{domain} 86400; alias Domain_$+{domain}
> HIT_Domain_$+{mid};
> ptype3=regexp
> pattern3=Mail\s(\d+)\:subject\=(.*)
> varmap3= mid=1; subject=2
> context3 = HIT_Domain_$+{mid}
> thresh3=2
> count3=alias DOMAIN_$+{domain} Domain_Subject_$+{mid};
> ptype4=regexp
> pattern4=Mail\s(\d+)\:status\=delivered
> varmap4= mid=1;
> context4 = Domain_Subject_$+{mid} && HIT_Domain_$+{mid}
> thresh4=2
> desc=Domain_$+{subject}
> action= write - "Test String"
> window=86400
>
>
> Any ideas?
>
> Thank you. Regards.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to