diff --git a/postfix/HISTORY b/postfix/HISTORY index bba61fb24..8f095ce1c 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -4848,3 +4848,15 @@ Apologies for any names omitted. util/sane_time.[hc]. Bumped the default mailbox file size limits to 50MB. + +20010202 + + Bugfix: fixed the way the master resets the file size limit + to avoid problems when a Postfix daemon updates a queue + file. The file size limit is now increased to INT_MAX if + it is smaller than INT_MAX, so that it is less likely to + interfere than the old setting of message_size_limit. + + Feature: disable mailbox size limits for the local and + virtual delivery agents by setting mailbox_size_limit or + virtual_mailbox_limit to zero. diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES index 26fab0180..a1c31ed58 100644 --- a/postfix/RELEASE_NOTES +++ b/postfix/RELEASE_NOTES @@ -1,15 +1,28 @@ Apart from bugfixes this is expected to become the first non-beta Postfix release. +Major changes with snapshot-20010202 +==================================== + +The mailbox file size limits for the local and virtual delivery +agents can be disabled by setting mailbox_size_limit and/or +virtual_mailbox_limit to zero. + Incompatible changes with snapshot-20010128 =========================================== +If this release does not work for you, you can go back to a previous +Postfix version without losing your mail, subject to the "incompatible +changes" listed for previous Postfix releases below. + REJECT in header/body_checks is now flagged as policy violation rather than bounce, for consistency in postmaster notifications. -The mailbox size limit for local delivery is no longer controlled -by the message_size_limit paramater, but by a separate parameter -called mailbox_size_limit (default: 20MBytes). +New mailbox size limit for local delivery (default: 50MBytes). This +limit affects all file write access by the local delivery agent or +by a process run by the local delivery agent. The purpose of this +parameter is to act as a safety for run-away software. It cannot +be a substitute for a file quota management system. The default RBL (real-time blackhole lists) domain examples have been updated from *.vix.com to *.mail-abuse.org. @@ -27,7 +40,7 @@ agent can deliver mail for any number of domains. See the file VIRTUAL_README for detailed examples. This code is still new. Once it stops changing it will become part of the non-beta release. -Many "valid_hostname" warnings were eliminated. The complaints that +Many "valid_hostname" warnings were eliminated. The warnings that were not eliminated were replaced by something more informative. SASL support (RFC 2554) for the LMTP delivery agent. This is required diff --git a/postfix/html/faq.html b/postfix/html/faq.html index 1cfd0b911..e8919e7ca 100644 --- a/postfix/html/faq.html +++ b/postfix/html/faq.html @@ -1319,7 +1319,7 @@ be a broken PIX firewall.

Cisco PIX "fixup protocol smtp" bug

-The Cisco PIX has have a bug when running software older than +The Cisco PIX firewall has a bug when running software older than version 5.2(4) or 6.0(1).

@@ -1333,7 +1333,7 @@ end of mail are sent in separate packets. How does one recognize a mailer behind a Cisco PIX with "fixup protocol smtp" enabled? As of version 5.1 and later, the fixup protocol smtp command changes the characters in the SMTP banner to -asterisks except for the "2", "0", "0" and space characters. +asterisks except for the "2", "0" and "0 SPACE" characters.

diff --git a/postfix/html/local.8.html b/postfix/html/local.8.html index 1b0ba3c60..5aac19255 100644 --- a/postfix/html/local.8.html +++ b/postfix/html/local.8.html @@ -451,9 +451,9 @@ LOCAL(8) LOCAL(8) mailbox_size_limit Limit the size of a mailbox etc. file (any file - that is written to upon delivery). + that is written to upon delivery). Set to zero to + disable the limit. -Security controls @@ -467,33 +467,34 @@ LOCAL(8) LOCAL(8) LOCAL(8) LOCAL(8) +Security controls allow_mail_to_commands - Restrict the usage of mail delivery to external + Restrict the usage of mail delivery to external command. allow_mail_to_files - Restrict the usage of mail delivery to external + Restrict the usage of mail delivery to external file. command_expansion_filter - What characters are allowed to appear in $name - expansions of mailbox_command. Illegal characters + What characters are allowed to appear in $name + expansions of mailbox_command. Illegal characters are replaced by underscores. default_privs - Default rights for delivery to external file or + Default rights for delivery to external file or command. forward_expansion_filter - What characters are allowed to appear in $name - expansions of forward_path. Illegal characters are + What characters are allowed to appear in $name + expansions of forward_path. Illegal characters are replaced by underscores. HISTORY - The Delivered-To: header appears in the qmail system by + The Delivered-To: header appears in the qmail system by Daniel Bernstein. - The maildir structure appears in the qmail system by + The maildir structure appears in the qmail system by Daniel Bernstein. SEE ALSO @@ -504,7 +505,7 @@ LOCAL(8) LOCAL(8) qmgr(8) queue manager LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) @@ -523,7 +524,6 @@ LOCAL(8) LOCAL(8) - 8 diff --git a/postfix/html/virtual.8.html b/postfix/html/virtual.8.html index 43ee3df0b..82c47ede1 100644 --- a/postfix/html/virtual.8.html +++ b/postfix/html/virtual.8.html @@ -224,7 +224,7 @@ VIRTUAL(8) VIRTUAL(8) virtual_mailbox_limit The maximal size in bytes of a mailbox or maildir - file. + file. Set to zero to disable the limit. HISTORY This agent was originally based on the Postfix local diff --git a/postfix/man/man8/local.8 b/postfix/man/man8/local.8 index 3d10429a6..8f3806515 100644 --- a/postfix/man/man8/local.8 +++ b/postfix/man/man8/local.8 @@ -378,6 +378,7 @@ The default limit is taken from the .IP \fBmailbox_size_limit\fR Limit the size of a mailbox etc. file (any file that is written to upon delivery). +Set to zero to disable the limit. .SH "Security controls" .ad .fi diff --git a/postfix/man/man8/virtual.8 b/postfix/man/man8/virtual.8 index 994bd71dc..52b1fbe75 100644 --- a/postfix/man/man8/virtual.8 +++ b/postfix/man/man8/virtual.8 @@ -191,6 +191,7 @@ The default limit is taken from the The limit is enforced by the Postfix queue manager. .IP \fBvirtual_mailbox_limit\fR The maximal size in bytes of a mailbox or maildir file. +Set to zero to disable the limit. .SH HISTORY .na .nf diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 3564c0b1e..82f068e6d 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -15,7 +15,7 @@ * Version of this program. */ #define VAR_MAIL_VERSION "mail_version" -#define DEF_MAIL_VERSION "Snapshot-20010201" +#define DEF_MAIL_VERSION "Snapshot-20010202" extern char *var_mail_version; /* LICENSE diff --git a/postfix/src/local/local.c b/postfix/src/local/local.c index 6d6bd05d4..068d61e08 100644 --- a/postfix/src/local/local.c +++ b/postfix/src/local/local.c @@ -350,6 +350,7 @@ /* .IP \fBmailbox_size_limit\fR /* Limit the size of a mailbox etc. file (any file that is /* written to upon delivery). +/* Set to zero to disable the limit. /* .SH "Security controls" /* .ad /* .fi @@ -635,14 +636,20 @@ static void pre_init(char *unused_name, char **unused_argv) * size limit. XXX This still isn't accurate because the file size limit * also affects delivery to command. * + * A file size limit protects the machine against runaway software errors. + * It is not suitable to enfoce mail quota, because users can get around + * mail quota by delivering to /file/name or to |command. + * * We can't have mailbox size limit smaller than the message size limit, * because that prohibits the delivery agent from updating the queue * file. */ - if (var_mailbox_limit < var_message_limit) - msg_fatal("main.cf configuration error: %s is smaller than %s", - VAR_MAILBOX_LIMIT, VAR_MESSAGE_LIMIT); - set_file_limit(var_mailbox_limit); + if (var_mailbox_limit) { + if (var_mailbox_limit < var_message_limit) + msg_fatal("main.cf configuration error: %s is smaller than %s", + VAR_MAILBOX_LIMIT, VAR_MESSAGE_LIMIT); + set_file_limit(var_mailbox_limit); + } } /* main - pass control to the single-threaded skeleton */ @@ -655,7 +662,7 @@ int main(int argc, char **argv) }; static CONFIG_INT_TABLE int_table[] = { VAR_DUP_FILTER_LIMIT, DEF_DUP_FILTER_LIMIT, &var_dup_filter_limit, 0, 0, - VAR_MAILBOX_LIMIT, DEF_MAILBOX_LIMIT, &var_mailbox_limit, 1, 0, + VAR_MAILBOX_LIMIT, DEF_MAILBOX_LIMIT, &var_mailbox_limit, 0, 0, 0, }; static CONFIG_STR_TABLE str_table[] = { diff --git a/postfix/src/master/master.c b/postfix/src/master/master.c index 2967d914f..c7dead391 100644 --- a/postfix/src/master/master.c +++ b/postfix/src/master/master.c @@ -134,6 +134,7 @@ #include #include #include +#include /* Utility library. */ @@ -288,11 +289,9 @@ int main(int argc, char **argv) clean_env(import_env->argv); argv_free(import_env); - if ((inherited_limit = get_file_limit()) < (off_t) var_message_limit) { - msg_warn("file size limit %lu < message_size_limit %lu -- reset", - (unsigned long) inherited_limit, (unsigned long) var_message_limit); - set_file_limit(var_message_limit); - } + if ((inherited_limit = get_file_limit()) < (off_t) INT_MAX) + set_file_limit(INT_MAX); + if (chdir(var_queue_dir)) msg_fatal("chdir %s: %m", var_queue_dir); diff --git a/postfix/src/util/rand_sleep.c b/postfix/src/util/rand_sleep.c index 079324b49..ecc051fdb 100644 --- a/postfix/src/util/rand_sleep.c +++ b/postfix/src/util/rand_sleep.c @@ -67,7 +67,7 @@ void rand_sleep(unsigned delay, unsigned variation) * Use the semi-crappy random number generator. */ if (my_pid == 0) - srandom(my_pid = (getpid() ^ time((time_t *) 0))); + srandom((my_pid = getpid()) ^ time((time_t *) 0)); usec = (delay - variation / 2) + variation * (double) random() / RAND_MAX; doze(usec); } diff --git a/postfix/src/virtual/virtual.c b/postfix/src/virtual/virtual.c index 8404ad1e2..86809ace5 100644 --- a/postfix/src/virtual/virtual.c +++ b/postfix/src/virtual/virtual.c @@ -167,6 +167,7 @@ /* The limit is enforced by the Postfix queue manager. /* .IP \fBvirtual_mailbox_limit\fR /* The maximal size in bytes of a mailbox or maildir file. +/* Set to zero to disable the limit. /* HISTORY /* .ad /* .fi @@ -368,17 +369,18 @@ static void pre_init(char *unused_name, char **unused_argv) /* * Reset the file size limit from the message size limit to the mailbox - * size limit. XXX This still isn't accurate because the file size limit - * also affects delivery to command. + * size limit. * * We can't have mailbox size limit smaller than the message size limit, * because that prohibits the delivery agent from updating the queue * file. */ - if (var_virt_mailbox_limit < var_message_limit) - msg_fatal("main.cf configuration error: %s is smaller than %s", - VAR_VIRT_MAILBOX_LIMIT, VAR_MESSAGE_LIMIT); - set_file_limit(var_virt_mailbox_limit); + if (var_virt_mailbox_limit) { + if (var_virt_mailbox_limit < var_message_limit) + msg_fatal("main.cf configuration error: %s is smaller than %s", + VAR_VIRT_MAILBOX_LIMIT, VAR_MESSAGE_LIMIT); + set_file_limit(var_virt_mailbox_limit); + } } /* main - pass control to the single-threaded skeleton */ @@ -387,7 +389,7 @@ int main(int argc, char **argv) { static CONFIG_INT_TABLE int_table[] = { VAR_VIRT_MINUID, DEF_VIRT_MINUID, &var_virt_minimum_uid, 1, 0, - VAR_VIRT_MAILBOX_LIMIT, DEF_VIRT_MAILBOX_LIMIT, &var_virt_mailbox_limit, 1, 0, + VAR_VIRT_MAILBOX_LIMIT, DEF_VIRT_MAILBOX_LIMIT, &var_virt_mailbox_limit, 0, 0, 0, }; static CONFIG_STR_TABLE str_table[] = {