Is there a known documented way to copy messages from backup folders into the cur folder and have them not make a mess of the dates. What I see is if I copy several year old messages to the cur folder on an ubuntu box the massages when viewed on an android phone appear out of order. I tried deleting the dovecot index and cache files and restarting the service, I also tried running these 2 scripts I found. I added some echoes to see what was occurring. Still, messages appear out of order and some do not appear at all on the droid. I tried copying the actual message files out of various cur dirs and still some were very out of date. The second script seemed to be adjusting the dates of the files properly, but I am not sure what android gmail actually uses to sort. #!/bin/bash for i in `ls /home/brian/Maildir/cur/` do ? # Find the date field and then remove up to the first space (Date: ) ? DATE=$(grep '^Date:' $i | head -1 | cut -d' ' -f1 --complement) ? # Create a timestamp from the date above ? STAMP=$(date --date="$DATE" +%Y%m%d%H%M) ? # touch the file with the correct timestamp ? touch -t $STAMP $i ? echo "$i stamped" ? echo "$DATE" ? echo "$STAMP" done ------------ #!/bin/bash # Fix emails with bad timestamps in a maildir # This script reads the date from the email header and set its UNIX timestamp and renames it with the proper date # e.g. this: # dec.? 05? 2017 1512499812.M908995P21566.ip-111-11-11-11,S=16331,W=16746:2,S # becomes that (the email Date header is "Date: Tue, 22 Oct 2013 10:07:21 +0100"): # oct.? 22? 2013 1382432841.M908995P21566.ip-111-11-11-11,S=16331,W=16746:2,S cd "/home/brian/Maildir/cur"; for i in `ls? 1482809425.M277770P17438*` do ? echo "$i" ? # We extract the date from the email headers ? DATE=$(grep '^Date:' $i | head -1 | cut -d' ' -f1 --complement) ? # We compute a touch-compatible timestamp as well as the real timestamp ? TOUCHSTAMP=$(date --date="$DATE" +%Y%m%d%H%M) ? TIMESTAMP=$(date --date="$DATE" +%s) ? # We set the file timestamp ? touch -t $TOUCHSTAMP $i ? # We rename the file with preprending timestamp ? newfilename="$TIMESTAMP.${i#*.}" ? mv "$i" "$newfilename" ? echo "$newfilename" ? echo "******" done