diff --git a/postfix/HISTORY b/postfix/HISTORY index 4766e1711..85119166a 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -27172,3 +27172,11 @@ Apologies for any names omitted. master/master.c, postlog/postlog.c, postlogd/postlogd.c, util/logwriter.c, util/logwriter.h, util/Makefile.in, util/vstream.c. + +20230517 + + Bugfix (defect introduced: Postfix 3.8) the posttls-finger + command could access uninitialized memory when reconnecting. + This also fixes a warning message when a destination contains + ":service" information. Reported by Thomas Korbar. File: + posttls-finger/posttls-finger.c. diff --git a/postfix/README_FILES/MAILLOG_README b/postfix/README_FILES/MAILLOG_README index 6f8fead72..75fa4b567 100644 --- a/postfix/README_FILES/MAILLOG_README +++ b/postfix/README_FILES/MAILLOG_README @@ -30,8 +30,14 @@ problems for systemd-based systems. 2. Configure Postfix to write logging, to, for example, /var/log/postfix.log. See also the "Logfile rotation" section below for logfile management. + In the example below, specifying maillog_file_permissions is optional + (Postfix 3.9 and later). The default value is 0600, i.e., only the super- + user can access the file; the value 0644 also adds 'group' and 'other' read + access. + # postfix stop # postconf maillog_file=/var/log/postfix.log + # postconf maillog_file_permissions=0644 # (Postfix 3.9 and later) # postfix start By default, the logfile name must start with "/var" or "/dev/stdout" (the @@ -71,6 +77,10 @@ implements the following steps: * After a brief pause, compress the old logfile. The compression program is configured with the maillog_file_compressor parameter (default: gzip). + * The next time it logs an event, postlogd(8) will create a new logfile, with + permissions specified with the maillog_file_permissions parameter (default: + 0600). + Notes: * This command will not rotate a logfile with a pathname under the /dev diff --git a/postfix/html/MAILLOG_README.html b/postfix/html/MAILLOG_README.html index be58e334f..ab751f4c6 100644 --- a/postfix/html/MAILLOG_README.html +++ b/postfix/html/MAILLOG_README.html @@ -63,10 +63,16 @@ Postfix version.

/var/log/postfix.log. See also the "Logfile rotation" section below for logfile management.

+

In the example below, specifying maillog_file_permissions is +optional (Postfix 3.9 and later). The default value is 0600, i.e., +only the super-user can access the file; the value 0644 also +adds 'group' and 'other' read access.

+
 # postfix stop
 # postconf maillog_file=/var/log/postfix.log
+# postconf maillog_file_permissions=0644 # (Postfix 3.9 and later)
 # postfix start
 
@@ -124,6 +130,10 @@ old logfile.

program is configured with the maillog_file_compressor parameter (default: gzip).

