      * appending: it's important that the index records for individual
        messages make it to disk before the index header indicating that
        they're there. so something like: 

         1. sync messages to disk (or depend on link() being atomic) 
         2. create new index records, flush to disk 
         3. create new header if necessary (adding new user flag), flush to
            disk 
         4. flush cache file 
         5. update index header, flush to disk 

