initial commit
This commit is contained in:
commit
a60b5affa8
51
opendkim.conf
Normal file
51
opendkim.conf
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
# This is a basic configuration for signing and verifying. It can easily be
|
||||||
|
# adapted to suit a basic installation. See opendkim.conf(5) and
|
||||||
|
# /usr/share/doc/opendkim/examples/opendkim.conf.sample for complete
|
||||||
|
# documentation of available configuration parameters.
|
||||||
|
|
||||||
|
Syslog yes
|
||||||
|
SyslogSuccess yes
|
||||||
|
#LogWhy no
|
||||||
|
|
||||||
|
# Common signing and verification parameters. In Debian, the "From" header is
|
||||||
|
# oversigned, because it is often the identity key used by reputation systems
|
||||||
|
# and thus somewhat security sensitive.
|
||||||
|
Canonicalization relaxed/simple
|
||||||
|
#Mode sv
|
||||||
|
#SubDomains no
|
||||||
|
OversignHeaders From
|
||||||
|
|
||||||
|
# Signing domain, selector, and key (required). For example, perform signing
|
||||||
|
# for domain "example.com" with selector "2020" (2020._domainkey.example.com),
|
||||||
|
# using the private key stored in /etc/dkimkeys/example.private. More granular
|
||||||
|
# setup options can be found in /usr/share/doc/opendkim/README.opendkim.
|
||||||
|
Domain toetersnoet.nl,jobvdvalk.nl,toetersnoet.online,jobvdvalk.com
|
||||||
|
Selector 2021
|
||||||
|
KeyFile /etc/dkimkeys/2021.private
|
||||||
|
|
||||||
|
# In Debian, opendkim runs as user "opendkim". A umask of 007 is required when
|
||||||
|
# using a local socket with MTAs that access the socket as a non-privileged
|
||||||
|
# user (for example, Postfix). You may need to add user "postfix" to group
|
||||||
|
# "opendkim" in that case.
|
||||||
|
UserID opendkim
|
||||||
|
UMask 007
|
||||||
|
|
||||||
|
# Socket for the MTA connection (required). If the MTA is inside a chroot jail,
|
||||||
|
# it must be ensured that the socket is accessible. In Debian, Postfix runs in
|
||||||
|
# a chroot in /var/spool/postfix, therefore a Unix socket would have to be
|
||||||
|
# configured as shown on the last line below.
|
||||||
|
Socket local:/run/opendkim/opendkim.sock
|
||||||
|
Socket inet:8891@localhost
|
||||||
|
#Socket inet:8891
|
||||||
|
#Socket local:/var/spool/postfix/opendkim/opendkim.sock
|
||||||
|
|
||||||
|
PidFile /run/opendkim/opendkim.pid
|
||||||
|
|
||||||
|
# Hosts for which to sign rather than verify, default is 127.0.0.1. See the
|
||||||
|
# OPERATION section of opendkim(8) for more information.
|
||||||
|
#InternalHosts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
|
||||||
|
|
||||||
|
# The trust anchor enables DNSSEC. In Debian, the trust anchor file is provided
|
||||||
|
# by the package dns-root-data.
|
||||||
|
TrustAnchorFile /usr/share/dns/root.key
|
||||||
|
#Nameservers 127.0.0.1
|
119
opendmarc.conf
Normal file
119
opendmarc.conf
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
# This is a basic configuration that can easily be adapted to suit a standard
|
||||||
|
# installation. For more advanced options, see openmarc.conf(5) and/or
|
||||||
|
# /usr/share/doc/opendmarc/examples/opendmarc.conf.sample.
|
||||||
|
|
||||||
|
## AuthservID (string)
|
||||||
|
## defaults to MTA name
|
||||||
|
##
|
||||||
|
## Sets the "authserv-id" to use when generating the Authentication-Results:
|
||||||
|
## header field after verifying a message. If the string "HOSTNAME" is
|
||||||
|
## provided, the name of the host running the filter (as returned by the
|
||||||
|
## gethostname(3) function) will be used.
|
||||||
|
#
|
||||||
|
AuthservID OpenDMARC
|
||||||
|
TrustedAuthservIDs mail.toetersnoet.nl
|
||||||
|
|
||||||
|
## FailureReports { true | false }
|
||||||
|
## default "false"
|
||||||
|
##
|
||||||
|
## Enables generation of failure reports when the DMARC test fails and the
|
||||||
|
## purported sender of the message has requested such reports. Reports are
|
||||||
|
## formatted per RFC6591.
|
||||||
|
#
|
||||||
|
# FailureReports false
|
||||||
|
|
||||||
|
## PidFile path
|
||||||
|
## default (none)
|
||||||
|
##
|
||||||
|
## Specifies the path to a file that should be created at process start
|
||||||
|
## containing the process ID.
|
||||||
|
#
|
||||||
|
PidFile /run/opendmarc/opendmarc.pid
|
||||||
|
|
||||||
|
## PublicSuffixList path
|
||||||
|
## default (none)
|
||||||
|
##
|
||||||
|
## Specifies the path to a file that contains top-level domains (TLDs) that
|
||||||
|
## will be used to compute the Organizational Domain for a given domain name,
|
||||||
|
## as described in the DMARC specification. If not provided, the filter will
|
||||||
|
## not be able to determine the Organizational Domain and only the presented
|
||||||
|
## domain will be evaluated.
|
||||||
|
#
|
||||||
|
PublicSuffixList /usr/share/publicsuffix/public_suffix_list.dat
|
||||||
|
|
||||||
|
## RejectFailures { true | false }
|
||||||
|
## default "false"
|
||||||
|
##
|
||||||
|
## If set, messages will be rejected if they fail the DMARC evaluation, or
|
||||||
|
## temp-failed if evaluation could not be completed. By default, no message
|
||||||
|
## will be rejected or temp-failed regardless of the outcome of the DMARC
|
||||||
|
## evaluation of the message. Instead, an Authentication-Results header
|
||||||
|
## field will be added.
|
||||||
|
#
|
||||||
|
RejectFailures true
|
||||||
|
|
||||||
|
## Socket socketspec
|
||||||
|
## default (none)
|
||||||
|
##
|
||||||
|
## Specifies the socket that should be established by the filter to receive
|
||||||
|
## connections from sendmail(8) in order to provide service. socketspec is
|
||||||
|
## in one of two forms: local:path, which creates a UNIX domain socket at
|
||||||
|
## the specified path, or inet:port[@host] or inet6:port[@host] which creates
|
||||||
|
## a TCP socket on the specified port for the appropriate protocol family.
|
||||||
|
## If the host is not given as either a hostname or an IP address, the
|
||||||
|
## socket will be listening on all interfaces. This option is mandatory
|
||||||
|
## either in the configuration file or on the command line. If an IP
|
||||||
|
## address is used, it must be enclosed in square brackets.
|
||||||
|
#
|
||||||
|
Socket local:/var/spool/postfix/opendmarc/opendmarc.sock
|
||||||
|
|
||||||
|
## Syslog { true | false }
|
||||||
|
## default "false"
|
||||||
|
##
|
||||||
|
## Log via calls to syslog(3) any interesting activity.
|
||||||
|
#
|
||||||
|
Syslog true
|
||||||
|
|
||||||
|
## SyslogFacility facility-name
|
||||||
|
## default "mail"
|
||||||
|
##
|
||||||
|
## Log via calls to syslog(3) using the named facility. The facility names
|
||||||
|
## are the same as the ones allowed in syslog.conf(5).
|
||||||
|
#
|
||||||
|
# SyslogFacility mail
|
||||||
|
|
||||||
|
## TrustedAuthservIDs string
|
||||||
|
## default HOSTNAME
|
||||||
|
##
|
||||||
|
## Specifies one or more "authserv-id" values to trust as relaying true
|
||||||
|
## upstream DKIM and SPF results. The default is to use the name of
|
||||||
|
## the MTA processing the message. To specify a list, separate each entry
|
||||||
|
## with a comma. The key word "HOSTNAME" will be replaced by the name of
|
||||||
|
## the host running the filter as reported by the gethostname(3) function.
|
||||||
|
#
|
||||||
|
# TrustedAuthservIDs HOSTNAME
|
||||||
|
|
||||||
|
## UMask mask
|
||||||
|
## default (none)
|
||||||
|
##
|
||||||
|
## Requests a specific permissions mask to be used for file creation. This
|
||||||
|
## only really applies to creation of the socket when Socket specifies a
|
||||||
|
## UNIX domain socket, and to the HistoryFile and PidFile (if any); temporary
|
||||||
|
## files are normally created by the mkstemp(3) function that enforces a
|
||||||
|
## specific file mode on creation regardless of the process umask. See
|
||||||
|
## umask(2) for more information.
|
||||||
|
#
|
||||||
|
UMask 0002
|
||||||
|
|
||||||
|
## UserID user[:group]
|
||||||
|
## default (none)
|
||||||
|
##
|
||||||
|
## Attempts to become the specified userid before starting operations.
|
||||||
|
## The process will be assigned all of the groups and primary group ID of
|
||||||
|
## the named userid unless an alternate group is specified.
|
||||||
|
#
|
||||||
|
UserID opendmarc
|
||||||
|
|
||||||
|
IgnoreAuthenticatedClients true
|
||||||
|
RequiredHeaders true
|
||||||
|
SPFSelfValidate true
|
13
postfix-policyd-spf-python/policyd-spf.conf
Normal file
13
postfix-policyd-spf-python/policyd-spf.conf
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# For a fully commented sample config file see policyd-spf.conf.commented
|
||||||
|
|
||||||
|
debugLevel = 1
|
||||||
|
TestOnly = 1
|
||||||
|
|
||||||
|
HELO_reject = Fail
|
||||||
|
Mail_From_reject = Fail
|
||||||
|
|
||||||
|
PermError_reject = False
|
||||||
|
TempError_Defer = False
|
||||||
|
|
||||||
|
skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0/104,::1
|
||||||
|
|
2
postfix/dynamicmaps.cf
Normal file
2
postfix/dynamicmaps.cf
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# dict-type so-name (pathname) dict-function mkmap-function
|
||||||
|
mysql postfix-mysql.so dict_mysql_open
|
94
postfix/main.cf
Normal file
94
postfix/main.cf
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
|
||||||
|
|
||||||
|
|
||||||
|
# Debian specific: Specifying a file name will cause the first
|
||||||
|
# line of that file to be used as the name. The Debian default
|
||||||
|
# is /etc/mailname.
|
||||||
|
#myorigin = /etc/mailname
|
||||||
|
|
||||||
|
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
|
||||||
|
biff = no
|
||||||
|
|
||||||
|
# appending .domain is the MUA's job.
|
||||||
|
append_dot_mydomain = no
|
||||||
|
|
||||||
|
# Uncomment the next line to generate "delayed mail" warnings
|
||||||
|
#delay_warning_time = 4h
|
||||||
|
|
||||||
|
readme_directory = no
|
||||||
|
|
||||||
|
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
|
||||||
|
# fresh installs.
|
||||||
|
compatibility_level = 3.6
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# TLS parameters
|
||||||
|
smtpd_tls_loglevel = 0
|
||||||
|
|
||||||
|
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.toetersnoet.nl/fullchain.pem
|
||||||
|
smtpd_tls_key_file=/etc/letsencrypt/live/mail.toetersnoet.nl/privkey.pem
|
||||||
|
smtpd_tls_security_level=encrypt
|
||||||
|
|
||||||
|
#smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
smtp_tls_CApath=/etc/ssl/certs
|
||||||
|
smtp_tls_security_level=may
|
||||||
|
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
||||||
|
|
||||||
|
|
||||||
|
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
|
||||||
|
myhostname = toetersnoet.nl
|
||||||
|
alias_maps = hash:/etc/aliases
|
||||||
|
alias_database = hash:/etc/aliases
|
||||||
|
myorigin = /etc/mailname
|
||||||
|
mydestination = localhost.localdomain, localhost
|
||||||
|
relayhost =
|
||||||
|
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||||
|
mailbox_size_limit = 0
|
||||||
|
recipient_delimiter = +
|
||||||
|
inet_interfaces = all
|
||||||
|
inet_protocols = ipv4
|
||||||
|
|
||||||
|
#spf
|
||||||
|
policy-spf_time = 3600s
|
||||||
|
smtpd_recipient_restrictions = permit_sasl_authenticated reject_unauth_destination permit_mynetworks check_policy_service unix:private/policy-spf
|
||||||
|
|
||||||
|
#dkim/dmarc
|
||||||
|
milter_default_action = accept
|
||||||
|
milter_protocol = 6
|
||||||
|
smtpd_milters = inet:localhost:8891,local:opendmarc/opendmarc.sock
|
||||||
|
non_smtpd_milters = $smtpd_milters
|
||||||
|
|
||||||
|
|
||||||
|
#imap
|
||||||
|
home_mailbox = Maildir/
|
||||||
|
mailbox_command =
|
||||||
|
|
||||||
|
#virtual mail file settings
|
||||||
|
virtual_mailbox_base = /var/mail
|
||||||
|
|
||||||
|
#virtual_mailbox_maps = hash:/etc/postfix/vmailbox
|
||||||
|
#virtual_alias_maps = hash:/etc/postfix/virtual
|
||||||
|
#virtual_mailbox_domains = toetersnoet.nl
|
||||||
|
|
||||||
|
virtual_minimum_uid = 100
|
||||||
|
virtual_uid_maps = static:5000
|
||||||
|
virtual_gid_maps = static:5000
|
||||||
|
|
||||||
|
#virtual mail settings
|
||||||
|
virtual_mailbox_domains = mysql:/etc/postfix/virtual-mailbox-domains.conf
|
||||||
|
virtual_mailbox_maps = mysql:/etc/postfix/virtual-mailbox-users.conf
|
||||||
|
virtual_alias_maps = mysql:/etc/postfix/virtual-alias-maps.conf
|
||||||
|
sender_canonical_maps = mysql:/etc/postfix/virtual-canonical-maps.conf
|
||||||
|
|
||||||
|
#dovecot
|
||||||
|
#virtual_transport = dovecot
|
||||||
|
smtpd_sasl_type = dovecot
|
||||||
|
smtpd_sasl_path = private/auth
|
||||||
|
smtpd_sasl_auth_enable = yes
|
||||||
|
#smtpd_sender_login_maps = mysql:/etc/postfix/virtual-mailbox-users.conf
|
||||||
|
#smtpd_sender_restrictions = permit_sasl_authenticated
|
||||||
|
|
||||||
|
#snmp monitoring
|
||||||
|
maillog_file=/var/log/maillog
|
693
postfix/main.cf.proto
Normal file
693
postfix/main.cf.proto
Normal file
|
@ -0,0 +1,693 @@
|
||||||
|
# Global Postfix configuration file. This file lists only a subset
|
||||||
|
# of all parameters. For the syntax, and for a complete parameter
|
||||||
|
# list, see the postconf(5) manual page (command: "man 5 postconf").
|
||||||
|
#
|
||||||
|
# TIP: use the command "postconf -n" to view main.cf parameter
|
||||||
|
# settings, "postconf parametername" to view a specific parameter,
|
||||||
|
# and "postconf 'parametername=value'" to set a specific parameter.
|
||||||
|
#
|
||||||
|
# For common configuration examples, see BASIC_CONFIGURATION_README
|
||||||
|
# and STANDARD_CONFIGURATION_README. To find these documents, use
|
||||||
|
# the command "postconf html_directory readme_directory", or go to
|
||||||
|
# http://www.postfix.org/BASIC_CONFIGURATION_README.html etc.
|
||||||
|
#
|
||||||
|
# For best results, change no more than 2-3 parameters at a time,
|
||||||
|
# and test if Postfix still works after every change.
|
||||||
|
|
||||||
|
# COMPATIBILITY
|
||||||
|
#
|
||||||
|
# The compatibility_level determines what default settings Postfix
|
||||||
|
# will use for main.cf and master.cf settings. These defaults will
|
||||||
|
# change over time.
|
||||||
|
#
|
||||||
|
# To avoid breaking things, Postfix will use backwards-compatible
|
||||||
|
# default settings and log where it uses those old backwards-compatible
|
||||||
|
# default settings, until the system administrator has determined
|
||||||
|
# if any backwards-compatible default settings need to be made
|
||||||
|
# permanent in main.cf or master.cf.
|
||||||
|
#
|
||||||
|
# When this review is complete, update the compatibility_level setting
|
||||||
|
# below as recommended in the RELEASE_NOTES file.
|
||||||
|
#
|
||||||
|
# The level below is what should be used with new (not upgrade) installs.
|
||||||
|
#
|
||||||
|
compatibility_level = 3.7
|
||||||
|
|
||||||
|
# SOFT BOUNCE
|
||||||
|
#
|
||||||
|
# The soft_bounce parameter provides a limited safety net for
|
||||||
|
# testing. When soft_bounce is enabled, mail will remain queued that
|
||||||
|
# would otherwise bounce. This parameter disables locally-generated
|
||||||
|
# bounces, and prevents the SMTP server from rejecting mail permanently
|
||||||
|
# (by changing 5xx replies into 4xx replies). However, soft_bounce
|
||||||
|
# is no cure for address rewriting mistakes or mail routing mistakes.
|
||||||
|
#
|
||||||
|
#soft_bounce = no
|
||||||
|
|
||||||
|
# LOCAL PATHNAME INFORMATION
|
||||||
|
#
|
||||||
|
# The queue_directory specifies the location of the Postfix queue.
|
||||||
|
# This is also the root directory of Postfix daemons that run chrooted.
|
||||||
|
# See the files in examples/chroot-setup for setting up Postfix chroot
|
||||||
|
# environments on different UNIX systems.
|
||||||
|
#
|
||||||
|
#queue_directory = /var/spool/postfix
|
||||||
|
|
||||||
|
# The command_directory parameter specifies the location of all
|
||||||
|
# postXXX commands.
|
||||||
|
#
|
||||||
|
command_directory = /usr/sbin
|
||||||
|
|
||||||
|
# The daemon_directory parameter specifies the location of all Postfix
|
||||||
|
# daemon programs (i.e. programs listed in the master.cf file). This
|
||||||
|
# directory must be owned by root.
|
||||||
|
#
|
||||||
|
daemon_directory = /usr/lib/postfix/sbin
|
||||||
|
|
||||||
|
# The data_directory parameter specifies the location of Postfix-writable
|
||||||
|
# data files (caches, random numbers). This directory must be owned
|
||||||
|
# by the mail_owner account (see below).
|
||||||
|
#
|
||||||
|
data_directory = /var/lib/postfix
|
||||||
|
|
||||||
|
# QUEUE AND PROCESS OWNERSHIP
|
||||||
|
#
|
||||||
|
# The mail_owner parameter specifies the owner of the Postfix queue
|
||||||
|
# and of most Postfix daemon processes. Specify the name of a user
|
||||||
|
# account THAT DOES NOT SHARE ITS USER OR GROUP ID WITH OTHER ACCOUNTS
|
||||||
|
# AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM. In
|
||||||
|
# particular, don't specify nobody or daemon. PLEASE USE A DEDICATED
|
||||||
|
# USER.
|
||||||
|
#
|
||||||
|
#mail_owner = postfix
|
||||||
|
|
||||||
|
# The default_privs parameter specifies the default rights used by
|
||||||
|
# the local delivery agent for delivery to external file or command.
|
||||||
|
# These rights are used in the absence of a recipient user context.
|
||||||
|
# DO NOT SPECIFY A PRIVILEGED USER OR THE POSTFIX OWNER.
|
||||||
|
#
|
||||||
|
#default_privs = nobody
|
||||||
|
|
||||||
|
# INTERNET HOST AND DOMAIN NAMES
|
||||||
|
#
|
||||||
|
# The myhostname parameter specifies the internet hostname of this
|
||||||
|
# mail system. The default is to use the fully-qualified domain name
|
||||||
|
# from gethostname(). $myhostname is used as a default value for many
|
||||||
|
# other configuration parameters.
|
||||||
|
#
|
||||||
|
#myhostname = host.domain.tld
|
||||||
|
#myhostname = virtual.domain.tld
|
||||||
|
|
||||||
|
# The mydomain parameter specifies the local internet domain name.
|
||||||
|
# The default is to use $myhostname minus the first component.
|
||||||
|
# $mydomain is used as a default value for many other configuration
|
||||||
|
# parameters.
|
||||||
|
#
|
||||||
|
#mydomain = domain.tld
|
||||||
|
|
||||||
|
# SENDING MAIL
|
||||||
|
#
|
||||||
|
# The myorigin parameter specifies the domain that locally-posted
|
||||||
|
# mail appears to come from. The default is to append $myhostname,
|
||||||
|
# which is fine for small sites. If you run a domain with multiple
|
||||||
|
# machines, you should (1) change this to $mydomain and (2) set up
|
||||||
|
# a domain-wide alias database that aliases each user to
|
||||||
|
# user@that.users.mailhost.
|
||||||
|
#
|
||||||
|
# For the sake of consistency between sender and recipient addresses,
|
||||||
|
# myorigin also specifies the default domain name that is appended
|
||||||
|
# to recipient addresses that have no @domain part.
|
||||||
|
#
|
||||||
|
# Debian GNU/Linux specific: Specifying a file name will cause the
|
||||||
|
# first line of that file to be used as the name. The Debian default
|
||||||
|
# is /etc/mailname.
|
||||||
|
#
|
||||||
|
#myorigin = /etc/mailname
|
||||||
|
#myorigin = $myhostname
|
||||||
|
#myorigin = $mydomain
|
||||||
|
|
||||||
|
# RECEIVING MAIL
|
||||||
|
|
||||||
|
# The inet_interfaces parameter specifies the network interface
|
||||||
|
# addresses that this mail system receives mail on. By default,
|
||||||
|
# the software claims all active interfaces on the machine. The
|
||||||
|
# parameter also controls delivery of mail to user@[ip.address].
|
||||||
|
#
|
||||||
|
# See also the proxy_interfaces parameter, for network addresses that
|
||||||
|
# are forwarded to us via a proxy or network address translator.
|
||||||
|
#
|
||||||
|
# Note: you need to stop/start Postfix when this parameter changes.
|
||||||
|
#
|
||||||
|
#inet_interfaces = all
|
||||||
|
#inet_interfaces = $myhostname
|
||||||
|
#inet_interfaces = $myhostname, localhost
|
||||||
|
|
||||||
|
# The proxy_interfaces parameter specifies the network interface
|
||||||
|
# addresses that this mail system receives mail on by way of a
|
||||||
|
# proxy or network address translation unit. This setting extends
|
||||||
|
# the address list specified with the inet_interfaces parameter.
|
||||||
|
#
|
||||||
|
# You must specify your proxy/NAT addresses when your system is a
|
||||||
|
# backup MX host for other domains, otherwise mail delivery loops
|
||||||
|
# will happen when the primary MX host is down.
|
||||||
|
#
|
||||||
|
#proxy_interfaces =
|
||||||
|
#proxy_interfaces = 1.2.3.4
|
||||||
|
|
||||||
|
# The mydestination parameter specifies the list of domains that this
|
||||||
|
# machine considers itself the final destination for.
|
||||||
|
#
|
||||||
|
# These domains are routed to the delivery agent specified with the
|
||||||
|
# local_transport parameter setting. By default, that is the UNIX
|
||||||
|
# compatible delivery agent that lookups all recipients in /etc/passwd
|
||||||
|
# and /etc/aliases or their equivalent.
|
||||||
|
#
|
||||||
|
# The default is $myhostname + localhost.$mydomain + localhost. On
|
||||||
|
# a mail domain gateway, you should also include $mydomain.
|
||||||
|
#
|
||||||
|
# Do not specify the names of virtual domains - those domains are
|
||||||
|
# specified elsewhere (see VIRTUAL_README).
|
||||||
|
#
|
||||||
|
# Do not specify the names of domains that this machine is backup MX
|
||||||
|
# host for. Specify those names via the relay_domains settings for
|
||||||
|
# the SMTP server, or use permit_mx_backup if you are lazy (see
|
||||||
|
# STANDARD_CONFIGURATION_README).
|
||||||
|
#
|
||||||
|
# The local machine is always the final destination for mail addressed
|
||||||
|
# to user@[the.net.work.address] of an interface that the mail system
|
||||||
|
# receives mail on (see the inet_interfaces parameter).
|
||||||
|
#
|
||||||
|
# Specify a list of host or domain names, /file/name or type:table
|
||||||
|
# patterns, separated by commas and/or whitespace. A /file/name
|
||||||
|
# pattern is replaced by its contents; a type:table is matched when
|
||||||
|
# a name matches a lookup key (the right-hand side is ignored).
|
||||||
|
# Continue long lines by starting the next line with whitespace.
|
||||||
|
#
|
||||||
|
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
|
||||||
|
#
|
||||||
|
#mydestination = $myhostname, localhost.$mydomain, localhost
|
||||||
|
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
|
||||||
|
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
|
||||||
|
# mail.$mydomain, www.$mydomain, ftp.$mydomain
|
||||||
|
|
||||||
|
# REJECTING MAIL FOR UNKNOWN LOCAL USERS
|
||||||
|
#
|
||||||
|
# The local_recipient_maps parameter specifies optional lookup tables
|
||||||
|
# with all names or addresses of users that are local with respect
|
||||||
|
# to $mydestination, $inet_interfaces or $proxy_interfaces.
|
||||||
|
#
|
||||||
|
# If this parameter is defined, then the SMTP server will reject
|
||||||
|
# mail for unknown local users. This parameter is defined by default.
|
||||||
|
#
|
||||||
|
# To turn off local recipient checking in the SMTP server, specify
|
||||||
|
# local_recipient_maps = (i.e. empty).
|
||||||
|
#
|
||||||
|
# The default setting assumes that you use the default Postfix local
|
||||||
|
# delivery agent for local delivery. You need to update the
|
||||||
|
# local_recipient_maps setting if:
|
||||||
|
#
|
||||||
|
# - You define $mydestination domain recipients in files other than
|
||||||
|
# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
|
||||||
|
# For example, you define $mydestination domain recipients in
|
||||||
|
# the $virtual_mailbox_maps files.
|
||||||
|
#
|
||||||
|
# - You redefine the local delivery agent in master.cf.
|
||||||
|
#
|
||||||
|
# - You redefine the "local_transport" setting in main.cf.
|
||||||
|
#
|
||||||
|
# - You use the "luser_relay", "mailbox_transport", or "fallback_transport"
|
||||||
|
# feature of the Postfix local delivery agent (see local(8)).
|
||||||
|
#
|
||||||
|
# Details are described in the LOCAL_RECIPIENT_README file.
|
||||||
|
#
|
||||||
|
# Beware: if the Postfix SMTP server runs chrooted, you probably have
|
||||||
|
# to access the passwd file via the proxymap service, in order to
|
||||||
|
# overcome chroot restrictions. The alternative, having a copy of
|
||||||
|
# the system passwd file in the chroot jail is just not practical.
|
||||||
|
#
|
||||||
|
# The right-hand side of the lookup tables is conveniently ignored.
|
||||||
|
# In the left-hand side, specify a bare username, an @domain.tld
|
||||||
|
# wild-card, or specify a user@domain.tld address.
|
||||||
|
#
|
||||||
|
#local_recipient_maps = unix:passwd.byname $alias_maps
|
||||||
|
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
|
||||||
|
#local_recipient_maps =
|
||||||
|
|
||||||
|
# The unknown_local_recipient_reject_code specifies the SMTP server
|
||||||
|
# response code when a recipient domain matches $mydestination or
|
||||||
|
# ${proxy,inet}_interfaces, while $local_recipient_maps is non-empty
|
||||||
|
# and the recipient address or address local-part is not found.
|
||||||
|
#
|
||||||
|
# The default setting is 550 (reject mail) but it is safer to start
|
||||||
|
# with 450 (try again later) until you are certain that your
|
||||||
|
# local_recipient_maps settings are OK.
|
||||||
|
#
|
||||||
|
unknown_local_recipient_reject_code = 550
|
||||||
|
|
||||||
|
# TRUST AND RELAY CONTROL
|
||||||
|
|
||||||
|
# The mynetworks parameter specifies the list of "trusted" SMTP
|
||||||
|
# clients that have more privileges than "strangers".
|
||||||
|
#
|
||||||
|
# In particular, "trusted" SMTP clients are allowed to relay mail
|
||||||
|
# through Postfix. See the smtpd_recipient_restrictions parameter
|
||||||
|
# in postconf(5).
|
||||||
|
#
|
||||||
|
# You can specify the list of "trusted" network addresses by hand
|
||||||
|
# or you can let Postfix do it for you (which is the default).
|
||||||
|
#
|
||||||
|
# By default (mynetworks_style = host), Postfix "trusts" only
|
||||||
|
# the local machine.
|
||||||
|
#
|
||||||
|
# Specify "mynetworks_style = subnet" when Postfix should "trust"
|
||||||
|
# SMTP clients in the same IP subnetworks as the local machine.
|
||||||
|
# On Linux, this works correctly only with interfaces specified
|
||||||
|
# with the "ifconfig" or "ip" command.
|
||||||
|
#
|
||||||
|
# Specify "mynetworks_style = class" when Postfix should "trust" SMTP
|
||||||
|
# clients in the same IP class A/B/C networks as the local machine.
|
||||||
|
# Don't do this with a dialup site - it would cause Postfix to "trust"
|
||||||
|
# your entire provider's network. Instead, specify an explicit
|
||||||
|
# mynetworks list by hand, as described below.
|
||||||
|
#
|
||||||
|
# Specify "mynetworks_style = host" when Postfix should "trust"
|
||||||
|
# only the local machine.
|
||||||
|
#
|
||||||
|
#mynetworks_style = class
|
||||||
|
#mynetworks_style = subnet
|
||||||
|
#mynetworks_style = host
|
||||||
|
|
||||||
|
# Alternatively, you can specify the mynetworks list by hand, in
|
||||||
|
# which case Postfix ignores the mynetworks_style setting.
|
||||||
|
#
|
||||||
|
# Specify an explicit list of network/netmask patterns, where the
|
||||||
|
# mask specifies the number of bits in the network part of a host
|
||||||
|
# address.
|
||||||
|
#
|
||||||
|
# You can also specify the absolute pathname of a pattern file instead
|
||||||
|
# of listing the patterns here. Specify type:table for table-based lookups
|
||||||
|
# (the value on the table right-hand side is not used).
|
||||||
|
#
|
||||||
|
#mynetworks = 168.100.3.0/28, 127.0.0.0/8
|
||||||
|
#mynetworks = $config_directory/mynetworks
|
||||||
|
#mynetworks = hash:/etc/postfix/network_table
|
||||||
|
mynetworks = 127.0.0.0/8
|
||||||
|
|
||||||
|
# The relay_domains parameter restricts what destinations this system will
|
||||||
|
# relay mail to. See the smtpd_relay_restrictions and
|
||||||
|
# smtpd_recipient_restrictions descriptions in postconf(5) for detailed
|
||||||
|
# information.
|
||||||
|
#
|
||||||
|
# By default, Postfix relays mail
|
||||||
|
# - from "trusted" clients (IP address matches $mynetworks, or is
|
||||||
|
# SASL authenticated) to any destination,
|
||||||
|
# - from "untrusted" clients to destinations that match $relay_domains or
|
||||||
|
# subdomains thereof, except addresses with sender-specified routing.
|
||||||
|
# The default relay_domains value is empty.
|
||||||
|
#
|
||||||
|
# In addition to the above, the Postfix SMTP server by default accepts mail
|
||||||
|
# that Postfix is final destination for:
|
||||||
|
# - destinations that match $inet_interfaces or $proxy_interfaces,
|
||||||
|
# - destinations that match $mydestination
|
||||||
|
# - destinations that match $virtual_alias_domains,
|
||||||
|
# - destinations that match $virtual_mailbox_domains.
|
||||||
|
# These destinations do not need to be listed in $relay_domains.
|
||||||
|
#
|
||||||
|
# Specify a list of hosts or domains, /file/name patterns or type:name
|
||||||
|
# lookup tables, separated by commas and/or whitespace. Continue
|
||||||
|
# long lines by starting the next line with whitespace. A file name
|
||||||
|
# is replaced by its contents; a type:name table is matched when a
|
||||||
|
# (parent) domain appears as lookup key.
|
||||||
|
#
|
||||||
|
# NOTE: Postfix will not automatically forward mail for domains that
|
||||||
|
# list this system as their primary or backup MX host. See the
|
||||||
|
# permit_mx_backup restriction description in postconf(5).
|
||||||
|
#
|
||||||
|
#relay_domains =
|
||||||
|
|
||||||
|
# INTERNET OR INTRANET
|
||||||
|
|
||||||
|
# The relayhost parameter specifies the default host to send mail to
|
||||||
|
# when no entry is matched in the optional transport(5) table. When
|
||||||
|
# no relayhost is given, mail is routed directly to the destination.
|
||||||
|
#
|
||||||
|
# On an intranet, specify the organizational domain name. If your
|
||||||
|
# internal DNS uses no MX records, specify the name of the intranet
|
||||||
|
# gateway host instead.
|
||||||
|
#
|
||||||
|
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
|
||||||
|
# [address] or [address]:port; the form [host] turns off MX lookups.
|
||||||
|
#
|
||||||
|
# If you're connected via UUCP, see also the default_transport parameter.
|
||||||
|
#
|
||||||
|
#relayhost = $mydomain
|
||||||
|
#relayhost = [gateway.my.domain]
|
||||||
|
#relayhost = [mailserver.isp.tld]
|
||||||
|
#relayhost = uucphost
|
||||||
|
#relayhost = [an.ip.add.ress]
|
||||||
|
|
||||||
|
# REJECTING UNKNOWN RELAY USERS
|
||||||
|
#
|
||||||
|
# The relay_recipient_maps parameter specifies optional lookup tables
|
||||||
|
# with all addresses in the domains that match $relay_domains.
|
||||||
|
#
|
||||||
|
# If this parameter is defined, then the SMTP server will reject
|
||||||
|
# mail for unknown relay users. This feature is off by default.
|
||||||
|
#
|
||||||
|
# The right-hand side of the lookup tables is conveniently ignored.
|
||||||
|
# In the left-hand side, specify an @domain.tld wild-card, or specify
|
||||||
|
# a user@domain.tld address.
|
||||||
|
#
|
||||||
|
#relay_recipient_maps = hash:/etc/postfix/relay_recipients
|
||||||
|
|
||||||
|
# INPUT RATE CONTROL
|
||||||
|
#
|
||||||
|
# The in_flow_delay configuration parameter implements mail input
|
||||||
|
# flow control. This feature is turned on by default, although it
|
||||||
|
# still needs further development (it's disabled on SCO UNIX due
|
||||||
|
# to an SCO bug).
|
||||||
|
#
|
||||||
|
# A Postfix process will pause for $in_flow_delay seconds before
|
||||||
|
# accepting a new message, when the message arrival rate exceeds the
|
||||||
|
# message delivery rate. With the default 100 SMTP server process
|
||||||
|
# limit, this limits the mail inflow to 100 messages a second more
|
||||||
|
# than the number of messages delivered per second.
|
||||||
|
#
|
||||||
|
# Specify 0 to disable the feature. Valid delays are 0..10.
|
||||||
|
#
|
||||||
|
#in_flow_delay = 1s
|
||||||
|
|
||||||
|
# ADDRESS REWRITING
|
||||||
|
#
|
||||||
|
# The ADDRESS_REWRITING_README document gives information about
|
||||||
|
# address masquerading or other forms of address rewriting including
|
||||||
|
# username->Firstname.Lastname mapping.
|
||||||
|
|
||||||
|
# ADDRESS REDIRECTION (VIRTUAL DOMAIN)
|
||||||
|
#
|
||||||
|
# The VIRTUAL_README document gives information about the many forms
|
||||||
|
# of domain hosting that Postfix supports.
|
||||||
|
|
||||||
|
# "USER HAS MOVED" BOUNCE MESSAGES
|
||||||
|
#
|
||||||
|
# See the discussion in the ADDRESS_REWRITING_README document.
|
||||||
|
|
||||||
|
# TRANSPORT MAP
|
||||||
|
#
|
||||||
|
# See the discussion in the ADDRESS_REWRITING_README document.
|
||||||
|
|
||||||
|
# ALIAS DATABASE
|
||||||
|
#
|
||||||
|
# The alias_maps parameter specifies the list of alias databases used
|
||||||
|
# by the local delivery agent. The default list is system dependent.
|
||||||
|
#
|
||||||
|
# On systems with NIS, the default is to search the local alias
|
||||||
|
# database, then the NIS alias database. See aliases(5) for syntax
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# If you change the alias database, run "postalias /etc/aliases" (or
|
||||||
|
# wherever your system stores the mail alias file), or simply run
|
||||||
|
# "newaliases" to build the necessary DBM or DB file.
|
||||||
|
#
|
||||||
|
# It will take a minute or so before changes become visible. Use
|
||||||
|
# "postfix reload" to eliminate the delay.
|
||||||
|
#
|
||||||
|
#alias_maps = dbm:/etc/aliases
|
||||||
|
#alias_maps = hash:/etc/aliases
|
||||||
|
#alias_maps = hash:/etc/aliases, nis:mail.aliases
|
||||||
|
#alias_maps = netinfo:/aliases
|
||||||
|
|
||||||
|
# The alias_database parameter specifies the alias database(s) that
|
||||||
|
# are built with "newaliases" or "sendmail -bi". This is a separate
|
||||||
|
# configuration parameter, because alias_maps (see above) may specify
|
||||||
|
# tables that are not necessarily all under control by Postfix.
|
||||||
|
#
|
||||||
|
#alias_database = dbm:/etc/aliases
|
||||||
|
#alias_database = dbm:/etc/mail/aliases
|
||||||
|
#alias_database = hash:/etc/aliases
|
||||||
|
#alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
|
||||||
|
|
||||||
|
# ADDRESS EXTENSIONS (e.g., user+foo)
|
||||||
|
#
|
||||||
|
# The recipient_delimiter parameter specifies the separator between
|
||||||
|
# user names and address extensions (user+foo). See canonical(5),
|
||||||
|
# local(8), relocated(5) and virtual(5) for the effects this has on
|
||||||
|
# aliases, canonical, virtual, relocated and .forward file lookups.
|
||||||
|
# Basically, the software tries user+foo and .forward+foo before
|
||||||
|
# trying user and .forward.
|
||||||
|
#
|
||||||
|
#recipient_delimiter = +
|
||||||
|
|
||||||
|
# DELIVERY TO MAILBOX
|
||||||
|
#
|
||||||
|
# The home_mailbox parameter specifies the optional pathname of a
|
||||||
|
# mailbox file relative to a user's home directory. The default
|
||||||
|
# mailbox file is /var/spool/mail/user or /var/mail/user. Specify
|
||||||
|
# "Maildir/" for qmail-style delivery (the / is required).
|
||||||
|
#
|
||||||
|
#home_mailbox = Mailbox
|
||||||
|
#home_mailbox = Maildir/
|
||||||
|
|
||||||
|
# The mail_spool_directory parameter specifies the directory where
|
||||||
|
# UNIX-style mailboxes are kept. The default setting depends on the
|
||||||
|
# system type.
|
||||||
|
#
|
||||||
|
#mail_spool_directory = /var/mail
|
||||||
|
#mail_spool_directory = /var/spool/mail
|
||||||
|
|
||||||
|
# The mailbox_command parameter specifies the optional external
|
||||||
|
# command to use instead of mailbox delivery. The command is run as
|
||||||
|
# the recipient with proper HOME, SHELL and LOGNAME environment settings.
|
||||||
|
# Exception: delivery for root is done as $default_user.
|
||||||
|
#
|
||||||
|
# Other environment variables of interest: USER (recipient username),
|
||||||
|
# EXTENSION (address extension), DOMAIN (domain part of address),
|
||||||
|
# and LOCAL (the address localpart).
|
||||||
|
#
|
||||||
|
# Unlike other Postfix configuration parameters, the mailbox_command
|
||||||
|
# parameter is not subjected to $parameter substitutions. This is to
|
||||||
|
# make it easier to specify shell syntax (see example below).
|
||||||
|
#
|
||||||
|
# Avoid shell meta characters because they will force Postfix to run
|
||||||
|
# an expensive shell process. Procmail alone is expensive enough.
|
||||||
|
#
|
||||||
|
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
|
||||||
|
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
|
||||||
|
#
|
||||||
|
#mailbox_command = /usr/bin/procmail
|
||||||
|
#mailbox_command = /usr/bin/procmail -a "$EXTENSION"
|
||||||
|
|
||||||
|
# The mailbox_transport specifies the optional transport in master.cf
|
||||||
|
# to use after processing aliases and .forward files. This parameter
|
||||||
|
# has precedence over the mailbox_command, fallback_transport and
|
||||||
|
# luser_relay parameters.
|
||||||
|
#
|
||||||
|
# Specify a string of the form transport:nexthop, where transport is
|
||||||
|
# the name of a mail delivery transport defined in master.cf. The
|
||||||
|
# :nexthop part is optional. For more details see the sample transport
|
||||||
|
# configuration file.
|
||||||
|
#
|
||||||
|
# NOTE: if you use this feature for accounts not in the UNIX password
|
||||||
|
# file, then you must update the "local_recipient_maps" setting in
|
||||||
|
# the main.cf file, otherwise the SMTP server will reject mail for
|
||||||
|
# non-UNIX accounts with "User unknown in local recipient table".
|
||||||
|
#
|
||||||
|
# Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd"
|
||||||
|
# listen="/var/imap/socket/lmtp" prefork=0'' in cyrus.conf.
|
||||||
|
#mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
|
||||||
|
#
|
||||||
|
# Cyrus IMAP via command line. Uncomment the "cyrus...pipe" and
|
||||||
|
# subsequent line in master.cf.
|
||||||
|
#mailbox_transport = cyrus
|
||||||
|
|
||||||
|
# The fallback_transport specifies the optional transport in master.cf
|
||||||
|
# to use for recipients that are not found in the UNIX passwd database.
|
||||||
|
# This parameter has precedence over the luser_relay parameter.
|
||||||
|
#
|
||||||
|
# Specify a string of the form transport:nexthop, where transport is
|
||||||
|
# the name of a mail delivery transport defined in master.cf. The
|
||||||
|
# :nexthop part is optional. For more details see the sample transport
|
||||||
|
# configuration file.
|
||||||
|
#
|
||||||
|
# NOTE: if you use this feature for accounts not in the UNIX password
|
||||||
|
# file, then you must update the "local_recipient_maps" setting in
|
||||||
|
# the main.cf file, otherwise the SMTP server will reject mail for
|
||||||
|
# non-UNIX accounts with "User unknown in local recipient table".
|
||||||
|
#
|
||||||
|
#fallback_transport = lmtp:unix:/file/name
|
||||||
|
#fallback_transport = cyrus
|
||||||
|
#fallback_transport =
|
||||||
|
|
||||||
|
# The luser_relay parameter specifies an optional destination address
|
||||||
|
# for unknown recipients. By default, mail for unknown@$mydestination,
|
||||||
|
# unknown@[$inet_interfaces] or unknown@[$proxy_interfaces] is returned
|
||||||
|
# as undeliverable.
|
||||||
|
#
|
||||||
|
# The following expansions are done on luser_relay: $user (recipient
|
||||||
|
# username), $shell (recipient shell), $home (recipient home directory),
|
||||||
|
# $recipient (full recipient address), $extension (recipient address
|
||||||
|
# extension), $domain (recipient domain), $local (entire recipient
|
||||||
|
# localpart), $recipient_delimiter. Specify ${name?value} or
|
||||||
|
# ${name:value} to expand value only when $name does (does not) exist.
|
||||||
|
#
|
||||||
|
# luser_relay works only for the default Postfix local delivery agent.
|
||||||
|
#
|
||||||
|
# NOTE: if you use this feature for accounts not in the UNIX password
|
||||||
|
# file, then you must specify "local_recipient_maps =" (i.e. empty) in
|
||||||
|
# the main.cf file, otherwise the SMTP server will reject mail for
|
||||||
|
# non-UNIX accounts with "User unknown in local recipient table".
|
||||||
|
#
|
||||||
|
#luser_relay = $user@other.host
|
||||||
|
#luser_relay = $local@other.host
|
||||||
|
#luser_relay = admin+$local
|
||||||
|
|
||||||
|
# JUNK MAIL CONTROLS
|
||||||
|
#
|
||||||
|
# The controls listed here are only a very small subset. The file
|
||||||
|
# SMTPD_ACCESS_README provides an overview.
|
||||||
|
|
||||||
|
# The header_checks parameter specifies an optional table with patterns
|
||||||
|
# that each logical message header is matched against, including
|
||||||
|
# headers that span multiple physical lines.
|
||||||
|
#
|
||||||
|
# By default, these patterns also apply to MIME headers and to the
|
||||||
|
# headers of attached messages. With older Postfix versions, MIME and
|
||||||
|
# attached message headers were treated as body text.
|
||||||
|
#
|
||||||
|
# For details, see "man header_checks".
|
||||||
|
#
|
||||||
|
#header_checks = regexp:/etc/postfix/header_checks
|
||||||
|
|
||||||
|
# FAST ETRN SERVICE
|
||||||
|
#
|
||||||
|
# Postfix maintains per-destination logfiles with information about
|
||||||
|
# deferred mail, so that mail can be flushed quickly with the SMTP
|
||||||
|
# "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld".
|
||||||
|
# See the ETRN_README document for a detailed description.
|
||||||
|
#
|
||||||
|
# The fast_flush_domains parameter controls what destinations are
|
||||||
|
# eligible for this service. By default, they are all domains that
|
||||||
|
# this server is willing to relay mail to.
|
||||||
|
#
|
||||||
|
#fast_flush_domains = $relay_domains
|
||||||
|
|
||||||
|
# SHOW SOFTWARE VERSION OR NOT
|
||||||
|
#
|
||||||
|
# The smtpd_banner parameter specifies the text that follows the 220
|
||||||
|
# code in the SMTP server's greeting banner. Some people like to see
|
||||||
|
# the mail version advertised. By default, Postfix shows no version.
|
||||||
|
#
|
||||||
|
# You MUST specify $myhostname at the start of the text. That is an
|
||||||
|
# RFC requirement. Postfix itself does not care.
|
||||||
|
#
|
||||||
|
#smtpd_banner = $myhostname ESMTP $mail_name
|
||||||
|
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
|
||||||
|
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
|
||||||
|
|
||||||
|
|
||||||
|
# PARALLEL DELIVERY TO THE SAME DESTINATION
|
||||||
|
#
|
||||||
|
# How many parallel deliveries to the same user or domain? With local
|
||||||
|
# delivery, it does not make sense to do massively parallel delivery
|
||||||
|
# to the same user, because mailbox updates must happen sequentially,
|
||||||
|
# and expensive pipelines in .forward files can cause disasters when
|
||||||
|
# too many are run at the same time. With SMTP deliveries, 10
|
||||||
|
# simultaneous connections to the same domain could be sufficient to
|
||||||
|
# raise eyebrows.
|
||||||
|
#
|
||||||
|
# Each message delivery transport has its XXX_destination_concurrency_limit
|
||||||
|
# parameter. The default is $default_destination_concurrency_limit for
|
||||||
|
# most delivery transports. For the local delivery agent the default is 2.
|
||||||
|
|
||||||
|
#local_destination_concurrency_limit = 2
|
||||||
|
#default_destination_concurrency_limit = 20
|
||||||
|
|
||||||
|
# DEBUGGING CONTROL
|
||||||
|
#
|
||||||
|
# The debug_peer_level parameter specifies the increment in verbose
|
||||||
|
# logging level when an SMTP client or server host name or address
|
||||||
|
# matches a pattern in the debug_peer_list parameter.
|
||||||
|
#
|
||||||
|
#debug_peer_level = 2
|
||||||
|
|
||||||
|
# The debug_peer_list parameter specifies an optional list of domain
|
||||||
|
# or network patterns, /file/name patterns or type:name tables. When
|
||||||
|
# an SMTP client or server host name or address matches a pattern,
|
||||||
|
# increase the verbose logging level by the amount specified in the
|
||||||
|
# debug_peer_level parameter.
|
||||||
|
#
|
||||||
|
#debug_peer_list = 127.0.0.1
|
||||||
|
#debug_peer_list = some.domain
|
||||||
|
|
||||||
|
# The debugger_command specifies the external command that is executed
|
||||||
|
# when a Postfix daemon program is run with the -D option.
|
||||||
|
#
|
||||||
|
# Use "command .. & sleep 5" so that the debugger can attach before
|
||||||
|
# the process marches on. If you use an X-based debugger, be sure to
|
||||||
|
# set up your XAUTHORITY environment variable before starting Postfix.
|
||||||
|
#
|
||||||
|
debugger_command =
|
||||||
|
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
|
||||||
|
ddd $daemon_directory/$process_name $process_id & sleep 5
|
||||||
|
|
||||||
|
# If you can't use X, use this to capture the call stack when a
|
||||||
|
# daemon crashes. The result is in a file in the configuration
|
||||||
|
# directory, and is named after the process name and the process ID.
|
||||||
|
#
|
||||||
|
# debugger_command =
|
||||||
|
# PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
|
||||||
|
# echo where) | gdb $daemon_directory/$process_name $process_id 2>&1
|
||||||
|
# >$config_directory/$process_name.$process_id.log & sleep 5
|
||||||
|
#
|
||||||
|
# Another possibility is to run gdb under a detached screen session.
|
||||||
|
# To attach to the screen session, su root and run "screen -r
|
||||||
|
# <id_string>" where <id_string> uniquely matches one of the detached
|
||||||
|
# sessions (from "screen -list").
|
||||||
|
#
|
||||||
|
# debugger_command =
|
||||||
|
# PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH; screen
|
||||||
|
# -dmS $process_name gdb $daemon_directory/$process_name
|
||||||
|
# $process_id & sleep 1
|
||||||
|
|
||||||
|
# INSTALL-TIME CONFIGURATION INFORMATION
|
||||||
|
#
|
||||||
|
# The following parameters are used when installing a new Postfix version.
|
||||||
|
#
|
||||||
|
# sendmail_path: The full pathname of the Postfix sendmail command.
|
||||||
|
# This is the Sendmail-compatible mail posting interface.
|
||||||
|
#
|
||||||
|
sendmail_path =
|
||||||
|
|
||||||
|
# newaliases_path: The full pathname of the Postfix newaliases command.
|
||||||
|
# This is the Sendmail-compatible command to build alias databases.
|
||||||
|
#
|
||||||
|
newaliases_path =
|
||||||
|
|
||||||
|
# mailq_path: The full pathname of the Postfix mailq command. This
|
||||||
|
# is the Sendmail-compatible mail queue listing command.
|
||||||
|
#
|
||||||
|
mailq_path =
|
||||||
|
|
||||||
|
# setgid_group: The group for mail submission and queue management
|
||||||
|
# commands. This must be a group name with a numerical group ID that
|
||||||
|
# is not shared with other accounts, not even with the Postfix account.
|
||||||
|
#
|
||||||
|
setgid_group =
|
||||||
|
|
||||||
|
# html_directory: The location of the Postfix HTML documentation.
|
||||||
|
#
|
||||||
|
html_directory =
|
||||||
|
|
||||||
|
# manpage_directory: The location of the Postfix on-line manual pages.
|
||||||
|
#
|
||||||
|
manpage_directory =
|
||||||
|
|
||||||
|
# sample_directory: The location of the Postfix sample configuration files.
|
||||||
|
# This parameter is obsolete as of Postfix 2.1.
|
||||||
|
#
|
||||||
|
sample_directory =
|
||||||
|
|
||||||
|
# readme_directory: The location of the Postfix README files.
|
||||||
|
#
|
||||||
|
readme_directory =
|
||||||
|
inet_protocols = ipv4
|
1
postfix/makedefs.out
Symbolic link
1
postfix/makedefs.out
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/usr/share/postfix/makedefs.out
|
180
postfix/master.cf
Normal file
180
postfix/master.cf
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
#
|
||||||
|
# Postfix master process configuration file. For details on the format
|
||||||
|
# of the file, see the master(5) manual page (command: "man 5 master" or
|
||||||
|
# on-line: http://www.postfix.org/master.5.html).
|
||||||
|
#
|
||||||
|
# Do not forget to execute "postfix reload" after editing this file.
|
||||||
|
#
|
||||||
|
# ==========================================================================
|
||||||
|
# service type private unpriv chroot wakeup maxproc command + args
|
||||||
|
# (yes) (yes) (no) (never) (100)
|
||||||
|
# ==========================================================================
|
||||||
|
smtp inet n - y - - smtpd
|
||||||
|
#smtp inet n - y - 1 postscreen
|
||||||
|
#smtpd pass - - y - - smtpd
|
||||||
|
#dnsblog unix - - y - 0 dnsblog
|
||||||
|
#tlsproxy unix - - y - 0 tlsproxy
|
||||||
|
# Choose one: enable submission for loopback clients only, or for any client.
|
||||||
|
#127.0.0.1:submission inet n - y - - smtpd
|
||||||
|
|
||||||
|
smtps inet n - y - - smtpd
|
||||||
|
-o syslog_name=postfix/smtps
|
||||||
|
-o smtpd_tls_wrappermode=yes
|
||||||
|
-o smtpd_sasl_auth_enable=yes
|
||||||
|
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
|
||||||
|
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
||||||
|
-o smtpd_sasl_type=dovecot
|
||||||
|
-o smtpd_sasl_path=private/auth
|
||||||
|
# -o smtpd_tls_cert_file=/etc/letsencrypt/live/mail.toetersnoet.nl/fullchain.pem
|
||||||
|
# -o smtpd_tls_key_file=/etc/letsencrypt/live/mail.toetersnoet.nl/privkey.pem
|
||||||
|
|
||||||
|
submission inet n - y - - smtpd
|
||||||
|
-o smtpd_tls_security_level=encrypt
|
||||||
|
# -o smtpd_tls_cert_file=/etc/letsencrypt/live/mail.toetersnoet.nl/cert.pem
|
||||||
|
# -o smtpd_tls_key_file=/etc/letsencrypt/live/mail.toetersnoet.nl/privkey.pem
|
||||||
|
-o smtpd_sasl_auth_enable=yes
|
||||||
|
-o smtpd_sasl_type=dovecot
|
||||||
|
-o smtpd_sasl_path=private/auth
|
||||||
|
-o smtpd_sasl_security_options=noanonymous
|
||||||
|
-o smtpd_sasl_local_domain=mysql:/etc/postfix/virtual-mailbox-domains.conf
|
||||||
|
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
|
||||||
|
-o smtpd_sender_login_maps=mysql:/etc/postfix/virtual-mailbox-senders.conf
|
||||||
|
-o smtpd_sender_restrictions=reject_sender_login_mismatch,permit_sasl_authenticated
|
||||||
|
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
|
||||||
|
|
||||||
|
#submission inet n - y - - smtpd
|
||||||
|
# -o smtpd_tls_security_level=encrypt
|
||||||
|
# -o smtpd_sasl_auth_enable=yes
|
||||||
|
# -o smtpd_sasl_type=dovecot
|
||||||
|
# -o smtpd_sasl_path=private/auth
|
||||||
|
# -o smtpd_sasl_security_options=noanonymous
|
||||||
|
# -o smtpd_sasl_local_domain=$myhostname
|
||||||
|
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
|
||||||
|
# -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
|
||||||
|
# -o smtpd_sender_restrictions=reject_sender_login_mismatch
|
||||||
|
# -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
|
||||||
|
|
||||||
|
# -o syslog_name=postfix/submission
|
||||||
|
# -o smtpd_tls_security_level=encrypt
|
||||||
|
# -o smtpd_sasl_auth_enable=yes
|
||||||
|
# -o smtpd_tls_auth_only=yes
|
||||||
|
# -o smtpd_reject_unlisted_recipient=no
|
||||||
|
# Instead of specifying complex smtpd_<xxx>_restrictions here,
|
||||||
|
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
|
||||||
|
# here, and specify mua_<xxx>_restrictions in main.cf (where
|
||||||
|
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
|
||||||
|
# -o smtpd_client_restrictions=
|
||||||
|
# -o smtpd_helo_restrictions=
|
||||||
|
# -o smtpd_sender_restrictions=
|
||||||
|
# -o smtpd_relay_restrictions=
|
||||||
|
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
|
||||||
|
# -o milter_macro_daemon_name=ORIGINATING
|
||||||
|
# Choose one: enable submissions for loopback clients only, or for any client.
|
||||||
|
#127.0.0.1:submissions inet n - y - - smtpd
|
||||||
|
#submissions inet n - y - - smtpd
|
||||||
|
# -o syslog_name=postfix/submissions
|
||||||
|
# -o smtpd_tls_wrappermode=yes
|
||||||
|
# -o smtpd_sasl_auth_enable=yes
|
||||||
|
# -o smtpd_reject_unlisted_recipient=no
|
||||||
|
# Instead of specifying complex smtpd_<xxx>_restrictions here,
|
||||||
|
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
|
||||||
|
# here, and specify mua_<xxx>_restrictions in main.cf (where
|
||||||
|
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
|
||||||
|
# -o smtpd_client_restrictions=
|
||||||
|
# -o smtpd_helo_restrictions=
|
||||||
|
# -o smtpd_sender_restrictions=
|
||||||
|
# -o smtpd_relay_restrictions=
|
||||||
|
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
|
||||||
|
# -o milter_macro_daemon_name=ORIGINATING
|
||||||
|
#628 inet n - y - - qmqpd
|
||||||
|
pickup unix n - y 60 1 pickup
|
||||||
|
cleanup unix n - y - 0 cleanup
|
||||||
|
qmgr unix n - n 300 1 qmgr
|
||||||
|
#qmgr unix n - n 300 1 oqmgr
|
||||||
|
tlsmgr unix - - y 1000? 1 tlsmgr
|
||||||
|
rewrite unix - - y - - trivial-rewrite
|
||||||
|
bounce unix - - y - 0 bounce
|
||||||
|
defer unix - - y - 0 bounce
|
||||||
|
trace unix - - y - 0 bounce
|
||||||
|
verify unix - - y - 1 verify
|
||||||
|
flush unix n - y 1000? 0 flush
|
||||||
|
proxymap unix - - n - - proxymap
|
||||||
|
proxywrite unix - - n - 1 proxymap
|
||||||
|
smtp unix - - y - - smtp
|
||||||
|
relay unix - - y - - smtp
|
||||||
|
-o syslog_name=postfix/$service_name
|
||||||
|
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
|
||||||
|
showq unix n - y - - showq
|
||||||
|
error unix - - y - - error
|
||||||
|
retry unix - - y - - error
|
||||||
|
discard unix - - y - - discard
|
||||||
|
local unix - n n - - local
|
||||||
|
virtual unix - n n - - virtual
|
||||||
|
lmtp unix - - y - - lmtp
|
||||||
|
anvil unix - - y - 1 anvil
|
||||||
|
scache unix - - y - 1 scache
|
||||||
|
postlog unix-dgram n - n - 1 postlogd
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
# Interfaces to non-Postfix software. Be sure to examine the manual
|
||||||
|
# pages of the non-Postfix software to find out what options it wants.
|
||||||
|
#
|
||||||
|
# Many of the following services use the Postfix pipe(8) delivery
|
||||||
|
# agent. See the pipe(8) man page for information about ${recipient}
|
||||||
|
# and other message envelope options.
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# maildrop. See the Postfix MAILDROP_README file for details.
|
||||||
|
# Also specify in main.cf: maildrop_destination_recipient_limit=1
|
||||||
|
#
|
||||||
|
maildrop unix - n n - - pipe
|
||||||
|
flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
|
||||||
|
#
|
||||||
|
# Specify in cyrus.conf:
|
||||||
|
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
|
||||||
|
#
|
||||||
|
# Specify in main.cf one or more of the following:
|
||||||
|
# mailbox_transport = lmtp:inet:localhost
|
||||||
|
# virtual_transport = lmtp:inet:localhost
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# Cyrus 2.1.5 (Amos Gouaux)
|
||||||
|
# Also specify in main.cf: cyrus_destination_recipient_limit=1
|
||||||
|
#
|
||||||
|
#cyrus unix - n n - - pipe
|
||||||
|
# flags=DRX user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
# Old example of delivery via Cyrus.
|
||||||
|
#
|
||||||
|
#old-cyrus unix - n n - - pipe
|
||||||
|
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# See the Postfix UUCP_README file for configuration details.
|
||||||
|
#
|
||||||
|
uucp unix - n n - - pipe
|
||||||
|
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
|
||||||
|
#
|
||||||
|
# Other external delivery methods.
|
||||||
|
#
|
||||||
|
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 -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}
|
||||||
|
mailman unix - n n - - pipe
|
||||||
|
flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#spf
|
||||||
|
policy-spf unix - n n - - spawn
|
||||||
|
user=nobody argv=/usr/bin/policyd-spf
|
137
postfix/master.cf.proto
Normal file
137
postfix/master.cf.proto
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
#
|
||||||
|
# Postfix master process configuration file. For details on the format
|
||||||
|
# of the file, see the master(5) manual page (command: "man 5 master" or
|
||||||
|
# on-line: http://www.postfix.org/master.5.html).
|
||||||
|
#
|
||||||
|
# Do not forget to execute "postfix reload" after editing this file.
|
||||||
|
#
|
||||||
|
# ==========================================================================
|
||||||
|
# service type private unpriv chroot wakeup maxproc command + args
|
||||||
|
# (yes) (yes) (no) (never) (100)
|
||||||
|
# ==========================================================================
|
||||||
|
smtp inet n - y - - smtpd
|
||||||
|
#smtp inet n - y - 1 postscreen
|
||||||
|
#smtpd pass - - y - - smtpd
|
||||||
|
#dnsblog unix - - y - 0 dnsblog
|
||||||
|
#tlsproxy unix - - y - 0 tlsproxy
|
||||||
|
# Choose one: enable submission for loopback clients only, or for any client.
|
||||||
|
#127.0.0.1:submission inet n - y - - smtpd
|
||||||
|
#submission inet n - y - - smtpd
|
||||||
|
# -o syslog_name=postfix/submission
|
||||||
|
# -o smtpd_tls_security_level=encrypt
|
||||||
|
# -o smtpd_sasl_auth_enable=yes
|
||||||
|
# -o smtpd_tls_auth_only=yes
|
||||||
|
# -o smtpd_reject_unlisted_recipient=no
|
||||||
|
# Instead of specifying complex smtpd_<xxx>_restrictions here,
|
||||||
|
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
|
||||||
|
# here, and specify mua_<xxx>_restrictions in main.cf (where
|
||||||
|
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
|
||||||
|
# -o smtpd_client_restrictions=
|
||||||
|
# -o smtpd_helo_restrictions=
|
||||||
|
# -o smtpd_sender_restrictions=
|
||||||
|
# -o smtpd_relay_restrictions=
|
||||||
|
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
|
||||||
|
# -o milter_macro_daemon_name=ORIGINATING
|
||||||
|
# Choose one: enable submissions for loopback clients only, or for any client.
|
||||||
|
#127.0.0.1:submissions inet n - y - - smtpd
|
||||||
|
#submissions inet n - y - - smtpd
|
||||||
|
# -o syslog_name=postfix/submissions
|
||||||
|
# -o smtpd_tls_wrappermode=yes
|
||||||
|
# -o smtpd_sasl_auth_enable=yes
|
||||||
|
# -o smtpd_reject_unlisted_recipient=no
|
||||||
|
# Instead of specifying complex smtpd_<xxx>_restrictions here,
|
||||||
|
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
|
||||||
|
# here, and specify mua_<xxx>_restrictions in main.cf (where
|
||||||
|
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
|
||||||
|
# -o smtpd_client_restrictions=
|
||||||
|
# -o smtpd_helo_restrictions=
|
||||||
|
# -o smtpd_sender_restrictions=
|
||||||
|
# -o smtpd_relay_restrictions=
|
||||||
|
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
|
||||||
|
# -o milter_macro_daemon_name=ORIGINATING
|
||||||
|
#628 inet n - y - - qmqpd
|
||||||
|
pickup unix n - y 60 1 pickup
|
||||||
|
cleanup unix n - y - 0 cleanup
|
||||||
|
qmgr unix n - n 300 1 qmgr
|
||||||
|
#qmgr unix n - n 300 1 oqmgr
|
||||||
|
tlsmgr unix - - y 1000? 1 tlsmgr
|
||||||
|
rewrite unix - - y - - trivial-rewrite
|
||||||
|
bounce unix - - y - 0 bounce
|
||||||
|
defer unix - - y - 0 bounce
|
||||||
|
trace unix - - y - 0 bounce
|
||||||
|
verify unix - - y - 1 verify
|
||||||
|
flush unix n - y 1000? 0 flush
|
||||||
|
proxymap unix - - n - - proxymap
|
||||||
|
proxywrite unix - - n - 1 proxymap
|
||||||
|
smtp unix - - y - - smtp
|
||||||
|
relay unix - - y - - smtp
|
||||||
|
-o syslog_name=postfix/$service_name
|
||||||
|
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
|
||||||
|
showq unix n - y - - showq
|
||||||
|
error unix - - y - - error
|
||||||
|
retry unix - - y - - error
|
||||||
|
discard unix - - y - - discard
|
||||||
|
local unix - n n - - local
|
||||||
|
virtual unix - n n - - virtual
|
||||||
|
lmtp unix - - y - - lmtp
|
||||||
|
anvil unix - - y - 1 anvil
|
||||||
|
scache unix - - y - 1 scache
|
||||||
|
postlog unix-dgram n - n - 1 postlogd
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
# Interfaces to non-Postfix software. Be sure to examine the manual
|
||||||
|
# pages of the non-Postfix software to find out what options it wants.
|
||||||
|
#
|
||||||
|
# Many of the following services use the Postfix pipe(8) delivery
|
||||||
|
# agent. See the pipe(8) man page for information about ${recipient}
|
||||||
|
# and other message envelope options.
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# maildrop. See the Postfix MAILDROP_README file for details.
|
||||||
|
# Also specify in main.cf: maildrop_destination_recipient_limit=1
|
||||||
|
#
|
||||||
|
maildrop unix - n n - - pipe
|
||||||
|
flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
|
||||||
|
#
|
||||||
|
# Specify in cyrus.conf:
|
||||||
|
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
|
||||||
|
#
|
||||||
|
# Specify in main.cf one or more of the following:
|
||||||
|
# mailbox_transport = lmtp:inet:localhost
|
||||||
|
# virtual_transport = lmtp:inet:localhost
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# Cyrus 2.1.5 (Amos Gouaux)
|
||||||
|
# Also specify in main.cf: cyrus_destination_recipient_limit=1
|
||||||
|
#
|
||||||
|
#cyrus unix - n n - - pipe
|
||||||
|
# flags=DRX user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
# Old example of delivery via Cyrus.
|
||||||
|
#
|
||||||
|
#old-cyrus unix - n n - - pipe
|
||||||
|
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
|
||||||
|
#
|
||||||
|
# ====================================================================
|
||||||
|
#
|
||||||
|
# See the Postfix UUCP_README file for configuration details.
|
||||||
|
#
|
||||||
|
uucp unix - n n - - pipe
|
||||||
|
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
|
||||||
|
#
|
||||||
|
# Other external delivery methods.
|
||||||
|
#
|
||||||
|
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 -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}
|
||||||
|
mailman unix - n n - - pipe
|
||||||
|
flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
|
925
postfix/post-install
Executable file
925
postfix/post-install
Executable file
|
@ -0,0 +1,925 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# To view the formatted manual page of this file, type:
|
||||||
|
# POSTFIXSOURCE/mantools/srctoman - post-install | nroff -man
|
||||||
|
|
||||||
|
#++
|
||||||
|
# NAME
|
||||||
|
# post-install
|
||||||
|
# SUMMARY
|
||||||
|
# Postfix post-installation script
|
||||||
|
# SYNOPSIS
|
||||||
|
# postfix post-install [name=value] command ...
|
||||||
|
# DESCRIPTION
|
||||||
|
# The post-install script performs the finishing touch of a Postfix
|
||||||
|
# installation, after the executable programs and configuration
|
||||||
|
# files are installed. Usage is one of the following:
|
||||||
|
# .IP o
|
||||||
|
# While installing Postfix from source code on the local machine, the
|
||||||
|
# script is run by the postfix-install script to update selected file
|
||||||
|
# or directory permissions and to update Postfix configuration files.
|
||||||
|
# .IP o
|
||||||
|
# While installing Postfix from a pre-built package, the script is run
|
||||||
|
# by the package management procedure to set all file or directory
|
||||||
|
# permissions and to update Postfix configuration files.
|
||||||
|
# .IP o
|
||||||
|
# The script can be used to change installation parameter settings such
|
||||||
|
# as mail_owner or setgid_group after Postfix is already installed.
|
||||||
|
# .IP o
|
||||||
|
# The script can be used to upgrade configuration files and to upgrade
|
||||||
|
# file/directory permissions of a secondary Postfix instance.
|
||||||
|
# .IP o
|
||||||
|
# At Postfix start-up time, the script is run from "postfix check" to
|
||||||
|
# create missing queue directories.
|
||||||
|
# .PP
|
||||||
|
# The post-install script is controlled by installation parameters.
|
||||||
|
# Specific parameters are described at the end of this document.
|
||||||
|
# All installation parameters must be specified ahead of time via
|
||||||
|
# one of the methods described below.
|
||||||
|
#
|
||||||
|
# Arguments
|
||||||
|
# .IP create-missing
|
||||||
|
# Create missing queue directories with ownerships and permissions
|
||||||
|
# according to the contents of $meta_directory/postfix-files
|
||||||
|
# and optionally in $meta_directory/postfix-files.d/*, using
|
||||||
|
# the mail_owner and setgid_group parameter settings from the
|
||||||
|
# command line, process environment or from the installed
|
||||||
|
# main.cf file.
|
||||||
|
#
|
||||||
|
# This is required at Postfix start-up time.
|
||||||
|
# .IP set-permissions
|
||||||
|
# Set all file/directory ownerships and permissions according to the
|
||||||
|
# contents of $meta_directory/postfix-files and optionally
|
||||||
|
# in $meta_directory/postfix-files.d/*, using the mail_owner
|
||||||
|
# and setgid_group parameter settings from the command line,
|
||||||
|
# process environment or from the installed main.cf file.
|
||||||
|
# Implies create-missing.
|
||||||
|
#
|
||||||
|
# This is required when installing Postfix from a pre-built package,
|
||||||
|
# or when changing the mail_owner or setgid_group installation parameter
|
||||||
|
# settings after Postfix is already installed.
|
||||||
|
# .IP upgrade-permissions
|
||||||
|
# Update ownership and permission of existing files/directories as
|
||||||
|
# specified in $meta_directory/postfix-files and optionally
|
||||||
|
# in $meta_directory/postfix-files.d/*, using the mail_owner
|
||||||
|
# and setgid_group parameter settings from the command line,
|
||||||
|
# process environment or from the installed main.cf file.
|
||||||
|
# Implies create-missing.
|
||||||
|
#
|
||||||
|
# This is required when upgrading an existing Postfix instance.
|
||||||
|
# .IP upgrade-configuration
|
||||||
|
# Edit the installed main.cf and master.cf files, in order to account
|
||||||
|
# for missing services and to fix deprecated parameter settings.
|
||||||
|
#
|
||||||
|
# This is required when upgrading an existing Postfix instance.
|
||||||
|
# .IP upgrade-source
|
||||||
|
# Short-hand for: upgrade-permissions upgrade-configuration.
|
||||||
|
#
|
||||||
|
# This is recommended when upgrading Postfix from source code.
|
||||||
|
# .IP upgrade-package
|
||||||
|
# Short-hand for: set-permissions upgrade-configuration.
|
||||||
|
#
|
||||||
|
# This is recommended when upgrading Postfix from a pre-built package.
|
||||||
|
# .IP first-install-reminder
|
||||||
|
# Remind the user that they still need to configure main.cf and the
|
||||||
|
# aliases file, and that newaliases still needs to be run.
|
||||||
|
#
|
||||||
|
# This is recommended when Postfix is installed for the first time.
|
||||||
|
# MULTIPLE POSTFIX INSTANCES
|
||||||
|
# .ad
|
||||||
|
# .fi
|
||||||
|
# Multiple Postfix instances on the same machine can share command and
|
||||||
|
# daemon program files but must have separate configuration and queue
|
||||||
|
# directories.
|
||||||
|
#
|
||||||
|
# To create a secondary Postfix installation on the same machine,
|
||||||
|
# copy the configuration files from the primary Postfix instance to
|
||||||
|
# a secondary configuration directory and execute:
|
||||||
|
#
|
||||||
|
# postfix post-install config_directory=secondary-config-directory \e
|
||||||
|
# .in +4
|
||||||
|
# queue_directory=secondary-queue-directory \e
|
||||||
|
# .br
|
||||||
|
# create-missing
|
||||||
|
# .PP
|
||||||
|
# This creates secondary Postfix queue directories, sets their access
|
||||||
|
# permissions, and saves the specified installation parameters to the
|
||||||
|
# secondary main.cf file.
|
||||||
|
#
|
||||||
|
# Be sure to list the secondary configuration directory in the
|
||||||
|
# alternate_config_directories parameter in the primary main.cf file.
|
||||||
|
#
|
||||||
|
# To upgrade a secondary Postfix installation on the same machine,
|
||||||
|
# execute:
|
||||||
|
#
|
||||||
|
# postfix post-install config_directory=secondary-config-directory \e
|
||||||
|
# .in +4
|
||||||
|
# upgrade-permissions upgrade-configuration
|
||||||
|
# INSTALLATION PARAMETER INPUT METHODS
|
||||||
|
# .ad
|
||||||
|
# .fi
|
||||||
|
# Parameter settings can be specified through a variety of
|
||||||
|
# mechanisms. In order of decreasing precedence these are:
|
||||||
|
# .IP "command line"
|
||||||
|
# Parameter settings can be given as name=value arguments on
|
||||||
|
# the post-install command line. These have the highest precedence.
|
||||||
|
# Settings that override the installed main.cf file are saved.
|
||||||
|
# .IP "process environment"
|
||||||
|
# Parameter settings can be given as name=value environment
|
||||||
|
# variables.
|
||||||
|
# Settings that override the installed main.cf file are saved.
|
||||||
|
# .IP "installed configuration files"
|
||||||
|
# If a parameter is not specified via the command line or via the
|
||||||
|
# process environment, post-install will attempt to extract its
|
||||||
|
# value from the already installed Postfix main.cf configuration file.
|
||||||
|
# These settings have the lowest precedence.
|
||||||
|
# INSTALLATION PARAMETER DESCRIPTION
|
||||||
|
# .ad
|
||||||
|
# .fi
|
||||||
|
# The description of installation parameters is as follows:
|
||||||
|
# .IP config_directory
|
||||||
|
# The directory for Postfix configuration files.
|
||||||
|
# .IP daemon_directory
|
||||||
|
# The directory for Postfix daemon programs. This directory
|
||||||
|
# should not be in the command search path of any users.
|
||||||
|
# .IP command_directory
|
||||||
|
# The directory for Postfix administrative commands. This
|
||||||
|
# directory should be in the command search path of administrative users.
|
||||||
|
# .IP queue_directory
|
||||||
|
# The directory for Postfix queues.
|
||||||
|
# .IP data_directory
|
||||||
|
# The directory for Postfix writable data files (caches, etc.).
|
||||||
|
# .IP sendmail_path
|
||||||
|
# The full pathname for the Postfix sendmail command.
|
||||||
|
# This is the Sendmail-compatible mail posting interface.
|
||||||
|
# .IP newaliases_path
|
||||||
|
# The full pathname for the Postfix newaliases command.
|
||||||
|
# This is the Sendmail-compatible command to build alias databases
|
||||||
|
# for the Postfix local delivery agent.
|
||||||
|
# .IP mailq_path
|
||||||
|
# The full pathname for the Postfix mailq command.
|
||||||
|
# This is the Sendmail-compatible command to list the mail queue.
|
||||||
|
# .IP mail_owner
|
||||||
|
# The owner of the Postfix queue. Its numerical user ID and group ID
|
||||||
|
# must not be used by any other accounts on the system.
|
||||||
|
# .IP setgid_group
|
||||||
|
# The group for mail submission and for queue management commands.
|
||||||
|
# Its numerical group ID must not be used by any other accounts on the
|
||||||
|
# system, not even by the mail_owner account.
|
||||||
|
# .IP html_directory
|
||||||
|
# The directory for the Postfix HTML files.
|
||||||
|
# .IP manpage_directory
|
||||||
|
# The directory for the Postfix on-line manual pages.
|
||||||
|
# .IP sample_directory
|
||||||
|
# The directory for the Postfix sample configuration files.
|
||||||
|
# This feature is obsolete as of Postfix 2.1.
|
||||||
|
# .IP readme_directory
|
||||||
|
# The directory for the Postfix README files.
|
||||||
|
# .IP shlib_directory
|
||||||
|
# The directory for the Postfix shared-library files, and for
|
||||||
|
# the Postfix dabatase plugin files with a relative pathname
|
||||||
|
# in the file dynamicmaps.cf.
|
||||||
|
# .IP meta_directory
|
||||||
|
# The directory for non-executable files that are shared
|
||||||
|
# among multiple Postfix instances, such as postfix-files,
|
||||||
|
# dynamicmaps.cf, as well as the multi-instance template files
|
||||||
|
# main.cf.proto and master.cf.proto.
|
||||||
|
# SEE ALSO
|
||||||
|
# postfix-install(1) Postfix primary installation script.
|
||||||
|
# FILES
|
||||||
|
# $config_directory/main.cf, Postfix installation parameters.
|
||||||
|
# $meta_directory/postfix-files, installation control file.
|
||||||
|
# $meta_directory/postfix-files.d/*, optional control files.
|
||||||
|
# $config_directory/install.cf, obsolete configuration file.
|
||||||
|
# LICENSE
|
||||||
|
# .ad
|
||||||
|
# .fi
|
||||||
|
# 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
|
||||||
|
#--
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin:/usr/sbin:/usr/etc:/sbin:/etc:/usr/contrib/bin:/usr/gnu/bin:/usr/ucb:/usr/bsd
|
||||||
|
SHELL=/bin/sh
|
||||||
|
IFS="
|
||||||
|
"
|
||||||
|
BACKUP_IFS="$IFS"
|
||||||
|
debug=:
|
||||||
|
#debug=echo
|
||||||
|
MOST_PARAMETERS="command_directory daemon_directory data_directory
|
||||||
|
html_directory mail_owner mailq_path manpage_directory
|
||||||
|
newaliases_path queue_directory readme_directory sample_directory
|
||||||
|
sendmail_path setgid_group shlib_directory meta_directory"
|
||||||
|
NON_SHARED="config_directory queue_directory data_directory"
|
||||||
|
|
||||||
|
USAGE="Usage: $0 [name=value] command
|
||||||
|
create-missing Create missing queue directories.
|
||||||
|
upgrade-source When installing or upgrading from source code.
|
||||||
|
upgrade-package When installing or upgrading from pre-built package.
|
||||||
|
first-install-reminder Remind of mandatory first-time configuration steps.
|
||||||
|
name=value Specify an installation parameter".
|
||||||
|
|
||||||
|
# Process command-line options and parameter settings. Work around
|
||||||
|
# brain damaged shells. "IFS=value command" should not make the
|
||||||
|
# IFS=value setting permanent. But some broken standard allows it.
|
||||||
|
|
||||||
|
create=; set_perms=; upgrade_perms=; upgrade_conf=; first_install_reminder=
|
||||||
|
obsolete=; keep_list=;
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
*[" "]*) echo $0: "Error: argument contains whitespace: '$arg'"
|
||||||
|
exit 1;;
|
||||||
|
*=*) IFS= eval $arg; IFS="$BACKUP_IFS";;
|
||||||
|
create-missing) create=1;;
|
||||||
|
set-perm*) create=1; set_perms=1;;
|
||||||
|
upgrade-perm*) create=1; upgrade_perms=1;;
|
||||||
|
upgrade-conf*) upgrade_conf=1;;
|
||||||
|
upgrade-source) create=1; upgrade_conf=1; upgrade_perms=1;;
|
||||||
|
upgrade-package) create=1; upgrade_conf=1; set_perms=1;;
|
||||||
|
first-install*) first_install_reminder=1;;
|
||||||
|
*) echo "$0: Error: $USAGE" 1>&2; exit 1;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# Sanity checks.
|
||||||
|
|
||||||
|
test -n "$create$upgrade_conf$first_install_reminder" || {
|
||||||
|
echo "$0: Error: $USAGE" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Bootstrapping problem.
|
||||||
|
|
||||||
|
if [ -n "$command_directory" ]
|
||||||
|
then
|
||||||
|
POSTCONF="$command_directory/postconf"
|
||||||
|
else
|
||||||
|
POSTCONF="postconf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$POSTCONF -d mail_version >/dev/null 2>/dev/null || {
|
||||||
|
echo $0: Error: no $POSTCONF command found. 1>&2
|
||||||
|
echo Re-run this command as $0 command_directory=/some/where. 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Also used to require license etc. files only in the default instance.
|
||||||
|
|
||||||
|
def_config_directory=`$POSTCONF -d -h config_directory` || exit 1
|
||||||
|
test -n "$config_directory" ||
|
||||||
|
config_directory="$def_config_directory"
|
||||||
|
|
||||||
|
test -d "$config_directory" || {
|
||||||
|
echo $0: Error: $config_directory is not a directory. 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# If this is a secondary instance, don't touch shared files.
|
||||||
|
# XXX Solaris does not have "test -e".
|
||||||
|
|
||||||
|
instances=`test ! -f $def_config_directory/main.cf ||
|
||||||
|
$POSTCONF -c $def_config_directory -h multi_instance_directories |
|
||||||
|
sed 's/,/ /'` || exit 1
|
||||||
|
|
||||||
|
update_shared_files=1
|
||||||
|
for name in $instances
|
||||||
|
do
|
||||||
|
case "$name" in
|
||||||
|
"$def_config_directory") ;;
|
||||||
|
"$config_directory") update_shared_files=; break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -f $meta_directory/postfix-files || {
|
||||||
|
echo $0: Error: $meta_directory/postfix-files is not a file. 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# SunOS5 fmt(1) truncates lines > 1000 characters.
|
||||||
|
|
||||||
|
fake_fmt() {
|
||||||
|
sed '
|
||||||
|
:top
|
||||||
|
/^\( *\)\([^ ][^ ]*\) */{
|
||||||
|
s//\1\2\
|
||||||
|
\1/
|
||||||
|
P
|
||||||
|
D
|
||||||
|
b top
|
||||||
|
}
|
||||||
|
' | fmt
|
||||||
|
}
|
||||||
|
|
||||||
|
case `uname -s` in
|
||||||
|
HP-UX*) FMT=cat;;
|
||||||
|
SunOS*) FMT=fake_fmt;;
|
||||||
|
*) FMT=fmt;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If a parameter is not set via the command line or environment,
|
||||||
|
# try to use settings from installed configuration files.
|
||||||
|
|
||||||
|
# Extract parameter settings from the obsolete install.cf file, as
|
||||||
|
# a transitional aid.
|
||||||
|
|
||||||
|
grep setgid_group $config_directory/main.cf >/dev/null 2>&1 || {
|
||||||
|
test -f $config_directory/install.cf && {
|
||||||
|
for name in sendmail_path newaliases_path mailq_path setgid manpages
|
||||||
|
do
|
||||||
|
eval junk=\$$name
|
||||||
|
case "$junk" in
|
||||||
|
"") eval unset $name;;
|
||||||
|
esac
|
||||||
|
eval : \${$name="\`. $config_directory/install.cf; echo \$$name\`"} \
|
||||||
|
|| exit 1
|
||||||
|
done
|
||||||
|
: ${setgid_group=$setgid}
|
||||||
|
: ${manpage_directory=$manpages}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extract parameter settings from the installed main.cf file.
|
||||||
|
|
||||||
|
test -f $config_directory/main.cf && {
|
||||||
|
for name in $MOST_PARAMETERS
|
||||||
|
do
|
||||||
|
eval junk=\$$name
|
||||||
|
case "$junk" in
|
||||||
|
"") eval unset $name;;
|
||||||
|
esac
|
||||||
|
eval : \${$name=\`$POSTCONF -c $config_directory -h $name\`} || exit 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sanity checks
|
||||||
|
|
||||||
|
case $manpage_directory in
|
||||||
|
no) echo $0: Error: manpage_directory no longer accepts \"no\" values. 1>&2
|
||||||
|
echo Try again with \"$0 manpage_directory=/pathname ...\". 1>&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $setgid_group in
|
||||||
|
no) echo $0: Error: setgid_group no longer accepts \"no\" values. 1>&2
|
||||||
|
echo Try again with \"$0 setgid_group=groupname ...\" 1>&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
for path in "$daemon_directory" "$command_directory" "$queue_directory" \
|
||||||
|
"$sendmail_path" "$newaliases_path" "$mailq_path" "$manpage_directory" \
|
||||||
|
"$meta_directory"
|
||||||
|
do
|
||||||
|
case "$path" in
|
||||||
|
/*) ;;
|
||||||
|
*) echo $0: Error: \"$path\" should be an absolute path name. 1>&2; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
for path in "$html_directory" "$readme_directory" "$shlib_directory"
|
||||||
|
do
|
||||||
|
case "$path" in
|
||||||
|
/*) ;;
|
||||||
|
no) ;;
|
||||||
|
*) echo $0: Error: \"$path\" should be \"no\" or an absolute path name. 1>&2; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Find out what parameters were not specified via command line,
|
||||||
|
# via environment, or via installed configuration files.
|
||||||
|
|
||||||
|
missing=
|
||||||
|
for name in $MOST_PARAMETERS
|
||||||
|
do
|
||||||
|
eval test -n \"\$$name\" || missing="$missing $name"
|
||||||
|
done
|
||||||
|
|
||||||
|
# All parameters must be specified at this point.
|
||||||
|
|
||||||
|
test -n "$non_interactive" -a -n "$missing" && {
|
||||||
|
cat <<EOF | ${FMT} 1>&2
|
||||||
|
$0: Error: some required installation parameters are not defined.
|
||||||
|
|
||||||
|
- Either the parameters need to be given in the $config_directory/main.cf
|
||||||
|
file from a recent Postfix installation,
|
||||||
|
|
||||||
|
- Or the parameters need to be specified through the process
|
||||||
|
environment.
|
||||||
|
|
||||||
|
- Or the parameters need to be specified as name=value arguments
|
||||||
|
on the $0 command line,
|
||||||
|
|
||||||
|
The following parameters were missing:
|
||||||
|
|
||||||
|
$missing
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
POSTCONF="$command_directory/postconf"
|
||||||
|
|
||||||
|
# Save settings, allowing command line/environment override.
|
||||||
|
|
||||||
|
# Undo MAIL_VERSION expansion at the end of a parameter value. If
|
||||||
|
# someone really wants the expanded mail version in main.cf, then
|
||||||
|
# we're sorry.
|
||||||
|
|
||||||
|
# Confine side effects from mail_version unexpansion within a subshell.
|
||||||
|
|
||||||
|
(case "$mail_version" in
|
||||||
|
"") mail_version="`$POSTCONF -dhx mail_version`" || exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
for name in $MOST_PARAMETERS
|
||||||
|
do
|
||||||
|
eval junk=\$$name
|
||||||
|
case "$junk" in
|
||||||
|
*"$mail_version"*)
|
||||||
|
case "$pattern" in
|
||||||
|
"") pattern=`echo "$mail_version" | sed 's/\./\\\\./g'` || exit 1
|
||||||
|
esac
|
||||||
|
val=`echo "$junk" | sed "s/$pattern"'$/${mail_version}/g'` || exit 1
|
||||||
|
eval ${name}='"$val"'
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# XXX Maybe update main.cf only with first install, upgrade, set
|
||||||
|
# permissions, and what else? Should there be a warning otherwise?
|
||||||
|
|
||||||
|
override=
|
||||||
|
for name in $MOST_PARAMETERS
|
||||||
|
do
|
||||||
|
eval junk=\"\$$name\"
|
||||||
|
test "$junk" = "`$POSTCONF -c $config_directory -h $name`" || {
|
||||||
|
override=1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
test -n "$override" && {
|
||||||
|
$POSTCONF -c $config_directory -e \
|
||||||
|
"daemon_directory = $daemon_directory" \
|
||||||
|
"command_directory = $command_directory" \
|
||||||
|
"queue_directory = $queue_directory" \
|
||||||
|
"data_directory = $data_directory" \
|
||||||
|
"mail_owner = $mail_owner" \
|
||||||
|
"setgid_group = $setgid_group" \
|
||||||
|
"sendmail_path = $sendmail_path" \
|
||||||
|
"mailq_path = $mailq_path" \
|
||||||
|
"newaliases_path = $newaliases_path" \
|
||||||
|
"html_directory = $html_directory" \
|
||||||
|
"manpage_directory = $manpage_directory" \
|
||||||
|
"sample_directory = $sample_directory" \
|
||||||
|
"readme_directory = $readme_directory" \
|
||||||
|
"shlib_directory = $shlib_directory" \
|
||||||
|
"meta_directory = $meta_directory" \
|
||||||
|
|| exit 1
|
||||||
|
} || exit 0) || exit 1
|
||||||
|
|
||||||
|
# Use file/directory status information in $meta_directory/postfix-files.
|
||||||
|
|
||||||
|
test -n "$create" && {
|
||||||
|
postfix_files_d=$meta_directory/postfix-files.d
|
||||||
|
for postfix_file in $meta_directory/postfix-files \
|
||||||
|
`test -d $postfix_files_d && { find $postfix_files_d -type f | sort; }`
|
||||||
|
do
|
||||||
|
exec <$postfix_file || exit 1
|
||||||
|
while IFS=: read path type owner group mode flags junk
|
||||||
|
do
|
||||||
|
IFS="$BACKUP_IFS"
|
||||||
|
set_permission=
|
||||||
|
# Skip comments. Skip shared files, if updating a secondary instance.
|
||||||
|
case $path in
|
||||||
|
[$]*) case "$update_shared_files" in
|
||||||
|
1) $debug keep non-shared or shared $path;;
|
||||||
|
*) non_shared=
|
||||||
|
for name in $NON_SHARED
|
||||||
|
do
|
||||||
|
case $path in
|
||||||
|
"\$$name"*) non_shared=1; break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
case "$non_shared" in
|
||||||
|
1) $debug keep non-shared $path;;
|
||||||
|
*) $debug skip shared $path; continue;;
|
||||||
|
esac;;
|
||||||
|
esac;;
|
||||||
|
*) continue;;
|
||||||
|
esac
|
||||||
|
# Skip hard links and symbolic links.
|
||||||
|
case $type in
|
||||||
|
[hl]) continue;;
|
||||||
|
[df]) ;;
|
||||||
|
*) echo unknown type $type for $path in $postfix_file 1>&2; exit 1;;
|
||||||
|
esac
|
||||||
|
# Expand $name, and canonicalize null fields.
|
||||||
|
for name in path owner group flags
|
||||||
|
do
|
||||||
|
eval junk=\${$name}
|
||||||
|
case $junk in
|
||||||
|
[$]*) eval $name=$junk;;
|
||||||
|
-) eval $name=;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
# Skip uninstalled files.
|
||||||
|
case $path in
|
||||||
|
no|no/*) continue;;
|
||||||
|
esac
|
||||||
|
# Pick up the flags.
|
||||||
|
case $flags in *u*) upgrade_flag=1;; *) upgrade_flag=;; esac
|
||||||
|
case $flags in *c*) create_flag=1;; *) create_flag=;; esac
|
||||||
|
case $flags in *r*) recursive="-R";; *) recursive=;; esac
|
||||||
|
case $flags in *o*) obsolete_flag=1;; *) obsolete_flag=;; esac
|
||||||
|
case $flags in *[1i]*) test ! -r "$path" -a "$config_directory" != \
|
||||||
|
"$def_config_directory" && continue;; esac
|
||||||
|
# Flag obsolete objects. XXX Solaris 2..9 does not have "test -e".
|
||||||
|
if [ -n "$obsolete_flag" ]
|
||||||
|
then
|
||||||
|
test -r $path -a "$type" != "d" && obsolete="$obsolete $path"
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
keep_list="$keep_list $path"
|
||||||
|
fi
|
||||||
|
# Create missing directories with proper owner/group/mode settings.
|
||||||
|
if [ -n "$create" -a "$type" = "d" -a -n "$create_flag" -a ! -d "$path" ]
|
||||||
|
then
|
||||||
|
mkdir $path || exit 1
|
||||||
|
set_permission=1
|
||||||
|
# Update all owner/group/mode settings.
|
||||||
|
elif [ -n "$set_perms" ]
|
||||||
|
then
|
||||||
|
set_permission=1
|
||||||
|
# Update obsolete owner/group/mode settings.
|
||||||
|
elif [ -n "$upgrade_perms" -a -n "$upgrade_flag" ]
|
||||||
|
then
|
||||||
|
set_permission=1
|
||||||
|
fi
|
||||||
|
test -n "$set_permission" && {
|
||||||
|
chown $recursive $owner $path || exit 1
|
||||||
|
test -z "$group" || chgrp $recursive $group $path || exit 1
|
||||||
|
# Don't "chmod -R"; queue file status is encoded in mode bits.
|
||||||
|
if [ "$type" = "d" -a -n "$recursive" ]
|
||||||
|
then
|
||||||
|
find $path -type d -exec chmod $mode "{}" ";"
|
||||||
|
else
|
||||||
|
chmod $mode $path
|
||||||
|
fi || exit 1
|
||||||
|
}
|
||||||
|
done
|
||||||
|
IFS="$BACKUP_IFS"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Upgrade existing Postfix configuration files if necessary.
|
||||||
|
|
||||||
|
test -n "$upgrade_conf" && {
|
||||||
|
|
||||||
|
# Postfix 2.0.
|
||||||
|
# Add missing relay service to master.cf.
|
||||||
|
|
||||||
|
grep '^relay' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for relay service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
relay unix - - n - - smtp
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 1.1.
|
||||||
|
# Add missing flush service to master.cf.
|
||||||
|
|
||||||
|
grep '^flush.*flush' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for flush service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
flush unix - - n 1000? 0 flush
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.1.
|
||||||
|
# Add missing trace service to master.cf.
|
||||||
|
|
||||||
|
grep 'trace.*bounce' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for trace service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
trace unix - - n - 0 bounce
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.1.
|
||||||
|
# Add missing verify service to master.cf.
|
||||||
|
|
||||||
|
grep '^verify.*verify' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for verify service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
verify unix - - n - 1 verify
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.1.
|
||||||
|
# Fix verify service process limit.
|
||||||
|
|
||||||
|
grep '^verify.*[ ]0[ ]*verify' \
|
||||||
|
$config_directory/master.cf >/dev/null && {
|
||||||
|
echo Editing $config_directory/master.cf, setting verify process limit to 1
|
||||||
|
ed $config_directory/master.cf <<EOF || exit 1
|
||||||
|
/^verify.*[ ]0[ ]*verify/
|
||||||
|
s/\([ ]\)0\([ ]\)/\11\2/
|
||||||
|
p
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 1.1.
|
||||||
|
# Change privileged pickup service into unprivileged.
|
||||||
|
|
||||||
|
grep "^pickup[ ]*fifo[ ]*n[ ]*n" \
|
||||||
|
$config_directory/master.cf >/dev/null && {
|
||||||
|
echo Editing $config_directory/master.cf, making the pickup service unprivileged
|
||||||
|
ed $config_directory/master.cf <<EOF || exit 1
|
||||||
|
/^pickup[ ]*fifo[ ]*n[ ]*n/
|
||||||
|
s/\(n[ ]*\)n/\1-/
|
||||||
|
p
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 1.1.
|
||||||
|
# Change private cleanup and flush services into public.
|
||||||
|
|
||||||
|
for name in cleanup flush
|
||||||
|
do
|
||||||
|
grep "^$name[ ]*unix[ ]*[-y]" \
|
||||||
|
$config_directory/master.cf >/dev/null && {
|
||||||
|
echo Editing $config_directory/master.cf, making the $name service public
|
||||||
|
ed $config_directory/master.cf <<EOF || exit 1
|
||||||
|
/^$name[ ]*unix[ ]*[-y]/
|
||||||
|
s/[-y]/n/
|
||||||
|
p
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Postfix 2.2.
|
||||||
|
# File systems have improved since Postfix came out, and all we
|
||||||
|
# require now is that defer and deferred are hashed because those
|
||||||
|
# can contain lots of files.
|
||||||
|
|
||||||
|
found=`$POSTCONF -c $config_directory -h hash_queue_names`
|
||||||
|
missing=
|
||||||
|
(echo "$found" | grep defer >/dev/null) || missing="$missing defer"
|
||||||
|
(echo "$found" | grep deferred>/dev/null)|| missing="$missing deferred"
|
||||||
|
test -n "$missing" && {
|
||||||
|
echo fixing main.cf hash_queue_names for missing $missing
|
||||||
|
$POSTCONF -c $config_directory -e hash_queue_names="$found$missing" ||
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Turn on safety nets for new features that could bounce mail that
|
||||||
|
# would be accepted by a previous Postfix version.
|
||||||
|
|
||||||
|
# [The "unknown_local_recipient_reject_code = 450" safety net,
|
||||||
|
# introduced with Postfix 2.0 and deleted after Postfix 2.3.]
|
||||||
|
|
||||||
|
# Postfix 2.0.
|
||||||
|
# Add missing proxymap service to master.cf.
|
||||||
|
|
||||||
|
grep '^proxymap.*proxymap' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for proxymap service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
proxymap unix - - n - - proxymap
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.1.
|
||||||
|
# Add missing anvil service to master.cf.
|
||||||
|
|
||||||
|
grep '^anvil.*anvil' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for anvil service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
anvil unix - - n - 1 anvil
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.2.
|
||||||
|
# Add missing scache service to master.cf.
|
||||||
|
|
||||||
|
grep '^scache.*scache' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for scache service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
scache unix - - n - 1 scache
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.2.
|
||||||
|
# Add missing discard service to master.cf.
|
||||||
|
|
||||||
|
grep '^discard.*discard' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for discard service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
discard unix - - n - - discard
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.2.
|
||||||
|
# Update the tlsmgr fifo->unix service.
|
||||||
|
|
||||||
|
grep "^tlsmgr[ ]*fifo[ ]" \
|
||||||
|
$config_directory/master.cf >/dev/null && {
|
||||||
|
echo Editing $config_directory/master.cf, updating the tlsmgr from fifo to unix service
|
||||||
|
ed $config_directory/master.cf <<EOF || exit 1
|
||||||
|
/^tlsmgr[ ]*fifo[ ]/
|
||||||
|
s/fifo/unix/
|
||||||
|
s/[0-9][0-9]*/&?/
|
||||||
|
p
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.2.
|
||||||
|
# Add missing tlsmgr service to master.cf.
|
||||||
|
|
||||||
|
grep '^tlsmgr.*tlsmgr' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for tlsmgr service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
tlsmgr unix - - n 1000? 1 tlsmgr
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.2.
|
||||||
|
# Add missing retry service to master.cf.
|
||||||
|
|
||||||
|
grep '^retry.*error' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for retry service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
retry unix - - n - - error
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.5.
|
||||||
|
# Add missing proxywrite service to master.cf.
|
||||||
|
|
||||||
|
grep '^proxywrite.*proxymap' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for proxywrite service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
proxywrite unix - - n - 1 proxymap
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.5.
|
||||||
|
# Fix a typo in the default master.cf proxywrite entry.
|
||||||
|
|
||||||
|
grep '^proxywrite.*-[ ]*proxymap' $config_directory/master.cf >/dev/null && {
|
||||||
|
echo Editing $config_directory/master.cf, setting proxywrite process limit to 1
|
||||||
|
ed $config_directory/master.cf <<EOF || exit 1
|
||||||
|
/^proxywrite.*-[ ]*proxymap/
|
||||||
|
s/-\([ ]*proxymap\)/1\1/
|
||||||
|
p
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.8.
|
||||||
|
# Add missing postscreen service to master.cf.
|
||||||
|
|
||||||
|
grep '^#*smtp.*postscreen' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for postscreen TCP service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
#smtp inet n - n - 1 postscreen
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.8.
|
||||||
|
# Add missing smtpd (unix-domain) service to master.cf.
|
||||||
|
|
||||||
|
grep '^#*smtpd.*smtpd' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for smtpd unix-domain service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
#smtpd pass - - n - - smtpd
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.8.
|
||||||
|
# Add temporary dnsblog (unix-domain) service to master.cf.
|
||||||
|
|
||||||
|
grep '^#*dnsblog.*dnsblog' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for dnsblog unix-domain service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
#dnsblog unix - - n - 0 dnsblog
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.8.
|
||||||
|
# Add tlsproxy (unix-domain) service to master.cf.
|
||||||
|
|
||||||
|
grep '^#*tlsproxy.*tlsproxy' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for tlsproxy unix-domain service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
#tlsproxy unix - - n - 0 tlsproxy
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Report (but do not remove) obsolete files.
|
||||||
|
|
||||||
|
test -n "$obsolete" && {
|
||||||
|
cat <<EOF | ${FMT}
|
||||||
|
|
||||||
|
Note: the following files or directories still exist but are
|
||||||
|
no longer part of Postfix:
|
||||||
|
|
||||||
|
$obsolete
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix 2.9.
|
||||||
|
# Safety net for incompatible changes in IPv6 defaults.
|
||||||
|
# PLEASE DO NOT REMOVE THIS CODE. ITS PURPOSE IS TO AVOID AN
|
||||||
|
# UNEXPECTED DROP IN PERFORMANCE AFTER UPGRADING FROM POSTFIX
|
||||||
|
# BEFORE 2.9.
|
||||||
|
# This code assumes that the default is "inet_protocols = ipv4"
|
||||||
|
# when IPv6 support is not compiled in. See util/sys_defs.h.
|
||||||
|
|
||||||
|
test "`$POSTCONF -dh inet_protocols`" = "ipv4" ||
|
||||||
|
test -n "`$POSTCONF -c $config_directory -n inet_protocols`" || {
|
||||||
|
cat <<EOF | ${FMT}
|
||||||
|
COMPATIBILITY: editing $config_directory/main.cf, setting
|
||||||
|
inet_protocols=ipv4. Specify inet_protocols explicitly if you
|
||||||
|
want to enable IPv6.
|
||||||
|
In a future release IPv6 will be enabled by default.
|
||||||
|
EOF
|
||||||
|
$POSTCONF -c $config_directory inet_protocols=ipv4 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Disabled because unhelpful down-stream maintainers disable the safety net.
|
||||||
|
# # Postfix 2.10.
|
||||||
|
# # Safety net for incompatible changes due to the introduction
|
||||||
|
# # of the smtpd_relay_restrictions feature to separate the
|
||||||
|
# # mail relay policy from the spam blocking policy.
|
||||||
|
# # PLEASE DO NOT REMOVE THIS CODE. ITS PURPOSE IS TO PREVENT
|
||||||
|
# # INBOUND MAIL FROM UNEXPECTEDLY BOUNCING AFTER UPGRADING FROM
|
||||||
|
# # POSTFIX BEFORE 2.10.
|
||||||
|
# test -n "`$POSTCONF -c $config_directory -n smtpd_relay_restrictions`" || {
|
||||||
|
# cat <<EOF | ${FMT}
|
||||||
|
# COMPATIBILITY: editing $config_directory/main.cf, overriding
|
||||||
|
# smtpd_relay_restrictions to prevent inbound mail from
|
||||||
|
# unexpectedly bouncing.
|
||||||
|
# Specify an empty smtpd_relay_restrictions value to keep using
|
||||||
|
# smtpd_recipient_restrictions as before.
|
||||||
|
#EOF
|
||||||
|
# $POSTCONF -c $config_directory "smtpd_relay_restrictions = \
|
||||||
|
# permit_mynetworks permit_sasl_authenticated \
|
||||||
|
# defer_unauth_destination" || exit 1
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Postfix 3.4
|
||||||
|
# Add a postlog service entry.
|
||||||
|
|
||||||
|
grep '^postlog' $config_directory/master.cf >/dev/null || {
|
||||||
|
echo Editing $config_directory/master.cf, adding missing entry for postlog unix-domain datagram service
|
||||||
|
cat >>$config_directory/master.cf <<EOF || exit 1
|
||||||
|
postlog unix-dgram n - n - 1 postlogd
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# A reminder if this is the first time Postfix is being installed.
|
||||||
|
|
||||||
|
test -n "$first_install_reminder" && {
|
||||||
|
|
||||||
|
ALIASES=`$POSTCONF -c $config_directory -h alias_database | sed 's/^[^:]*://'`
|
||||||
|
NEWALIASES_PATH=`$POSTCONF -c $config_directory -h newaliases_path`
|
||||||
|
cat <<EOF | ${FMT}
|
||||||
|
|
||||||
|
Warning: you still need to edit myorigin/mydestination/mynetworks
|
||||||
|
parameter settings in $config_directory/main.cf.
|
||||||
|
|
||||||
|
See also http://www.postfix.org/STANDARD_CONFIGURATION_README.html
|
||||||
|
for information about dialup sites or about sites inside a
|
||||||
|
firewalled network.
|
||||||
|
|
||||||
|
BTW: Check your $ALIASES file and be sure to set up aliases
|
||||||
|
that send mail for root and postmaster to a real person, then
|
||||||
|
run $NEWALIASES_PATH.
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exit 0
|
223
postfix/postfix-files
Normal file
223
postfix/postfix-files
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
#
|
||||||
|
# Do not edit this file.
|
||||||
|
#
|
||||||
|
# This file controls the postfix-install script for installation of
|
||||||
|
# Postfix programs, configuration files and documentation, as well
|
||||||
|
# as the post-install script for setting permissions and for updating
|
||||||
|
# Postfix configuration files. See the respective manual pages within
|
||||||
|
# the script files.
|
||||||
|
#
|
||||||
|
# Do not list $command_directory or $shlib_directory in this file,
|
||||||
|
# or it will be blown away by a future Postfix uninstallation
|
||||||
|
# procedure. You would not want to lose all files in /usr/sbin or
|
||||||
|
# /usr/local/lib.
|
||||||
|
#
|
||||||
|
# Each record in this file describes one file or directory.
|
||||||
|
# Fields are separated by ":". Specify a null field as "-".
|
||||||
|
# Missing fields or separators at the end are OK.
|
||||||
|
#
|
||||||
|
# File format:
|
||||||
|
# name:type:owner:group:permission:flags
|
||||||
|
# No group means don't change group ownership.
|
||||||
|
#
|
||||||
|
# File types:
|
||||||
|
# d=directory
|
||||||
|
# f=regular file
|
||||||
|
# h=hard link (*)
|
||||||
|
# l=symbolic link (*)
|
||||||
|
#
|
||||||
|
# (*) With hard links and symbolic links, the owner field becomes the
|
||||||
|
# source pathname, while the group and permissions are ignored.
|
||||||
|
#
|
||||||
|
# File flags:
|
||||||
|
# No flag means the flag is not active.
|
||||||
|
# p=preserve existing file, do not replace (postfix-install).
|
||||||
|
# u=update owner/group/mode (post-install upgrade-permissions).
|
||||||
|
# c=create missing directory (post-install create-missing).
|
||||||
|
# r=apply owner/group recursively (post-install set/upgrade-permissions).
|
||||||
|
# o=obsolete, no longer part of Postfix
|
||||||
|
# 1=optional for non-default instance (config_dir != built-in default).
|
||||||
|
#
|
||||||
|
# Note: the "u" flag is for upgrading the permissions of existing files
|
||||||
|
# or directories after changes in Postfix architecture. For robustness
|
||||||
|
# it is a good idea to "u" all the files that have special ownership or
|
||||||
|
# permissions, so that running "make install" fixes any glitches.
|
||||||
|
#
|
||||||
|
# Note: order matters. Update shared libraries and database plugins
|
||||||
|
# before daemon/command-line programs.
|
||||||
|
$config_directory:d:root:-:755:u
|
||||||
|
$data_directory:d:$mail_owner:-:700:uc
|
||||||
|
$daemon_directory:d:root:-:755:u
|
||||||
|
$queue_directory:d:root:-:755:uc
|
||||||
|
$queue_directory/active:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/bounce:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/corrupt:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/defer:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/deferred:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/flush:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/hold:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/incoming:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/private:d:$mail_owner:-:700:uc
|
||||||
|
$queue_directory/maildrop:d:$mail_owner:$setgid_group:730:uc
|
||||||
|
$queue_directory/public:d:$mail_owner:$setgid_group:710:uc
|
||||||
|
$queue_directory/pid:d:root:-:755:uc
|
||||||
|
$queue_directory/saved:d:$mail_owner:-:700:ucr
|
||||||
|
$queue_directory/trace:d:$mail_owner:-:700:ucr
|
||||||
|
# Update shared libraries and plugins before daemon or command-line programs.
|
||||||
|
$shlib_directory/libpostfix-util.so:f:root:-:755
|
||||||
|
$shlib_directory/libpostfix-global.so:f:root:-:755
|
||||||
|
$shlib_directory/libpostfix-dns.so:f:root:-:755
|
||||||
|
$shlib_directory/libpostfix-tls.so:f:root:-:755
|
||||||
|
$shlib_directory/libpostfix-master.so:f:root:-:755
|
||||||
|
$meta_directory/dynamicmaps.cf.d:d:root:-:755
|
||||||
|
$meta_directory/dynamicmaps.cf:f:root:-:644
|
||||||
|
$meta_directory/main.cf.proto:f:root:-:644
|
||||||
|
$meta_directory/makedefs.out:f:root:-:644
|
||||||
|
$meta_directory/master.cf.proto:f:root:-:644
|
||||||
|
$meta_directory/postfix-files.d:d:root:-:755
|
||||||
|
$meta_directory/postfix-files:f:root:-:644
|
||||||
|
$daemon_directory/anvil:f:root:-:755
|
||||||
|
$daemon_directory/bounce:f:root:-:755
|
||||||
|
$daemon_directory/cleanup:f:root:-:755
|
||||||
|
$daemon_directory/discard:f:root:-:755
|
||||||
|
$daemon_directory/dnsblog:f:root:-:755
|
||||||
|
$daemon_directory/error:f:root:-:755
|
||||||
|
$daemon_directory/flush:f:root:-:755
|
||||||
|
$daemon_directory/local:f:root:-:755
|
||||||
|
$daemon_directory/main.cf:f:root:-:644:o
|
||||||
|
$daemon_directory/master.cf:f:root:-:644:o
|
||||||
|
$daemon_directory/master:f:root:-:755
|
||||||
|
$daemon_directory/oqmgr:f:root:-:755
|
||||||
|
$daemon_directory/pickup:f:root:-:755
|
||||||
|
$daemon_directory/pipe:f:root:-:755
|
||||||
|
$daemon_directory/post-install:f:root:-:755
|
||||||
|
# In case meta_directory == daemon_directory.
|
||||||
|
#$daemon_directory/postfix-files:f:root:-:644:o
|
||||||
|
#$daemon_directory/postfix-files.d:d:root:-:755:o
|
||||||
|
$daemon_directory/postfix-script:f:root:-:755
|
||||||
|
$daemon_directory/postfix-tls-script:f:root:-:755
|
||||||
|
$daemon_directory/postfix-wrapper:f:root:-:755
|
||||||
|
$daemon_directory/postmulti-script:f:root:-:755
|
||||||
|
$daemon_directory/postlogd:f:root:-:755
|
||||||
|
$daemon_directory/postscreen:f:root:-:755
|
||||||
|
$daemon_directory/proxymap:f:root:-:755
|
||||||
|
$daemon_directory/qmgr:f:root:-:755
|
||||||
|
$daemon_directory/qmqpd:f:root:-:755
|
||||||
|
$daemon_directory/scache:f:root:-:755
|
||||||
|
$daemon_directory/showq:f:root:-:755
|
||||||
|
$daemon_directory/smtp:f:root:-:755
|
||||||
|
$daemon_directory/smtpd:f:root:-:755
|
||||||
|
$daemon_directory/spawn:f:root:-:755
|
||||||
|
$daemon_directory/tlsproxy:f:root:-:755
|
||||||
|
$daemon_directory/tlsmgr:f:root:-:755
|
||||||
|
$daemon_directory/trivial-rewrite:f:root:-:755
|
||||||
|
$daemon_directory/verify:f:root:-:755
|
||||||
|
$daemon_directory/virtual:f:root:-:755
|
||||||
|
$daemon_directory/nqmgr:h:$daemon_directory/qmgr
|
||||||
|
$daemon_directory/lmtp:h:$daemon_directory/smtp
|
||||||
|
$command_directory/postalias:f:root:-:755
|
||||||
|
$command_directory/postcat:f:root:-:755
|
||||||
|
$command_directory/postconf:f:root:-:755
|
||||||
|
$command_directory/postfix:f:root:-:755
|
||||||
|
$command_directory/postkick:f:root:-:755
|
||||||
|
$command_directory/postlock:f:root:-:755
|
||||||
|
$command_directory/postlog:f:root:$setgid_group:2755:u
|
||||||
|
$command_directory/postmap:f:root:-:755
|
||||||
|
$command_directory/postmulti:f:root:-:755
|
||||||
|
$command_directory/postsuper:f:root:-:755
|
||||||
|
$command_directory/postdrop:f:root:$setgid_group:2755:u
|
||||||
|
$command_directory/postqueue:f:root:$setgid_group:2755:u
|
||||||
|
$sendmail_path:f:root:-:755
|
||||||
|
$newaliases_path:l:$sendmail_path
|
||||||
|
$mailq_path:l:$sendmail_path
|
||||||
|
# Empty files not shipped in Debian
|
||||||
|
#$config_directory/access:f:root:-:644:p1
|
||||||
|
#$config_directory/aliases:f:root:-:644:p1
|
||||||
|
#$config_directory/bounce.cf.default:f:root:-:644:1
|
||||||
|
#$config_directory/canonical:f:root:-:644:p1
|
||||||
|
#$config_directory/cidr_table:f:root:-:644:o
|
||||||
|
#$config_directory/generic:f:root:-:644:p1
|
||||||
|
#$config_directory/generics:f:root:-:644:o
|
||||||
|
#$config_directory/header_checks:f:root:-:644:p1
|
||||||
|
#$config_directory/install.cf:f:root:-:644:o
|
||||||
|
#$config_directory/main.cf.default:f:root:-:644:1
|
||||||
|
$config_directory/main.cf:f:root:-:644:p
|
||||||
|
$config_directory/master.cf:f:root:-:644:p
|
||||||
|
#$config_directory/regexp_table:f:root:-:644:o
|
||||||
|
#$config_directory/relocated:f:root:-:644:p1
|
||||||
|
#$config_directory/tcp_table:f:root:-:644:o
|
||||||
|
#$config_directory/transport:f:root:-:644:p1
|
||||||
|
#$config_directory/virtual:f:root:-:644:p1
|
||||||
|
$config_directory/postfix-script:f:root:-:755:o
|
||||||
|
#$config_directory/postfix-script-sgid:f:root:-:755:o
|
||||||
|
#$config_directory/postfix-script-nosgid:f:root:-:755:o
|
||||||
|
$config_directory/post-install:f:root:-:755:o
|
||||||
|
$manpage_directory/man1/mailq.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/newaliases.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postalias.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postcat.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postconf.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postdrop.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postfix-tls.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postfix.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postkick.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postlock.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postlog.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postmap.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postmulti.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postqueue.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/postsuper.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man1/sendmail.1.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/access.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/aliases.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/body_checks.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/bounce.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/canonical.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/cidr_table.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/generics.5.gz:f:root:-:644:o
|
||||||
|
$manpage_directory/man5/generic.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/header_checks.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/master.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/memcache_table.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/socketmap_table.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/nisplus_table.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/postconf.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/postfix-wrapper.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/regexp_table.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/relocated.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/tcp_table.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/transport.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man5/virtual.5.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/bounce.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/cleanup.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/anvil.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/defer.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/discard.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/dnsblog.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/error.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/flush.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/lmtp.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/local.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/master.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/nqmgr.8postfix.gz:f:root:-:644:o
|
||||||
|
$manpage_directory/man8/oqmgr.8postfix.gz:f:root:-:644:
|
||||||
|
$manpage_directory/man8/pickup.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/pipe.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/postlogd.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/postfix-add-filter.8.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/postfix-add-policy.8.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/postscreen.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/proxymap.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/qmgr.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/qmqpd.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/scache.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/showq.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/smtp.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/smtpd.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/spawn.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/tlsproxy.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/tlsmgr.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/trace.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/trivial-rewrite.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/verify.8postfix.gz:f:root:-:644
|
||||||
|
$manpage_directory/man8/virtual.8postfix.gz:f:root:-:644
|
2
postfix/postfix-files.d/mysql.files
Normal file
2
postfix/postfix-files.d/mysql.files
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
$shlib_directory/postfix-mysql.so:f:root:-:755
|
||||||
|
$manpage_directory/man5/mysql_table.5.gz:f:root:-:644
|
454
postfix/postfix-script
Executable file
454
postfix/postfix-script
Executable file
|
@ -0,0 +1,454 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#++
|
||||||
|
# NAME
|
||||||
|
# postfix-script 1
|
||||||
|
# SUMMARY
|
||||||
|
# execute Postfix administrative commands
|
||||||
|
# SYNOPSIS
|
||||||
|
# \fBpostfix-script\fR \fIcommand\fR
|
||||||
|
# DESCRIPTION
|
||||||
|
# The \fBpostfix-script\fR script executes Postfix administrative
|
||||||
|
# commands in an environment that is set up by the \fBpostfix\fR(1)
|
||||||
|
# command.
|
||||||
|
# SEE ALSO
|
||||||
|
# master(8) Postfix master program
|
||||||
|
# postfix(1) Postfix administrative interface
|
||||||
|
# LICENSE
|
||||||
|
# .ad
|
||||||
|
# .fi
|
||||||
|
# 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
|
||||||
|
#--
|
||||||
|
|
||||||
|
# Avoid POSIX death due to SIGHUP when some parent process exits.
|
||||||
|
|
||||||
|
trap '' 1
|
||||||
|
|
||||||
|
case $daemon_directory in
|
||||||
|
"") echo This script must be run by the postfix command. 1>&2
|
||||||
|
echo Do not run directly. 1>&2
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
LOGGER="$command_directory/postlog -t $MAIL_LOGTAG/postfix-script"
|
||||||
|
INFO="$LOGGER -p info"
|
||||||
|
WARN="$LOGGER -p warn"
|
||||||
|
ERROR="$LOGGER -p error"
|
||||||
|
FATAL="$LOGGER -p fatal"
|
||||||
|
PANIC="$LOGGER -p panic"
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
SHELL=/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Can't do much without these in place.
|
||||||
|
#
|
||||||
|
cd $command_directory || {
|
||||||
|
$FATAL no Postfix command directory $command_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
cd $daemon_directory || {
|
||||||
|
$FATAL no Postfix daemon directory $daemon_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
test -f master || {
|
||||||
|
$FATAL no Postfix master program $daemon_directory/master!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
cd $config_directory || {
|
||||||
|
$FATAL no Postfix configuration directory $config_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
case $shlib_directory in
|
||||||
|
no) ;;
|
||||||
|
*) cd $shlib_directory || {
|
||||||
|
$FATAL no Postfix shared-library directory $shlib_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
esac
|
||||||
|
cd $meta_directory || {
|
||||||
|
$FATAL no Postfix meta directory $meta_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
cd $queue_directory || {
|
||||||
|
$FATAL no Postfix queue directory $queue_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
def_config_directory=`$command_directory/postconf -dh config_directory` || {
|
||||||
|
$FATAL cannot execute $command_directory/postconf!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# If this is a secondary instance, don't touch shared files.
|
||||||
|
|
||||||
|
instances=`test ! -f $def_config_directory/main.cf ||
|
||||||
|
$command_directory/postconf -c $def_config_directory \
|
||||||
|
-h multi_instance_directories | sed 's/,/ /'` || {
|
||||||
|
$FATAL cannot execute $command_directory/postconf!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
check_shared_files=1
|
||||||
|
for name in $instances
|
||||||
|
do
|
||||||
|
case "$name" in
|
||||||
|
"$def_config_directory") ;;
|
||||||
|
"$config_directory") check_shared_files=; break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# Parse JCL
|
||||||
|
#
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
start_msg)
|
||||||
|
|
||||||
|
echo "Start postfix"
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop_msg)
|
||||||
|
|
||||||
|
echo "Stop postfix"
|
||||||
|
;;
|
||||||
|
|
||||||
|
start|start-fg)
|
||||||
|
|
||||||
|
$daemon_directory/master -t 2>/dev/null || {
|
||||||
|
$FATAL the Postfix mail system is already running
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
if [ -f $queue_directory/quick-start ]
|
||||||
|
then
|
||||||
|
rm -f $queue_directory/quick-start
|
||||||
|
else
|
||||||
|
$daemon_directory/postfix-script check-fatal || {
|
||||||
|
$FATAL Postfix integrity check failed!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
# Foreground this so it can be stopped. All inodes are cached.
|
||||||
|
$daemon_directory/postfix-script check-warn
|
||||||
|
fi
|
||||||
|
$INFO starting the Postfix mail system || exit 1
|
||||||
|
case $1 in
|
||||||
|
start)
|
||||||
|
# NOTE: wait in foreground process to get the initialization status.
|
||||||
|
$daemon_directory/master -w || {
|
||||||
|
$FATAL "mail system startup failed"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
start-fg)
|
||||||
|
# Foreground start-up is incompatible with multi-instance mode.
|
||||||
|
# Use "exec $daemon_directory/master" only if PID == 1.
|
||||||
|
# Otherwise, doing so would break process group management,
|
||||||
|
# and "postfix stop" would kill too many processes.
|
||||||
|
case $instances in
|
||||||
|
"") case $$ in
|
||||||
|
1) exec $daemon_directory/master -i
|
||||||
|
$FATAL "cannot start-fg the master daemon"
|
||||||
|
exit 1;;
|
||||||
|
*) $daemon_directory/master -s;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*) $FATAL "start-fg does not support multi_instance_directories"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
drain)
|
||||||
|
|
||||||
|
$daemon_directory/master -t 2>/dev/null && {
|
||||||
|
$FATAL the Postfix mail system is not running
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
$INFO stopping the Postfix mail system
|
||||||
|
kill -9 `sed 1q pid/master.pid`
|
||||||
|
;;
|
||||||
|
|
||||||
|
quick-stop)
|
||||||
|
|
||||||
|
$daemon_directory/postfix-script stop
|
||||||
|
touch $queue_directory/quick-start
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
|
||||||
|
$daemon_directory/master -t 2>/dev/null && {
|
||||||
|
$FATAL the Postfix mail system is not running
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
$INFO stopping the Postfix mail system
|
||||||
|
kill `sed 1q pid/master.pid`
|
||||||
|
for i in 5 4 3 2 1
|
||||||
|
do
|
||||||
|
$daemon_directory/master -t && exit 0
|
||||||
|
$INFO waiting for the Postfix mail system to terminate
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
$WARN stopping the Postfix mail system with force
|
||||||
|
pid=`awk '{ print $1; exit 0 } END { exit 1 }' pid/master.pid` &&
|
||||||
|
kill -9 -$pid
|
||||||
|
;;
|
||||||
|
|
||||||
|
abort)
|
||||||
|
|
||||||
|
$daemon_directory/master -t 2>/dev/null && {
|
||||||
|
$FATAL the Postfix mail system is not running
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
$INFO aborting the Postfix mail system
|
||||||
|
kill `sed 1q pid/master.pid`
|
||||||
|
;;
|
||||||
|
|
||||||
|
reload)
|
||||||
|
|
||||||
|
$daemon_directory/master -t 2>/dev/null && {
|
||||||
|
$FATAL the Postfix mail system is not running
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
$INFO refreshing the Postfix mail system
|
||||||
|
$command_directory/postsuper active || exit 1
|
||||||
|
kill -HUP `sed 1q pid/master.pid`
|
||||||
|
$command_directory/postsuper &
|
||||||
|
;;
|
||||||
|
|
||||||
|
flush)
|
||||||
|
|
||||||
|
cd $queue_directory || {
|
||||||
|
$FATAL no Postfix queue directory $queue_directory!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
$command_directory/postqueue -f
|
||||||
|
;;
|
||||||
|
|
||||||
|
check)
|
||||||
|
|
||||||
|
$daemon_directory/postfix-script check-fatal || exit 1
|
||||||
|
$daemon_directory/postfix-script check-warn
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
status)
|
||||||
|
|
||||||
|
$daemon_directory/master -t 2>/dev/null && {
|
||||||
|
$INFO the Postfix mail system is not running
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
$INFO the Postfix mail system is running: PID: `sed 1q pid/master.pid`
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
check-fatal)
|
||||||
|
# This command is NOT part of the public interface.
|
||||||
|
|
||||||
|
$SHELL $daemon_directory/post-install create-missing || {
|
||||||
|
$FATAL unable to create missing queue directories
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Look for incomplete installations.
|
||||||
|
|
||||||
|
test -f $config_directory/master.cf || {
|
||||||
|
$FATAL no $config_directory/master.cf file found
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
maillog_file=`$command_directory/postconf -h maillog_file` || {
|
||||||
|
$FATAL cannot execute $command_directory/postconf!
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
test -n "$maillog_file" && {
|
||||||
|
$command_directory/postconf -M postlog/unix-dgram 2>/dev/null \
|
||||||
|
| grep . >/dev/null || {
|
||||||
|
$FATAL "missing 'postlog' service in master.cf - run 'postfix upgrade-configuration'"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# See if all queue files are in the right place. This is slow.
|
||||||
|
# We must scan all queues for mis-named queue files before the
|
||||||
|
# mail system can run.
|
||||||
|
|
||||||
|
$command_directory/postsuper || exit 1
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
check-warn)
|
||||||
|
# This command is NOT part of the public interface.
|
||||||
|
|
||||||
|
# Check Postfix root-owned directory owner/permissions.
|
||||||
|
|
||||||
|
find $queue_directory/. $queue_directory/pid \
|
||||||
|
-prune ! -user root \
|
||||||
|
-exec $WARN not owned by root: {} \;
|
||||||
|
|
||||||
|
find $queue_directory/. $queue_directory/pid \
|
||||||
|
-prune \( -perm -020 -o -perm -002 \) \
|
||||||
|
-exec $WARN group or other writable: {} \;
|
||||||
|
|
||||||
|
# Check Postfix root-owned directory tree owner/permissions.
|
||||||
|
|
||||||
|
todo="$config_directory/."
|
||||||
|
test -n "$check_shared_files" && {
|
||||||
|
todo="$daemon_directory/. $meta_directory/. $todo"
|
||||||
|
test "$shlib_directory" = "no" ||
|
||||||
|
todo="$shlib_directory/. $todo"
|
||||||
|
}
|
||||||
|
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
|
||||||
|
|
||||||
|
find $todo ! -user root \
|
||||||
|
-exec $WARN not owned by root: {} \;
|
||||||
|
|
||||||
|
# Handle symlinks separately
|
||||||
|
find -L $todo \( -perm -020 -o -perm -002 \) \
|
||||||
|
-exec $WARN group or other writable: {} \;
|
||||||
|
|
||||||
|
find $todo -type l | while read f; do \
|
||||||
|
# makedefs out known to be a symlink and OK
|
||||||
|
if [ "$f" != "/etc/postfix/./makedefs.out" ]; then \
|
||||||
|
readlink "$f" | grep -q / && $WARN symlink leaves directory: "$f"; \
|
||||||
|
fi \
|
||||||
|
done; \
|
||||||
|
|
||||||
|
# Check Postfix mail_owner-owned directory tree owner/permissions.
|
||||||
|
|
||||||
|
find $data_directory/. ! -user $mail_owner \
|
||||||
|
-exec $WARN not owned by $mail_owner: {} \;
|
||||||
|
|
||||||
|
find $data_directory/. \( -perm -020 -o -perm -002 \) \
|
||||||
|
-exec $WARN group or other writable: {} \;
|
||||||
|
|
||||||
|
# Check Postfix mail_owner-owned directory tree owner.
|
||||||
|
|
||||||
|
find `ls -d $queue_directory/* | \
|
||||||
|
egrep '/(saved|incoming|active|defer|deferred|bounce|hold|trace|corrupt|public|private|flush)$'` \
|
||||||
|
! \( -type p -o -type s \) ! -user $mail_owner \
|
||||||
|
-exec $WARN not owned by $mail_owner: {} \;
|
||||||
|
|
||||||
|
# WARNING: this should not descend into the maildrop directory.
|
||||||
|
# maildrop is the least trusted Postfix directory.
|
||||||
|
|
||||||
|
find $queue_directory/maildrop -prune ! -user $mail_owner \
|
||||||
|
-exec $WARN not owned by $mail_owner: $queue_directory/maildrop \;
|
||||||
|
|
||||||
|
# Check Postfix setgid_group-owned directory and file group/permissions.
|
||||||
|
|
||||||
|
todo="$queue_directory/public $queue_directory/maildrop"
|
||||||
|
test -n "$check_shared_files" &&
|
||||||
|
todo="$command_directory/postqueue $command_directory/postdrop $todo"
|
||||||
|
|
||||||
|
find $todo \
|
||||||
|
-prune ! -group $setgid_group \
|
||||||
|
-exec $WARN not owned by group $setgid_group: {} \;
|
||||||
|
|
||||||
|
test -n "$check_shared_files" &&
|
||||||
|
find $command_directory/postqueue $command_directory/postdrop \
|
||||||
|
-prune ! -perm -02111 \
|
||||||
|
-exec $WARN not set-gid or not owner+group+world executable: {} \;
|
||||||
|
|
||||||
|
# Check non-Postfix root-owned directory tree owner/content.
|
||||||
|
|
||||||
|
for dir in bin etc lib sbin usr
|
||||||
|
do
|
||||||
|
test -d $dir && {
|
||||||
|
find $dir ! -user root \
|
||||||
|
-exec $WARN not owned by root: $queue_directory/{} \;
|
||||||
|
|
||||||
|
find $dir -type f -print | while read path
|
||||||
|
do
|
||||||
|
test -f /$path && {
|
||||||
|
cmp -s $path /$path ||
|
||||||
|
$WARN $queue_directory/$path and /$path differ
|
||||||
|
}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
find corrupt -type f -exec $WARN damaged message: {} \;
|
||||||
|
|
||||||
|
# Check for non-Postfix MTA remnants.
|
||||||
|
|
||||||
|
test -n "$check_shared_files" -a -f /usr/sbin/sendmail -a \
|
||||||
|
-f /usr/lib/sendmail && {
|
||||||
|
cmp -s /usr/sbin/sendmail /usr/lib/sendmail || {
|
||||||
|
$WARN /usr/lib/sendmail and /usr/sbin/sendmail differ
|
||||||
|
$WARN Replace one by a symbolic link to the other
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
set-permissions|upgrade-configuration)
|
||||||
|
$daemon_directory/post-install create-missing "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
post-install)
|
||||||
|
# Currently not part of the public interface.
|
||||||
|
shift
|
||||||
|
$daemon_directory/post-install "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tls)
|
||||||
|
shift
|
||||||
|
$daemon_directory/postfix-tls-script "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
/*)
|
||||||
|
# Currently not part of the public interface.
|
||||||
|
"$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
logrotate)
|
||||||
|
case $# in
|
||||||
|
1) ;;
|
||||||
|
*) $FATAL "usage postfix $1 (no arguments)"; exit 1;;
|
||||||
|
esac
|
||||||
|
for name in maillog_file maillog_file_compressor \
|
||||||
|
maillog_file_rotate_suffix
|
||||||
|
do
|
||||||
|
value="`$command_directory/postconf -h $name`"
|
||||||
|
case "$value" in
|
||||||
|
"") $FATAL "empty '$name' parameter value - logfile rotation failed"
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
eval $name='"$value"';
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$maillog_file" in
|
||||||
|
/dev/*) $FATAL "not rotating '$maillog_file'"; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
errors=`(
|
||||||
|
suffix="\`date +$maillog_file_rotate_suffix\`" || exit 1
|
||||||
|
mv "$maillog_file" "$maillog_file.$suffix" || exit 1
|
||||||
|
$daemon_directory/master -t 2>/dev/null ||
|
||||||
|
kill -HUP \`sed 1q pid/master.pid\` || exit 1
|
||||||
|
sleep 1
|
||||||
|
"$maillog_file_compressor" "$maillog_file.$suffix" || exit 1
|
||||||
|
) 2>&1` || {
|
||||||
|
$FATAL "logfile '$maillog_file' rotation failed: $errors"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
$FATAL "unknown command: '$1'. Usage: postfix start (or stop, reload, abort, flush, check, status, set-permissions, upgrade-configuration, logrotate)"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
1
postfix/virtual
Normal file
1
postfix/virtual
Normal file
|
@ -0,0 +1 @@
|
||||||
|
postmaster@toetersnoet.nl toetersnoet
|
5
postfix/virtual-alias-maps.conf
Normal file
5
postfix/virtual-alias-maps.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
user = virtualmail
|
||||||
|
password = nusif78yadkasc8ujieaw89y
|
||||||
|
hosts = 127.0.0.1
|
||||||
|
dbname = mailserver
|
||||||
|
query = select distinct destination from vw_aliases where source='%s' or source = '@%d' and not EXISTS(select email from vw_mailboxes where email = '%s') union ALL select email as destination from vw_mailboxes where email = '%s'
|
5
postfix/virtual-canonical-maps.conf
Normal file
5
postfix/virtual-canonical-maps.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
user = virtualmail
|
||||||
|
password = nusif78yadkasc8ujieaw89y
|
||||||
|
hosts = 127.0.0.1
|
||||||
|
dbname = mailserver
|
||||||
|
query = SELECT destination, source FROM `vw_aliases` where SUBSTRING_INDEX(destination,'@',-1) not in(select domainName from domains) and source = '%s'
|
5
postfix/virtual-mailbox-domains.conf
Normal file
5
postfix/virtual-mailbox-domains.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
user = virtualmail
|
||||||
|
password = nusif78yadkasc8ujieaw89y
|
||||||
|
hosts = 127.0.0.1
|
||||||
|
dbname = mailserver
|
||||||
|
query = SELECT domainName FROM domains WHERE DomainName ='%s'
|
5
postfix/virtual-mailbox-senders.conf
Normal file
5
postfix/virtual-mailbox-senders.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
user = virtualmail
|
||||||
|
password = nusif78yadkasc8ujieaw89y
|
||||||
|
hosts = 127.0.0.1
|
||||||
|
dbname = mailserver
|
||||||
|
query = SELECT Email as mail FROM vw_mailboxes WHERE Email='%s'
|
5
postfix/virtual-mailbox-users.conf
Normal file
5
postfix/virtual-mailbox-users.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
user = virtualmail
|
||||||
|
password = nusif78yadkasc8ujieaw89y
|
||||||
|
hosts = 127.0.0.1
|
||||||
|
dbname = mailserver
|
||||||
|
query = SELECT mailPathRel FROM vw_mailboxes WHERE Email='%s'
|
BIN
postfix/virtual.db
Normal file
BIN
postfix/virtual.db
Normal file
Binary file not shown.
3
postfix/vmailbox
Normal file
3
postfix/vmailbox
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
job@toetersnoet.nl toetersnoet.nl/job/
|
||||||
|
test@toetersnoet.nl toetersnoet.nl/test/
|
||||||
|
bianca@toetersnoet.nl toetersnoet.nl/bianca/
|
BIN
postfix/vmailbox.db
Normal file
BIN
postfix/vmailbox.db
Normal file
Binary file not shown.
Loading…
Reference in a new issue