diff --git a/server/server.go b/server/server.go index 46ed9e5..362c6fd 100644 --- a/server/server.go +++ b/server/server.go @@ -201,6 +201,21 @@ func (session *Session) Data(r io.Reader) error { } }() + n, err := io.Copy(f, r) + if err != nil { + session.log.Error("failed to receive message data to temporary data file", zap.Error(err)) + + return ErrBadGateway + } + + session.log.Sugar().Debugf("received message with %d bytes", n) + + if _, err := f.Seek(0, 0); err != nil { + session.log.Error("failed to seek to beginning of temporary data file", zap.Error(err)) + + return ErrBadGateway + } + _, action, err := session.rspam.BodyReadFrom(f) if err != nil { session.log.Error("rspamd failed to process message body", zap.Error(err))