diff --git a/main.go b/main.go
index aa927dd1984b741171e714471cf9f3f44723f855..c3ef978f290b1382b84d66545b75d66c3db6d986 100644
--- a/main.go
+++ b/main.go
@@ -216,6 +216,9 @@ func dumpMessages(parser *Parser) {
 		fmt.Printf("Message: %s", m.ID)
 		if m.List != "" {
 			fmt.Printf(" (list=%s)", m.List)
+			if m.MailmanHeldReason != "" {
+				fmt.Printf(" - held: %s", m.MailmanHeldReason)
+			}
 		}
 		fmt.Printf("\n\n")
 
diff --git a/parser.go b/parser.go
index f798f9bdb99f93451f7a5c74d8f2501e016d4cfa..191d851925efd7707d9a2e2077c510d41db0c1a1 100644
--- a/parser.go
+++ b/parser.go
@@ -261,8 +261,8 @@ var matcherSpecs = []struct {
 
 	{progDovecot, `^lmtp\(([^\)]+)\)<[0-9]+><([^>]+)>: sieve: msgid=([^:]*):(?: .*:)? stored mail into mailbox '([^']*)'`, doSieve},
 
-	{progMailman, `^(\w+) post from (\\S+) held, message-id=([^:]+): (.*)`, doMailmanHeld},
-	{progMailman, `^Message discarded, msgid: ([^'#]*)#012.*list: ([^,]*),#012`, doMailmanDiscarded},
+	{progMailman, `^(\w+) post from (\S+) held, message-id=([^:]+): (.*)`, doMailmanHeld},
+	{progMailman, `^Message discarded, msgid: +([^'#]+)'?#012.*list: ([^,]*),#012`, doMailmanDiscarded},
 	{progMailman, `^post to (.+) from ([^,]*).*, message-id=([^,]*), success`, doMailmanPost},
 }