177 lines
11 KiB
Go
177 lines
11 KiB
Go
|
package internal
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/csv"
|
||
|
"io/ioutil"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
testMessageFailed = `19-03-2018 03:54:05 2 SMTPServer [F1AF6651] New connection from 80.249.239.48
|
||
|
19-03-2018 03:54:05 3 SMTPServer Testing 80.249.239.48 on bl.spamcop.net
|
||
|
19-03-2018 03:54:05 3 SMTPServer [F1AF6651] Send: 220 mail.kunde.de SMTP server ready
|
||
|
19-03-2018 03:54:05 3 SMTPServer [F1AF6651] Recieve: EHLO site.azauto.com.ua
|
||
|
19-03-2018 03:54:05 3 SMTPServer [F1AF6651] Send: 250-OK
|
||
|
19-03-2018 03:54:05 3 SMTPServer [F1AF6651] Send: 250-STARTTLS
|
||
|
19-03-2018 03:54:05 3 SMTPServer [F1AF6651] Send: 250 SIZE 104857600
|
||
|
19-03-2018 03:54:05 3 SMTPServer [F1AF6651] Ehlo Greeting from: [80.249.239.48] - site.azauto.com.ua
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Recieve: MAIL FROM:<info@byphil.comt>
|
||
|
19-03-2018 03:54:06 2 SMTPServer [F1AF6651] Mail from: info@byphil.comt
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Send: 250 OK smtp ready for info@byphil.comt
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Recieve: RCPT TO:<abteilung@kunde.de>
|
||
|
19-03-2018 03:54:06 3 SMTPServer RVC-Filter testing: abteilung@kunde.de
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Send: 250 OK smtp ready for abteilung@kunde.de
|
||
|
19-03-2018 03:54:06 2 SMTPServer [F1AF6651] Mail to: <abteilung@kunde.de> accepted
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Recieve: DATA
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Send: 354 Send message. End with CRLF.CRLF
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] MessageID: <00D6549C_3B615A6F_reddoxx@mail.kunde.de> (40935FC192D).
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] TransactionID: F84F9E0625A025C54F7DBD19AC13DEBF4C2736FB (40935FC192D).
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Saving message ... (40935FC192D)
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Send: 250 message queued (40935FC192D)
|
||
|
19-03-2018 03:54:06 2 SMTPServer [F1AF6651] Message queued (40935FC192D)
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Recieve: QUIT
|
||
|
19-03-2018 03:54:06 3 SMTPServer [F1AF6651] Send: 221 closing connection
|
||
|
19-03-2018 03:54:06 2 SMTPServer [F1AF6651] Client disconnected.
|
||
|
19-03-2018 03:54:06 2 SMTPServer [F1AF6651] Disconnected from 80.249.239.48
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Thread started. Validating message (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Load message ... (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Load message finished. (40935FC192D)
|
||
|
19-03-2018 03:54:07 2 MailSealer [EB5FAD39] Message has no secure components. (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Starting validation of Message (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Using Profile: (1) Default-Filterprofile for <abteilung@kunde.de>
|
||
|
19-03-2018 03:54:07 3 DWL-Filter Testing (envelope): info@byphil.comt (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 AWL-Filter Testing (envelope): info@byphil.comt (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 AWL-Filter info@byphil.comt is *NOT* on sender address whitelist. 0ms (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 SWL-Filter Testing:
|
||
|
Finanzdienstleiter (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 RBL-Filter Testing 80.249.239.48 on bl.spamcop.net (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Advanced-RBL-Filter Testing (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Fuzzy-Filter Testing phase 1 (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Fuzzy-Filter (40935FC192D) phase 1 (ex) 325ms result: Major=spam Minor=normal Fallback=spam Virus=
|
||
|
19-03-2018 03:54:07 2 Fuzzy-Filter (40935FC192D) blocked by phase 1
|
||
|
19-03-2018 03:54:07 2 Validator [EB5FAD39] Filter: 'Fuzzy-Filter' will prevent archiving.
|
||
|
19-03-2018 03:54:07 3 DBL-Filter Testing (envelope): info@byphil.comt (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 ABL-Filter Testing (envelope): info@byphil.comt (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 SBL-Filter Testing: Finanzdienstleiter (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 VirusScanner No Virus found in message (40935FC192D)
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] - abteilung@kunde.de validated. Result: 30
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Thread terminated.
|
||
|
19-03-2018 03:54:07 3 Validator [EB5FAD39] Validation of Message (40935FC192D) finished.`
|
||
|
|
||
|
testMessageSuccess = `05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Recieve: RCPT TO:<person@kunde.de>
|
||
|
05-03-2018 15:36:13 3 SMTPServer RVC-Filter testing: person@kunde.de
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Send: 250 OK smtp ready for person@kunde.de
|
||
|
05-03-2018 15:36:13 2 SMTPServer [EEA1EB23] Mail to: <person@kunde.de> accepted
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Recieve: DATA
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Send: 354 Send message. End with CRLF.CRLF
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] MessageID: <754a924065cc4c15ace114d9196e16ef@DE35S004EXC61.wp.corpintra.net> (4DBAB2C02A3).
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] TransactionID: 82CDA2B813955EB42DCDB70BDAED57F2A6C53C29 (4DBAB2C02A3).
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Saving message ... (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Send: 250 message queued (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 2 SMTPServer [EEA1EB23] Message queued (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Recieve: QUIT
|
||
|
05-03-2018 15:36:13 3 SMTPServer [EEA1EB23] Send: 221 closing connection
|
||
|
05-03-2018 15:36:13 2 SMTPServer [EEA1EB23] Client disconnected.
|
||
|
05-03-2018 15:36:13 2 SMTPServer [EEA1EB23] Disconnected from 141.113.102.113
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Thread started. Validating message (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Load message ... (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Load message finished. (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 2 MailSealer [E8F016EA] Message has no secure components. (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Starting validation of Message (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Using Profile: (1) Default-Filterprofile for <person@kunde.de>
|
||
|
05-03-2018 15:36:13 3 DWL-Filter Testing (envelope): MaxMustermann@daimler.com (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 AWL-Filter Testing (envelope): MaxMustermann@daimler.com (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 AWL-Filter MaxMustermann@daimler.com is *NOT* on sender address whitelist. 0ms (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 SWL-Filter Testing: AW: Urlaubsplanung (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 RBL-Filter Testing 141.113.102.113 on bl.spamcop.net (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Advanced-RBL-Filter Testing (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Fuzzy-Filter Testing phase 1 (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Fuzzy-Filter (4DBAB2C02A3) phase 1 (ex) 161ms result: Major=clean Minor=normal Fallback=clean Virus=
|
||
|
05-03-2018 15:36:13 3 Fuzzy-Filter Testing phase 2 (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Fuzzy-Filter Testing 1d28528ffe972a11b3789fac292200b2 (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 DBL-Filter Testing (envelope): MaxMustermann@daimler.com (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 ABL-Filter Testing (envelope): MaxMustermann@daimler.com (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 SBL-Filter Testing: AW: Urlaubsplanung (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 VirusScanner No Virus found in message (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] - person@kunde.de validated. Result: 0
|
||
|
05-03-2018 15:36:13 3 Validator Wait for MailDepot lock ...
|
||
|
05-03-2018 15:36:13 3 Validator MailDepot locked.
|
||
|
05-03-2018 15:36:13 3 Archive ArchiveMessage 2.0 start ... - (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 2 Archive No policy matched. Message will be archived.
|
||
|
05-03-2018 15:36:13 3 Archive ArchiveMessage 2.0 before critical section ... - (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 2 Archive Archiving for MailDepot 2.0 - (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Archive Add MailDepot 2.0 spooler entry: 82CDA2B813955EB42DCDB70BDAED57F2A6C53C29.rdxmt0
|
||
|
05-03-2018 15:36:13 3 Archive ArchiveMessage 2.0 finished. - (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 3 Validator MailDepot unlocked.
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Thread terminated.
|
||
|
05-03-2018 15:36:13 3 Validator [E8F016EA] Validation of Message (4DBAB2C02A3) finished.
|
||
|
05-03-2018 15:36:13 3 SMTPClient [4041136960] Query queue
|
||
|
05-03-2018 15:36:13 3 SMTPClient [E8F00BA5] Thread started. Sending message (4DBAB2C02A3)
|
||
|
05-03-2018 15:36:13 2 SMTPClient [E8F00BA5] (4DBAB2C02A3) Sending message for: <MaxMustermann@daimler.com>
|
||
|
05-03-2018 15:36:13 3 SMTPClient [E8F00BA5] (4DBAB2C02A3) connecting to: 10.1.0.18:25
|
||
|
05-03-2018 15:36:13 3 SMTPClient [E8F00BA5] (4DBAB2C02A3) Receive on HELO: 250 XSHADOW
|
||
|
05-03-2018 15:36:13 3 SMTPClient [E8F00BA5] (4DBAB2C02A3) Receive on MAIL FROM: <MaxMustermann@daimler.com> = 250 2.1.0 Sender OK
|
||
|
05-03-2018 15:36:13 3 SMTPClient [E8F00BA5] (4DBAB2C02A3) Receive on RCPT TO: <person@kunde.de> = 250 2.1.5 Recipient OK
|
||
|
05-03-2018 15:36:14 3 SMTPClient [E8F00BA5] (4DBAB2C02A3) Data result: 250 2.6.0 <754a924065cc4c15ace114d9196e16ef@DE35S004EXC61.wp.corpintra.net> [InternalId=1161195] Queued mail for delivery
|
||
|
05-03-2018 15:36:14 2 SMTPClient [E8F00BA5] (4DBAB2C02A3) Message delivered to: <person@kunde.de>
|
||
|
05-03-2018 15:36:14 3 SMTPClient [E8F00BA5] Thread terminated.`
|
||
|
)
|
||
|
|
||
|
func Test_Message_Successful(t *testing.T) {
|
||
|
buf := new(bytes.Buffer)
|
||
|
|
||
|
transformer := new(Log)
|
||
|
transformer.CSVWriter = csv.NewWriter(buf)
|
||
|
err := transformer.Parse(strings.NewReader(testMessageSuccess))
|
||
|
|
||
|
require.NotEqual(t, buf.Len(), 0)
|
||
|
require.Nil(t, err)
|
||
|
require.Equal(t, strings.Join(sessionCSVHeader, ",")+
|
||
|
"\n2018-03-05,15:36:13,MaxMustermann@daimler.com,person@kunde.de,AW: Urlaubsplanung,true,EEA1EB23,4DBAB2C02A3",
|
||
|
strings.TrimSpace(buf.String()))
|
||
|
}
|
||
|
|
||
|
func Test_Message_DupeSessionId(t *testing.T) {
|
||
|
buf := new(bytes.Buffer)
|
||
|
|
||
|
transformer := new(Log)
|
||
|
transformer.CSVWriter = csv.NewWriter(buf)
|
||
|
err := transformer.Parse(strings.NewReader(testMessageSuccess + "\n" + testMessageSuccess))
|
||
|
|
||
|
require.NotEqual(t, buf.Len(), 0)
|
||
|
require.Nil(t, err)
|
||
|
require.Equal(t, strings.Join(sessionCSVHeader, ",")+
|
||
|
"\n2018-03-05,15:36:13,MaxMustermann@daimler.com,person@kunde.de,AW: Urlaubsplanung,true,EEA1EB23,4DBAB2C02A3"+
|
||
|
"\n2018-03-05,15:36:13,MaxMustermann@daimler.com,person@kunde.de,AW: Urlaubsplanung,true,EEA1EB23,4DBAB2C02A3",
|
||
|
strings.TrimSpace(buf.String()))
|
||
|
}
|
||
|
|
||
|
func Test_Message_Failed(t *testing.T) {
|
||
|
buf := new(bytes.Buffer)
|
||
|
|
||
|
transformer := new(Log)
|
||
|
transformer.CSVWriter = csv.NewWriter(buf)
|
||
|
err := transformer.Parse(strings.NewReader(testMessageFailed))
|
||
|
|
||
|
require.NotEqual(t, buf.Len(), 0)
|
||
|
require.Nil(t, err)
|
||
|
require.Equal(t, strings.Join(sessionCSVHeader, ",")+
|
||
|
"\n2018-03-19,03:54:05,info@byphil.comt,abteilung@kunde.de,Finanzdienstleiter,false,F1AF6651,40935FC192D",
|
||
|
strings.TrimSpace(buf.String()))
|
||
|
}
|
||
|
|
||
|
func Benchmark_Messages(b *testing.B) {
|
||
|
output := ioutil.Discard
|
||
|
|
||
|
transformer := new(Log)
|
||
|
transformer.CSVWriter = csv.NewWriter(output)
|
||
|
|
||
|
for n := 0; n < b.N; n++ {
|
||
|
transformer.Parse(strings.NewReader(testMessageSuccess))
|
||
|
}
|
||
|
}
|