diff --git a/Milter/__init__.py b/Milter/__init__.py
index 217514e069044585dcce77c171551fbc0dd51383..2cf16f97a102b33087ef83851a811152df9ac5f9 100755
--- a/Milter/__init__.py
+++ b/Milter/__init__.py
@@ -458,6 +458,10 @@ class Milter(Base):
 # This factory method is called for each connection to create the
 # python object that tracks the connection.  It should return
 # an object derived from Milter.Base.
+#
+# Note that since python is dynamic, this variable can be changed while
+# the milter is running: for instance, to a new subclass based on a 
+# change in configuration.
 factory = Milter
 
 ## @private
diff --git a/Milter/dsn.py b/Milter/dsn.py
index 290fdd0b8ff0e7179c057950798e7ef6a649f90a..64ab8a2e9c28c6dd7f0c54f23f1ae269b290725c 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.18  2009/06/10 18:01:59  customdesigned
+# Doxygen updates
+#
 # Revision 1.17  2009/05/20 20:08:44  customdesigned
 # Support non-DSN CBV (non-empty MAIL FROM)
 #
@@ -79,7 +82,7 @@ def send_dsn(mailfrom,receiver,msg=None,timeout=600,session=None,ourfrom=''):
      Mailfrom is original sender we are sending DSN or CBV to.
      Receiver is the MTA sending the DSN.
      Return None for success or (code,msg) for failure."""
-  user,domain = mailfrom.split('@')
+  user,domain = mailfrom.rsplit('@',1)
   if not session: session = dns.Session()
   try:
     mxlist = session.dns(domain,'MX')