2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-09-03 15:45:24 +00:00

postfix-3.4-20180403

This commit is contained in:
Wietse Venema
2018-04-03 00:00:00 -05:00
committed by Viktor Dukhovni
parent 787f2e15f7
commit 0b850f6840
10 changed files with 125 additions and 86 deletions

View File

@@ -23363,3 +23363,11 @@ Apologies for any names omitted.
Portability: FreeBSD 11 is supported. Files: makedefs, Portability: FreeBSD 11 is supported. Files: makedefs,
util/sys_defs.h. util/sys_defs.h.
20180403
Containers: "postfix start-fg" will now attempt to run the
master daemon as PID 1, and "postfix stop" will use a
stronger signal if the master does not stop. Files:
conf/postfix-script, master/master.c, master/master_sig.c,
postfix/postfix.c.

View File

@@ -150,11 +150,16 @@ start|start-fg)
;; ;;
start-fg) start-fg)
# Foreground start-up is incompatible with multi-instance mode. # Foreground start-up is incompatible with multi-instance mode.
# We can't use "exec $daemon_directory/master" here: that would # Use "exec $daemon_directory/master -i" only if PID == 1.
# break process group management, and "postfix stop" would kill # Otherwise, doing so would break process group management,
# too many processes. # and "postfix stop" would kill too many processes.
case $instances in case $instances in
"") $daemon_directory/master "") case $$ in
1) exec $daemon_directory/master -i
$FATAL "cannot start-fg the master daemon"
exit 1;;
*) $daemon_directory/master;;
esac
;; ;;
*) $FATAL "start-fg does not support multi_instance_directories" *) $FATAL "start-fg does not support multi_instance_directories"
exit 1 exit 1

View File

@@ -10,7 +10,7 @@ MASTER(8) MASTER(8)
master - Postfix master process master - Postfix master process
<b>SYNOPSIS</b> <b>SYNOPSIS</b>
<b>master</b> [<b>-Ddtvw</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-e</b> <i>exit</i><b>_</b><i>time</i>] <b>master</b> [<b>-Dditvw</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-e</b> <i>exit</i><b>_</b><i>time</i>]
<b>DESCRIPTION</b> <b>DESCRIPTION</b>
The <a href="master.8.html"><b>master</b>(8)</a> daemon is the resident process that runs Postfix daemons The <a href="master.8.html"><b>master</b>(8)</a> daemon is the resident process that runs Postfix daemons
@@ -47,6 +47,10 @@ MASTER(8) MASTER(8)
Terminate the master process after <i>exit</i><b>_</b><i>time</i> seconds. Child pro- Terminate the master process after <i>exit</i><b>_</b><i>time</i> seconds. Child pro-
cesses terminate at their convenience. cesses terminate at their convenience.
<b>-i</b> Enable <b>init</b> mode: do not attempt to become a session or process
group leader. This mode is allowed only if the process ID equals
1.
<b>-t</b> Test mode. Return a zero exit status when the <b>master.pid</b> lock <b>-t</b> Test mode. Return a zero exit status when the <b>master.pid</b> lock
file does not exist or when that file is not locked. This is file does not exist or when that file is not locked. This is
evidence that the <a href="master.8.html"><b>master</b>(8)</a> daemon is not running. evidence that the <a href="master.8.html"><b>master</b>(8)</a> daemon is not running.

View File

