From 18b5ce8c1813c232467bc74e10b259799e068ccb Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 10:57:45 +1200 Subject: [PATCH 1/9] Add build status to README --- .github/workflows/{test.yml => tests.yml} | 2 +- README.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) rename .github/workflows/{test.yml => tests.yml} (98%) diff --git a/.github/workflows/test.yml b/.github/workflows/tests.yml similarity index 98% rename from .github/workflows/test.yml rename to .github/workflows/tests.yml index 5dfbd6a..2006efd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: Test +name: Tests on: pull_request: branches: [ develop ] diff --git a/README.md b/README.md index 1dc3a32..9f0bf97 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # Mailpit +![Tests](https://github.com/axllent/mailpit/actions/workflows/tests.yml/badge.svg) +![Build status](https://github.com/axllent/mailpit/actions/workflows/release-build.yml/badge.svg) +![Docker builds](https://github.com/axllent/mailpit/actions/workflows/build-docker.yml/badge.svg) +![CodeQL](https://github.com/axllent/mailpit/actions/workflows/codeql-analysis.yml/badge.svg) + Mailpit is an email testing tool for developers. It acts as both an SMTP server, and provides a web interface to view all captured emails. From 9ab28d606af35cdace55be4921105516360db310 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 13:38:53 +1200 Subject: [PATCH 2/9] Add privacy classes for screenshots --- server/ui-src/App.vue | 6 +++--- server/ui-src/assets/styles.scss | 6 ++++++ server/ui-src/templates/Message.vue | 8 ++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/server/ui-src/App.vue b/server/ui-src/App.vue index 83cc588..ace30a2 100644 --- a/server/ui-src/App.vue +++ b/server/ui-src/App.vue @@ -436,13 +436,13 @@ export default { {{ getRelativeCreated(message) }} -
+
{{ message.From.Name ? message.From.Name : message.From.Address }}
-
+
{{ message.From.Name ? message.From.Name : message.From.Address }}
-
+
{{ getPrimaryEmailTo(message) }} [+{{message.To.length - 1}}] diff --git a/server/ui-src/assets/styles.scss b/server/ui-src/assets/styles.scss index 15c78b0..10f35a4 100644 --- a/server/ui-src/assets/styles.scss +++ b/server/ui-src/assets/styles.scss @@ -57,3 +57,9 @@ .list-group-item:first-child { border-top: 0; } + +body.blur { + .privacy { + filter: blur(3px); + } +} diff --git a/server/ui-src/templates/Message.vue b/server/ui-src/templates/Message.vue index 77b2f3a..1370014 100644 --- a/server/ui-src/templates/Message.vue +++ b/server/ui-src/templates/Message.vue @@ -78,7 +78,7 @@ export default { From - + {{ message.From.Name + " " }} <{{ message.From.Address }}> @@ -90,7 +90,7 @@ export default { To - + {{ t.Name + " <" + t.Address +">" }} @@ -99,7 +99,7 @@ export default { CC - + {{ t.Name + " <" + t.Address +">" }} @@ -108,7 +108,7 @@ export default { CC - + {{ t.Name + " <" + t.Address +">" }} From 486388a7988427a0140a6f89d1d14c4253202f06 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 22:35:42 +1200 Subject: [PATCH 3/9] Fix typos --- cmd/root.go | 2 +- storage/database.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index da09ca3..30fe20c 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -116,7 +116,7 @@ func init() { config.UISSLKey = os.Getenv("MP_SSL_KEY") } - rootCmd.Flags().StringVarP(&config.DataDir, "data", "d", config.DataDir, "Optional path to store peristent data") + rootCmd.Flags().StringVarP(&config.DataDir, "data", "d", config.DataDir, "Optional path to store persistent data") rootCmd.Flags().StringVarP(&config.SMTPListen, "smtp", "s", config.SMTPListen, "SMTP bind interface and port") rootCmd.Flags().StringVarP(&config.HTTPListen, "listen", "l", config.HTTPListen, "HTTP bind interface and port for UI") rootCmd.Flags().IntVarP(&config.MaxMessages, "max", "m", config.MaxMessages, "Max number of messages to store") diff --git a/storage/database.go b/storage/database.go index 7b2c31b..cd1c516 100644 --- a/storage/database.go +++ b/storage/database.go @@ -65,7 +65,7 @@ func InitDB() error { // method invoked upon seeing signal go func() { s := <-sigs - logger.Log().Infof("[db] got %s signal, saving persistant data & shutting down", s) + logger.Log().Infof("[db] got %s signal, saving persistent data & shutting down", s) if err := db.Close(); err != nil { logger.Log().Errorf("[db] %s", err.Error()) } From 15859f7be9f6fef815e6ad38f76634618e1dc6e0 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 22:38:23 +1200 Subject: [PATCH 4/9] Add Go Report Card --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9f0bf97..74a5d97 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ ![Build status](https://github.com/axllent/mailpit/actions/workflows/release-build.yml/badge.svg) ![Docker builds](https://github.com/axllent/mailpit/actions/workflows/build-docker.yml/badge.svg) ![CodeQL](https://github.com/axllent/mailpit/actions/workflows/codeql-analysis.yml/badge.svg) +[![Go Report Card](https://goreportcard.com/badge/github.com/axllent/mailpit)](https://goreportcard.com/report/github.com/axllent/mailpit) Mailpit is an email testing tool for developers. From 444b65d3713bc274c6ee27551d3ce0ef1f3837c8 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 23:07:36 +1200 Subject: [PATCH 5/9] Testing: Database total/unread statistics tests --- storage/database_test.go | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/storage/database_test.go b/storage/database_test.go index 5f58e43..ac23dc2 100644 --- a/storage/database_test.go +++ b/storage/database_test.go @@ -12,6 +12,7 @@ import ( "github.com/axllent/mailpit/config" "github.com/jhillyerd/enmime" + "github.com/ostafen/clover/v2" ) var ( @@ -25,6 +26,9 @@ func TestTextEmailInserts(t *testing.T) { RepeatTest: start := time.Now() + + assertEqualStats(t, 0, 0) + for i := 0; i < 1000; i++ { if _, err := Store(DefaultMailbox, testTextEmail); err != nil { t.Log("error ", err) @@ -42,6 +46,8 @@ RepeatTest: t.Logf("inserted 1,000 text emails in %s\n", time.Since(start)) + assertEqualStats(t, 1000, 1000) + delStart := time.Now() if err := DeleteAllMessages(DefaultMailbox); err != nil { t.Log("error ", err) @@ -58,6 +64,8 @@ RepeatTest: t.Logf("deleted 1,000 text emails in %s\n", time.Since(delStart)) + assertEqualStats(t, 0, 0) + db.Close() if config.DataDir == "" { setup(true) @@ -74,6 +82,9 @@ func TestMimeEmailInserts(t *testing.T) { RepeatTest: start := time.Now() + + assertEqualStats(t, 0, 0) + for i := 0; i < 1000; i++ { if _, err := Store(DefaultMailbox, testMimeEmail); err != nil { t.Log("error ", err) @@ -91,6 +102,8 @@ RepeatTest: t.Logf("inserted 1,000 emails with mime attachments in %s\n", time.Since(start)) + assertEqualStats(t, 1000, 1000) + delStart := time.Now() if err := DeleteAllMessages(DefaultMailbox); err != nil { t.Log("error ", err) @@ -107,6 +120,8 @@ RepeatTest: t.Logf("deleted 1,000 mime emails in %s\n", time.Since(delStart)) + assertEqualStats(t, 0, 0) + db.Close() if config.DataDir == "" { setup(true) @@ -158,6 +173,50 @@ RepeatTest: } } +func TestDatabaseStats(t *testing.T) { + setup(false) + t.Log("Testing database stats") + assertEqualStats(t, 0, 0) + + for i := 0; i < 100; i++ { + if _, err := Store(DefaultMailbox, testTextEmail); err != nil { + t.Log("error ", err) + t.Fail() + } + } + + assertEqualStats(t, 100, 100) + + // mark 10 as read + docs, err := db.FindAll( + clover.NewQuery(DefaultMailbox). + Limit(10), + ) + if err != nil { + t.Log("error ", err) + t.Fail() + } + + for _, d := range docs { + _, err := GetMessage(DefaultMailbox, d.ObjectId()) + if err != nil { + t.Log("error ", err) + t.Fail() + } + } + + assertEqualStats(t, 100, 90) + + if err := MarkAllRead(DefaultMailbox); err != nil { + t.Log("error ", err) + t.Fail() + } + + assertEqualStats(t, 100, 0) + + db.Close() +} + func TestSearch(t *testing.T) { setup(false) t.Log("Testing memory storage") @@ -296,3 +355,14 @@ func assertEqual(t *testing.T, a interface{}, b interface{}, message string) { message = fmt.Sprintf("%s: \"%v\" != \"%v\"", message, a, b) t.Fatal(message) } + +func assertEqualStats(t *testing.T, total int, unread int) { + s := StatsGet(DefaultMailbox) + if total != s.Total { + t.Fatal(fmt.Sprintf("Incorrect total mailbox stats: \"%d\" != \"%d\"", total, s.Total)) + } + + if unread != s.Unread { + t.Fatal(fmt.Sprintf("Incorrect unread mailbox stats: \"%d\" != \"%d\"", unread, s.Unread)) + } +} From 49bc62f0aa2872347d77e6503c5d412393bde03f Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Mon, 8 Aug 2022 23:16:48 +1200 Subject: [PATCH 6/9] Update screenshot --- screenshot.png | Bin 43298 -> 64253 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshot.png b/screenshot.png index ef3a4fbd978ba83d9b035b3bf2acaaad5fb1b2e5..2c8a06553661221391d69189f48c0329cde3de88 100644 GIT binary patch literal 64253 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 literal 43298 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 p@#6bDY From cc15ada3043b71986a2d48df8027b0e41ba7df5f Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Wed, 10 Aug 2022 09:48:06 +1200 Subject: [PATCH 7/9] Testing: Enable testing on feature branches --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2006efd..237ff5a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,7 +3,7 @@ on: pull_request: branches: [ develop ] push: - branches: [ develop ] + branches: [ develop, 'feature/**' ] jobs: test: strategy: From 86cc237c78778c27950906111dc797a87319ec01 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Wed, 10 Aug 2022 14:33:16 +1200 Subject: [PATCH 8/9] Feature: Email compression in storage Reduces storage requirements +-25% & speeds up database read & writes by between 25-33%, depending on email content (attachments). --- data/message.go | 1 - go.mod | 2 +- storage/database.go | 44 +++++++++++++++++++++++++--------------- storage/database_test.go | 33 +++++++++++++++--------------- storage/utils.go | 5 ++--- 5 files changed, 48 insertions(+), 37 deletions(-) diff --git a/data/message.go b/data/message.go index b08724a..b193402 100644 --- a/data/message.go +++ b/data/message.go @@ -17,7 +17,6 @@ type Message struct { Bcc []*mail.Address Subject string Date time.Time - Created time.Time Text string HTML string Size int diff --git a/go.mod b/go.mod index bdf7a07..2cf68d8 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/gorilla/websocket v1.5.0 github.com/jhillyerd/enmime v0.10.0 github.com/k3a/html2text v1.0.8 + github.com/klauspost/compress v1.15.9 github.com/mhale/smtpd v0.8.0 github.com/ostafen/clover/v2 v2.0.0-alpha.2 github.com/sirupsen/logrus v1.9.0 @@ -35,7 +36,6 @@ require ( github.com/google/orderedcode v0.0.1 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba // indirect - github.com/klauspost/compress v1.15.9 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect diff --git a/storage/database.go b/storage/database.go index cd1c516..063e4ab 100644 --- a/storage/database.go +++ b/storage/database.go @@ -17,6 +17,7 @@ import ( "github.com/axllent/mailpit/logger" "github.com/axllent/mailpit/server/websockets" "github.com/jhillyerd/enmime" + "github.com/klauspost/compress/zstd" "github.com/ostafen/clover/v2" ) @@ -28,6 +29,10 @@ var ( count int per100start = time.Now() + + // zstd encoder & decoder + encoder, _ = zstd.NewWriter(nil) + decoder, _ = zstd.NewReader(nil) ) // CloverStore struct @@ -219,7 +224,10 @@ func Store(mailbox string, b []byte) (string, error) { raw := clover.NewDocument() raw.Set("_id", id) raw.Set("Created", time.Now()) - raw.Set("Data", string(b)) + + compressed := encoder.EncodeAll(b, make([]byte, 0, len(b))) + raw.Set("Email", string(compressed)) + _, err = db.InsertOne(mailbox+"_data", raw) if err != nil { // delete the summary because the data insert failed @@ -369,18 +377,12 @@ func CountUnread(mailbox string) (int, error) { func GetMessage(mailbox, id string) (*data.Message, error) { mailbox = sanitizeMailboxName(mailbox) - q, err := db.FindById(mailbox+"_data", id) - if err != nil { - return nil, err - } - - if q == nil { + raw, err := GetMessageRaw(mailbox, id) + if err != nil || raw == nil { return nil, errors.New("message not found") } - raw := q.Get("Data").(string) - - r := bytes.NewReader([]byte(raw)) + r := bytes.NewReader(raw) env, err := enmime.ReadEnvelope(r) if err != nil { @@ -398,9 +400,8 @@ func GetMessage(mailbox, id string) (*data.Message, error) { date, _ := env.Date() obj := data.Message{ - ID: q.ObjectId(), + ID: id, Read: true, - Created: q.Get("Created").(time.Time), From: from, Date: date, To: addressToSlice(env, "To"), @@ -456,12 +457,12 @@ func GetMessage(mailbox, id string) (*data.Message, error) { func GetAttachmentPart(mailbox, id, partID string) (*enmime.Part, error) { mailbox = sanitizeMailboxName(mailbox) - data, err := GetMessageRaw(mailbox, id) + raw, err := GetMessageRaw(mailbox, id) if err != nil { return nil, err } - r := bytes.NewReader(data) + r := bytes.NewReader(raw) env, err := enmime.ReadEnvelope(r) if err != nil { @@ -502,9 +503,20 @@ func GetMessageRaw(mailbox, id string) ([]byte, error) { return nil, errors.New("message not found") } - data := q.Get("Data").(string) + var raw []byte - return []byte(data), err + if q.Has("Email") { + msg := q.Get("Email").(string) + raw, err = decoder.DecodeAll([]byte(msg), nil) + if err != nil { + return nil, fmt.Errorf("error decompressing message: %s", err.Error()) + } + } else { + // deprecated 2022/08/10 - can be eventually removed + raw = []byte(q.Get("Data").(string)) + } + + return raw, err } // UnreadMessage will delete all messages from a mailbox diff --git a/storage/database_test.go b/storage/database_test.go index ac23dc2..e38b45a 100644 --- a/storage/database_test.go +++ b/storage/database_test.go @@ -18,6 +18,7 @@ import ( var ( testTextEmail []byte testMimeEmail []byte + testRuns = 1000 ) func TestTextEmailInserts(t *testing.T) { @@ -29,7 +30,7 @@ RepeatTest: assertEqualStats(t, 0, 0) - for i := 0; i < 1000; i++ { + for i := 0; i < testRuns; i++ { if _, err := Store(DefaultMailbox, testTextEmail); err != nil { t.Log("error ", err) t.Fail() @@ -42,11 +43,11 @@ RepeatTest: t.Fail() } - assertEqual(t, count, 1000, "incorrect number of text emails stored") + assertEqual(t, count, testRuns, "incorrect number of text emails stored") - t.Logf("inserted 1,000 text emails in %s\n", time.Since(start)) + t.Logf("inserted %d text emails in %s", testRuns, time.Since(start)) - assertEqualStats(t, 1000, 1000) + assertEqualStats(t, testRuns, testRuns) delStart := time.Now() if err := DeleteAllMessages(DefaultMailbox); err != nil { @@ -62,7 +63,7 @@ RepeatTest: assertEqual(t, count, 0, "incorrect number of text emails deleted") - t.Logf("deleted 1,000 text emails in %s\n", time.Since(delStart)) + t.Logf("deleted %d text emails in %s", testRuns, time.Since(delStart)) assertEqualStats(t, 0, 0) @@ -85,7 +86,7 @@ RepeatTest: assertEqualStats(t, 0, 0) - for i := 0; i < 1000; i++ { + for i := 0; i < testRuns; i++ { if _, err := Store(DefaultMailbox, testMimeEmail); err != nil { t.Log("error ", err) t.Fail() @@ -98,11 +99,11 @@ RepeatTest: t.Fail() } - assertEqual(t, count, 1000, "incorrect number of mime emails stored") + assertEqual(t, count, testRuns, "incorrect number of emails with mime attachments stored") - t.Logf("inserted 1,000 emails with mime attachments in %s\n", time.Since(start)) + t.Logf("inserted %d emails with mime attachments in %s", testRuns, time.Since(start)) - assertEqualStats(t, 1000, 1000) + assertEqualStats(t, testRuns, testRuns) delStart := time.Now() if err := DeleteAllMessages(DefaultMailbox); err != nil { @@ -116,9 +117,9 @@ RepeatTest: t.Fail() } - assertEqual(t, count, 0, "incorrect number of mime emails deleted") + assertEqual(t, count, 0, "incorrect number of emails with mime attachments deleted") - t.Logf("deleted 1,000 mime emails in %s\n", time.Since(delStart)) + t.Logf("deleted %d emails with mime attachments in %s", testRuns, time.Since(delStart)) assertEqualStats(t, 0, 0) @@ -222,7 +223,7 @@ func TestSearch(t *testing.T) { t.Log("Testing memory storage") RepeatTest: - for i := 0; i < 1000; i++ { + for i := 0; i < testRuns; i++ { msg := enmime.Builder(). From(fmt.Sprintf("From %d", i), fmt.Sprintf("from-%d@example.com", i)). Subject(fmt.Sprintf("Subject line %d end", i)). @@ -248,7 +249,7 @@ RepeatTest: } } - for i := 1; i < 101; i++ { + for i := 1; i < 51; i++ { // search a random something that will return a single result searchIndx := rand.Intn(4) + 1 var search string @@ -263,7 +264,7 @@ RepeatTest: search = fmt.Sprintf("the email body %d jdsauk dwqmdqw", i) } - summaries, err := Search(DefaultMailbox, search, 0, 200) + summaries, err := Search(DefaultMailbox, search, 0, 10) if err != nil { t.Log("error ", err) t.Fail() @@ -279,12 +280,12 @@ RepeatTest: } // search something that will return 200 rsults - summaries, err := Search(DefaultMailbox, "This is the email body", 0, 200) + summaries, err := Search(DefaultMailbox, "This is the email body", 0, 50) if err != nil { t.Log("error ", err) t.Fail() } - assertEqual(t, len(summaries), 200, "200 search results expected") + assertEqual(t, len(summaries), 50, "50 search results expected") db.Close() diff --git a/storage/utils.go b/storage/utils.go index 2cd2c19..7b5f20d 100644 --- a/storage/utils.go +++ b/storage/utils.go @@ -56,11 +56,10 @@ func cleanString(str string) string { return strings.ToLower(strings.Join(strings.Fields(strings.TrimSpace(str)), " ")) } -// Auto-prune runs every 5 minutes to automatically delete oldest messages +// Auto-prune runs every minute to automatically delete oldest messages // if total is greater than the threshold func pruneCron() { for { - // time.Sleep(5 * 60 * time.Second) time.Sleep(60 * time.Second) mailboxes, err := db.ListCollections() if err != nil { @@ -94,7 +93,7 @@ func pruneCron() { } // SanitizeMailboxName returns a clean mailbox name -// allowing only `alphanumeric` characters and `-`` +// allowing only `alphanumeric` characters and `-“ func sanitizeMailboxName(mailbox string) string { re := regexp.MustCompile(`[^a-zA-Z0-9\-]`) From 799987ecb19aa16cc31cbff5d7d96a99ef0fd3ee Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Wed, 10 Aug 2022 20:30:01 +1200 Subject: [PATCH 9/9] Release 0.1.4 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f5311d..f1b9da5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ Notable changes to Mailpit will be documented in this file. +## 0.1.4 + +### Feature +- Email compression in storage + +### Testing +- Enable testing on feature branches +- Database total/unread statistics tests + + ## 0.1.3 ### Feature