LISTMSGS should be changed so the client can request only X number of messages (starting with the most recent), and then the X next most recent, etc.
However, some thoughts.
What if a new message comes in during that list?
What if a message is deleted during that list?
Is the list generated, then used regardless of what happens to the messages? Or is each section of the list generated on the fly?
How will this affect the GETLOG command? Will it require the server provide a {timestamp, offset} which indicates the list is based on any information prior to that token?