@@ -38,100 +38,101 @@ POSTFIX(1) POSTFIX(1)
<b>start-fg</b> <b>start-fg</b>
Like <b>start</b>, but keep the master daemon running in the fore- Like <b>start</b>, but keep the master daemon running in the fore-
ground. This requires that multi-instance support is disabled ground, if possible as PID 1. This command requires that
(i.e. the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parameter value must be multi-instance support is disabled (i.e. the
empty). When running Postfix inside a container, mount the con- <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parameter value must be empty). When
tainer host's /dev/log socket inside the container (example: running Postfix inside a container, mount the container host's
"docker run -v /dev/log:/dev/log ...") and specify a distinct /dev/log socket inside the container (example: "docker run -v
Postfix "<a href="postconf.5.html#syslog_name">syslog_name</a>" prefix that identifies logging from the /dev/log:/dev/log ...") and specify a distinct Postfix "sys-
Postfix instance. log_name" prefix that identifies logging from the Postfix
instance.
<b>stop</b> Stop the Postfix mail system in an orderly fashion. If possible, <b>stop</b> Stop the Postfix mail system in an orderly fashion. If possible,
running processes are allowed to terminate at their earliest running processes are allowed to terminate at their earliest
convenience. convenience.
Note: in order to refresh the Postfix mail system after a con- Note: in order to refresh the Postfix mail system after a con-
figuration change, do not use the <b>start</b> and <b>stop</b> commands in figuration change, do not use the <b>start</b> and <b>stop</b> commands in
succession. Use the <b>reload</b> command instead. succession. Use the <b>reload</b> command instead.
<b>abort</b> Stop the Postfix mail system abruptly. Running processes are <b>abort</b> Stop the Postfix mail system abruptly. Running processes are
signaled to stop immediately. signaled to stop immediately.
<b>flush</b> Force delivery: attempt to deliver every message in the deferred <b>flush</b> Force delivery: attempt to deliver every message in the deferred
mail queue. Normally, attempts to deliver delayed mail happen at mail queue. Normally, attempts to deliver delayed mail happen at
regular intervals, the interval doubling after each failed regular intervals, the interval doubling after each failed
attempt. attempt.
Warning: flushing undeliverable mail frequently will result in Warning: flushing undeliverable mail frequently will result in
poor delivery performance of all other mail. poor delivery performance of all other mail.
<b>reload</b> Re-read configuration files. Running processes terminate at <b>reload</b> Re-read configuration files. Running processes terminate at
their earliest convenience. their earliest convenience.
<b>status</b> Indicate if the Postfix mail system is currently running. <b>status</b> Indicate if the Postfix mail system is currently running.
<b>set-permissions</b> [<i>name</i>=<i>value ...</i>] <b>set-permissions</b> [<i>name</i>=<i>value ...</i>]
Set the ownership and permissions of Postfix related files and Set the ownership and permissions of Postfix related files and
directories, as specified in the <b>postfix-files</b> file. directories, as specified in the <b>postfix-files</b> file.
Specify <i>name</i>=<i>value</i> to override and update specific <a href="postconf.5.html">main.cf</a> con- Specify <i>name</i>=<i>value</i> to override and update specific <a href="postconf.5.html">main.cf</a> con-
figuration parameters. Use this, for example, to change the figuration parameters. Use this, for example, to change the
<b><a href="postconf.5.html#mail_owner">mail_owner</a></b> or <b><a href="postconf.5.html#setgid_group">setgid_group</a></b> setting for an already installed <b><a href="postconf.5.html#mail_owner">mail_owner</a></b> or <b><a href="postconf.5.html#setgid_group">setgid_group</a></b> setting for an already installed
Postfix system. Postfix system.
This feature is available in Postfix 2.1 and later. With Post- This feature is available in Postfix 2.1 and later. With Post-
fix 2.0 and earlier, use "<b>$<a href="postconf.5.html#config_directory">config_directory</a>/post-install</b> fix 2.0 and earlier, use "<b>$<a href="postconf.5.html#config_directory">config_directory</a>/post-install</b>
<b>set-permissions</b>". <b>set-permissions</b>".
<b>tls</b> <i>subcommand</i> <b>tls</b> <i>subcommand</i>
Enable opportunistic TLS in the Postfix SMTP client or server, Enable opportunistic TLS in the Postfix SMTP client or server,
and manage Postfix SMTP server TLS private keys and certifi- and manage Postfix SMTP server TLS private keys and certifi-
cates. See <a href="postfix-tls.1.html">postfix-tls(1)</a> for documentation. cates. See <a href="postfix-tls.1.html">postfix-tls(1)</a> for documentation.
This feature is available in Postfix 3.1 and later. This feature is available in Postfix 3.1 and later.
<b>upgrade-configuration</b> [<i>name</i>=<i>value ...</i>] <b>upgrade-configuration</b> [<i>name</i>=<i>value ...</i>]
Update the <a href="postconf.5.html"><b>main.cf</b></a> and <a href="master.5.html"><b>master.cf</b></a> files with information that Update the <a href="postconf.5.html"><b>main.cf</b></a> and <a href="master.5.html"><b>master.cf</b></a> files with information that
Postfix needs in order to run: add or update services, and add Postfix needs in order to run: add or update services, and add
or update configuration parameter settings. or update configuration parameter settings.
Specify <i>name</i>=<i>value</i> to override and update specific <a href="postconf.5.html">main.cf</a> con- Specify <i>name</i>=<i>value</i> to override and update specific <a href="postconf.5.html">main.cf</a> con-
figuration parameters. figuration parameters.
This feature is available in Postfix 2.1 and later. With Post- This feature is available in Postfix 2.1 and later. With Post-
fix 2.0 and earlier, use "<b>$<a href="postconf.5.html#config_directory">config_directory</a>/post-install</b> fix 2.0 and earlier, use "<b>$<a href="postconf.5.html#config_directory">config_directory</a>/post-install</b>
<b>upgrade-configuration</b>". <b>upgrade-configuration</b>".
The following options are implemented: The following options are implemented:
<b>-c</b> <i>config</i><b>_</b><i>dir</i> <b>-c</b> <i>config</i><b>_</b><i>dir</i>
Read the <a href="postconf.5.html"><b>main.cf</b></a> and <a href="master.5.html"><b>master.cf</b></a> configuration files in the named Read the <a href="postconf.5.html"><b>main.cf</b></a> and <a href="master.5.html"><b>master.cf</b></a> configuration files in the named
directory instead of the default configuration directory. Use directory instead of the default configuration directory. Use
this to distinguish between multiple Postfix instances on the this to distinguish between multiple Postfix instances on the
same host. same host.
With Postfix 2.6 and later, this option forces the <a href="postfix.1.html">postfix(1)</a> With Postfix 2.6 and later, this option forces the <a href="postfix.1.html">postfix(1)</a>
command to operate on the specified Postfix instance only. This command to operate on the specified Postfix instance only. This
behavior is inherited by <a href="postfix.1.html">postfix(1)</a> commands that run as a behavior is inherited by <a href="postfix.1.html">postfix(1)</a> commands that run as a
descendant of the current process. descendant of the current process.
<b>-D</b> (with <b>postfix start</b> only) <b>-D</b> (with <b>postfix start</b> only)
Run each Postfix daemon under control of a debugger as specified Run each Postfix daemon under control of a debugger as specified
via the <b><a href="postconf.5.html#debugger_command">debugger_command</a></b> configuration parameter. via the <b><a href="postconf.5.html#debugger_command">debugger_command</a></b> configuration parameter.
<b>-v</b> Enable verbose logging for debugging purposes. Multiple <b>-v</b> <b>-v</b> Enable verbose logging for debugging purposes. Multiple <b>-v</b>
options make the software increasingly verbose. options make the software increasingly verbose.
<b>ENVIRONMENT</b> <b>ENVIRONMENT</b>
The <a href="postfix.1.html"><b>postfix</b>(1)</a> command exports the following environment variables The <a href="postfix.1.html"><b>postfix</b>(1)</a> command exports the following environment variables
before executing the <b>postfix-script</b> file: before executing the <b>postfix-script</b> file:
<b>MAIL_CONFIG</b> <b>MAIL_CONFIG</b>
This is set when the -c command-line option is present. This is set when the -c command-line option is present.
With Postfix 2.6 and later, this environment variable forces the With Postfix 2.6 and later, this environment variable forces the
<a href="postfix.1.html">postfix(1)</a> command to operate on the specified Postfix instance <a href="postfix.1.html">postfix(1)</a> command to operate on the specified Postfix instance
only. This behavior is inherited by <a href="postfix.1.html">postfix(1)</a> commands that only. This behavior is inherited by <a href="postfix.1.html">postfix(1)</a> commands that
run as a descendant of the current process. run as a descendant of the current process.
<b>MAIL_VERBOSE</b> <b>MAIL_VERBOSE</b>
@@ -145,7 +146,7 @@ POSTFIX(1) POSTFIX(1)
ment variables with the same names: ment variables with the same names:
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con- The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
figuration files. figuration files.
<b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b>
@@ -155,22 +156,22 @@ POSTFIX(1) POSTFIX(1)
The directory with Postfix support programs and daemon programs. The directory with Postfix support programs and daemon programs.
<b><a href="postconf.5.html#html_directory">html_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#html_directory">html_directory</a> (see 'postconf -d' output)</b>
The location of Postfix HTML files that describe how to build, The location of Postfix HTML files that describe how to build,
configure or operate a specific Postfix subsystem or feature. configure or operate a specific Postfix subsystem or feature.
<b><a href="postconf.5.html#mail_owner">mail_owner</a> (postfix)</b> <b><a href="postconf.5.html#mail_owner">mail_owner</a> (postfix)</b>
The UNIX system account that owns the Postfix queue and most The UNIX system account that owns the Postfix queue and most
Postfix daemon processes. Postfix daemon processes.
<b><a href="postconf.5.html#mailq_path">mailq_path</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#mailq_path">mailq_path</a> (see 'postconf -d' output)</b>
Sendmail compatibility feature that specifies where the Postfix Sendmail compatibility feature that specifies where the Postfix
<a href="mailq.1.html"><b>mailq</b>(1)</a> command is installed. <a href="mailq.1.html"><b>mailq</b>(1)</a> command is installed.
<b><a href="postconf.5.html#manpage_directory">manpage_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#manpage_directory">manpage_directory</a> (see 'postconf -d' output)</b>
Where the Postfix manual pages are installed. Where the Postfix manual pages are installed.
<b><a href="postconf.5.html#newaliases_path">newaliases_path</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#newaliases_path">newaliases_path</a> (see 'postconf -d' output)</b>
Sendmail compatibility feature that specifies the location of Sendmail compatibility feature that specifies the location of
the <a href="newaliases.1.html"><b>newaliases</b>(1)</a> command. the <a href="newaliases.1.html"><b>newaliases</b>(1)</a> command.
<b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
@@ -181,31 +182,31 @@ POSTFIX(1) POSTFIX(1)
configure or operate a specific Postfix subsystem or feature. configure or operate a specific Postfix subsystem or feature.
<b><a href="postconf.5.html#sendmail_path">sendmail_path</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#sendmail_path">sendmail_path</a> (see 'postconf -d' output)</b>
A Sendmail compatibility feature that specifies the location of A Sendmail compatibility feature that specifies the location of
the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command. the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command.
<b><a href="postconf.5.html#setgid_group">setgid_group</a> (postdrop)</b> <b><a href="postconf.5.html#setgid_group">setgid_group</a> (postdrop)</b>
The group ownership of set-gid Postfix commands and of The group ownership of set-gid Postfix commands and of
group-writable Postfix directories. group-writable Postfix directories.
Available in Postfix version 2.5 and later: Available in Postfix version 2.5 and later:
<b><a href="postconf.5.html#data_directory">data_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#data_directory">data_directory</a> (see 'postconf -d' output)</b>
The directory with Postfix-writable data files (for example: The directory with Postfix-writable data files (for example:
caches, pseudo-random numbers). caches, pseudo-random numbers).
Available in Postfix version 3.0 and later: Available in Postfix version 3.0 and later:
<b><a href="postconf.5.html#meta_directory">meta_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#meta_directory">meta_directory</a> (see 'postconf -d' output)</b>
The location of non-executable files that are shared among mul- The location of non-executable files that are shared among mul-
tiple Postfix instances, such as postfix-files, dynamicmaps.cf, tiple Postfix instances, such as postfix-files, dynamicmaps.cf,
and the multi-instance template files <a href="postconf.5.html">main.cf</a>.proto and <a href="master.5.html">mas- and the multi-instance template files <a href="postconf.5.html">main.cf</a>.proto and <a href="master.5.html">mas-
ter.cf</a>.proto. ter.cf</a>.proto.
<b><a href="postconf.5.html#shlib_directory">shlib_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#shlib_directory">shlib_directory</a> (see 'postconf -d' output)</b>
The location of Postfix dynamically-linked libraries (libpost- The location of Postfix dynamically-linked libraries (libpost-
fix-*.so), and the default location of Postfix database plugins fix-*.so), and the default location of Postfix database plugins
(postfix-*.so) that have a relative pathname in the dynam- (postfix-*.so) that have a relative pathname in the dynam-
icmaps.cf file. icmaps.cf file.
Available in Postfix version 3.1 and later: Available in Postfix version 3.1 and later:
@@ -216,29 +217,29 @@ POSTFIX(1) POSTFIX(1)
Other configuration parameters: Other configuration parameters:
<b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
The list of environment parameters that a privileged Postfix The list of environment parameters that a privileged Postfix
process will import from a non-Postfix parent process, or process will import from a non-Postfix parent process, or
name=value environment overrides. name=value environment overrides.
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b> <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
The syslog facility of Postfix logging. The syslog facility of Postfix logging.
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
A prefix that is prepended to the process name in syslog A prefix that is prepended to the process name in syslog
records, so that, for example, "smtpd" becomes "prefix/smtpd". records, so that, for example, "smtpd" becomes "prefix/smtpd".
Available in Postfix version 2.6 and later: Available in Postfix version 2.6 and later:
<b><a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> (empty)</b> <b><a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> (empty)</b>
An optional list of non-default Postfix configuration directo- An optional list of non-default Postfix configuration directo-
ries; these directories belong to additional Postfix instances ries; these directories belong to additional Postfix instances
that share the Postfix executable files and documentation with that share the Postfix executable files and documentation with
the default Postfix instance, and that are started, stopped, the default Postfix instance, and that are started, stopped,
etc., together with the default Postfix instance. etc., together with the default Postfix instance.
<b><a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a> (empty)</b> <b><a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a> (empty)</b>
The pathname of a multi-instance manager command that the <a href="postfix.1.html"><b>post-</b></a> The pathname of a multi-instance manager command that the <a href="postfix.1.html"><b>post-</b></a>
<a href="postfix.1.html"><b>fix</b>(1)</a> command invokes when the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> <a href="postfix.1.html"><b>fix</b>(1)</a> command invokes when the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>
parameter value is non-empty. parameter value is non-empty.
<b><a href="postconf.5.html#multi_instance_group">multi_instance_group</a> (empty)</b> <b><a href="postconf.5.html#multi_instance_group">multi_instance_group</a> (empty)</b>
@@ -248,15 +249,15 @@ POSTFIX(1) POSTFIX(1)
The optional instance name of this Postfix instance. The optional instance name of this Postfix instance.
<b><a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> (no)</b> <b><a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> (no)</b>
Allow this Postfix instance to be started, stopped, etc., by a Allow this Postfix instance to be started, stopped, etc., by a
multi-instance manager. multi-instance manager.
<b>FILES</b> <b>FILES</b>
Prior to Postfix version 2.6, all of the following files were in <b>$<a href="postconf.5.html#config_directory">con</a>-</b> Prior to Postfix version 2.6, all of the following files were in <b>$<a href="postconf.5.html#config_directory">con</a>-</b>
<b><a href="postconf.5.html#config_directory">fig_directory</a></b>. Some files are now in <b>$<a href="postconf.5.html#daemon_directory">daemon_directory</a></b> so that they can <b><a href="postconf.5.html#config_directory">fig_directory</a></b>. Some files are now in <b>$<a href="postconf.5.html#daemon_directory">daemon_directory</a></b> so that they can
be shared among multiple instances that run the same Postfix version. be shared among multiple instances that run the same Postfix version.
Use the command "<b>postconf <a href="postconf.5.html#config_directory">config_directory</a></b>" or "<b>postconf <a href="postconf.5.html#daemon_directory">daemon_direc</a>-</b> Use the command "<b>postconf <a href="postconf.5.html#config_directory">config_directory</a></b>" or "<b>postconf <a href="postconf.5.html#daemon_directory">daemon_direc</a>-</b>
<b><a href="postconf.5.html#daemon_directory">tory</a></b>" to expand the names into their actual values. <b><a href="postconf.5.html#daemon_directory">tory</a></b>" to expand the names into their actual values.
$<a href="postconf.5.html#config_directory">config_directory</a>/<a href="postconf.5.html">main.cf</a>, Postfix configuration parameters $<a href="postconf.5.html#config_directory">config_directory</a>/<a href="postconf.5.html">main.cf</a>, Postfix configuration parameters

View File

@@ -39,13 +39,14 @@ Start the Postfix mail system. This also runs the configuration
check described above. check described above.
.IP \fBstart\-fg\fR .IP \fBstart\-fg\fR
Like \fBstart\fR, but keep the master daemon running in the Like \fBstart\fR, but keep the master daemon running in the
foreground. This requires that multi\-instance support is foreground, if possible as PID 1. This command requires
disabled (i.e. the multi_instance_directories parameter that multi\-instance support is disabled (i.e. the
value must be empty). When running Postfix inside a container, multi_instance_directories parameter value must be empty).
mount the container host's /dev/log socket inside the When running Postfix inside a container, mount the container
container (example: "docker run \-v /dev/log:/dev/log ...") host's /dev/log socket inside the container (example: "docker
and specify a distinct Postfix "syslog_name" prefix that run \-v /dev/log:/dev/log ...") and specify a distinct
identifies logging from the Postfix instance. Postfix "syslog_name" prefix that identifies logging from
the Postfix instance.
.IP \fBstop\fR .IP \fBstop\fR
Stop the Postfix mail system in an orderly fashion. If Stop the Postfix mail system in an orderly fashion. If
possible, running processes are allowed to terminate at possible, running processes are allowed to terminate at

View File

@@ -8,7 +8,7 @@ Postfix master process
.SH "SYNOPSIS" .SH "SYNOPSIS"
.na .na
.nf .nf
\fBmaster\fR [\fB\-Ddtvw\fR] [\fB\-c \fIconfig_dir\fR] [\fB\-e \fIexit_time\fR] \fBmaster\fR [\fB\-Dditvw\fR] [\fB\-c \fIconfig_dir\fR] [\fB\-e \fIexit_time\fR]
.SH DESCRIPTION .SH DESCRIPTION
.ad .ad
.fi .fi
@@ -43,6 +43,10 @@ for debugging only.
.IP "\fB\-e \fIexit_time\fR" .IP "\fB\-e \fIexit_time\fR"
Terminate the master process after \fIexit_time\fR seconds. Child Terminate the master process after \fIexit_time\fR seconds. Child
processes terminate at their convenience. processes terminate at their convenience.
.IP \fB\-i\fR
Enable \fBinit\fR mode: do not attempt to become a session
or process group leader. This mode is allowed only if the
process ID equals 1.
.IP \fB\-t\fR .IP \fB\-t\fR
Test mode. Return a zero exit status when the \fBmaster.pid\fR lock Test mode. Return a zero exit status when the \fBmaster.pid\fR lock
file does not exist or when that file is not locked. This is evidence file does not exist or when that file is not locked. This is evidence

View File

@@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no * Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only. * patchlevel; they change the release date only.
*/ */
#define MAIL_RELEASE_DATE "20180401" #define MAIL_RELEASE_DATE "20180403"
#define MAIL_VERSION_NUMBER "3.4" #define MAIL_VERSION_NUMBER "3.4"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@@ -4,7 +4,7 @@
/* SUMMARY /* SUMMARY
/* Postfix master process /* Postfix master process
/* SYNOPSIS /* SYNOPSIS
/* \fBmaster\fR [\fB-Ddtvw\fR] [\fB-c \fIconfig_dir\fR] [\fB-e \fIexit_time\fR] /* \fBmaster\fR [\fB-Dditvw\fR] [\fB-c \fIconfig_dir\fR] [\fB-e \fIexit_time\fR]
/* DESCRIPTION /* DESCRIPTION
/* The \fBmaster\fR(8) daemon is the resident process that runs Postfix /* The \fBmaster\fR(8) daemon is the resident process that runs Postfix
/* daemons on demand: daemons to send or receive messages via the /* daemons on demand: daemons to send or receive messages via the
@@ -37,6 +37,10 @@
/* .IP "\fB-e \fIexit_time\fR" /* .IP "\fB-e \fIexit_time\fR"
/* Terminate the master process after \fIexit_time\fR seconds. Child /* Terminate the master process after \fIexit_time\fR seconds. Child
/* processes terminate at their convenience. /* processes terminate at their convenience.
/* .IP \fB-i\fR
/* Enable \fBinit\fR mode: do not attempt to become a session
/* or process group leader. This mode is allowed only if the
/* process ID equals 1.
/* .IP \fB-t\fR /* .IP \fB-t\fR
/* Test mode. Return a zero exit status when the \fBmaster.pid\fR lock /* Test mode. Return a zero exit status when the \fBmaster.pid\fR lock
/* file does not exist or when that file is not locked. This is evidence /* file does not exist or when that file is not locked. This is evidence
@@ -266,6 +270,7 @@ int main(int argc, char **argv)
ARGV *import_env; ARGV *import_env;
int wait_flag = 0; int wait_flag = 0;
int monitor_fd = -1; int monitor_fd = -1;
int init_mode = 0;
/* /*
* Fingerprint executables and core dumps. * Fingerprint executables and core dumps.
@@ -334,7 +339,7 @@ int main(int argc, char **argv)
/* /*
* Process JCL. * Process JCL.
*/ */
while ((ch = GETOPT(argc, argv, "c:Dde:tvw")) > 0) { while ((ch = GETOPT(argc, argv, "c:Dde:itvw")) > 0) {
switch (ch) { switch (ch) {
case 'c': case 'c':
if (setenv(CONF_ENV_PATH, optarg, 1) < 0) if (setenv(CONF_ENV_PATH, optarg, 1) < 0)
@@ -346,6 +351,11 @@ int main(int argc, char **argv)
case 'e': case 'e':
event_request_timer(master_exit_event, (void *) 0, atoi(optarg)); event_request_timer(master_exit_event, (void *) 0, atoi(optarg));
break; break;
case 'i':
if (getpid() != 1)
msg_fatal("-i is allowed with for PID 1 process");
init_mode = 1;
break;
case 'D': case 'D':
debug_me = 1; debug_me = 1;
break; break;
@@ -375,6 +385,8 @@ int main(int argc, char **argv)
*/ */
if (test_lock && wait_flag) if (test_lock && wait_flag)
msg_fatal("the -t and -w options cannot be used together"); msg_fatal("the -t and -w options cannot be used together");
if (init_mode + debug_me + !master_detach + wait_flag > 1)
msg_fatal("specify one of -i, -D, -d, or -w");
/* /*
* Run a foreground monitor process that returns an exit status of 0 when * Run a foreground monitor process that returns an exit status of 0 when
@@ -403,7 +415,8 @@ int main(int argc, char **argv)
* all MTA processes cleanly. Give up if we can't separate from our * all MTA processes cleanly. Give up if we can't separate from our
* parent process. We're not supposed to blow away the parent. * parent process. We're not supposed to blow away the parent.
*/ */
if (debug_me == 0 && master_detach != 0 && setsid() == -1 && getsid(0) != getpid()) if (init_mode == 0 && debug_me == 0 && master_detach != 0
&& setsid() == -1 && getsid(0) != getpid())
msg_fatal("unable to set session and process group ID: %m"); msg_fatal("unable to set session and process group ID: %m");
/* /*

View File

@@ -210,6 +210,8 @@ static void master_sigdeath(int sig)
msg_fatal("%s: sigaction: %m", myname); msg_fatal("%s: sigaction: %m", myname);
if (kill(pid, sig) < 0) if (kill(pid, sig) < 0)
msg_fatal("%s: kill myself: %m", myname); msg_fatal("%s: kill myself: %m", myname);
if (kill(pid, SIGKILL) < 0)
msg_fatal("%s: kill myself: %m", myname);
} }
/* master_sigsetup - set up signal handlers */ /* master_sigsetup - set up signal handlers */

View File

@@ -33,13 +33,14 @@
/* check described above. /* check described above.
/* .IP \fBstart-fg\fR /* .IP \fBstart-fg\fR
/* Like \fBstart\fR, but keep the master daemon running in the /* Like \fBstart\fR, but keep the master daemon running in the
/* foreground. This requires that multi-instance support is /* foreground, if possible as PID 1. This command requires
/* disabled (i.e. the multi_instance_directories parameter /* that multi-instance support is disabled (i.e. the
/* value must be empty). When running Postfix inside a container, /* multi_instance_directories parameter value must be empty).
/* mount the container host's /dev/log socket inside the /* When running Postfix inside a container, mount the container
/* container (example: "docker run -v /dev/log:/dev/log ...") /* host's /dev/log socket inside the container (example: "docker
/* and specify a distinct Postfix "syslog_name" prefix that /* run -v /dev/log:/dev/log ...") and specify a distinct
/* identifies logging from the Postfix instance. /* Postfix "syslog_name" prefix that identifies logging from
/* the Postfix instance.
/* .IP \fBstop\fR /* .IP \fBstop\fR
/* Stop the Postfix mail system in an orderly fashion. If /* Stop the Postfix mail system in an orderly fashion. If
/* possible, running processes are allowed to terminate at /* possible, running processes are allowed to terminate at