Commit a47faf89 authored by Alberto Bertogli's avatar Alberto Bertogli

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.
parent 07187493
Pipeline #91528570 passed with stages
in 8 minutes and 52 seconds
......@@ -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,
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)
}"Queued from %s to %s - %s", c.mailFrom, c.rcptTo, msgID)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment