fflush() flushes application buffers to the operating system. If
the system crashes the blocks could still be in memory.
fsync() flushes kernel buffers to disk.
However...
With all but very recent LINUX versions there is no guarantee about
when a file directory entry is written to disk, even when fsync()
has confirmed that the CONTENTS of a file made it to disk.
This is specific to LINUX. The fix is to "chattr +S" the directory
so it is updated safely. By default, Postfix sets the +S attribute
when it creates queue directories on Linux.
Wietse