Parse to and subject mail headers

This commit is contained in:
Torjus Håkestad 2021-11-23 01:23:45 +01:00
parent 603d70334e
commit b70d057cb8
2 changed files with 14 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package smtp
import ( import (
"bytes" "bytes"
"io" "io"
"net/mail"
"time" "time"
smtplib "github.com/emersion/go-smtp" smtplib "github.com/emersion/go-smtp"
@ -70,11 +71,22 @@ func (sess *session) Data(r io.Reader) error {
sess.mail.Data = buf.String() sess.mail.Data = buf.String()
var toAddr string
var subject string
// Parse mail headers
msg, err := mail.ReadMessage(&buf)
if err != nil {
sess.honeypot.Logger.Infow("Unable to parse mail.", "error", err, "remote_addr", sess.remoteAddr)
} else {
toAddr = msg.Header.Get("To")
subject = msg.Header.Get("Subject")
}
if err := sess.honeypot.Store.AddMailData(&sess.mail); err != nil { if err := sess.honeypot.Store.AddMailData(&sess.mail); err != nil {
sess.honeypot.Logger.Warnw("Error storing maildata.", "error", err, "remote_addr", sess.remoteAddr) sess.honeypot.Logger.Warnw("Error storing maildata.", "error", err, "remote_addr", sess.remoteAddr)
return smtplib.ErrDataTooLarge return smtplib.ErrDataTooLarge
} }
sess.honeypot.Logger.Infow("Mail received", "from", sess.mail.From, "remote_addr", sess.remoteAddr, "size", len(sess.mail.Data)) sess.honeypot.Logger.Infow("Mail received", "from", sess.mail.From, "to", toAddr, "subject", subject, "remote_addr", sess.remoteAddr, "size", len(sess.mail.Data))
return nil return nil
} }

View File

@ -5,7 +5,7 @@ import (
"runtime" "runtime"
) )
var Version = "v0.1.25" var Version = "v0.1.26"
var Build string var Build string
func FullVersion() string { func FullVersion() string {