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

Method wrapClientErr

internal/smtpconn/smtpconn.go:102–162  ·  view source on GitHub ↗
(err error, serverName string)

Source from the content-addressed store, hash-verified

100}
101
102func (c *C) wrapClientErr(err error, serverName string) error {
103 if err == nil {
104 return nil
105 }
106
107 switch err := err.(type) {
108 case TLSError:
109 return err
110 case *exterrors.SMTPError:
111 return err
112 case *smtp.SMTPError:
113 msg := err.Message
114 if c.AddrInSMTPMsg {
115 msg = serverName + " said: " + err.Message
116 }
117
118 if err.Code == 552 {
119 err.Code = 452
120 err.EnhancedCode[0] = 4
121 c.Log.Msg("SMTP code 552 rewritten to 452 per RFC 5321 Section 4.5.3.1.10")
122 }
123
124 return &exterrors.SMTPError{
125 Code: err.Code,
126 EnhancedCode: exterrors.EnhancedCode(err.EnhancedCode),
127 Message: msg,
128 Misc: map[string]interface{}{
129 "remote_server": serverName,
130 },
131 Err: err,
132 }
133 case *net.OpError:
134 if _, ok := err.Err.(*net.DNSError); ok {
135 reason, misc := exterrors.UnwrapDNSErr(err)
136 misc["remote_server"] = err.Addr
137 misc["io_op"] = err.Op
138 return &exterrors.SMTPError{
139 Code: exterrors.SMTPCode(err, 450, 550),
140 EnhancedCode: exterrors.SMTPEnchCode(err, exterrors.EnhancedCode{0, 4, 4}),
141 Message: "DNS error",
142 Err: err,
143 Reason: reason,
144 Misc: misc,
145 }
146 }
147 return &exterrors.SMTPError{
148 Code: 450,
149 EnhancedCode: exterrors.EnhancedCode{4, 4, 2},
150 Message: "Network I/O error",
151 Err: err,
152 Misc: map[string]interface{}{
153 "remote_addr": err.Addr,
154 "io_op": err.Op,
155 },
156 }
157 default:
158 return exterrors.WithFields(err, map[string]interface{}{
159 "remote_server": serverName,

Callers 7

ConnectMethod · 0.95
ConnectLMTPMethod · 0.95
MailMethod · 0.95
RcptMethod · 0.95
DataMethod · 0.95
LMTPDataMethod · 0.95
CloseMethod · 0.95

Calls 6

EnhancedCodeTypeAlias · 0.92
UnwrapDNSErrFunction · 0.92
SMTPCodeFunction · 0.92
SMTPEnchCodeFunction · 0.92
WithFieldsFunction · 0.92
MsgMethod · 0.80

Tested by

no test coverage detected