1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-17 14:37:02 +00:00

smtpsrv: Failures to enqueue are transient, not permanent

If we fail to put the message in the queue (e.g. because we're out of
storage space, or the aliases-resolve hook errored out), it should be
considered a transient failure.

Currently we return a permanent error, which is misleading, as we want
clients to retry in these situations.

So this patch changes the error returned accordingly.
This commit is contained in:
Alberto Bertogli
2019-10-23 22:33:42 +01:00
parent 0718749314
commit a47faf89a4

View File

@@ -604,9 +604,10 @@ func (c *Conn) DATA(params string) (code int, msg string) {
// There are no partial failures here: we put it in the queue, and then if
// individual deliveries fail, we report via email.
// If we fail to queue, return a transient error.
msgID, err := c.queue.Put(c.mailFrom, c.rcptTo, c.data)
if err != nil {
return 554, fmt.Sprintf("5.3.0 Failed to queue message: %v", err)
return 451, fmt.Sprintf("4.3.0 Failed to queue message: %v", err)
}
c.tr.Printf("Queued from %s to %s - %s", c.mailFrom, c.rcptTo, msgID)