diff options
Diffstat (limited to 'mfd/engine.c')
-rw-r--r-- | mfd/engine.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mfd/engine.c b/mfd/engine.c index e1f2de06..c9741c1b 100644 --- a/mfd/engine.c +++ b/mfd/engine.c | |||
@@ -271,6 +271,7 @@ mfl_smtp_io_callback(void *data, const char *key, const char *value) | |||
271 | set_last_poll_recv(env, value); | 271 | set_last_poll_recv(env, value); |
272 | } | 272 | } |
273 | 273 | ||
274 | |||
274 | /* Method "strict". Verifies whether EMAIL is understood either by | 275 | /* Method "strict". Verifies whether EMAIL is understood either by |
275 | host CLIENT_ADDR or one of MX servers of its domain */ | 276 | host CLIENT_ADDR or one of MX servers of its domain */ |
276 | mf_status | 277 | mf_status |
@@ -299,6 +300,8 @@ method_strict(eval_environ_t env, char *email, char *client_addr, | |||
299 | 300 | ||
300 | if (mf_resolved(rc)) | 301 | if (mf_resolved(rc)) |
301 | cache_insert2(email, client_addr, rc); | 302 | cache_insert2(email, client_addr, rc); |
303 | else if (rc == mf_temp_failure) | ||
304 | schedule_callout(email, ehlo, mailfrom, client_addr); | ||
302 | } else { | 305 | } else { |
303 | set_last_poll_helo(env, ""); | 306 | set_last_poll_helo(env, ""); |
304 | set_last_poll_greeting(env, ""); | 307 | set_last_poll_greeting(env, ""); |
@@ -330,10 +333,13 @@ method_standard(eval_environ_t env, char *email, char *ehlo, char *mailfrom) | |||
330 | smtp_timeout_soft, | 333 | smtp_timeout_soft, |
331 | mfl_smtp_io_callback, | 334 | mfl_smtp_io_callback, |
332 | env); | 335 | env); |
336 | smtp_io_setup_callout(io, email, ehlo, mailfrom); | ||
333 | rc = callout_standard(io); | 337 | rc = callout_standard(io); |
334 | smtp_io_free(io); | 338 | smtp_io_free(io); |
335 | if (mf_resolved(rc)) | 339 | if (mf_resolved(rc)) |
336 | cache_insert(email, rc); | 340 | cache_insert(email, rc); |
341 | else if (rc == mf_temp_failure) | ||
342 | schedule_callout(email, ehlo, mailfrom, NULL); | ||
337 | } else { | 343 | } else { |
338 | set_last_poll_helo(env, ""); | 344 | set_last_poll_helo(env, ""); |
339 | set_last_poll_greeting(env, ""); | 345 | set_last_poll_greeting(env, ""); |