What platform are you running on? For me on Linux RedHat 6.1, when I try to see past the end of a non-existant or zero length file, I get an EINVAL (errcode 22), which Mailbox.AppendMessage() should catch and ignore. If your error numbers are the same as mine, you're getting an EOVERFLOW, but why? What does "Value too large for defined data type" mean?
Standard says... (in re: lseek): EOVERFLOW: The resulting file offset would be a value which cannot be represented correctly in an object of type off_t. The error message seems a reasonable representation of that (off_t is required to be a signed integral type). Like Chuq says, this species (UNIX and relatives) is unfortunately prone to not quite agreeing with each other in boundary conditions, standards or no... and by the way, you can't count on the error /numbers/ being the same across systems, that's not part of UNIX standards.
Mats