So, it would appear your table is fine, but somehow the id is wrong in the client object. 
 
I'm not super familiar with the ucs code, but looking at Clientlist::Process() I can see how it could happen.  A new Client object is constructed and added to the list with a default ID of 0, then the list is iterated and unless OP_MailLogin is processed for that client the ID won't ever change to what it should be. 
 
Maybe you're missing an opcode or something is being processed out of order? 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 |