From d289822f42706e94c9def389d276d4df50aad148 Mon Sep 17 00:00:00 2001 From: Stuart Gathman <stuart@gathman.org> Date: Sat, 3 Mar 2007 18:19:40 +0000 Subject: [PATCH] Handle DNS error sending DSN. --- Milter/__init__.py | 2 +- Milter/dsn.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Milter/__init__.py b/Milter/__init__.py index f289636..f8e35ee 100755 --- a/Milter/__init__.py +++ b/Milter/__init__.py @@ -9,7 +9,7 @@ import milter import thread from milter import ACCEPT,CONTINUE,REJECT,DISCARD,TEMPFAIL, \ - set_flags, setdbg, setbacklog, settimeout, \ + set_flags, setdbg, setbacklog, settimeout, error, \ ADDHDRS, CHGBODY, ADDRCPT, DELRCPT, CHGHDRS, \ V1_ACTS, V2_ACTS, CURR_ACTS diff --git a/Milter/dsn.py b/Milter/dsn.py index 723d3a0..efdeef9 100644 --- a/Milter/dsn.py +++ b/Milter/dsn.py @@ -5,6 +5,9 @@ # Send DSNs, do call back verification, # and generate DSN messages from a template # $Log$ +# Revision 1.13 2007/01/04 18:01:11 customdesigned +# Do plain CBV when template missing. +# # Revision 1.12 2006/07/26 16:37:35 customdesigned # Support timeout. # @@ -28,8 +31,11 @@ def send_dsn(mailfrom,receiver,msg=None,timeout=600): Receiver is the MTA sending the DSN. Return None for success or (code,msg) for failure.""" user,domain = mailfrom.split('@') - q = spf.query(None,None,None) - mxlist = q.dns(domain,'MX') + try: + q = spf.query(None,None,None) + mxlist = q.dns(domain,'MX') + except spf.TempError: + return (450,'DNS Timeout: %s MX'%domain) # temp error if not mxlist: mxlist = (0,domain), # fallback to A record when no MX else: -- GitLab