MCPcopy Create free account
hub / github.com/foxcpp/maddy / CheckBody

Method CheckBody

internal/check/rspamd/rspamd.go:218–366  ·  view source on GitHub ↗
(ctx context.Context, hdr textproto.Header, body buffer.Buffer)

Source from the content-addressed store, hash-verified

216}
217
218func (s *state) CheckBody(ctx context.Context, hdr textproto.Header, body buffer.Buffer) module.CheckResult {
219 bodyR, err := body.Open()
220 if err != nil {
221 return module.CheckResult{
222 Reject: true,
223 Reason: exterrors.WithFields(err, map[string]interface{}{"check": modName}),
224 }
225 }
226
227 var buf bytes.Buffer
228 if err := textproto.WriteHeader(&buf, hdr); err != nil {
229 return module.CheckResult{
230 Reject: true,
231 Reason: exterrors.WithFields(err, map[string]interface{}{"check": modName}),
232 }
233 }
234
235 r, err := http.NewRequest("POST", s.c.apiPath+"/checkv2", io.MultiReader(&buf, bodyR))
236 if err != nil {
237 return module.CheckResult{
238 Reject: true,
239 Reason: exterrors.WithFields(err, map[string]interface{}{"check": modName}),
240 }
241 }
242
243 r.Header.Add("Pass", "all") // TODO: does that need to be configurable?
244 // TODO: include version (needs maddy.Version moved somewhere to break circular dependency)
245 r.Header.Add("User-Agent", "maddy")
246 if s.c.tag != "" {
247 r.Header.Add("MTA-Tag", s.c.tag)
248 }
249 if s.c.settingsID != "" {
250 r.Header.Add("Settings-ID", s.c.settingsID)
251 }
252 if s.c.mtaName != "" {
253 r.Header.Add("MTA-Name", s.c.mtaName)
254 }
255
256 addConnHeaders(r, s.msgMeta, s.mailFrom, s.rcpt)
257 r.Header.Add("Content-Length", strconv.Itoa(body.Len()))
258
259 resp, err := s.c.client.Do(r)
260 if err != nil {
261 return s.c.ioErrAction.Apply(module.CheckResult{
262 Reason: &exterrors.SMTPError{
263 Code: 451,
264 EnhancedCode: exterrors.EnhancedCode{4, 7, 0},
265 Message: "Internal error during policy check",
266 CheckName: modName,
267 Err: err,
268 },
269 })
270 }
271 if resp.StatusCode/100 != 2 {
272 return s.c.errorRespAction.Apply(module.CheckResult{
273 Reason: &exterrors.SMTPError{
274 Code: 451,
275 EnhancedCode: exterrors.EnhancedCode{4, 7, 0},

Callers

nothing calls this directly

Calls 9

WithFieldsFunction · 0.92
addConnHeadersFunction · 0.85
AddMethod · 0.80
MsgMethod · 0.80
OpenMethod · 0.65
LenMethod · 0.65
CloseMethod · 0.65
ApplyMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected