This problem has been posted several times before but never resolved. Here are a few threads:
I believe it has never been fixed because the problem is not with individual emails but in the way that Zimbra reads the date of the email.
I just switched back to Yahoo mail, and I used Yippiemove.com to move the 2GB of mail from my old account to Yahoo. Emails show up correctly when accessing Yahoo mail from their web interface. If I access my Yahoo account from Zimbra, all of the old emails show their received date as this weekend, when the yippiemove occurred. If you look at the original message text of any email, there is no mention of this date. After spending a while importing and exporting messages in Zimbra and fooling around trying to figure out what the problem is, I realized that Zimbra reads the date as the "Date modified" field in the file properties from the actual .eml file.
You can try it yourself:
1) Open notepad, make a simple email with any date received. Example:
From: "Test" <firstname.lastname@example.org>
To: Tester <email@example.com>
Date: Tue, 14 Jul 2007 11:46:51 -0700
This is a test email.
2) Save the file as a .eml file. Zip this file in a .tgz archive.
3) Import the archive into any account in Zimbra.
When you look at the file in the folder listing, it will display a received date/time as when you created the file. However, if you open the email or view the original, it will say whatever date you specified.
This explains my problem as well as the ones I linked above, because the email files are probably just being moved from one location to another, and creating a new file on the new server with a new file modified date.
So the question now is how to fix this?