<file name="Makefile">
##
##  @l_prefix@/etc/postfix/Makefile -- maintainance procedures
##

#   path configuration
PREFIX       = @l_prefix@
SBINDIR      = $(PREFIX)/sbin
ETCDIR       = $(PREFIX)/etc

#   program configuration
RC           = $(ETCDIR)/rc
POSTALIAS    = $(SBINDIR)/postalias
POSTMAP      = $(SBINDIR)/postmap
POSTFIX      = $(SBINDIR)/postfix

#   table filename configuration
T_ACCESS     = access
T_CANONICAL  = canonical
T_GENERIC    = generic
T_VIRTUAL    = virtual
T_RELOCATED  = relocated
T_TRANSPORT  = transport
T_ALIASES    = aliases

#   dependency tracking
TIMESTAMP    = .up-to-date
DEPENDENCIES = Makefile master.cf main.cf $(TABLES)

#   managed tables:
#   - use extension ".db" for hash tables ("hash")
#   - use no extension for regex tables ("pcre")
TABLES = \
    $(T_ACCESS).db    \
    $(T_CANONICAL).db \
    $(T_GENERIC).db   \
    $(T_VIRTUAL).db   \
    $(T_RELOCATED).db \
    $(T_TRANSPORT).db \
    $(T_ALIASES).db

#   default target
all: $(TABLES) $(TIMESTAMP)

#   implicit checking and reloading
$(TIMESTAMP): $(DEPENDENCIES)
	$(POSTFIX) check
	$(POSTFIX) reload >/dev/null 2>&1 || true
	touch $(TIMESTAMP) && chmod 600 $(TIMESTAMP)

#   explicit checking
check:
	$(POSTFIX) check

#   hash table update targets
$(T_ACCESS).db: $(T_ACCESS) $(MAKEFILE)
	$(POSTMAP) hash:$(T_ACCESS)
$(T_CANONICAL).db: $(T_CANONICAL) $(MAKEFILE)
	$(POSTMAP) hash:$(T_CANONICAL)
$(T_GENERIC).db: $(T_GENERIC) $(MAKEFILE)
	$(POSTMAP) hash:$(T_GENERIC)
$(T_VIRTUAL).db: $(T_VIRTUAL) $(MAKEFILE)
	$(POSTMAP) hash:$(T_VIRTUAL)
$(T_RELOCATED).db: $(T_RELOCATED) $(MAKEFILE)
	$(POSTMAP) hash:$(T_RELOCATED)
$(T_TRANSPORT).db: $(T_TRANSPORT) $(MAKEFILE)
	$(POSTMAP) hash:$(T_TRANSPORT)
$(T_ALIASES).db: $(T_ALIASES) $(MAKEFILE)
	$(POSTALIAS) hash:$(T_ALIASES)

#   cleanup target
clean: 
	-rm -f $(TABLES)
	-rm -f $(TIMESTAMP)

#   process management
start:
	$(RC) postfix start
reload:
	$(RC) postfix reload
stop:
	$(RC) postfix stop

</file>
<file name="master.cf">
##
##  @l_prefix@/etc/postfix/master.cf -- Postfix master process table
##
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp -o fallback_relay=
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
#maildrop unix  -       n       n       -       -       pipe flags=DRhu user=vmail argv=@l_prefix@/bin/maildrop -d ${recipient}
#cyrus    unix  -       n       n       -       -       pipe user=cyrus argv=@l_prefix@/bin/cyrdeliver -e -r ${sender} -m ${extension} ${user}
#uucp     unix  -       n       n       -       -       pipe flags=Fqhu user=uucp argv=@l_prefix@/bin/uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#ifmail   unix  -       n       n       -       -       pipe flags=F user=ftn argv=@l_prefix@/bin/ifmail -r $nexthop ($recipient)
#bsmtp    unix  -       n       n       -       -       pipe flags=Fq. user=foo argv=@l_prefix@/bin/bsmtp -f $sender $nexthop $recipient
</file>
<file name="main.cf">
##
##  @l_prefix@/etc/postfix/main.cf -- Postfix main configuration
##
##  Run "@l_prefix@/sbin/postconf -n" to see all parameters overriding
##  defaults, run "@l_prefix@/sbin/postconf -d" to see all possible
##  parameters and their defaults and read the following manual
##  pages for description of each parameter: bounce(8), cleanup(8),
##  defer(8), error(8), flush(8), lmtp(8), local(8), master(8),
##  pickup(8), pipe(8), qmgr(8), showq(8), smtp(8), smtpd(8), spawn(8),
##  trivial-rewrite(8).
##

#   paths
command_directory             = @l_prefix@/sbin
daemon_directory              = @l_prefix@/libexec/postfix
queue_directory               = @l_prefix@/var/postfix

#   users
mail_owner                    = @l_musr@
setgid_group                  = @l_rgrp@
default_privs                 = @l_nusr@

#   local host
myhostname                    = mail.example.com
mydomain                      = example.com
myorigin                      = $myhostname

#   smtp daemon
#smtpd_banner                 = $myhostname ESMTP $mail_name
inet_interfaces               = 127.0.0.1

#   smtp client
smtp_bind_address             = 127.0.0.1

#   relaying
mynetworks                    = 127.0.0.0/8
#mydestination                = $myhostname, localhost.$mydomain
#relay_domains                = $mydestination, 
#                               hash:@l_prefix@/etc/postfix/access
#smtpd_recipient_restrictions = permit_mynetworks, 
#                               check_client_access hash:@l_prefix@/etc/postfix/access,
#                               reject_unauth_destination

