"not_found" status is placed to the cache when the MX is not responding. SMTP reply 5xx must not be returned at this case. This behavior discovered in 7.99.92 (git 2012-03-21) but it could be earlier. This patch is attempt to disable caching mf_timeout case. diff -Nur mailfromd-7.99.92-20130730.old/src/savsrv.c mailfromd-7.99.92-20130730/src/savsrv.c --- mailfromd-7.99.92-20130730.old/src/savsrv.c 2012-02-09 09:57:59.000000000 +0400 +++ mailfromd-7.99.92-20130730/src/savsrv.c 2013-10-22 14:46:12.931146277 +0400 @@ -186,8 +186,10 @@ break; } rc = callout_standard(qp->io); + if ( rc != mf_timeout ) { + cache_insert(smtp_io_email(qp->io), rc); + } STATUS_FIXUP(rc); - cache_insert(smtp_io_email(qp->io), rc); break; case cmode_mx_only: @@ -212,9 +214,11 @@ break; } rc = callout_strict(qp->io, qp->hostname); + if ( rc != mf_timeout ) { + cache_insert2(smtp_io_email(qp->io), + qp->hostname, rc); + } STATUS_FIXUP(rc); - cache_insert2(smtp_io_email(qp->io), - qp->hostname, rc); break; case cmode_host_only: