diff --git a/Mailman/Logging/Syslog.py b/Mailman/Logging/Syslog.py
index 28aa73137a0f52876b0e2b1564cb35e8457feb47..8e9e3ce2092b2059386d248063ed728d8e41868a 100644
--- a/Mailman/Logging/Syslog.py
+++ b/Mailman/Logging/Syslog.py
@@ -21,8 +21,7 @@ This might eventually be replaced by a syslog based logger, hence the name.
 """
 
 import quopri
-
-from Mailman.Logging.StampedLogger import StampedLogger
+import syslog as real_syslog
 
 
 
@@ -30,6 +29,28 @@ from Mailman.Logging.StampedLogger import StampedLogger
 syslog = None
 
 
+# Our syslog-writing class
+_syslog_initialized = False
+class _SyslogLogger(Logger):
+
+    def __init__(self, kind):
+        global _syslog_initialized
+        if not _syslog_initialized:
+            real_syslog.openlog(
+                identity='mailman',
+                facility=real_syslog.LOG_MAIL)
+            _syslog_initialized = True
+        self._priority = real_syslog.LOG_INFO
+        if kind == 'error' or kind == 'smtp-failure':
+            self._priority = real_syslog.LOG_ERROR
+
+    def write(self, msg):
+        real_syslog.syslog(self._priority, msg)
+
+    def close(self):
+        pass
+
+
 
 # Don't instantiate except below.
 class _Syslog:
@@ -49,7 +70,7 @@ class _Syslog:
         origmsg = msg
         logf = self._logfiles.get(kind)
         if not logf:
-            logf = self._logfiles[kind] = StampedLogger(kind)
+            logf = self._logfiles[kind] = _SyslogLogger(kind)
         try:
             if args:
                 msg %= args