2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 01:49:47 +00:00

postfix-3.10-20241122

This commit is contained in:
Wietse Z Venema 2024-11-22 00:00:00 -05:00 committed by Viktor Dukhovni
parent a61eb8de27
commit 1099dd6b49
17 changed files with 343 additions and 36 deletions

View File

@ -28559,3 +28559,26 @@ Apologies for any names omitted.
Documentation: convert some narrative text for the
delay_logging_resolution_limit parameter into a bullet list.
File: proto/postconf.proto.
20241122
Documentation: in the postconf(5) manpage, hyperlink the
"overload:" default parameter settings to the STRESS_README
documentation. File: mantools/postlink.
Cleanup: generate html/index.html from proto/index.html to
make changes visible in source diffs. Also make mantools/man2html
a dependency for html/*.?.html. File: html/Makefile.in.
Bugfix (defect introduced: Postfix 3.4, date 20190121): the
postsuper command failed with "open logfile 'xxx': Permission
denied" when the maillog_file parameter specified a filename
and Postfix was not running. This was fixed by opening the
maillog_file before dropping root privileges. Files:
util/msg_logger.c, global/maillog_client.c.
Refactoring: the unix-dgram server skeleton now passes a
socket file descriptor to the application (e.g., postlogd)
instead of a message buffer and length. This is in preparation
for unix-dgram support in a spawn(8)-like service. Files:
master/dgram_server.c, master/mail_server.h, postlogd/postlogd.c.

View File

@ -28,7 +28,7 @@ AWK = awk '{ print; if (NR == 2) print ".pl 99999\n.ll 78" }'
MAN2HTML = man2html -t "Postfix manual - `IFS=.; set \`echo $@\`; echo \"$$1($$2)\"`"
NROFF = LANG=C GROFF_NO_SGR=1 nroff
update: $(DAEMONS) $(COMMANDS) $(CONFIG) $(OTHER)
update: $(DAEMONS) $(COMMANDS) $(CONFIG) $(OTHER) index.html
clean:
echo clean
@ -38,6 +38,11 @@ tidy: clean
clobber:
rm -f $(DAEMONS) $(COMMANDS) $(CONFIG)
$(DAEMONS) $(COMMANDS) $(CONFIG): ../mantools/man2html
index.html: ../proto/index.html
cp $? $@
bounce.8.html: ../src/bounce/bounce.c
PATH=../mantools:$$PATH; \
srctoman $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@

View File

@ -339,7 +339,7 @@ before it expires. </p>
</DD>
<DT><b><a name="address_verify_poll_count">address_verify_poll_count</a>
(default: normal: 3, overload: 1)</b></DT><DD>
(default: normal: 3, <a href="STRESS_README.html">overload</a>: 1)</b></DT><DD>
<p>
How many times to query the <a href="verify.8.html">verify(8)</a> service for the completion
@ -8613,7 +8613,7 @@ See <a href="postconf.5.html#smtpd_command_filter">smtpd_command_filter</a> for
</DD>
<DT><b><a name="postscreen_command_time_limit">postscreen_command_time_limit</a>
(default: normal: 300s, overload: 10s)</b></DT><DD>
(default: normal: 300s, <a href="STRESS_README.html">overload</a>: 10s)</b></DT><DD>
<p> The time limit to read an entire command line with <a href="postscreen.8.html">postscreen(8)</a>'s
built-in SMTP protocol engine. </p>
@ -9060,7 +9060,7 @@ The default time unit is d (days). </p>
</DD>
<DT><b><a name="postscreen_greet_wait">postscreen_greet_wait</a>
(default: normal: 6s, overload: 2s)</b></DT><DD>
(default: normal: 6s, <a href="STRESS_README.html">overload</a>: 2s)</b></DT><DD>
<p> The amount of time that <a href="postscreen.8.html">postscreen(8)</a> will wait for an SMTP
client to send a command before its turn, and for DNS blocklist
@ -16317,7 +16317,7 @@ Support for inline regular expressions was added in Postfix version
</DD>
<DT><b><a name="smtpd_hard_error_limit">smtpd_hard_error_limit</a>
(default: normal: 20, overload: 1)</b></DT><DD>
(default: normal: 20, <a href="STRESS_README.html">overload</a>: 1)</b></DT><DD>
<p>
The maximal number of errors a remote SMTP client is allowed to
@ -16527,7 +16527,7 @@ before it is flushed upon receipt of EHLO, RSET, or end of DATA.
</DD>
<DT><b><a name="smtpd_junk_command_limit">smtpd_junk_command_limit</a>
(default: normal: 100, overload: 1)</b></DT><DD>
(default: normal: 100, <a href="STRESS_README.html">overload</a>: 1)</b></DT><DD>
<p>
The number of junk commands (NOOP, VRFY, ETRN or RSET) that a remote
@ -16679,7 +16679,7 @@ DNS lookup and increases the maximal inbound delivery rate. </p>
</DD>
<DT><b><a name="smtpd_per_record_deadline">smtpd_per_record_deadline</a>
(default: normal: no, overload: yes)</b></DT><DD>
(default: normal: no, <a href="STRESS_README.html">overload</a>: yes)</b></DT><DD>
<p> Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> and <a href="postconf.5.html#smtpd_starttls_timeout">smtpd_starttls_timeout</a>
time limits, from a
@ -16703,7 +16703,7 @@ Postfix releases, the behavior is as if this parameter is set to
</DD>
<DT><b><a name="smtpd_per_request_deadline">smtpd_per_request_deadline</a>
(default: normal: no, overload: yes)</b></DT><DD>
(default: normal: no, <a href="STRESS_README.html">overload</a>: yes)</b></DT><DD>
<p> Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> and <a href="postconf.5.html#smtpd_starttls_timeout">smtpd_starttls_timeout</a>
time limits, from a time limit per plaintext or TLS read or write
@ -18150,7 +18150,7 @@ The default time unit is s (seconds). </p>
</DD>
<DT><b><a name="smtpd_timeout">smtpd_timeout</a>
(default: normal: 300s, overload: 10s)</b></DT><DD>
(default: normal: 300s, <a href="STRESS_README.html">overload</a>: 10s)</b></DT><DD>
<p> When the Postfix SMTP server wants to send an SMTP server
response, how long the Postfix SMTP server will wait for an underlying

View File

@ -14,8 +14,8 @@ POSTLOGD(8) POSTLOGD(8)
<b>postlogd</b> [generic Postfix daemon options]
<b><a name="description">DESCRIPTION</a></b>
This program logs events on behalf of Postfix programs when the maillog
configuration parameter specifies a non-empty value.
This program logs events on behalf of Postfix programs when the <a href="postconf.5.html#maillog_file">mail</a>-
<a href="postconf.5.html#maillog_file">log_file</a> configuration parameter specifies a non-empty value.
<b><a name="bugs">BUGS</a></b>
Non-daemon Postfix programs don't know that they should log to the
@ -96,5 +96,8 @@ POSTLOGD(8) POSTLOGD(8)
111 8th Avenue
New York, NY 10011, USA
Wietse Venema
porcupine.org
POSTLOGD(8)
</pre> </body> </html>

View File

@ -13,8 +13,8 @@ Postfix internal log server
.ad
.fi
This program logs events on behalf of Postfix programs
when the maillog configuration parameter specifies a non\-empty
value.
when the maillog_file configuration parameter specifies a
non\-empty value.
.SH BUGS
.ad
.fi
@ -106,3 +106,6 @@ Wietse Venema
Google, Inc.
111 8th Avenue
New York, NY 10011, USA
Wietse Venema
porcupine.org

View File

@ -1278,6 +1278,10 @@ while (<>) {
s/\b(unionmap):/<a href="DATABASE_README.html#types">$1<\/a>:/g;
s/\b(inline):/<a href="DATABASE_README.html#types">$1<\/a>:/g;
if ($ARGV == "postconf.proto") {
s/\b(overload):/<a href="STRESS_README.html">$1<\/a>:/g;
}
# Do nice links for smtp:host:port etc.
s/\b(error):/<a href="error.8.html">$1<\/a>:/g;

228
postfix/proto/index.html Normal file
View File

@ -0,0 +1,228 @@
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
"https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Postfix Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel='stylesheet' type='text/css' href='postfix-doc.css'>
</head>
<body>
<h1><img src="postfix-logo.jpg" width="203" height="98" alt=""> Postfix Documentation </h1>
<hr>
<table border="0">
<tr> <td width="30%" align="left" valign="top">
<p><strong>General configuration </strong></p>
<ul>
<li> <a href="BASIC_CONFIGURATION_README.html"> Basic configuration
</a>
<li> <a href="SOHO_README.html"> Small/home office hints and tips </a>
<li> <a href="STANDARD_CONFIGURATION_README.html"> Standard
configuration examples </a>
<li> <a href="ADDRESS_REWRITING_README.html"> Address rewriting
</a>
<li> <a href="VIRTUAL_README.html"> Virtual domain hosting </a>
<li> <a href="SASL_README.html"> SASL Authentication </a>
<li> <a href="TLS_README.html"> TLS Encryption and authentication </a>
<li> <a href="FORWARD_SECRECY_README.html"> TLS Forward Secrecy </a>
<li> <a href="TLSRPT_README.html"> TLSRPT Protocol Support </a>
<li> <a href="IPV6_README.html"> IP Version 6 Support </a>
<li> <a href="SMTPUTF8_README.html"> SMTPUTF8 Support </a>
<li> <a href="MAILLOG_README.html"> Postfix logging to file or stdout </a>
<li> <a href="COMPATIBILITY_README.html"> Backwards-Compatibility Safety Net</a>
<li> <a href="DEPRECATION_README.html"> Deprecated features and alternatives </a>
<li> <a href="INSTALL.html"> Installation from source code </a>
</ul>
<p><strong>Problem solving </strong></p>
<ul>
<li> <a href="QSHAPE_README.html"> Bottleneck analysis </a>
<li> <a href="STRESS_README.html"> Stress-dependent configuration </a>
<li> <a href="TUNING_README.html"> Performance tuning </a>
<li> <a href="DEBUG_README.html"> Debugging strategies </a>
</ul>
<p><strong>Content inspection </strong></p>
<ul>
<li> <a href="CONTENT_INSPECTION_README.html"> Content inspection
overview </a>
<li> <a href="BACKSCATTER_README.html"> Stopping backscatter mail
</a>
<li> <a href="BUILTIN_FILTER_README.html"> Built-in content inspection </a>
</ul>
</td>
<td width="30%" align="left" valign="top">
<ul>
<li> <a href="FILTER_README.html"> After-queue content filter </a>
<li> <a href="SMTPD_PROXY_README.html"> Before-queue content
filter </a>
<li> <a href="MILTER_README.html"> Before-queue Milter applications
</a>
</ul>
<p><strong>SMTP Relay and access control </strong></p>
<ul>
<li> <a href="SMTPD_ACCESS_README.html"> Relay/access control
overview </a>
<li> <a href="SMTPD_POLICY_README.html"> Access policy delegation
</a>
<li> <a href="ADDRESS_VERIFICATION_README.html"> Address verification
</a>
<li> <a href="RESTRICTION_CLASS_README.html">
Per-client/user/etc. access </a>
<li> <a href="POSTSCREEN_README.html"> SMTP connection triage </a>
<li> <a href="ETRN_README.html"> ETRN Support </a>
<li> <a href="UUCP_README.html"> LAN connected via UUCP </a>
</ul>
<p><strong> Lookup tables (databases) </strong></p>
<ul>
<li> <a href="DATABASE_README.html"> Lookup table overview </a>
<li> <a href="DB_README.html"> Berkeley DB Howto </a>
<li> <a href="CDB_README.html"> CDB Howto </a>
<li> <a href="LDAP_README.html"> LDAP Howto </a>
<li> <a href="LMDB_README.html"> LMDB Howto </a>
<li> <a href="MEMCACHE_README.html"> Memcache Howto </a>
<li> <a href="MONGODB_README.html"> MongoDB Howto </a>
<li> <a href="MYSQL_README.html"> MySQL Howto </a>
<li> <a href="PCRE_README.html"> PCRE Howto </a>
<li> <a href="PGSQL_README.html"> PostgreSQL Howto </a>
<li> <a href="SQLITE_README.html"> SQLite Howto </a>
</ul>
<p><strong> Mailing list support </strong></p>
<ul>
<li> <a href="VERP_README.html"> VERP Support </a>
</ul>
</td>
<td width="30%" align="left" valign="top">
<p><strong> Specific environments </strong></p>
<ul>
<li> <a href="LINUX_README.html"> Linux issues </a>
<li> <a href="NFS_README.html"> NFS issues </a>
</ul>
<p><strong> Other mail delivery agents </strong></p>
<ul>
<li> <a href="MAILDROP_README.html"> Maildrop </a>
</ul>
<p><strong> Other topics </strong></p>
<ul>
<li> <a href="OVERVIEW.html"> Architecture overview </a>
<li> <a href="postconf.5.html"> All main.cf parameters </a>
<li> <a href="postfix-manuals.html"> All Postfix manual pages </a>
<li> <a href="LOCAL_RECIPIENT_README.html"> Rejecting Unknown Local
Recipients </a>
<li> <a href="ADDRESS_CLASS_README.html"> Address Classes </a>
<li> <a href="CONNECTION_CACHE_README.html"> Connection cache howto </a>
<li> <a href="DSN_README.html"> Postfix DSN support </a>
<li> <a href="BDAT_README.html"> Postfix BDAT (CHUNKING) support </a>
<li> <a href="PACKAGE_README.html"> Guidelines for Package Builders
</a>
<li> <a href="SCHEDULER_README.html"> Queue Scheduler </a>
<li> <a href="XCLIENT_README.html"> XCLIENT Command </a>
<li> <a href="XFORWARD_README.html"> XFORWARD Command </a>
</ul>
</td>
</table>
</body>
</html>

View File

@ -1654,3 +1654,4 @@ STS
hs
ccformat
xxsql
MEMCACHE

View File

@ -143,3 +143,5 @@ proto proto mysql_table proto pgsql_table proto ldap_table
postfix postfix c proto ADDRESS_CLASS_README html
proto proto socketmap_table qmqpd qmqpd c tls tls_misc c
proto socketmap_table qmqpd qmqpd c tls tls_misc c
a dependency for html html File html Makefile in
master dgram_server c master mail_server h postlogd postlogd c

View File

@ -89,3 +89,4 @@ unescaped
dereferenced
MEMCACHE
sed
Wayback

View File

@ -394,3 +394,4 @@ TR
berkeleydb
doctype
dtd
marc

View File

@ -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 "20241121"
#define MAIL_RELEASE_DATE "20241122"
#define MAIL_VERSION_NUMBER "3.10"
#ifdef SNAPSHOT

View File

@ -75,6 +75,9 @@
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*
/* Wietse Venema
/* porcupine.org
/*--*/
/*
@ -120,6 +123,7 @@ static int maillog_client_flags;
static void maillog_client_logwriter_fallback(const char *text)
{
static int fallback_guard = 0;
static VSTREAM *fp;
/*
* Guard against recursive calls.
@ -129,11 +133,21 @@ static void maillog_client_logwriter_fallback(const char *text)
* logfile. All we can do is to hope that stderr logging will bring out
* the bad news.
*/
if (fallback_guard == 0 && var_maillog_file && *var_maillog_file
&& logwriter_one_shot(var_maillog_file, text, strlen(text)) < 0) {
fallback_guard = 1;
if (fallback_guard++ == 0 && var_maillog_file && *var_maillog_file) {
if (text == 0 && fp != 0) {
(void) vstream_fclose(fp);
fp = 0;
}
if (fp == 0) {
fp = logwriter_open_or_die(var_maillog_file);
close_on_exec(vstream_fileno(fp), CLOSE_ON_EXEC);
}
if (text && (logwriter_write(fp, text, strlen(text)) != 0 ||
vstream_fflush(fp) != 0)) {
msg_fatal("logfile '%s' write error: %m", var_maillog_file);
}
fallback_guard = 0;
}
}
/* maillog_client_init - set up syslog or internal log client */

