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

Method CheckBody

internal/check/authorize_sender/authorize_sender.go:226–305  ·  view source on GitHub ↗
(ctx context.Context, hdr textproto.Header, _ buffer.Buffer)

Source from the content-addressed store, hash-verified

224}
225
226func (s *state) CheckBody(ctx context.Context, hdr textproto.Header, _ buffer.Buffer) module.CheckResult {
227 if !s.c.checkHeader {
228 return module.CheckResult{}
229 }
230 if s.msgMeta.Conn == nil {
231 s.log.Msg("skipping locally generated message")
232 return module.CheckResult{}
233 }
234 authName := s.msgMeta.Conn.AuthUser
235
236 fromHdr := hdr.Get("From")
237 if fromHdr == "" {
238 return s.c.errAction.Apply(module.CheckResult{
239 Reason: &exterrors.SMTPError{
240 Code: 550,
241 EnhancedCode: exterrors.EnhancedCode{5, 7, 0},
242 Message: "Missing From header",
243 CheckName: modName,
244 }})
245 }
246 list, err := mail.ParseAddressList(fromHdr)
247 if err != nil || len(list) == 0 {
248 return s.c.errAction.Apply(module.CheckResult{
249 Reason: &exterrors.SMTPError{
250 Code: 550,
251 EnhancedCode: exterrors.EnhancedCode{5, 7, 0},
252 Message: "Malformed From header",
253 CheckName: modName,
254 Err: err,
255 }})
256 }
257 fromEmail := list[0].Address
258 if len(list) > 1 {
259 return s.c.errAction.Apply(module.CheckResult{
260 Reason: &exterrors.SMTPError{
261 Code: 550,
262 EnhancedCode: exterrors.EnhancedCode{5, 7, 0},
263 Message: "Multiple From addresses are not allowed",
264 CheckName: modName,
265 Err: err,
266 }})
267 }
268
269 var senderAddr string
270 if senderHdr := hdr.Get("Sender"); senderHdr != "" {
271 sender, err := mail.ParseAddress(senderHdr)
272 if err != nil {
273 return s.c.errAction.Apply(module.CheckResult{
274 Reason: &exterrors.SMTPError{
275 Code: 550,
276 EnhancedCode: exterrors.EnhancedCode{5, 7, 0},
277 Message: "Malformed Sender header",
278 CheckName: modName,
279 Err: err,
280 }})
281 }
282 senderAddr = sender.Address
283 }

Callers

nothing calls this directly

Calls 4

authzSenderMethod · 0.95
MsgMethod · 0.80
GetMethod · 0.45
ApplyMethod · 0.45

Tested by

no test coverage detected