aboutsummaryrefslogtreecommitdiffstats
path: root/sink.c
diff options
context:
space:
mode:
authorMatthias Andree <matthias.andree@gmx.de>2009-05-25 15:56:52 +0000
committerMatthias Andree <matthias.andree@gmx.de>2009-05-25 15:56:52 +0000
commitd56ecd638f753e4430a9f7500ceb4867997af266 (patch)
treedbf1a0df2eb60efbd13185c9c89a481a308a4313 /sink.c
parentbd2e568da48acbae7e0b43c48226541220b85340 (diff)
downloadfetchmail-d56ecd638f753e4430a9f7500ceb4867997af266.tar.gz
fetchmail-d56ecd638f753e4430a9f7500ceb4867997af266.tar.bz2
fetchmail-d56ecd638f753e4430a9f7500ceb4867997af266.zip
Always treat 530 SMTP codes as temporary.
These are usually configuration errors (missing TLS/SSL). Patch partially taken from Petr Cerny, Novell's Bugzilla 246829. svn path=/branches/BRANCH_6-3/; revision=5339
Diffstat (limited to 'sink.c')
-rw-r--r--sink.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sink.c b/sink.c
index 78630a02..3db9def4 100644
--- a/sink.c
+++ b/sink.c
@@ -539,6 +539,18 @@ static int handle_smtp_report(struct query *ctl, struct msgblk *msg)
free(responses[0]);
return(PS_REFUSED);
+ case 530: /* must issue STARTTLS error */
+ /*
+ * Some SMTP servers insist on encrypted communication
+ * Let's set PS_TRANSIENT, otherwise all messages to be sent
+ * over such server would be blackholed - see RFC 3207.
+ */
+ if (outlevel > O_SILENT)
+ report_complete(stdout,
+ GT_("SMTP server requires STARTTLS, keeping message.\n"));
+ free(responses[0]);
+ return(PS_TRANSIENT);
+
default:
/* bounce non-transient errors back to the sender */
if (smtperr >= 500 && smtperr <= 599)