POSTFIX(1)

postfix(1) โ€” General Commands Manual ๐Ÿ’–

okay so bestie, this is postfix(1) โ€” yes, the General Commands Manual one โ€” and it's giving major main-character Unix energy. iykyk. Let's unpack it. ๐ŸŽ€

โœจ NAME โœจ

postfix โ€” Postfix control program ๐Ÿ’…

๐ŸŽ€ SYNOPSIS ๐ŸŽ€

postfix [-Dv] [-c config_dir] command

๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so first vibe check: this command is reserved for the superuser. If you just wanna submit mail, use the Postfix sendmail(1) command โ€” that's the one for sending, bestie, not this. ๐Ÿ˜ญ

The postfix(1) command controls the operation of the Postfix mail system: start or stop the master(8) daemon, do a health check, and other maintenance. Iconic behavior, honestly.

By default, the postfix(1) command sets up a standardized environment and runs the postfix-script shell script to do the actual work.

However, when support for multiple Postfix instances is configured, postfix(1) executes the command specified with the multi_instance_wrapper configuration parameter. This command will execute the command for each applicable Postfix instance. no cap.

The following commands are implemented:

  • check โ€” Warn about bad directory/file ownership or permissions, and create missing directories. permissions vibe check, slay.
  • start โ€” Start the Postfix mail system. This also runs the configuration check described above.
  • start-fg โ€” Like start, but keep the master(8) daemon running in the foreground, and enable master(8) "init" mode when running as PID 1. This command requires that multi-instance support is disabled (i.e. the multi_instance_directories parameter value must be empty). When running Postfix inside a container, see MAILLOG_README for logging to stdout. Postfix logs to syslog by default, which requires a) running a syslogd process inside the container, or b) mounting the container host's /dev/log socket inside the container (example: docker run -v /dev/log:/dev/log ...), and c) a distinct Postfix "syslog_name" prefix that identifies logging from the Postfix instance. container besties, take notes.
  • stop โ€” Stop the Postfix mail system in an orderly fashion. If possible, running processes are allowed to terminate at their earliest convenience.
Note: in order to refresh the Postfix mail system after a configuration change, do not use the start and stop commands in succession. Use the reload command instead. not me catching you doing start-then-stop โ€” don't. fr fr.
  • abort โ€” Stop the Postfix mail system abruptly. Running processes are signaled to stop immediately.
  • flush โ€” Force delivery: attempt to deliver every message in the deferred mail queue. Normally, attempts to deliver delayed mail happen at regular intervals, the interval doubling after each failed attempt.
