--- a/src/transports/appendfile.c
+++ b/src/transports/appendfile.c
-@@ -2580,13 +2580,24 @@
+@@ -2613,13 +2613,24 @@
/* Why are these here? Put in because they are present in the non-maildir
directory case above. */
}
#endif /* SUPPORT_MAILDIR */
+@@ -2772,12 +2783,21 @@
+ /* In all cases of writing to a new file, ensure that the file which is
+ going to be renamed has the correct ownership and mode. */
+
+- if(Uchown(filename, uid, gid) || Uchmod(filename, mode))
++ /* Ignore failed chown if check_owner is disabled. */
++ if(Uchown(filename, uid, gid) && ob->check_owner)
+ {
+- addr->basic_errno = errno;
+- addr->message = string_sprintf("while setting perms on file %s",
+- filename);
+- return FALSE;
++ addr->basic_errno = errno;
++ addr->message = string_sprintf("while setting owner on file before write %s",
++ filename);
++ return FALSE;
++ }
++
++ if(Uchmod(filename, mode))
++ {
++ addr->basic_errno = errno;
++ addr->message = string_sprintf("while setting chmod on file before write %s",
++ filename);
++ return FALSE;
+ }
+ }
+