list

server

This is the main dovel repository, it has the Go code to run dovel SMTP server.

curl https://dovel.email/server.tar tar

648b63c

Author: bmayer3 (bmayer@sibros.tech)

Date: Thu Mar 16 17:10:09 2023 -0300

Parent: 7d817ed

Fixed saving email

Diff

interfaces/backend/backend.go

commit 648b63c0964193005be8d63f5bbe0e23666812b4
Author: bmayer3 <bmayer@sibros.tech>
Date:   Thu Mar 16 17:10:09 2023 -0300

    Fixed saving email

diff --git a/interfaces/backend/backend.go b/interfaces/backend/backend.go
index 6dd9d7c..6348a25 100644
--- a/interfaces/backend/backend.go
+++ b/interfaces/backend/backend.go
@@ -58,6 +58,7 @@ func (s Session) Data(r io.Reader) error {
 
 	// get user from to field
 	mail := interfaces.ToEmail(email)
+	mail.Raw = content
 	for _, to := range mail.To {
 		userDomain := strings.Split(to, "@")
 		handler, ok := s.handlers[userDomain[1]]
@@ -179,6 +180,7 @@ func (b Backend) SendHandler(saveFunction config.Handler) http.HandlerFunc {
 			println("failed to sign body:", err.Error())
 		}
 		email.Body = payload.String()
+		email.Raw = []byte(email.Body)
 
 		// dns mx for email
 		for _, to := range email.To {
@@ -201,7 +203,7 @@ func (b Backend) SendHandler(saveFunction config.Handler) http.HandlerFunc {
 				nil,
 				email.From,
 				[]string{to},
-				bytes.NewReader([]byte(email.Body)),
+				bytes.NewReader(email.Raw),
 			)
 			if err != nil {
 				println("sendMail error: " + err.Error())

interfaces/file/file.go

commit 648b63c0964193005be8d63f5bbe0e23666812b4
Author: bmayer3 <bmayer@sibros.tech>
Date:   Thu Mar 16 17:10:09 2023 -0300

    Fixed saving email

diff --git a/interfaces/file/file.go b/interfaces/file/file.go
index 50d33b4..0f3579f 100644
--- a/interfaces/file/file.go
+++ b/interfaces/file/file.go
@@ -105,7 +105,7 @@ func (f FileHandler) Save(email interfaces.Email) error {
 	}
 	defer file.Close()
 
-	_, err = file.Write([]byte(email.Body))
+	_, err = file.Write(email.Raw)
 	if err != nil {
 		println("file write", err.Error())
 		return err
@@ -125,7 +125,7 @@ func (f FileHandler) SaveSent(email interfaces.Email) error {
 	}
 	defer file.Close()
 
-	_, err = file.Write([]byte(email.Body))
+	_, err = file.Write(email.Raw)
 	if err != nil {
 		println("file write", err.Error())
 		return err

interfaces/gwi/gwi.go

commit 648b63c0964193005be8d63f5bbe0e23666812b4
Author: bmayer3 <bmayer@sibros.tech>
Date:   Thu Mar 16 17:10:09 2023 -0300

    Fixed saving email

diff --git a/interfaces/gwi/gwi.go b/interfaces/gwi/gwi.go
index 8966409..cc98d1d 100644
--- a/interfaces/gwi/gwi.go
+++ b/interfaces/gwi/gwi.go
@@ -54,7 +54,7 @@ func (g GWIConfig) GwiEmailHandler(email interfaces.Email) error {
 	}
 	defer mailFile.Close()
 
-	_, err = mailFile.Write([]byte(email.Body))
+	_, err = mailFile.Write(email.Raw)
 	if err != nil {
 		println("write mail file", err.Error())
 		return err

interfaces/main.go

commit 648b63c0964193005be8d63f5bbe0e23666812b4
Author: bmayer3 <bmayer@sibros.tech>
Date:   Thu Mar 16 17:10:09 2023 -0300

    Fixed saving email

diff --git a/interfaces/main.go b/interfaces/main.go
index d636343..5f56421 100644
--- a/interfaces/main.go
+++ b/interfaces/main.go
@@ -53,6 +53,7 @@ type Email struct {
 	Subject     string
 	Body        string
 	Attachments map[string]Attachment
+	Raw         []byte
 }
 
 func ToEmail(mail parsemail.Email) Email {