Warning: flushing undeliverable mail frequently will result in poor delivery performance of all other mail. this is the messy part, bestie.
  • reload โ€” Re-read configuration files. Running processes terminate at their earliest convenience.
  • status โ€” Indicate if the Postfix mail system is currently running (zero exit status) or stopped (non-zero exit status).
  • set-permissions [name=value ...] โ€” Set the ownership and permissions of Postfix related files and directories, as specified in the postfix-files file. Specify name=value to override and update specific main.cf configuration parameters. Use this, for example, to change the mail_owner or setgid_group setting for an already installed Postfix system. This feature is available in Postfix 2.1 and later. With Postfix 2.0 and earlier, use "$config_directory/post-install set-permissions".
  • logrotate โ€” Rotate the logfile specified with $maillog_file, by appending a time-stamp suffix that is formatted according to $maillog_file_rotate_suffix, and by compressing the file with the command specified with $maillog_file_compressor. This will not rotate /dev/* files. log glow-up, but only for non-dev files.
  • non-bdb subcommand โ€” Migrate a Postfix configuration that uses Berkeley DB hash: or btree: tables, to a configuration that uses lmdb: or a combination of cdb: and lmdb:. This is needed because some (Linux) distributions have removed Berkeley DB support. See postfix-nbdb(1) for documentation. This feature is available in Postfix 3.11 and later. periodt.
  • tls subcommand โ€” Enable opportunistic TLS in the Postfix SMTP client or server, and manage Postfix SMTP server TLS private keys and certificates. See postfix-tls(1) for documentation. This feature is available in Postfix 3.1 and later.
  • upgrade-configuration [name=value ...] โ€” Update the main.cf and master.cf files with information that Postfix needs in order to run: add or update services, and add or update configuration parameter settings. Specify name=value to override and update specific main.cf configuration parameters. This feature is available in Postfix 2.1 and later. With Postfix 2.0 and earlier, use "$config_directory/post-install upgrade-configuration".

The following options are implemented:

  • -c config_dir โ€” Read the main.cf and master.cf configuration files in the named directory instead of the default configuration directory. Use this to distinguish between multiple Postfix instances on the same host. With Postfix 2.6 and later, this option forces the postfix(1) command to operate on the specified Postfix instance only. This behavior is inherited by postfix(1) commands that run as a descendant of the current process. instance-selection slay.
  • -D (with postfix start only) โ€” Run each Postfix daemon under control of a debugger as specified via the debugger_command configuration parameter.
  • -v โ€” Enable verbose logging for debugging purposes. Multiple -v options make the software increasingly verbose. more v's, more lore.

๐ŸŒˆ ENVIRONMENT ๐ŸŒˆ

The postfix(1) command exports the following environment variables before executing the postfix-script file:

  • MAIL_CONFIG โ€” This is set when the -c command-line option is present. With Postfix 2.6 and later, this environment variable forces the postfix(1) command to operate on the specified Postfix instance only. This behavior is inherited by postfix(1) commands that run as a descendant of the current process.
  • MAIL_VERBOSE โ€” This is set when the -v command-line option is present.
  • MAIL_DEBUG โ€” This is set when the -D command-line option is present.

When the internal logging service is enabled (by setting a non-empty maillog_file parameter value) the postfix(1) command exports settings that are used by child processes before they have processed main.cf or command-line settings.

  • POSTLOG_SERVICE โ€” The name of the public postlog service endpoint.
  • POSTLOG_HOSTNAME โ€” The hostname to prepend to internal logging.

โœจ CONFIGURATION PARAMETERS โœจ

okay so these main.cf parameters are exported as environment variables with the exact same names, periodt:

  • config_directory (default: see postconf -d output) โ€” the default location of the Postfix main.cf and master.cf configuration files.
  • command_directory (default: see postconf -d output) โ€” the location of all Postfix administrative commands.
  • daemon_directory (default: see postconf -d output) โ€” the directory with Postfix support programs and daemon programs.
  • html_directory (default: see postconf -d output) โ€” the location of Postfix HTML files that describe how to build, configure or operate a specific Postfix subsystem or feature.
  • mail_owner (default: postfix) โ€” the UNIX system account that owns the Postfix queue and most Postfix daemon processes.
  • mailq_path (default: see postconf -d output) โ€” Sendmail compatibility feature that specifies where the Postfix mailq(1) command is installed.
  • manpage_directory (default: see postconf -d output) โ€” where the Postfix manual pages are installed.
  • newaliases_path (default: see postconf -d output) โ€” Sendmail compatibility feature that specifies the location of the newaliases(1) command.
  • queue_directory (default: see postconf -d output) โ€” the location of the Postfix top-level queue directory.
  • readme_directory (default: see postconf -d output) โ€” the location of Postfix README files that describe how to build, configure or operate a specific Postfix subsystem or feature.
  • sendmail_path (default: see postconf -d output) โ€” a Sendmail compatibility feature that specifies the location of the Postfix sendmail(1) command.
  • setgid_group (default: postdrop) โ€” the group ownership of set-gid Postfix commands and of group-writable Postfix directories.
no cap, this is the whole parameter list โ€” every default stays exactly as written ๐Ÿ’…

๐Ÿฆ‹ Available in Postfix version 2.5 and later ๐Ÿฆ‹

  • data_directory (default: see postconf -d output) โ€” the directory with Postfix-writable data files, for example: caches, pseudo-random numbers.

๐Ÿฆ‹ Available in Postfix version 3.0 and later ๐Ÿฆ‹

  • compatibility_level (default: 0) โ€” a safety net that causes Postfix to run with backwards-compatible default settings after an upgrade to a newer Postfix version.
  • meta_directory (default: see postconf -d output) โ€” the location of non-executable files that are shared among multiple Postfix instances, such as postfix-files, dynamicmaps.cf, and the multi-instance template files main.cf.proto and master.cf.proto.
  • shlib_directory (default: see postconf -d output) โ€” the location of Postfix dynamically-linked libraries (libpostfix-*.so), and the default location of Postfix database plugins (postfix-*.so) that have a relative pathname in the dynamicmaps.cf file.

๐Ÿฆ‹ Available in Postfix version 3.1 and later ๐Ÿฆ‹

  • openssl_path (default: openssl) โ€” the location of the OpenSSL command line program openssl(1).

๐ŸŒˆ Other configuration parameters ๐ŸŒˆ

  • import_environment (default: see postconf -d output) โ€” the list of environment variables that a privileged Postfix process will import from a non-Postfix parent process, or name=value environment overrides.
  • syslog_facility (default: mail) โ€” the syslog facility of Postfix logging.
  • syslog_name (default: see postconf -d output) โ€” a prefix that is prepended to the process name in syslog records, so that, for example, "smtpd" becomes "prefix/smtpd".

๐Ÿฆ‹ Available in Postfix version 2.6 and later ๐Ÿฆ‹

  • multi_instance_directories (default: empty) โ€” an optional list of non-default Postfix configuration directories; these directories belong to additional Postfix instances that share the Postfix executable files and documentation with the default Postfix instance, and that are started, stopped, etc., together with the default Postfix instance.
  • multi_instance_wrapper (default: empty) โ€” the pathname of a multi-instance manager command that the postfix(1) command invokes when the multi_instance_directories parameter value is non-empty.
  • multi_instance_group (default: empty) โ€” the optional instance group name of this Postfix instance.
  • multi_instance_name (default: empty) โ€” the optional instance name of this Postfix instance.
  • multi_instance_enable (default: no) โ€” allow this Postfix instance to be started, stopped, etc., by a multi-instance manager.

๐Ÿฆ‹ Available in Postfix version 3.4 and later ๐Ÿฆ‹

  • maillog_file (default: empty) โ€” the name of an optional logfile that is written by the Postfix postlogd(8) service.
  • maillog_file_compressor (default: gzip) โ€” the program to run after rotating $maillog_file with postfix logrotate.
  • maillog_file_prefixes (default: /var, /dev/stdout) โ€” a list of allowed prefixes for a maillog_file value.
  • maillog_file_rotate_suffix (default: %Y%m%d-%H%M%S) โ€” the format of the suffix to append to $maillog_file while rotating the file with postfix logrotate.
  • postlog_service_name (default: postlog) โ€” the name of the postlogd(8) service entry in master.cf.

๐Ÿ—‚๏ธ FILES ๐Ÿ—‚๏ธ

Prior to Postfix version 2.6, all of the following files were in $config_directory. Some files are now in $daemon_directory or $meta_directory so that they can be shared among multiple instances that run the same Postfix version.

Use the command postconf config_directory or postconf daemon_directory to expand the names into their actual values.

  • $config_directory/main.cf โ€” Postfix configuration parameters
  • $config_directory/master.cf โ€” Postfix daemon processes
  • $daemon_directory/postfix-script โ€” administrative commands
  • $daemon_directory/post-install โ€” post-installation configuration
  • $meta_directory/dynamicmaps.cf โ€” plug-in database clients
  • $meta_directory/postfix-files โ€” file/directory permissions

๐Ÿ”— SEE ALSO ๐Ÿ”—

bestie, the link list is huge and every single one is here, no skips:

๐Ÿ’– Commands ๐Ÿ’–

๐Ÿ’– Postfix configuration ๐Ÿ’–

๐Ÿ’– Table-driven mechanisms ๐Ÿ’–

๐Ÿ’– Table lookup mechanisms ๐Ÿ’–

๐Ÿ’– Daemon processes ๐Ÿ’–

๐Ÿ’– Other ๐Ÿ’–


๐Ÿ“š README FILES ๐Ÿ“š

Use postconf readme_directory or postconf html_directory to locate this information.

  • OVERVIEW โ€” overview of Postfix commands and processes
  • BASIC_CONFIGURATION_README โ€” Postfix basic configuration
  • ADDRESS_REWRITING_README โ€” Postfix address rewriting
  • SMTPD_ACCESS_README โ€” SMTP relay/access control
  • CONTENT_INSPECTION_README โ€” Postfix content inspection
  • QSHAPE_README โ€” Postfix queue analysis

๐Ÿ“œ LICENSE ๐Ÿ“œ

The Secure Mailer license must be distributed with this software.


๐Ÿ‘‘ AUTHOR(S) ๐Ÿ‘‘

  • Wietse Venema โ€” IBM T.J. Watson Research, P.O. Box 704, Yorktown Heights, NY 10598, USA.
  • Wietse Venema โ€” Google, Inc., 111 8th Avenue, New York, NY 10011, USA.
  • TLS support by: Lutz Jaenicke โ€” Brandenburg University of Technology, Cottbus, Germany.
  • Victor Duchovni โ€” Morgan Stanley.
  • SASL support originally by: Till Franke โ€” SuSE Rhein/Main AG, 65760 Eschborn, Germany.
  • LMTP support originally by: Philip A. Prindeville โ€” Mirapoint, Inc., USA.
  • Amos Gouaux โ€” University of Texas at Dallas, P.O. Box 830688, MC34, Richardson, TX 75083, USA.
  • IPv6 support originally by:
    • Mark Huizer โ€” Eindhoven University, The Netherlands
    • Jun-ichiro 'itojun' Hagino โ€” KAME project, Japan
    • The Linux PLD project
    • Dean Strik โ€” Eindhoven University, The Netherlands

Final footer vibe check: the footer is just POSTFIX(1) โ€” thatโ€™s the source/version tag โ€” and no date line is shown, so thatโ€™s the whole sign-off. Bye bestie, go config slay ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from