+
  • The next time it logs an event, postlogd(8) will create a +new logfile, with permissions specified with the maillog_file_permissions +parameter (default: 0600).

    +

    Notes:

    diff --git a/postfix/html/master.8.html b/postfix/html/master.8.html index cacc80130..70e0063f6 100644 --- a/postfix/html/master.8.html +++ b/postfix/html/master.8.html @@ -148,15 +148,15 @@ MASTER(8) MASTER(8) invoked with the -D option. inet_interfaces (all) - The network interface addresses that this mail system receives - mail on. + The local network interface addresses that this mail system + receives mail on. inet_protocols (see 'postconf -d output') The Internet protocols Postfix will attempt to use when making or accepting connections. import_environment (see 'postconf -d' output) - The list of environment parameters that a privileged Postfix + The list of environment variables that a privileged Postfix process will import from a non-Postfix parent process, or name=value environment overrides. diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index 4426f727b..51ed8ed69 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -6688,6 +6688,21 @@ first argument.

    This feature is available in Postfix 3.4 and later.

    + + +
    maillog_file_permissions +(default: 0600)
    + +

    The file access permissions that will be set when the file +$maillog_file is created for the first time, or when the file is +created after an existing file is rotated. Specify one of: 0600 +(only super-user read/write access), 0640 (adds 'group' read +access), or 0644 (also adds 'other' read access). The leading +'0' is optional.

    + +

    This feature is available in Postfix 3.9 and later.

    + +
    maillog_file_prefixes diff --git a/postfix/html/postlog.1.html b/postfix/html/postlog.1.html index 587edbc1d..617b78b0a 100644 --- a/postfix/html/postlog.1.html +++ b/postfix/html/postlog.1.html @@ -90,6 +90,13 @@ POSTLOG(1) POSTLOG(1) postlog_service_name (postlog) The name of the postlogd(8) service entry in master.cf. + Available in Postfix 3.9 and later: + + maillog_file_permissions (0600) + The file access permissions that will be set when the file + $maillog_file is created for the first time, or when the file is + created after an existing file is rotated. + SEE ALSO postconf(5), configuration parameters postlogd(8), Postfix logging diff --git a/postfix/html/postlogd.8.html b/postfix/html/postlogd.8.html index 58cdf017d..3ddbf6621 100644 --- a/postfix/html/postlogd.8.html +++ b/postfix/html/postlogd.8.html @@ -68,6 +68,13 @@ POSTLOGD(8) POSTLOGD(8) How much time a postlogd(8) process may take to process a request before it is terminated by a built-in watchdog timer. + Available in Postfix 3.9 and later: + + maillog_file_permissions (0600) + The file access permissions that will be set when the file + $maillog_file is created for the first time, or when the file is + created after an existing file is rotated. + SEE ALSO postconf(5), configuration parameters syslogd(8), system logging diff --git a/postfix/man/man1/postlog.1 b/postfix/man/man1/postlog.1 index 52bd815c3..d9723e7c4 100644 --- a/postfix/man/man1/postlog.1 +++ b/postfix/man/man1/postlog.1 @@ -94,6 +94,12 @@ The name of an optional logfile that is written by the Postfix \fBpostlogd\fR(8) service. .IP "\fBpostlog_service_name (postlog)\fR" The name of the \fBpostlogd\fR(8) service entry in master.cf. +.PP +Available in Postfix 3.9 and later: +.IP "\fBmaillog_file_permissions (0600)\fR" +The file access permissions that will be set when the file +$maillog_file is created for the first time, or when the file is +created after an existing file is rotated. .SH "SEE ALSO" .na .nf diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index bc0822bc0..48cb498bc 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -4150,6 +4150,15 @@ logrotate". The command is run with the rotated logfile name as its first argument. .PP This feature is available in Postfix 3.4 and later. +.SH maillog_file_permissions (default: 0600) +The file access permissions that will be set when the file +$maillog_file is created for the first time, or when the file is +created after an existing file is rotated. Specify one of: \fB0600\fR +(only super\-user read/write access), \fB0640\fR (adds 'group' read +access), or \fB0644\fR (also adds 'other' read access). The leading +\&'0' is optional. +.PP +This feature is available in Postfix 3.9 and later. .SH maillog_file_prefixes (default: /var, /dev/stdout) A list of allowed prefixes for a maillog_file value. This is a safety feature to contain the damage from a single configuration diff --git a/postfix/man/man8/master.8 b/postfix/man/man8/master.8 index 8c37de4e1..c6ed9ac53 100644 --- a/postfix/man/man8/master.8 +++ b/postfix/man/man8/master.8 @@ -151,13 +151,13 @@ The directory with Postfix support programs and daemon programs. The external command to execute when a Postfix daemon program is invoked with the \-D option. .IP "\fBinet_interfaces (all)\fR" -The network interface addresses that this mail system receives -mail on. +The local network interface addresses that this mail system +receives mail on. .IP "\fBinet_protocols (see 'postconf -d output')\fR" The Internet protocols Postfix will attempt to use when making or accepting connections. .IP "\fBimport_environment (see 'postconf -d' output)\fR" -The list of environment parameters that a privileged Postfix +The list of environment variables that a privileged Postfix process will import from a non\-Postfix parent process, or name=value environment overrides. .IP "\fBmail_owner (postfix)\fR" diff --git a/postfix/man/man8/postlogd.8 b/postfix/man/man8/postlogd.8 index 9168a3429..df2f5c04d 100644 --- a/postfix/man/man8/postlogd.8 +++ b/postfix/man/man8/postlogd.8 @@ -66,6 +66,12 @@ The master.cf service name of a Postfix daemon process. .IP "\fBpostlogd_watchdog_timeout (10s)\fR" How much time a \fBpostlogd\fR(8) process may take to process a request before it is terminated by a built\-in watchdog timer. +.PP +Available in Postfix 3.9 and later: +.IP "\fBmaillog_file_permissions (0600)\fR" +The file access permissions that will be set when the file +$maillog_file is created for the first time, or when the file is +created after an existing file is rotated. .SH "SEE ALSO" .na .nf diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 4704e0ba6..fc2f3adc8 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20230516" +#define MAIL_RELEASE_DATE "20230517" #define MAIL_VERSION_NUMBER "3.9" #ifdef SNAPSHOT diff --git a/postfix/src/master/master.c b/postfix/src/master/master.c index f34df22e9..ec971ffa9 100644 --- a/postfix/src/master/master.c +++ b/postfix/src/master/master.c @@ -135,8 +135,8 @@ /* The external command to execute when a Postfix daemon program is /* invoked with the -D option. /* .IP "\fBinet_interfaces (all)\fR" -/* The local network interface addresses that this mail system receives -/* mail on. +/* The local network interface addresses that this mail system +/* receives mail on. /* .IP "\fBinet_protocols (see 'postconf -d output')\fR" /* The Internet protocols Postfix will attempt to use when making /* or accepting connections. diff --git a/postfix/src/posttls-finger/posttls-finger.c b/postfix/src/posttls-finger/posttls-finger.c index 2f3a58e82..b9a46999d 100644 --- a/postfix/src/posttls-finger/posttls-finger.c +++ b/postfix/src/posttls-finger/posttls-finger.c @@ -1590,12 +1590,13 @@ static char *parse_destination(char *destination, char *def_service, static void connect_remote(STATE *state, char *dest) { DNS_RR *addr; - char *buf; - char *domain; - char *service; /* When reconnecting use IP address of previous session */ if (state->addr == 0) { + char *buf; + char *domain; + char *service; + buf = parse_destination(dest, state->smtp ? "smtp" : "24", &domain, &service, &state->port); if (!state->nexthop) @@ -1622,8 +1623,8 @@ static void connect_remote(STATE *state, char *dest) if (level == TLS_LEV_INVALID || (state->stream = connect_addr(state, addr)) == 0) { - msg_info("Failed to establish session to %s:%s via %s:%u: %s", - dest, service, HNAME(addr), addr->port, + msg_info("Failed to establish session to %s via %s:%u: %s", + dest, HNAME(addr), addr->port, vstring_str(state->why->reason)); continue; }