View File

@ -9,7 +9,7 @@
/* NORETURN dgram_server_main(argc, argv, service, key, value, ...)
/* int argc;
/* char **argv;
/* void (*service)(char *buf, int len, char *service_name, char **argv);
/* void (*service)(int sock, char *service_name, char **argv);
/* int key;
/* DESCRIPTION
/* This module implements a skeleton for mail subsystem programs
@ -21,19 +21,16 @@
/* dgram_server_main() is the skeleton entry point. It should
/* be called from the application main program. The skeleton
/* does the generic command-line options processing, initialization
/* of configurable parameters, and receiving datagrams. The
/* of configurable parameters, and monitors a datagram socket. The
/* skeleton never returns.
/*
/* Arguments:
/* .IP "void (*service)(char *buf, int len, char *service_name, char **argv)"
/* .IP "void (*service)(int sock, char *service_name, char **argv)"
/* A pointer to a function that is called by the skeleton each
/* time a client sends a datagram to the program's service
/* port. The function is run after the program has irrevocably
/* dropped its privileges. The buffer argument specifies the
/* data read from the datagram port; this data corresponds to
/* request. The len argument specifies how much client data
/* is available. The maximal size of the buffer is specified
/* via the DGRAM_BUF_SIZE manifest constant. The service name
/* dropped its privileges. The sock argument specifies the socket
/* that the client should receive data from. The service name
/* argument corresponds to the service name in the master.cf
/* file. The argv argument specifies command-line arguments
/* left over after options processing.
@ -152,6 +149,9 @@
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*
/* Wietse Venema
/* porcupine.org
/*--*/
/* System library. */
@ -258,8 +258,6 @@ static void dgram_server_timeout(int unused_event, void *unused_context)
static void dgram_server_wakeup(int fd)
{
char buf[DGRAM_BUF_SIZE];
ssize_t len;
/*
* Commit suicide when the master process disconnected from us, after
@ -269,8 +267,7 @@ static void dgram_server_wakeup(int fd)
/* void */ ;
if (dgram_server_in_flow_delay && mail_flow_get(1) < 0)
doze(var_in_flow_delay * 1000000);
if ((len = recv(fd, buf, sizeof(buf), 0)) >= 0)
dgram_server_service(buf, len, dgram_server_name, dgram_server_argv);
dgram_server_service(fd, dgram_server_name, dgram_server_argv);
if (master_notify(var_pid, dgram_server_generation, MASTER_STAT_AVAIL) < 0)
dgram_server_abort(EVENT_NULL_TYPE, EVENT_NULL_CONTEXT);
if (var_idle_limit > 0)

View File

@ -133,11 +133,9 @@ extern NORETURN trigger_server_main(int, char **, TRIGGER_SERVER_FN,...);
/*
* dgram_server.c
*/
typedef void (*DGRAM_SERVER_FN) (char *, ssize_t, char *, char **);
typedef void (*DGRAM_SERVER_FN) (int, char *, char **);
extern NORETURN dgram_server_main(int, char **, DGRAM_SERVER_FN,...);
#define DGRAM_BUF_SIZE 4096
/* LICENSE
/* .ad
/* .fi
@ -152,4 +150,7 @@ extern NORETURN dgram_server_main(int, char **, DGRAM_SERVER_FN,...);
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*
/* Wietse Venema
/* porcupine.org
/*--*/

View File

@ -7,8 +7,8 @@
/* \fBpostlogd\fR [generic Postfix daemon options]
/* DESCRIPTION
/* This program logs events on behalf of Postfix programs
/* when the maillog configuration parameter specifies a non-empty
/* value.
/* when the maillog_file configuration parameter specifies a
/* non-empty value.
/* BUGS
/* Non-daemon Postfix programs don't know that they should log
/* to the internal logging service before they have processed
@ -86,12 +86,16 @@
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*
/* Wietse Venema
/* porcupine.org
/*--*/
/*
* System library.
*/
#include <sys_defs.h>
#include <sys/socket.h>
/*
* Utility library.
@ -131,6 +135,11 @@ int var_postlogd_watchdog;
*/
static VSTREAM *postlogd_stream = 0;
/*
* Receive buffer management.
*/
#define DGRAM_BUF_SIZE 4096
/* postlogd_fallback - log messages from postlogd(8) itself */
static void postlogd_fallback(const char *buf)
@ -140,10 +149,16 @@ static void postlogd_fallback(const char *buf)
/* postlogd_service - perform service for client */
static void postlogd_service(char *buf, ssize_t len, char *unused_service,
static void postlogd_service(int sock, char *unused_service,
char **unused_argv)
{
char buf[DGRAM_BUF_SIZE];
ssize_t len;
if ((len = recv(sock, buf, sizeof(buf), 0)) < 0) {
msg_warn("failed to receive message with recv: %m");
return;
}
if (postlogd_stream) {
(void) logwriter_write(postlogd_stream, buf, len);
}

View File

@ -59,6 +59,9 @@
/* Override the fallback setting (see above) with the specified
/* function pointer. This remains in effect until the next
/* msg_logger_init() or msg_logger_control() call.
/* When the function is called with a null argument, it should
/* allocate resources immediately. This is needed in programs
/* that drop privileges after process initialization.
/* .IP CA_MSG_LOGGER_CTL_DISABLE
/* Disable the msg_logger. This remains in effect until the
/* next msg_logger_init() call.
@ -80,6 +83,9 @@
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*
/* Wietse Venema
/* porcupine.org
/*--*/
/*
@ -320,6 +326,9 @@ void msg_logger_control(int name,...)
msg_logger_disconnect();
if (MSG_LOGGER_NEED_SOCKET())
msg_logger_connect();
if (msg_logger_sock == MSG_LOGGER_SOCK_NONE
&& msg_logger_fallback_fn)
msg_logger_fallback_fn((char *) 0);
break;
default:
msg_panic("%s: bad name %d", myname, name);