Are you running any particular Postfix version on any particular
platform, built from source or binary distribution?

The code in question is 

double  smtpd_space_multf = 1.5;

#define BLOCKS(x)       ((x) / fsbuf.block_size)

    if (BLOCKS(var_queue_minfree) >= fsbuf.block_free
     || BLOCKS(var_message_limit) >= fsbuf.block_free / smtpd_space_multf) {
        (void) smtpd_check_reject(state, MAIL_ERROR_RESOURCE,
                                  452, "4.3.1",
                                  "Insufficient system storage");
        msg_warn("not enough free space in mail queue: %lu bytes < "
                 "%g*message size limit",
                 (unsigned long) fsbuf.block_free * fsbuf.block_size,
                 smtpd_space_multf);

The test has two conditions, and one of them is true. In addition
we know that fsbuf.block_free * fsbuf.block_size = 908328873984
which is a plausible value (this number is logged in a warning
message). So both fsbuf.block_free and fsbuf.block_size are
likely good.

- If the first condition is true, then the queue_minfree parameter
  has a small non-zero value. As this is parameter is not read from
  main.cf, perhaps its compiled-in default value has changed due
  to a bit-flip in non-ECC memory? A reboot would change that.

- If the second condition is true, then the message_size_limit
  parameter has a very large value. As this is read from main.cf
  and converted to number every time a process starts, a bad
  bit-flip in the message_size_limit value is unlikely.

        Wietse

Reply via email to