#   maps
#canonical_maps               = hash:@l_prefix@/etc/postfix/canonical
#smtp_generic_maps            = hash:@l_prefix@/etc/postfix/generic
#virtual_alias_maps           = hash:@l_prefix@/etc/postfix/virtual
#relocated_maps               = hash:@l_prefix@/etc/postfix/relocated
#transport_maps               = hash:@l_prefix@/etc/postfix/transport
alias_maps                    = hash:@l_prefix@/etc/postfix/aliases
alias_database                = hash:@l_prefix@/etc/postfix/aliases

#   local delivery
#local_recipient_maps         = proxy:unix:passwd.byname $alias_maps
recipient_delimiter           = +
mailbox_command               = @l_prefix@/bin/procmail -a "$EXTENSION"

</file>
<file name="access">
##
##  @l_prefix@/etc/postfix/access -- access control for relaying
##
##  Searched for both the client (hostname, parent domains, IP address,
##  networks obtained by stripping least significant octets from IP
##  address) and destination address (resolved destination address,
##  parent domain, or localpart@) in order to allow relaying. Rejects
##  the request if the result is REJECT or "[45]XX text". Permits the
##  request if the result is OK or RELAY or all-numerical.
##

#   Syntax (see access(5)):
#   | user@domain        action
#   | domain             action
#   | user@              action
#   | net.work.addr.ess  action
#   | net.work.addr      action
#   | net.work           action
#   | net                action
#   where "action" is one of:
#   "[45]NN text", "REJECT", "OK", "restriction..."
#
#   Examples:
#   | mail.example.com OK
#   | example.com      REJECT
#   | 192.168.0.1      OK
#   | 192.168          REJECT
#   | postmaster@      OK

</file>
<file name="virtual">
##
##  @l_prefix@/etc/postfix/virtual -- virtual address translation
##
##  Searched for virtual addresses user@domain, user and @domain
##  (in this order). It redirect mail for all recipients, local or
##  remote. The mapping affects only envelope recipients.
##

#   Syntax (see virtual(5)):
#   | user@domain  address, address, ...
#   | user         address, address, ...
#   | @domain      address, address, ...
#   
#   Examples:
#   | @example.com               john@example.com
#   | postmaster@example.com     postmaster
#   | john@example1.com          john1
#   | john@example2.com          john2

</file>
<file name="aliases">
##
##  @l_prefix@/etc/postfix/aliases -- local mailbox aliases
##
##  Searched for virtual addresses user@domain, user and @domain
##  (in this order). It redirect mail for all recipients, local or
##  remote. The mapping affects only envelope recipients.
##

#   Syntax (see aliases(5)):
#   | name:         value, value, ...
#   where value is one of:
#   "address", "/file/name", "|command", ":include:/file/name"
#
#   Examples:
#   | john.doe:     john, doe
#   | robot:        |/path/to/robot
#   | archive:      /path/to/archive
#   | users:        :include:/path/to/users.list
#   | owner-users:  john.doe

#   standard mail targets
nobody:                /dev/null
MAILER-DAEMON:         postmaster

#   mailbox names for common services, roles and functions
#   (see RFC2142 for more details and expanded list of names)
postmaster:            root
hostmaster:            root
security:              root
abuse:                 root

#   save unprivileged user storage of careless admins
root:                  /dev/null

</file>
<file name="canonical">
##
##  @l_prefix@/etc/postfix/canonical -- address canonification on mail receiving
##
##  Searched for canonical addresses for user@domain, user and @domain
##  (in this order).
##

#   Syntax (see canonical(5)):
#   | user@domain  address
#   | user         address
#   | @domain      address
#
#   Examples:
#   | postmaster@mail.example.com postmaster@example.com
#   | john                        John.Doe
#   | @example.com                @example.com

</file>
<file name="relocated">
##
##  @l_prefix@/etc/postfix/relocated -- relocate obsolete addresses
##
##  Searched for relocated addresses user@domain, user and @domain
##  (in this order). It bounces mail for all recipients.
##

#   Syntax (see relocated(5)):
#   | user@domain     address
#   | user            address
#   | @domain         address
#
#   Examples:
#   | john@invalid    john@example.com
#   | john            john@example.com
#   | @invalid        john@example.com

</file>
<file name="generic">
##
##  @l_prefix@/etc/postfix/generic -- address canonification on mail sending
##
##  Searched for canonical addresses for user@domain, user and @domain
##  (in this order).
##

#   Syntax (see generic(5)):
#   | user@domain  address
#   | user         address
#   | @domain      address
#
#   Examples:
#   | postmaster@mail.example.com postmaster@example.com
#   | john                        John.Doe
#   | @example.com                @example.com

</file>
<file name="transport">
##
##  @l_prefix@/etc/postfix/transport -- transport selection
##
##  Searched for domain and .domain (in this order). It selects the
##  specified transport facility for delivery.
##

#   Syntax (see transport(5)):
#   | domain  transport:nexthop
#   | .domain transport:nexthop
#
#   Examples:
#   | me.example.com             local:
#   | you.example.com            smtp:mail.example.com:2525
#   | example.com                smtp:mail.example.com
#   | .example.com               smtp:mail.example.com

</file>
