@@ -445,14 +445,35 @@ def _oneloop(self):
445445 if msg is None :
446446 continue
447447
448+ # Get the list name from msgdata
449+ listname = msgdata .get ('listname' )
450+ if not listname :
451+ syslog ('error' , 'CommandRunner._oneloop: No listname in message data for file %s' , filebase )
452+ self ._shunt .enqueue (msg , msgdata )
453+ continue
454+
455+ # Open the list
456+ try :
457+ mlist = MailList .MailList (listname , lock = False )
458+ except Errors .MMUnknownListError :
459+ syslog ('error' , 'CommandRunner._oneloop: Unknown list %s for message %s (file: %s)' ,
460+ listname , msg .get ('message-id' , 'n/a' ), filebase )
461+ self ._shunt .enqueue (msg , msgdata )
462+ continue
463+
448464 # Validate message
449465 msg , success = self ._validate_message (msg , msgdata )
450466 if not success :
451467 syslog ('error' , 'CommandRunner._oneloop: Message validation failed for %s' , filebase )
452468 continue
453469
454470 # Process message
455- self ._dispose (msg .mlist , msg , msgdata )
471+ try :
472+ self ._dispose (mlist , msg , msgdata )
473+ except Exception as e :
474+ syslog ('error' , 'CommandRunner._oneloop: Error processing message %s: %s' ,
475+ msg .get ('message-id' , 'n/a' ), str (e ))
476+ self ._shunt .enqueue (msg , msgdata )
456477 except Exception as e :
457478 syslog ('error' , 'CommandRunner._oneloop: Error processing file %s: %s' , filebase , str (e ))
458479 except Exception as e :
0 commit comments