1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2026-01-27 20:45:56 +00:00

smtp: Distinguish permanent errors

This patch makes the SMTP courier distinguish permanent errors, so the queue
can decide whether to retry or not.

It's based on the SMTP replies: 5xy is considerent permanent, anything else is
transient (including errors other than protocol issues).
This commit is contained in:
Alberto Bertogli
2016-10-02 01:16:39 +01:00
parent 7cbe6a5076
commit 0e41821779
3 changed files with 41 additions and 4 deletions

View File

@@ -107,21 +107,21 @@ retry:
from = ""
}
if err = c.MailAndRcpt(from, to); err != nil {
return tr.Errorf("MAIL+RCPT %v", err), false
return tr.Errorf("MAIL+RCPT %v", err), smtp.IsPermanent(err)
}
w, err := c.Data()
if err != nil {
return tr.Errorf("DATA %v", err), false
return tr.Errorf("DATA %v", err), smtp.IsPermanent(err)
}
_, err = w.Write(data)
if err != nil {
return tr.Errorf("DATA writing: %v", err), false
return tr.Errorf("DATA writing: %v", err), smtp.IsPermanent(err)
}
err = w.Close()
if err != nil {
return tr.Errorf("DATA closing %v", err), false
return tr.Errorf("DATA closing %v", err), smtp.IsPermanent(err)
}
c.Quit()