Postfix/master.cf

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search

About

The following text is heavily based on instructions found in the default installation of master.cf.

master.cf is the Postfix "master process configuration file" (manpage). It is a text file in which each logical line describes how a particular Postfix daemon program should be run.

  • A logical line starts with non-whitespace, non-comment text.
  • Empty lines and whitespace-only lines are ignored, as are comment lines whose first non-whitespace character is a '#'.
  • A line that starts with whitespace continues a logical line.

The fields that make up each line are described below. A "-" field value requests that a default value be used for that field.

  • Service: any name that is valid for the specified transport type (the next field). With INET transports, a service is specified as host:port. The host part (and colon) may be omitted. Either host or port may be given in symbolic form or in numeric form. Examples for the SMTP server: localhost:smtp receives mail via the loopback interface only; 10025 receives mail on port 10025.
  • Transport type: "inet" for Internet sockets, "unix" for UNIX-domain sockets, "fifo" for named pipes.
  • Private: whether or not access is restricted to the mail system. Default is private service. Internet (inet) sockets can't be private.
  • Unprivileged: whether the service runs with root privileges or as the owner of the Postfix system (the owner name is controlled by the mail_owner configuration variable in the main.cf file). Only the pipe, virtual and local delivery daemons require privileges.
  • Chroot: whether or not the service runs chrooted to the mail queue directory (pathname is controlled by the queue_directory configuration variable in the main.cf file). Presently, all Postfix daemons can run chrooted, except for the pipe, virtual and local delivery daemons.
    • The proxymap server can run chrooted, but doing so defeats most of the purpose of having that service in the first place.
    • The files in the examples/chroot-setup subdirectory describe how to set up a Postfix chroot environment for your type of machine.
  • Wakeup time: automatically wake up the named service after the specified number of seconds. A ? at the end of the wakeup time field requests that wake up events be sent only to services that are actually being used. Specify 0 for no wakeup. Presently, only the pickup, queue manager and flush daemons need a wakeup timer.
  • Max procs: the maximum number of processes that may execute this service simultaneously. Default is to use a globally configurable limit (the default_process_limit configuration parameter in main.cf). Specify 0 for no process count limit.
  • Command + args: the command to be executed. The command name is relative to the Postfix program directory (pathname is controlled by the daemon_directory configuration variable). Adding one or more -v options turns on verbose logging for that service; adding a -D option enables symbolic debugging (see the debugger_command variable in the main.cf configuration file). See individual command man pages for specific command-line options, if any.

General main.cf options can be overridden for specific services. To override one or more main.cf options, specify them as arguments below, preceding each option by "-o". There must be no whitespace in the option itself (separate multiple values for an option by commas).

In order to use the "uucp" message tranport below, set up entries in the transport table.

In order to use the "cyrus" message transport below, configure it in main.cf as the mailbox_transport.

Important:

  • Specify only programs that are written to run as Postfix daemons. All daemons specified here must speak a Postfix-internal protocol.
  • Do not share the Postfix queue between multiple Postfix instances.

Format

==========================================================================
service type  private unpriv  chroot  wakeup  maxproc command + args
              (yes)   (yes)   (yes)   (never) (100)
==========================================================================

Example

smtp      inet  n       -       -       -       -       smtpd
	-o content_filter=spamassassin
	-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
spamassassin unix -     n       n       -       -       pipe
	user=spamd argv=/usr/bin/spamc -f -e
	/usr/sbin/sendmail -oi -f ${sender} ${recipient}
dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d ${recipient}

#submission inet n      -       -       -       -       smtpd
#	-o smtpd_etrn_restrictions=reject
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       -       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# maildrop. See the Postfix MAILDROP_README file for details.
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
scalemail-backend unix	-	n	n	-	2	pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}

# only used by postfix-tls
#tlsmgr	  fifo	-	-	n	300	1	tlsmgr
#smtps	  inet	n	-	n	-	-	smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#587	  inet	n	-	n	-	-	smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
#scache    unix  -       -       -       -       1       scache
#discard   unix  -       -       -       -       -       discard
vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vacation argv=/usr/bin/groupoffice-vacation -f ${sender} -- ${recipient}

Links