Initial commit: mail server configuration
This commit is contained in:
127
dovecot/conf.d/10-auth.conf
Normal file
127
dovecot/conf.d/10-auth.conf
Normal file
@@ -0,0 +1,127 @@
|
||||
##
|
||||
## Authentication processes
|
||||
##
|
||||
|
||||
# Disable LOGIN command and all other plaintext authentications unless
|
||||
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
|
||||
# matches the local IP (ie. you're connecting from the same computer), the
|
||||
# connection is considered secure and plaintext authentication is allowed.
|
||||
disable_plaintext_auth = no
|
||||
|
||||
# Authentication cache size (e.g. 10M). 0 means it's disabled. Note that
|
||||
# bsdauth, PAM and vpopmail require cache_key to be set for caching to be used.
|
||||
#auth_cache_size = 0
|
||||
# Time to live for cached data. After TTL expires the cached record is no
|
||||
# longer used, *except* if the main database lookup returns internal failure.
|
||||
# We also try to handle password changes automatically: If user's previous
|
||||
# authentication was successful, but this one wasn't, the cache isn't used.
|
||||
# For now this works only with plaintext authentication.
|
||||
#auth_cache_ttl = 1 hour
|
||||
# TTL for negative hits (user not found, password mismatch).
|
||||
# 0 disables caching them completely.
|
||||
#auth_cache_negative_ttl = 1 hour
|
||||
|
||||
# Space separated list of realms for SASL authentication mechanisms that need
|
||||
# them. You can leave it empty if you don't want to support multiple realms.
|
||||
# Many clients simply use the first one listed here, so keep the default realm
|
||||
# first.
|
||||
#auth_realms =
|
||||
|
||||
# Default realm/domain to use if none was specified. This is used for both
|
||||
# SASL realms and appending @domain to username in plaintext logins.
|
||||
#auth_default_realm =
|
||||
|
||||
# List of allowed characters in username. If the user-given username contains
|
||||
# a character not listed in here, the login automatically fails. This is just
|
||||
# an extra check to make sure user can't exploit any potential quote escaping
|
||||
# vulnerabilities with SQL/LDAP databases. If you want to allow all characters,
|
||||
# set this value to empty.
|
||||
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
|
||||
|
||||
# Username character translations before it's looked up from databases. The
|
||||
# value contains series of from -> to characters. For example "#@/@" means
|
||||
# that '#' and '/' characters are translated to '@'.
|
||||
#auth_username_translation =
|
||||
|
||||
# Username formatting before it's looked up from databases. You can use
|
||||
# the standard variables here, eg. %Lu would lowercase the username, %n would
|
||||
# drop away the domain if it was given, or "%n-AT-%d" would change the '@' into
|
||||
# "-AT-". This translation is done after auth_username_translation changes.
|
||||
#auth_username_format = %Lu
|
||||
|
||||
# If you want to allow master users to log in by specifying the master
|
||||
# username within the normal username string (ie. not using SASL mechanism's
|
||||
# support for it), you can specify the separator character here. The format
|
||||
# is then <username><separator><master username>. UW-IMAP uses "*" as the
|
||||
# separator, so that could be a good choice.
|
||||
#auth_master_user_separator =
|
||||
|
||||
# Username to use for users logging in with ANONYMOUS SASL mechanism
|
||||
#auth_anonymous_username = anonymous
|
||||
|
||||
# Maximum number of dovecot-auth worker processes. They're used to execute
|
||||
# blocking passdb and userdb queries (eg. MySQL and PAM). They're
|
||||
# automatically created and destroyed as needed.
|
||||
#auth_worker_max_count = 30
|
||||
|
||||
# Host name to use in GSSAPI principal names. The default is to use the
|
||||
# name returned by gethostname(). Use "$ALL" (with quotes) to allow all keytab
|
||||
# entries.
|
||||
#auth_gssapi_hostname =
|
||||
|
||||
# Kerberos keytab to use for the GSSAPI mechanism. Will use the system
|
||||
# default (usually /etc/krb5.keytab) if not specified. You may need to change
|
||||
# the auth service to run as root to be able to read this file.
|
||||
#auth_krb5_keytab =
|
||||
|
||||
# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and
|
||||
# ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
|
||||
#auth_use_winbind = no
|
||||
|
||||
# Path for Samba's ntlm_auth helper binary.
|
||||
#auth_winbind_helper_path = /usr/bin/ntlm_auth
|
||||
|
||||
# Time to delay before replying to failed authentications.
|
||||
#auth_failure_delay = 2 secs
|
||||
|
||||
# Require a valid SSL client certificate or the authentication fails.
|
||||
#auth_ssl_require_client_cert = no
|
||||
|
||||
# Take the username from client's SSL certificate, using
|
||||
# X509_NAME_get_text_by_NID() which returns the subject's DN's
|
||||
# CommonName.
|
||||
#auth_ssl_username_from_cert = no
|
||||
|
||||
# Space separated list of wanted authentication mechanisms:
|
||||
# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
|
||||
# gss-spnego
|
||||
# NOTE: See also disable_plaintext_auth setting.
|
||||
auth_mechanisms = plain login
|
||||
|
||||
##
|
||||
## Password and user databases
|
||||
##
|
||||
|
||||
#
|
||||
# Password database is used to verify user's password (and nothing more).
|
||||
# You can have multiple passdbs and userdbs. This is useful if you want to
|
||||
# allow both system users (/etc/passwd) and virtual users to login without
|
||||
# duplicating the system users into virtual database.
|
||||
#
|
||||
# <doc/wiki/PasswordDatabase.txt>
|
||||
#
|
||||
# User database specifies where mails are located and what user/group IDs
|
||||
# own them. For single-UID configuration use "static" userdb.
|
||||
#
|
||||
# <doc/wiki/UserDatabase.txt>
|
||||
|
||||
#!include auth-deny.conf.ext
|
||||
#!include auth-master.conf.ext
|
||||
|
||||
#!include auth-system.conf.ext
|
||||
#!include auth-sql.conf.ext
|
||||
#!include auth-ldap.conf.ext
|
||||
!include auth-passwdfile.conf.ext
|
||||
#!include auth-checkpassword.conf.ext
|
||||
#!include auth-vpopmail.conf.ext
|
||||
#!include auth-static.conf.ext
|
||||
60
dovecot/conf.d/10-director.conf
Normal file
60
dovecot/conf.d/10-director.conf
Normal file
@@ -0,0 +1,60 @@
|
||||
##
|
||||
## Director-specific settings.
|
||||
##
|
||||
|
||||
# Director can be used by Dovecot proxy to keep a temporary user -> mail server
|
||||
# mapping. As long as user has simultaneous connections, the user is always
|
||||
# redirected to the same server. Each proxy server is running its own director
|
||||
# process, and the directors are communicating the state to each others.
|
||||
# Directors are mainly useful with NFS-like setups.
|
||||
|
||||
# List of IPs or hostnames to all director servers, including ourself.
|
||||
# Ports can be specified as ip:port. The default port is the same as
|
||||
# what director service's inet_listener is using.
|
||||
#director_servers =
|
||||
|
||||
# List of IPs or hostnames to all backend mail servers. Ranges are allowed
|
||||
# too, like 10.0.0.10-10.0.0.30.
|
||||
#director_mail_servers =
|
||||
|
||||
# How long to redirect users to a specific server after it no longer has
|
||||
# any connections.
|
||||
#director_user_expire = 15 min
|
||||
|
||||
# How the username is translated before being hashed. Useful values include
|
||||
# %Ln if user can log in with or without @domain, %Ld if mailboxes are shared
|
||||
# within domain.
|
||||
#director_username_hash = %Lu
|
||||
|
||||
# To enable director service, uncomment the modes and assign a port.
|
||||
service director {
|
||||
unix_listener login/director {
|
||||
#mode = 0666
|
||||
}
|
||||
fifo_listener login/proxy-notify {
|
||||
#mode = 0666
|
||||
}
|
||||
unix_listener director-userdb {
|
||||
#mode = 0600
|
||||
}
|
||||
inet_listener {
|
||||
#port =
|
||||
}
|
||||
}
|
||||
|
||||
# Enable director for the wanted login services by telling them to
|
||||
# connect to director socket instead of the default login socket:
|
||||
service imap-login {
|
||||
#executable = imap-login director
|
||||
}
|
||||
service pop3-login {
|
||||
#executable = pop3-login director
|
||||
}
|
||||
service submission-login {
|
||||
#executable = submission-login director
|
||||
}
|
||||
|
||||
# Enable director for LMTP proxying:
|
||||
protocol lmtp {
|
||||
#auth_socket_path = director-userdb
|
||||
}
|
||||
105
dovecot/conf.d/10-logging.conf
Normal file
105
dovecot/conf.d/10-logging.conf
Normal file
@@ -0,0 +1,105 @@
|
||||
##
|
||||
## Log destination.
|
||||
##
|
||||
|
||||
# Log file to use for error messages. "syslog" logs to syslog,
|
||||
# /dev/stderr logs to stderr.
|
||||
#log_path = syslog
|
||||
|
||||
# Log file to use for informational messages. Defaults to log_path.
|
||||
#info_log_path =
|
||||
# Log file to use for debug messages. Defaults to info_log_path.
|
||||
#debug_log_path =
|
||||
|
||||
# Syslog facility to use if you're logging to syslog. Usually if you don't
|
||||
# want to use "mail", you'll use local0..local7. Also other standard
|
||||
# facilities are supported.
|
||||
#syslog_facility = mail
|
||||
|
||||
##
|
||||
## Logging verbosity and debugging.
|
||||
##
|
||||
|
||||
# Log filter is a space-separated list conditions. If any of the conditions
|
||||
# match, the log filter matches (i.e. they're ORed together). Parenthesis
|
||||
# are supported if multiple conditions need to be matched together.
|
||||
#
|
||||
# See https://doc.dovecot.org/configuration_manual/event_filter/ for details.
|
||||
#
|
||||
# For example: event=http_request_* AND category=error AND category=storage
|
||||
#
|
||||
# Filter to specify what debug logging to enable. This will eventually replace
|
||||
# mail_debug and auth_debug settings.
|
||||
#log_debug =
|
||||
|
||||
# Crash after logging a matching event. For example category=error will crash
|
||||
# any time an error is logged, which can be useful for debugging.
|
||||
#log_core_filter =
|
||||
|
||||
# Log unsuccessful authentication attempts and the reasons why they failed.
|
||||
#auth_verbose = no
|
||||
|
||||
# In case of password mismatches, log the attempted password. Valid values are
|
||||
# no, plain and sha1. sha1 can be useful for detecting brute force password
|
||||
# attempts vs. user simply trying the same password over and over again.
|
||||
# You can also truncate the value to n chars by appending ":n" (e.g. sha1:6).
|
||||
#auth_verbose_passwords = no
|
||||
|
||||
# Even more verbose logging for debugging purposes. Shows for example SQL
|
||||
# queries.
|
||||
#auth_debug = no
|
||||
|
||||
# In case of password mismatches, log the passwords and used scheme so the
|
||||
# problem can be debugged. Enabling this also enables auth_debug.
|
||||
#auth_debug_passwords = no
|
||||
|
||||
# Enable mail process debugging. This can help you figure out why Dovecot
|
||||
# isn't finding your mails.
|
||||
#mail_debug = no
|
||||
|
||||
# Show protocol level SSL errors.
|
||||
#verbose_ssl = no
|
||||
|
||||
# mail_log plugin provides more event logging for mail processes.
|
||||
plugin {
|
||||
# Events to log. Also available: flag_change append
|
||||
#mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
|
||||
# Available fields: uid, box, msgid, from, subject, size, vsize, flags
|
||||
# size and vsize are available only for expunge and copy events.
|
||||
#mail_log_fields = uid box msgid size
|
||||
}
|
||||
|
||||
##
|
||||
## Log formatting.
|
||||
##
|
||||
|
||||
# Prefix for each line written to log file. % codes are in strftime(3)
|
||||
# format.
|
||||
#log_timestamp = "%b %d %H:%M:%S "
|
||||
|
||||
# Space-separated list of elements we want to log. The elements which have
|
||||
# a non-empty variable value are joined together to form a comma-separated
|
||||
# string.
|
||||
#login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
|
||||
|
||||
# Login log format. %s contains login_log_format_elements string, %$ contains
|
||||
# the data we want to log.
|
||||
#login_log_format = %$: %s
|
||||
|
||||
# Log prefix for mail processes. See doc/wiki/Variables.txt for list of
|
||||
# possible variables you can use.
|
||||
#mail_log_prefix = "%s(%u)<%{pid}><%{session}>: "
|
||||
|
||||
# Format to use for logging mail deliveries:
|
||||
# %$ - Delivery status message (e.g. "saved to INBOX")
|
||||
# %m / %{msgid} - Message-ID
|
||||
# %s / %{subject} - Subject
|
||||
# %f / %{from} - From address
|
||||
# %p / %{size} - Physical size
|
||||
# %w / %{vsize} - Virtual size
|
||||
# %e / %{from_envelope} - MAIL FROM envelope
|
||||
# %{to_envelope} - RCPT TO envelope
|
||||
# %{delivery_time} - How many milliseconds it took to deliver the mail
|
||||
# %{session_time} - How long LMTP session took, not including delivery_time
|
||||
# %{storage_id} - Backend-specific ID for mail, e.g. Maildir filename
|
||||
#deliver_log_format = msgid=%m: %$
|
||||
366
dovecot/conf.d/10-mail.conf
Normal file
366
dovecot/conf.d/10-mail.conf
Normal file
@@ -0,0 +1,366 @@
|
||||
##
|
||||
## Mailbox locations and namespaces
|
||||
##
|
||||
|
||||
# Location for users' mailboxes. The default is empty, which means that Dovecot
|
||||
# tries to find the mailboxes automatically. This won't work if the user
|
||||
# doesn't yet have any mail, so you should explicitly tell Dovecot the full
|
||||
# location.
|
||||
#
|
||||
# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u)
|
||||
# isn't enough. You'll also need to tell Dovecot where the other mailboxes are
|
||||
# kept. This is called the "root mail directory", and it must be the first
|
||||
# path given in the mail_location setting.
|
||||
#
|
||||
# There are a few special variables you can use, eg.:
|
||||
#
|
||||
# %u - username
|
||||
# %n - user part in user@domain, same as %u if there's no domain
|
||||
# %d - domain part in user@domain, empty if there's no domain
|
||||
# %h - home directory
|
||||
#
|
||||
# See doc/wiki/Variables.txt for full list. Some examples:
|
||||
#
|
||||
# mail_location = maildir:~/Maildir
|
||||
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
|
||||
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
|
||||
#
|
||||
# <doc/wiki/MailLocation.txt>
|
||||
#
|
||||
mail_location = mbox:~/mail:INBOX=/var/mail/%u
|
||||
|
||||
# If you need to set multiple mailbox locations or want to change default
|
||||
# namespace settings, you can do it by defining namespace sections.
|
||||
#
|
||||
# You can have private, shared and public namespaces. Private namespaces
|
||||
# are for user's personal mails. Shared namespaces are for accessing other
|
||||
# users' mailboxes that have been shared. Public namespaces are for shared
|
||||
# mailboxes that are managed by sysadmin. If you create any shared or public
|
||||
# namespaces you'll typically want to enable ACL plugin also, otherwise all
|
||||
# users can access all the shared mailboxes, assuming they have permissions
|
||||
# on filesystem level to do so.
|
||||
namespace inbox {
|
||||
# Namespace type: private, shared or public
|
||||
#type = private
|
||||
|
||||
# Hierarchy separator to use. You should use the same separator for all
|
||||
# namespaces or some clients get confused. '/' is usually a good one.
|
||||
# The default however depends on the underlying mail storage format.
|
||||
#separator =
|
||||
|
||||
# Prefix required to access this namespace. This needs to be different for
|
||||
# all namespaces. For example "Public/".
|
||||
#prefix =
|
||||
|
||||
# Physical location of the mailbox. This is in same format as
|
||||
# mail_location, which is also the default for it.
|
||||
#location =
|
||||
|
||||
# There can be only one INBOX, and this setting defines which namespace
|
||||
# has it.
|
||||
inbox = yes
|
||||
|
||||
# If namespace is hidden, it's not advertised to clients via NAMESPACE
|
||||
# extension. You'll most likely also want to set list=no. This is mostly
|
||||
# useful when converting from another server with different namespaces which
|
||||
# you want to deprecate but still keep working. For example you can create
|
||||
# hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/".
|
||||
#hidden = no
|
||||
|
||||
# Show the mailboxes under this namespace with LIST command. This makes the
|
||||
# namespace visible for clients that don't support NAMESPACE extension.
|
||||
# "children" value lists child mailboxes, but hides the namespace prefix.
|
||||
#list = yes
|
||||
|
||||
# Namespace handles its own subscriptions. If set to "no", the parent
|
||||
# namespace handles them (empty prefix should always have this as "yes")
|
||||
#subscriptions = yes
|
||||
}
|
||||
|
||||
# Example shared namespace configuration
|
||||
#namespace {
|
||||
#type = shared
|
||||
#separator = /
|
||||
|
||||
# Mailboxes are visible under "shared/user@domain/"
|
||||
# %%n, %%d and %%u are expanded to the destination user.
|
||||
#prefix = shared/%%u/
|
||||
|
||||
# Mail location for other users' mailboxes. Note that %variables and ~/
|
||||
# expands to the logged in user's data. %%n, %%d, %%u and %%h expand to the
|
||||
# destination user's data.
|
||||
#location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
|
||||
|
||||
# Use the default namespace for saving subscriptions.
|
||||
#subscriptions = no
|
||||
|
||||
# List the shared/ namespace only if there are visible shared mailboxes.
|
||||
#list = children
|
||||
#}
|
||||
# Should shared INBOX be visible as "shared/user" or "shared/user/INBOX"?
|
||||
#mail_shared_explicit_inbox = no
|
||||
|
||||
# System user and group used to access mails. If you use multiple, userdb
|
||||
# can override these by returning uid or gid fields. You can use either numbers
|
||||
# or names. <doc/wiki/UserIds.txt>
|
||||
#mail_uid =
|
||||
#mail_gid =
|
||||
|
||||
# Group to enable temporarily for privileged operations. Currently this is
|
||||
# used only with INBOX when either its initial creation or dotlocking fails.
|
||||
# Typically this is set to "mail" to give access to /var/mail.
|
||||
#mail_privileged_group =
|
||||
|
||||
# Grant access to these supplementary groups for mail processes. Typically
|
||||
# these are used to set up access to shared mailboxes. Note that it may be
|
||||
# dangerous to set these if users can create symlinks (e.g. if "mail" group is
|
||||
# set here, ln -s /var/mail ~/mail/var could allow a user to delete others'
|
||||
# mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it).
|
||||
#mail_access_groups =
|
||||
|
||||
# Allow full filesystem access to clients. There's no access checks other than
|
||||
# what the operating system does for the active UID/GID. It works with both
|
||||
# maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/
|
||||
# or ~user/.
|
||||
#mail_full_filesystem_access = no
|
||||
|
||||
# Dictionary for key=value mailbox attributes. Currently used by URLAUTH, but
|
||||
# soon intended to be used by METADATA as well.
|
||||
#mail_attribute_dict =
|
||||
|
||||
##
|
||||
## Mail processes
|
||||
##
|
||||
|
||||
# Don't use mmap() at all. This is required if you store indexes to shared
|
||||
# filesystems (NFS or clustered filesystem).
|
||||
#mmap_disable = no
|
||||
|
||||
# Rely on O_EXCL to work when creating dotlock files. NFS supports O_EXCL
|
||||
# since version 3, so this should be safe to use nowadays by default.
|
||||
#dotlock_use_excl = yes
|
||||
|
||||
# When to use fsync() or fdatasync() calls:
|
||||
# optimized (default): Whenever necessary to avoid losing important data
|
||||
# always: Useful with e.g. NFS when write()s are delayed
|
||||
# never: Never use it (best performance, but crashes can lose data)
|
||||
#mail_fsync = optimized
|
||||
|
||||
# Locking method for index files. Alternatives are fcntl, flock and dotlock.
|
||||
# Dotlocking uses some tricks which may create more disk I/O than other locking
|
||||
# methods. NFS users: flock doesn't work, remember to change mmap_disable.
|
||||
#lock_method = fcntl
|
||||
|
||||
# Directory in which LDA/LMTP temporarily stores incoming mails >128 kB.
|
||||
#mail_temp_dir = /tmp
|
||||
|
||||
# Valid UID range for users, defaults to 500 and above. This is mostly
|
||||
# to make sure that users can't log in as daemons or other system users.
|
||||
# Note that denying root logins is hardcoded to dovecot binary and can't
|
||||
# be done even if first_valid_uid is set to 0.
|
||||
#first_valid_uid = 500
|
||||
#last_valid_uid = 0
|
||||
|
||||
# Valid GID range for users, defaults to non-root/wheel. Users having
|
||||
# non-valid GID as primary group ID aren't allowed to log in. If user
|
||||
# belongs to supplementary groups with non-valid GIDs, those groups are
|
||||
# not set.
|
||||
#first_valid_gid = 1
|
||||
#last_valid_gid = 0
|
||||
|
||||
# Maximum allowed length for mail keyword name. It's only forced when trying
|
||||
# to create new keywords.
|
||||
#mail_max_keyword_length = 50
|
||||
|
||||
# ':' separated list of directories under which chrooting is allowed for mail
|
||||
# processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too).
|
||||
# This setting doesn't affect login_chroot, mail_chroot or auth chroot
|
||||
# settings. If this setting is empty, "/./" in home dirs are ignored.
|
||||
# WARNING: Never add directories here which local users can modify, that
|
||||
# may lead to root exploit. Usually this should be done only if you don't
|
||||
# allow shell access for users. <doc/wiki/Chrooting.txt>
|
||||
#valid_chroot_dirs =
|
||||
|
||||
# Default chroot directory for mail processes. This can be overridden for
|
||||
# specific users in user database by giving /./ in user's home directory
|
||||
# (eg. /home/./user chroots into /home). Note that usually there is no real
|
||||
# need to do chrooting, Dovecot doesn't allow users to access files outside
|
||||
# their mail directory anyway. If your home directories are prefixed with
|
||||
# the chroot directory, append "/." to mail_chroot. <doc/wiki/Chrooting.txt>
|
||||
#mail_chroot =
|
||||
|
||||
# UNIX socket path to master authentication server to find users.
|
||||
# This is used by imap (for shared users) and lda.
|
||||
#auth_socket_path = /var/run/dovecot/auth-userdb
|
||||
|
||||
# Directory where to look up mail plugins.
|
||||
#mail_plugin_dir = /usr/lib/dovecot/modules
|
||||
|
||||
# Space separated list of plugins to load for all services. Plugins specific to
|
||||
# IMAP, LDA, etc. are added to this list in their own .conf files.
|
||||
mail_plugins = $mail_plugins quota zlib
|
||||
|
||||
##
|
||||
## Mailbox handling optimizations
|
||||
##
|
||||
|
||||
# Mailbox list indexes can be used to optimize IMAP STATUS commands. They are
|
||||
# also required for IMAP NOTIFY extension to be enabled.
|
||||
#mailbox_list_index = no
|
||||
|
||||
# The minimum number of mails in a mailbox before updates are done to cache
|
||||
# file. This allows optimizing Dovecot's behavior to do less disk writes at
|
||||
# the cost of more disk reads.
|
||||
#mail_cache_min_mail_count = 0
|
||||
|
||||
# When IDLE command is running, mailbox is checked once in a while to see if
|
||||
# there are any new mails or other changes. This setting defines the minimum
|
||||
# time to wait between those checks. Dovecot can also use dnotify, inotify and
|
||||
# kqueue to find out immediately when changes occur.
|
||||
#mailbox_idle_check_interval = 30 secs
|
||||
|
||||
# Save mails with CR+LF instead of plain LF. This makes sending those mails
|
||||
# take less CPU, especially with sendfile() syscall with Linux and FreeBSD.
|
||||
# But it also creates a bit more disk I/O which may just make it slower.
|
||||
# Also note that if other software reads the mboxes/maildirs, they may handle
|
||||
# the extra CRs wrong and cause problems.
|
||||
#mail_save_crlf = no
|
||||
|
||||
# Max number of mails to keep open and prefetch to memory. This only works with
|
||||
# some mailbox formats and/or operating systems.
|
||||
#mail_prefetch_count = 0
|
||||
|
||||
# How often to scan for stale temporary files and delete them (0 = never).
|
||||
# These should exist only after Dovecot dies in the middle of saving mails.
|
||||
#mail_temp_scan_interval = 1w
|
||||
|
||||
##
|
||||
## Maildir-specific settings
|
||||
##
|
||||
|
||||
# By default LIST command returns all entries in maildir beginning with a dot.
|
||||
# Enabling this option makes Dovecot return only entries which are directories.
|
||||
# This is done by stat()ing each entry, so it causes more disk I/O.
|
||||
# (For systems setting struct dirent->d_type, this check is free and it's
|
||||
# done always regardless of this setting)
|
||||
#maildir_stat_dirs = no
|
||||
|
||||
# When copying a message, do it with hard links whenever possible. This makes
|
||||
# the performance much better, and it's unlikely to have any side effects.
|
||||
#maildir_copy_with_hardlinks = yes
|
||||
|
||||
# Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only
|
||||
# when its mtime changes unexpectedly or when we can't find the mail otherwise.
|
||||
#maildir_very_dirty_syncs = no
|
||||
|
||||
# If enabled, Dovecot doesn't use the S=<size> in the Maildir filenames for
|
||||
# getting the mail's physical size, except when recalculating Maildir++ quota.
|
||||
# This can be useful in systems where a lot of the Maildir filenames have a
|
||||
# broken size. The performance hit for enabling this is very small.
|
||||
#maildir_broken_filename_sizes = no
|
||||
|
||||
# Always move mails from new/ directory to cur/, even when the \Recent flags
|
||||
# aren't being reset.
|
||||
#maildir_empty_new = no
|
||||
|
||||
##
|
||||
## mbox-specific settings
|
||||
##
|
||||
|
||||
# Which locking methods to use for locking mbox. There are four available:
|
||||
# dotlock: Create <mailbox>.lock file. This is the oldest and most NFS-safe
|
||||
# solution. If you want to use /var/mail/ like directory, the users
|
||||
# will need write access to that directory.
|
||||
# dotlock_try: Same as dotlock, but if it fails because of permissions or
|
||||
# because there isn't enough disk space, just skip it.
|
||||
# fcntl : Use this if possible. Works with NFS too if lockd is used.
|
||||
# flock : May not exist in all systems. Doesn't work with NFS.
|
||||
# lockf : May not exist in all systems. Doesn't work with NFS.
|
||||
#
|
||||
# You can use multiple locking methods; if you do the order they're declared
|
||||
# in is important to avoid deadlocks if other MTAs/MUAs are using multiple
|
||||
# locking methods as well. Some operating systems don't allow using some of
|
||||
# them simultaneously.
|
||||
#
|
||||
#mbox_read_locks = fcntl
|
||||
#mbox_write_locks = fcntl dotlock
|
||||
|
||||
# Maximum time to wait for lock (all of them) before aborting.
|
||||
#mbox_lock_timeout = 5 mins
|
||||
|
||||
# If dotlock exists but the mailbox isn't modified in any way, override the
|
||||
# lock file after this much time.
|
||||
#mbox_dotlock_change_timeout = 2 mins
|
||||
|
||||
# When mbox changes unexpectedly we have to fully read it to find out what
|
||||
# changed. If the mbox is large this can take a long time. Since the change
|
||||
# is usually just a newly appended mail, it'd be faster to simply read the
|
||||
# new mails. If this setting is enabled, Dovecot does this but still safely
|
||||
# fallbacks to re-reading the whole mbox file whenever something in mbox isn't
|
||||
# how it's expected to be. The only real downside to this setting is that if
|
||||
# some other MUA changes message flags, Dovecot doesn't notice it immediately.
|
||||
# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK
|
||||
# commands.
|
||||
#mbox_dirty_syncs = yes
|
||||
|
||||
# Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE,
|
||||
# EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored.
|
||||
#mbox_very_dirty_syncs = no
|
||||
|
||||
# Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK
|
||||
# commands and when closing the mailbox). This is especially useful for POP3
|
||||
# where clients often delete all mails. The downside is that our changes
|
||||
# aren't immediately visible to other MUAs.
|
||||
#mbox_lazy_writes = yes
|
||||
|
||||
# If mbox size is smaller than this (e.g. 100k), don't write index files.
|
||||
# If an index file already exists it's still read, just not updated.
|
||||
#mbox_min_index_size = 0
|
||||
|
||||
# Mail header selection algorithm to use for MD5 POP3 UIDLs when
|
||||
# pop3_uidl_format=%m. For backwards compatibility we use apop3d inspired
|
||||
# algorithm, but it fails if the first Received: header isn't unique in all
|
||||
# mails. An alternative algorithm is "all" that selects all headers.
|
||||
#mbox_md5 = apop3d
|
||||
|
||||
##
|
||||
## mdbox-specific settings
|
||||
##
|
||||
|
||||
# Maximum dbox file size until it's rotated.
|
||||
#mdbox_rotate_size = 2M
|
||||
|
||||
# Maximum dbox file age until it's rotated. Typically in days. Day begins
|
||||
# from midnight, so 1d = today, 2d = yesterday, etc. 0 = check disabled.
|
||||
#mdbox_rotate_interval = 0
|
||||
|
||||
# When creating new mdbox files, immediately preallocate their size to
|
||||
# mdbox_rotate_size. This setting currently works only in Linux with some
|
||||
# filesystems (ext4, xfs).
|
||||
#mdbox_preallocate_space = no
|
||||
|
||||
##
|
||||
## Mail attachments
|
||||
##
|
||||
|
||||
# sdbox and mdbox support saving mail attachments to external files, which
|
||||
# also allows single instance storage for them. Other backends don't support
|
||||
# this for now.
|
||||
|
||||
# Directory root where to store mail attachments. Disabled, if empty.
|
||||
#mail_attachment_dir =
|
||||
|
||||
# Attachments smaller than this aren't saved externally. It's also possible to
|
||||
# write a plugin to disable saving specific attachments externally.
|
||||
#mail_attachment_min_size = 128k
|
||||
|
||||
# Filesystem backend to use for saving attachments:
|
||||
# posix : No SiS done by Dovecot (but this might help FS's own deduplication)
|
||||
# sis posix : SiS with immediate byte-by-byte comparison during saving
|
||||
# sis-queue posix : SiS with delayed comparison and deduplication
|
||||
#mail_attachment_fs = sis posix
|
||||
|
||||
# Hash format to use in attachment filenames. You can add any text and
|
||||
# variables: %{md4}, %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}.
|
||||
# Variables can be truncated, e.g. %{sha256:80} returns only first 80 bits
|
||||
#mail_attachment_hash = %{sha1}
|
||||
121
dovecot/conf.d/10-master.conf
Normal file
121
dovecot/conf.d/10-master.conf
Normal file
@@ -0,0 +1,121 @@
|
||||
#default_process_limit = 100
|
||||
#default_client_limit = 1000
|
||||
|
||||
# Default VSZ (virtual memory size) limit for service processes. This is mainly
|
||||
# intended to catch and kill processes that leak memory before they eat up
|
||||
# everything.
|
||||
#default_vsz_limit = 256M
|
||||
|
||||
# Login user is internally used by login processes. This is the most untrusted
|
||||
# user in Dovecot system. It shouldn't have access to anything at all.
|
||||
#default_login_user = dovenull
|
||||
|
||||
# Internal user is used by unprivileged processes. It should be separate from
|
||||
# login user, so that login processes can't disturb other processes.
|
||||
#default_internal_user = dovecot
|
||||
|
||||
service imap-login {
|
||||
inet_listener imap {
|
||||
#port = 143
|
||||
}
|
||||
inet_listener imaps {
|
||||
#port = 993
|
||||
#ssl = yes
|
||||
}
|
||||
|
||||
# Number of connections to handle before starting a new process. Typically
|
||||
# the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0
|
||||
# is faster. <doc/wiki/LoginProcess.txt>
|
||||
#service_count = 1
|
||||
|
||||
# Number of processes to always keep waiting for more connections.
|
||||
#process_min_avail = 0
|
||||
|
||||
# If you set service_count=0, you probably need to grow this.
|
||||
#vsz_limit = $default_vsz_limit
|
||||
}
|
||||
|
||||
service pop3-login {
|
||||
inet_listener pop3 {
|
||||
#port = 110
|
||||
}
|
||||
inet_listener pop3s {
|
||||
#port = 995
|
||||
#ssl = yes
|
||||
}
|
||||
}
|
||||
|
||||
service lmtp {
|
||||
unix_listener lmtp {
|
||||
#mode = 0666
|
||||
}
|
||||
|
||||
# Create inet listener only if you can't use the above UNIX socket
|
||||
#inet_listener lmtp {
|
||||
# Avoid making LMTP visible for the entire internet
|
||||
#address =
|
||||
#port =
|
||||
#}
|
||||
}
|
||||
|
||||
service imap {
|
||||
# Most of the memory goes to mmap()ing files. You may need to increase this
|
||||
# limit if you have huge mailboxes.
|
||||
#vsz_limit = $default_vsz_limit
|
||||
|
||||
# Max. number of IMAP processes (connections)
|
||||
#process_limit = 1024
|
||||
}
|
||||
|
||||
service pop3 {
|
||||
# Max. number of POP3 processes (connections)
|
||||
#process_limit = 1024
|
||||
}
|
||||
|
||||
service auth {
|
||||
# auth_socket_path points to this userdb socket by default. It's typically
|
||||
# used by dovecot-lda, doveadm, possibly imap process, etc. Users that have
|
||||
# full permissions to this socket are able to get a list of all usernames and
|
||||
# get the results of everyone's userdb lookups.
|
||||
#
|
||||
# The default 0666 mode allows anyone to connect to the socket, but the
|
||||
# userdb lookups will succeed only if the userdb returns an "uid" field that
|
||||
# matches the caller process's UID. Also if caller's uid or gid matches the
|
||||
# socket's uid or gid the lookup succeeds. Anything else causes a failure.
|
||||
#
|
||||
# To give the caller full permissions to lookup all users, set the mode to
|
||||
# something else than 0666 and Dovecot lets the kernel enforce the
|
||||
# permissions (e.g. 0777 allows everyone full permissions).
|
||||
unix_listener auth-userdb {
|
||||
#mode = 0666
|
||||
#user =
|
||||
#group =
|
||||
}
|
||||
|
||||
# Postfix smtp-auth
|
||||
#unix_listener /var/spool/postfix/private/auth {
|
||||
# mode = 0666
|
||||
#}
|
||||
|
||||
unix_listener auth-client {
|
||||
mode = 0660
|
||||
user = Debian-exim
|
||||
}
|
||||
}
|
||||
|
||||
service auth-worker {
|
||||
# Auth worker process is run as root by default, so that it can access
|
||||
# /etc/shadow. If this isn't necessary, the user should be changed to
|
||||
# $default_internal_user.
|
||||
#user = root
|
||||
}
|
||||
|
||||
service dict {
|
||||
# If dict proxy is used, mail processes should have access to its socket.
|
||||
# For example: mode=0660, group=vmail and global mail_access_groups=vmail
|
||||
unix_listener dict {
|
||||
#mode = 0600
|
||||
#user =
|
||||
#group =
|
||||
}
|
||||
}
|
||||
51
dovecot/conf.d/10-ssl.conf
Normal file
51
dovecot/conf.d/10-ssl.conf
Normal file
@@ -0,0 +1,51 @@
|
||||
##
|
||||
## SSL settings
|
||||
##
|
||||
|
||||
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
|
||||
ssl = yes
|
||||
|
||||
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
|
||||
# dropping root privileges, so keep the key file unreadable by anyone but
|
||||
# root. Included doc/mkcert.sh can be used to easily generate self-signed
|
||||
# certificate, just make sure to update the domains in dovecot-openssl.cnf
|
||||
ssl_cert = </etc/dovecot/private/dovecot.pem
|
||||
ssl_key = </etc/dovecot/private/dovecot.key
|
||||
|
||||
# If key file is password protected, give the password here. Alternatively
|
||||
# give it when starting dovecot with -p parameter. Since this file is often
|
||||
# world-readable, you may want to place this setting instead to a different
|
||||
# root owned 0600 file by using ssl_key_password = <path.
|
||||
#ssl_key_password =
|
||||
|
||||
# PEM encoded trusted certificate authority. Set this only if you intend to use
|
||||
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
|
||||
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
|
||||
#ssl_ca =
|
||||
|
||||
# Require that CRL check succeeds for client certificates.
|
||||
#ssl_require_crl = yes
|
||||
|
||||
# Request client to send a certificate. If you also want to require it, set
|
||||
# auth_ssl_require_client_cert=yes in auth section.
|
||||
#ssl_verify_client_cert = no
|
||||
|
||||
# Which field from certificate to use for username. commonName and
|
||||
# x500UniqueIdentifier are the usual choices. You'll also need to set
|
||||
# auth_ssl_username_from_cert=yes.
|
||||
#ssl_cert_username_field = commonName
|
||||
|
||||
# How often to regenerate the SSL parameters file. Generation is quite CPU
|
||||
# intensive operation. The value is in hours, 0 disables regeneration
|
||||
# entirely.
|
||||
#ssl_parameters_regenerate = 168
|
||||
|
||||
# SSL protocols to use
|
||||
#ssl_protocols = !SSLv2
|
||||
|
||||
# SSL ciphers to use
|
||||
#ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL
|
||||
|
||||
# SSL crypto device to use, for valid values run "openssl engine"
|
||||
#ssl_crypto_device =
|
||||
|
||||
14
dovecot/conf.d/10-tcpwrapper.conf
Normal file
14
dovecot/conf.d/10-tcpwrapper.conf
Normal file
@@ -0,0 +1,14 @@
|
||||
# 10-tcpwrapper.conf
|
||||
#
|
||||
# service name for hosts.{allow|deny} are those defined as
|
||||
# inet_listener in master.conf
|
||||
#
|
||||
#login_access_sockets = tcpwrap
|
||||
#
|
||||
#service tcpwrap {
|
||||
# unix_listener login/tcpwrap {
|
||||
# group = $default_login_user
|
||||
# mode = 0600
|
||||
# user = $default_login_user
|
||||
# }
|
||||
#}
|
||||
48
dovecot/conf.d/15-lda.conf
Normal file
48
dovecot/conf.d/15-lda.conf
Normal file
@@ -0,0 +1,48 @@
|
||||
##
|
||||
## LDA specific settings (also used by LMTP)
|
||||
##
|
||||
|
||||
# Address to use when sending rejection mails.
|
||||
# Default is postmaster@<your domain>.
|
||||
postmaster_address = postmaster@%{if;%d;ne;;%d;%{hostname}}
|
||||
|
||||
# Hostname to use in various parts of sent mails, eg. in Message-Id.
|
||||
# Default is the system's real hostname.
|
||||
#hostname =
|
||||
|
||||
# If user is over quota, return with temporary failure instead of
|
||||
# bouncing the mail.
|
||||
#quota_full_tempfail = no
|
||||
|
||||
# Binary to use for sending mails.
|
||||
#sendmail_path = /usr/sbin/sendmail
|
||||
|
||||
# If non-empty, send mails via this SMTP host[:port] instead of sendmail.
|
||||
#submission_host =
|
||||
|
||||
# Subject: header to use for rejection mails. You can use the same variables
|
||||
# as for rejection_reason below.
|
||||
#rejection_subject = Rejected: %s
|
||||
|
||||
# Human readable error message for rejection mails. You can use variables:
|
||||
# %n = CRLF, %r = reason, %s = original subject, %t = recipient
|
||||
#rejection_reason = Your message to <%t> was automatically rejected:%n%r
|
||||
|
||||
# Delimiter character between local-part and detail in email address.
|
||||
#recipient_delimiter = +
|
||||
|
||||
# Header where the original recipient address (SMTP's RCPT TO: address) is taken
|
||||
# from if not available elsewhere. With dovecot-lda -a parameter overrides this.
|
||||
# A commonly used header for this is X-Original-To.
|
||||
#lda_original_recipient_header =
|
||||
|
||||
# Should saving a mail to a nonexistent mailbox automatically create it?
|
||||
#lda_mailbox_autocreate = no
|
||||
|
||||
# Should automatically created mailboxes be also automatically subscribed?
|
||||
#lda_mailbox_autosubscribe = no
|
||||
|
||||
protocol lda {
|
||||
# Space separated list of plugins to load (default is global mail_plugins).
|
||||
mail_plugins = $mail_plugins sieve
|
||||
}
|
||||
86
dovecot/conf.d/15-mailboxes.conf
Normal file
86
dovecot/conf.d/15-mailboxes.conf
Normal file
@@ -0,0 +1,86 @@
|
||||
##
|
||||
## Mailbox definitions
|
||||
##
|
||||
|
||||
# Each mailbox is specified in a separate mailbox section. The section name
|
||||
# specifies the mailbox name. If it has spaces, you can put the name
|
||||
# "in quotes". These sections can contain the following mailbox settings:
|
||||
#
|
||||
# auto:
|
||||
# Indicates whether the mailbox with this name is automatically created
|
||||
# implicitly when it is first accessed. The user can also be automatically
|
||||
# subscribed to the mailbox after creation. The following values are
|
||||
# defined for this setting:
|
||||
#
|
||||
# no - Never created automatically.
|
||||
# create - Automatically created, but no automatic subscription.
|
||||
# subscribe - Automatically created and subscribed.
|
||||
#
|
||||
# special_use:
|
||||
# A space-separated list of SPECIAL-USE flags (RFC 6154) to use for the
|
||||
# mailbox. There are no validity checks, so you could specify anything
|
||||
# you want in here, but it's not a good idea to use flags other than the
|
||||
# standard ones specified in the RFC:
|
||||
#
|
||||
# \All - This (virtual) mailbox presents all messages in the
|
||||
# user's message store.
|
||||
# \Archive - This mailbox is used to archive messages.
|
||||
# \Drafts - This mailbox is used to hold draft messages.
|
||||
# \Flagged - This (virtual) mailbox presents all messages in the
|
||||
# user's message store marked with the IMAP \Flagged flag.
|
||||
# \Important - This (virtual) mailbox presents all messages in the
|
||||
# user's message store deemed important to user.
|
||||
# \Junk - This mailbox is where messages deemed to be junk mail
|
||||
# are held.
|
||||
# \Sent - This mailbox is used to hold copies of messages that
|
||||
# have been sent.
|
||||
# \Trash - This mailbox is used to hold messages that have been
|
||||
# deleted.
|
||||
#
|
||||
# comment:
|
||||
# Defines a default comment or note associated with the mailbox. This
|
||||
# value is accessible through the IMAP METADATA mailbox entries
|
||||
# "/shared/comment" and "/private/comment". Users with sufficient
|
||||
# privileges can override the default value for entries with a custom
|
||||
# value.
|
||||
|
||||
# NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.
|
||||
namespace inbox {
|
||||
# These mailboxes are widely used and could perhaps be created automatically:
|
||||
mailbox Drafts {
|
||||
special_use = \Drafts
|
||||
}
|
||||
mailbox Junk {
|
||||
special_use = \Junk
|
||||
}
|
||||
mailbox Trash {
|
||||
special_use = \Trash
|
||||
}
|
||||
|
||||
# For \Sent mailboxes there are two widely used names. We'll mark both of
|
||||
# them as \Sent. User typically deletes one of them if duplicates are created.
|
||||
mailbox Sent {
|
||||
special_use = \Sent
|
||||
}
|
||||
mailbox "Sent Messages" {
|
||||
special_use = \Sent
|
||||
}
|
||||
|
||||
# If you have a virtual "All messages" mailbox:
|
||||
#mailbox virtual/All {
|
||||
# special_use = \All
|
||||
# comment = All my messages
|
||||
#}
|
||||
|
||||
# If you have a virtual "Flagged" mailbox:
|
||||
#mailbox virtual/Flagged {
|
||||
# special_use = \Flagged
|
||||
# comment = All my flagged messages
|
||||
#}
|
||||
|
||||
# If you have a virtual "Important" mailbox:
|
||||
#mailbox virtual/Important {
|
||||
# special_use = \Important
|
||||
# comment = All my important messages
|
||||
#}
|
||||
}
|
||||
99
dovecot/conf.d/20-imap.conf
Normal file
99
dovecot/conf.d/20-imap.conf
Normal file
@@ -0,0 +1,99 @@
|
||||
##
|
||||
## IMAP specific settings
|
||||
##
|
||||
|
||||
# If nothing happens for this long while client is IDLEing, move the connection
|
||||
# to imap-hibernate process and close the old imap process. This saves memory,
|
||||
# because connections use very little memory in imap-hibernate process. The
|
||||
# downside is that recreating the imap process back uses some resources.
|
||||
#imap_hibernate_timeout = 0
|
||||
|
||||
# Maximum IMAP command line length. Some clients generate very long command
|
||||
# lines with huge mailboxes, so you may need to raise this if you get
|
||||
# "Too long argument" or "IMAP command line too large" errors often.
|
||||
#imap_max_line_length = 64k
|
||||
|
||||
# IMAP logout format string:
|
||||
# %i - total number of bytes read from client
|
||||
# %o - total number of bytes sent to client
|
||||
# %{fetch_hdr_count} - Number of mails with mail header data sent to client
|
||||
# %{fetch_hdr_bytes} - Number of bytes with mail header data sent to client
|
||||
# %{fetch_body_count} - Number of mails with mail body data sent to client
|
||||
# %{fetch_body_bytes} - Number of bytes with mail body data sent to client
|
||||
# %{deleted} - Number of mails where client added \Deleted flag
|
||||
# %{expunged} - Number of mails that client expunged, which does not
|
||||
# include automatically expunged mails
|
||||
# %{autoexpunged} - Number of mails that were automatically expunged after
|
||||
# client disconnected
|
||||
# %{trashed} - Number of mails that client copied/moved to the
|
||||
# special_use=\Trash mailbox.
|
||||
# %{appended} - Number of mails saved during the session
|
||||
#imap_logout_format = in=%i out=%o deleted=%{deleted} expunged=%{expunged} \
|
||||
# trashed=%{trashed} hdr_count=%{fetch_hdr_count} \
|
||||
# hdr_bytes=%{fetch_hdr_bytes} body_count=%{fetch_body_count} \
|
||||
# body_bytes=%{fetch_body_bytes}
|
||||
|
||||
# Override the IMAP CAPABILITY response. If the value begins with '+',
|
||||
# add the given capabilities on top of the defaults (e.g. +XFOO XBAR).
|
||||
#imap_capability =
|
||||
|
||||
# How long to wait between "OK Still here" notifications when client is
|
||||
# IDLEing.
|
||||
#imap_idle_notify_interval = 2 mins
|
||||
|
||||
# ID field names and values to send to clients. Using * as the value makes
|
||||
# Dovecot use the default value. The following fields have default values
|
||||
# currently: name, version, os, os-version, support-url, support-email,
|
||||
# revision.
|
||||
#imap_id_send =
|
||||
|
||||
# ID fields sent by client to log. * means everything.
|
||||
#imap_id_log =
|
||||
|
||||
# Workarounds for various client bugs:
|
||||
# delay-newmail:
|
||||
# Send EXISTS/RECENT new mail notifications only when replying to NOOP
|
||||
# and CHECK commands. Some clients ignore them otherwise, for example OSX
|
||||
# Mail (<v2.1). Outlook Express breaks more badly though, without this it
|
||||
# may show user "Message no longer in server" errors. Note that OE6 still
|
||||
# breaks even with this workaround if synchronization is set to
|
||||
# "Headers Only".
|
||||
# tb-extra-mailbox-sep:
|
||||
# Thunderbird gets somehow confused with LAYOUT=fs (mbox and dbox) and
|
||||
# adds extra '/' suffixes to mailbox names. This option causes Dovecot to
|
||||
# ignore the extra '/' instead of treating it as invalid mailbox name.
|
||||
# tb-lsub-flags:
|
||||
# Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g. mbox).
|
||||
# This makes Thunderbird realize they aren't selectable and show them
|
||||
# greyed out, instead of only later giving "not selectable" popup error.
|
||||
#
|
||||
# The list is space-separated.
|
||||
#imap_client_workarounds =
|
||||
|
||||
# Host allowed in URLAUTH URLs sent by client. "*" allows all.
|
||||
#imap_urlauth_host =
|
||||
|
||||
# Enable IMAP LITERAL- extension (replaces LITERAL+)
|
||||
#imap_literal_minus = no
|
||||
|
||||
# What happens when FETCH fails due to some internal error:
|
||||
# disconnect-immediately:
|
||||
# The FETCH is aborted immediately and the IMAP client is disconnected.
|
||||
# disconnect-after:
|
||||
# The FETCH runs for all the requested mails returning as much data as
|
||||
# possible. The client is finally disconnected without a tagged reply.
|
||||
# no-after:
|
||||
# Same as disconnect-after, but tagged NO reply is sent instead of
|
||||
# disconnecting the client. If the client attempts to FETCH the same failed
|
||||
# mail more than once, the client is disconnected. This is to avoid clients
|
||||
# from going into infinite loops trying to FETCH a broken mail.
|
||||
#imap_fetch_failure = disconnect-immediately
|
||||
|
||||
protocol imap {
|
||||
# Space separated list of plugins to load (default is global mail_plugins).
|
||||
#mail_plugins = $mail_plugins
|
||||
|
||||
# Maximum number of IMAP connections allowed for a user from each IP address.
|
||||
# NOTE: The username is compared case-sensitively.
|
||||
#mail_max_userip_connections = 10
|
||||
}
|
||||
26
dovecot/conf.d/20-lmtp.conf
Normal file
26
dovecot/conf.d/20-lmtp.conf
Normal file
@@ -0,0 +1,26 @@
|
||||
##
|
||||
## LMTP specific settings
|
||||
##
|
||||
|
||||
# Support proxying to other LMTP/SMTP servers by performing passdb lookups.
|
||||
#lmtp_proxy = no
|
||||
|
||||
# When recipient address includes the detail (e.g. user+detail), try to save
|
||||
# the mail to the detail mailbox. See also recipient_delimiter and
|
||||
# lda_mailbox_autocreate settings.
|
||||
#lmtp_save_to_detail_mailbox = no
|
||||
|
||||
# Verify quota before replying to RCPT TO. This adds a small overhead.
|
||||
#lmtp_rcpt_check_quota = no
|
||||
|
||||
# Which recipient address to use for Delivered-To: header and Received:
|
||||
# header. The default is "final", which is the same as the one given to
|
||||
# RCPT TO command. "original" uses the address given in RCPT TO's ORCPT
|
||||
# parameter, "none" uses nothing. Note that "none" is currently always used
|
||||
# when a mail has multiple recipients.
|
||||
#lmtp_hdr_delivery_address = final
|
||||
|
||||
protocol lmtp {
|
||||
# Space separated list of plugins to load (default is global mail_plugins).
|
||||
mail_plugins = $mail_plugins sieve
|
||||
}
|
||||
99
dovecot/conf.d/20-pop3.conf
Normal file
99
dovecot/conf.d/20-pop3.conf
Normal file
@@ -0,0 +1,99 @@
|
||||
##
|
||||
## POP3 specific settings
|
||||
##
|
||||
|
||||
# Don't try to set mails non-recent or seen with POP3 sessions. This is
|
||||
# mostly intended to reduce disk I/O. With maildir it doesn't move files
|
||||
# from new/ to cur/, with mbox it doesn't write Status-header.
|
||||
#pop3_no_flag_updates = no
|
||||
|
||||
# Support LAST command which exists in old POP3 specs, but has been removed
|
||||
# from new ones. Some clients still wish to use this though. Enabling this
|
||||
# makes RSET command clear all \Seen flags from messages.
|
||||
#pop3_enable_last = no
|
||||
|
||||
# If mail has X-UIDL header, use it as the mail's UIDL.
|
||||
#pop3_reuse_xuidl = no
|
||||
|
||||
# Allow only one POP3 session to run simultaneously for the same user.
|
||||
#pop3_lock_session = no
|
||||
|
||||
# POP3 requires message sizes to be listed as if they had CR+LF linefeeds.
|
||||
# Many POP3 servers violate this by returning the sizes with LF linefeeds,
|
||||
# because it's faster to get. When this setting is enabled, Dovecot still
|
||||
# tries to do the right thing first, but if that requires opening the
|
||||
# message, it fallbacks to the easier (but incorrect) size.
|
||||
#pop3_fast_size_lookups = no
|
||||
|
||||
# POP3 UIDL (unique mail identifier) format to use. You can use following
|
||||
# variables, along with the variable modifiers described in
|
||||
# doc/wiki/Variables.txt (e.g. %Uf for the filename in uppercase)
|
||||
#
|
||||
# %v - Mailbox's IMAP UIDVALIDITY
|
||||
# %u - Mail's IMAP UID
|
||||
# %m - MD5 sum of the mailbox headers in hex (mbox only)
|
||||
# %f - filename (maildir only)
|
||||
# %g - Mail's GUID
|
||||
#
|
||||
# If you want UIDL compatibility with other POP3 servers, use:
|
||||
# UW's ipop3d : %08Xv%08Xu
|
||||
# Courier : %f or %v-%u (both might be used simultaneously)
|
||||
# Cyrus (<= 2.1.3) : %u
|
||||
# Cyrus (>= 2.1.4) : %v.%u
|
||||
# Dovecot v0.99.x : %v.%u
|
||||
# tpop3d : %Mf
|
||||
#
|
||||
# Note that Outlook 2003 seems to have problems with %v.%u format which was
|
||||
# Dovecot's default, so if you're building a new server it would be a good
|
||||
# idea to change this. %08Xu%08Xv should be pretty fail-safe.
|
||||
#
|
||||
#pop3_uidl_format = %08Xu%08Xv
|
||||
|
||||
# Permanently save UIDLs sent to POP3 clients, so pop3_uidl_format changes
|
||||
# won't change those UIDLs. Currently this works only with Maildir.
|
||||
#pop3_save_uidl = no
|
||||
|
||||
# What to do about duplicate UIDLs if they exist?
|
||||
# allow: Show duplicates to clients.
|
||||
# rename: Append a temporary -2, -3, etc. counter after the UIDL.
|
||||
#pop3_uidl_duplicates = allow
|
||||
|
||||
# This option changes POP3 behavior so that it's not possible to actually
|
||||
# delete mails via POP3, only hide them from future POP3 sessions. The mails
|
||||
# will still be counted towards user's quota until actually deleted via IMAP.
|
||||
# Use e.g. "$POP3Deleted" as the value (it will be visible as IMAP keyword).
|
||||
# Make sure you can legally archive mails before enabling this setting.
|
||||
#pop3_deleted_flag =
|
||||
|
||||
# POP3 logout format string:
|
||||
# %i - total number of bytes read from client
|
||||
# %o - total number of bytes sent to client
|
||||
# %t - number of TOP commands
|
||||
# %p - number of bytes sent to client as a result of TOP command
|
||||
# %r - number of RETR commands
|
||||
# %b - number of bytes sent to client as a result of RETR command
|
||||
# %d - number of deleted messages
|
||||
# %{deleted_bytes} - number of bytes in deleted messages
|
||||
# %m - number of messages (before deletion)
|
||||
# %s - mailbox size in bytes (before deletion)
|
||||
# %u - old/new UIDL hash. may help finding out if UIDLs changed unexpectedly
|
||||
#pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
|
||||
|
||||
# Workarounds for various client bugs:
|
||||
# outlook-no-nuls:
|
||||
# Outlook and Outlook Express hang if mails contain NUL characters.
|
||||
# This setting replaces them with 0x80 character.
|
||||
# oe-ns-eoh:
|
||||
# Outlook Express and Netscape Mail breaks if end of headers-line is
|
||||
# missing. This option simply sends it if it's missing.
|
||||
# The list is space-separated.
|
||||
#pop3_client_workarounds =
|
||||
|
||||
protocol pop3 {
|
||||
# Space separated list of plugins to load (default is global mail_plugins).
|
||||
#mail_plugins = $mail_plugins
|
||||
|
||||
# Maximum number of POP3 connections allowed for a user from each IP address.
|
||||
# NOTE: The username is compared case-sensitively.
|
||||
#mail_max_userip_connections = 10
|
||||
}
|
||||
19
dovecot/conf.d/90-acl.conf
Normal file
19
dovecot/conf.d/90-acl.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
##
|
||||
## Mailbox access control lists.
|
||||
##
|
||||
|
||||
# vfile backend reads ACLs from "dovecot-acl" file from mail directory.
|
||||
# You can also optionally give a global ACL directory path where ACLs are
|
||||
# applied to all users' mailboxes. The global ACL directory contains
|
||||
# one file for each mailbox, eg. INBOX or sub.mailbox. cache_secs parameter
|
||||
# specifies how many seconds to wait between stat()ing dovecot-acl file
|
||||
# to see if it changed.
|
||||
plugin {
|
||||
#acl = vfile:/etc/dovecot/global-acls:cache_secs=300
|
||||
}
|
||||
|
||||
# To let users LIST mailboxes shared by other users, Dovecot needs a
|
||||
# shared mailbox dictionary. For example:
|
||||
plugin {
|
||||
#acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes
|
||||
}
|
||||
11
dovecot/conf.d/90-plugin.conf
Normal file
11
dovecot/conf.d/90-plugin.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
##
|
||||
## Plugin settings
|
||||
##
|
||||
|
||||
# All wanted plugins must be listed in mail_plugins setting before any of the
|
||||
# settings take effect. See <doc/wiki/Plugins.txt> for list of plugins and
|
||||
# their configuration. Note that %variable expansion is done for all values.
|
||||
|
||||
plugin {
|
||||
#setting_name = value
|
||||
}
|
||||
80
dovecot/conf.d/90-quota.conf
Normal file
80
dovecot/conf.d/90-quota.conf
Normal file
@@ -0,0 +1,80 @@
|
||||
##
|
||||
## Quota configuration.
|
||||
##
|
||||
|
||||
# Note that you also have to enable quota plugin in mail_plugins setting.
|
||||
# <doc/wiki/Quota.txt>
|
||||
|
||||
##
|
||||
## Quota limits
|
||||
##
|
||||
|
||||
# Quota limits are set using "quota_rule" parameters. To get per-user quota
|
||||
# limits, you can set/override them by returning "quota_rule" extra field
|
||||
# from userdb. It's also possible to give mailbox-specific limits, for example
|
||||
# to give additional 100 MB when saving to Trash:
|
||||
|
||||
plugin {
|
||||
#quota_rule = *:storage=1G
|
||||
#quota_rule2 = Trash:storage=+100M
|
||||
|
||||
# LDA/LMTP allows saving the last mail to bring user from under quota to
|
||||
# over quota, if the quota doesn't grow too high. Default is to allow as
|
||||
# long as quota will stay under 10% above the limit. Also allowed e.g. 10M.
|
||||
#quota_grace = 10%%
|
||||
}
|
||||
|
||||
##
|
||||
## Quota warnings
|
||||
##
|
||||
|
||||
# You can execute a given command when user exceeds a specified quota limit.
|
||||
# Each quota root has separate limits. Only the command for the first
|
||||
# exceeded limit is excecuted, so put the highest limit first.
|
||||
# The commands are executed via script service by connecting to the named
|
||||
# UNIX socket (quota-warning below).
|
||||
# Note that % needs to be escaped as %%, otherwise "% " expands to empty.
|
||||
|
||||
plugin {
|
||||
#quota_warning = storage=95%% quota-warning 95 %u
|
||||
#quota_warning2 = storage=80%% quota-warning 80 %u
|
||||
}
|
||||
|
||||
# Example quota-warning service. The unix listener's permissions should be
|
||||
# set in a way that mail processes can connect to it. Below example assumes
|
||||
# that mail processes run as vmail user. If you use mode=0666, all system users
|
||||
# can generate quota warnings to anyone.
|
||||
#service quota-warning {
|
||||
# executable = script /usr/local/bin/quota-warning.sh
|
||||
# user = dovecot
|
||||
# unix_listener quota-warning {
|
||||
# user = vmail
|
||||
# }
|
||||
#}
|
||||
|
||||
##
|
||||
## Quota backends
|
||||
##
|
||||
|
||||
# Multiple backends are supported:
|
||||
# dirsize: Find and sum all the files found from mail directory.
|
||||
# Extremely SLOW with Maildir. It'll eat your CPU and disk I/O.
|
||||
# dict: Keep quota stored in dictionary (eg. SQL)
|
||||
# maildir: Maildir++ quota
|
||||
# fs: Read-only support for filesystem quota
|
||||
|
||||
plugin {
|
||||
#quota = dirsize:User quota
|
||||
quota = maildir:User quota
|
||||
#quota = dict:User quota::proxy::quota
|
||||
#quota = fs:User quota
|
||||
}
|
||||
|
||||
# Multiple quota roots are also possible, for example this gives each user
|
||||
# their own 100MB quota and one shared 1GB quota within the domain:
|
||||
plugin {
|
||||
#quota = dict:user::proxy::quota
|
||||
#quota2 = dict:domain:%d:proxy::quota_domain
|
||||
#quota_rule = *:storage=102400
|
||||
#quota2_rule = *:storage=1048576
|
||||
}
|
||||
44
dovecot/conf.d/90-sieve-extprograms.conf
Normal file
44
dovecot/conf.d/90-sieve-extprograms.conf
Normal file
@@ -0,0 +1,44 @@
|
||||
# Sieve Extprograms plugin configuration
|
||||
|
||||
# Don't forget to add the sieve_extprograms plugin to the sieve_plugins setting.
|
||||
# Also enable the extensions you need (one or more of vnd.dovecot.pipe,
|
||||
# vnd.dovecot.filter and vnd.dovecot.execute) by adding these to the
|
||||
# sieve_extensions or sieve_global_extensions settings. Restricting these
|
||||
# extensions to a global context using sieve_global_extensions is recommended.
|
||||
|
||||
plugin {
|
||||
|
||||
# The directory where the program sockets are located for the
|
||||
# vnd.dovecot.pipe, vnd.dovecot.filter and vnd.dovecot.execute extension
|
||||
# respectively. The name of each unix socket contained in that directory
|
||||
# directly maps to a program-name referenced from the Sieve script.
|
||||
#sieve_pipe_socket_dir = sieve-pipe
|
||||
#sieve_filter_socket_dir = sieve-filter
|
||||
#sieve_execute_socket_dir = sieve-execute
|
||||
|
||||
# The directory where the scripts are located for direct execution by the
|
||||
# vnd.dovecot.pipe, vnd.dovecot.filter and vnd.dovecot.execute extension
|
||||
# respectively. The name of each script contained in that directory
|
||||
# directly maps to a program-name referenced from the Sieve script.
|
||||
#sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
|
||||
#sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter
|
||||
#sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
|
||||
}
|
||||
|
||||
# An example program service called 'do-something' to pipe messages to
|
||||
#service do-something {
|
||||
# Define the executed script as parameter to the sieve service
|
||||
#executable = script /usr/lib/dovecot/sieve-pipe/do-something.sh
|
||||
|
||||
# Use some unprivileged user for executing the program
|
||||
#user = dovenull
|
||||
|
||||
# The unix socket located in the sieve_pipe_socket_dir (as defined in the
|
||||
# plugin {} section above)
|
||||
#unix_listener sieve-pipe/do-something {
|
||||
# LDA/LMTP must have access
|
||||
# user = vmail
|
||||
# mode = 0600
|
||||
#}
|
||||
#}
|
||||
|
||||
205
dovecot/conf.d/90-sieve.conf
Normal file
205
dovecot/conf.d/90-sieve.conf
Normal file
@@ -0,0 +1,205 @@
|
||||
##
|
||||
## Settings for the Sieve interpreter
|
||||
##
|
||||
|
||||
# Do not forget to enable the Sieve plugin in 15-lda.conf and 20-lmtp.conf
|
||||
# by adding it to the respective mail_plugins= settings.
|
||||
|
||||
# The Sieve interpreter can retrieve Sieve scripts from several types of
|
||||
# locations. The default `file' location type is a local filesystem path
|
||||
# pointing to a Sieve script file or a directory containing multiple Sieve
|
||||
# script files. More complex setups can use other location types such as
|
||||
# `ldap' or `dict' to fetch Sieve scripts from remote databases.
|
||||
#
|
||||
# All settings that specify the location of one ore more Sieve scripts accept
|
||||
# the following syntax:
|
||||
#
|
||||
# location = [<type>:]path[;<option>[=<value>][;...]]
|
||||
#
|
||||
# If the type prefix is omitted, the script location type is 'file' and the
|
||||
# location is interpreted as a local filesystem path pointing to a Sieve script
|
||||
# file or directory. Refer to Pigeonhole wiki or INSTALL file for more
|
||||
# information.
|
||||
|
||||
plugin {
|
||||
# The location of the user's main Sieve script or script storage. The LDA
|
||||
# Sieve plugin uses this to find the active script for Sieve filtering at
|
||||
# delivery. The "include" extension uses this location for retrieving
|
||||
# :personal" scripts. This is also where the ManageSieve service will store
|
||||
# the user's scripts, if supported.
|
||||
#
|
||||
# Currently only the 'file:' location type supports ManageSieve operation.
|
||||
# Other location types like 'dict:' and 'ldap:' can currently only
|
||||
# be used as a read-only script source ().
|
||||
#
|
||||
# For the 'file:' type: use the ';active=' parameter to specify where the
|
||||
# active script symlink is located.
|
||||
# For other types: use the ';name=' parameter to specify the name of the
|
||||
# default/active script.
|
||||
sieve = file:~/sieve;active=~/.dovecot.sieve
|
||||
|
||||
# The default Sieve script when the user has none. This is the location of a
|
||||
# global sieve script file, which gets executed ONLY if user's personal Sieve
|
||||
# script doesn't exist. Be sure to pre-compile this script manually using the
|
||||
# sievec command line tool if the binary is not stored in a global location.
|
||||
# --> See sieve_before for executing scripts before the user's personal
|
||||
# script.
|
||||
#sieve_default = /var/lib/dovecot/sieve/default.sieve
|
||||
|
||||
# The name by which the default Sieve script (as configured by the
|
||||
# sieve_default setting) is visible to the user through ManageSieve.
|
||||
#sieve_default_name =
|
||||
|
||||
# Location for ":global" include scripts as used by the "include" extension.
|
||||
#sieve_global =
|
||||
|
||||
# The location of a Sieve script that is run for any message that is about to
|
||||
# be discarded; i.e., it is not delivered anywhere by the normal Sieve
|
||||
# execution. This only happens when the "implicit keep" is canceled, by e.g.
|
||||
# the "discard" action, and no actions that deliver the message are executed.
|
||||
# This "discard script" can prevent discarding the message, by executing
|
||||
# alternative actions. If the discard script does nothing, the message is
|
||||
# still discarded as it would be when no discard script is configured.
|
||||
#sieve_discard =
|
||||
|
||||
# Location Sieve of scripts that need to be executed before the user's
|
||||
# personal script. If a 'file' location path points to a directory, all the
|
||||
# Sieve scripts contained therein (with the proper `.sieve' extension) are
|
||||
# executed. The order of execution within that directory is determined by the
|
||||
# file names, using a normal 8bit per-character comparison.
|
||||
#
|
||||
# Multiple script locations can be specified by appending an increasing number
|
||||
# to the setting name. The Sieve scripts found from these locations are added
|
||||
# to the script execution sequence in the specified order. Reading the
|
||||
# numbered sieve_before settings stops at the first missing setting, so no
|
||||
# numbers may be skipped.
|
||||
#sieve_before = /var/lib/dovecot/sieve.d/
|
||||
#sieve_before2 = ldap:/etc/sieve-ldap.conf;name=ldap-domain
|
||||
#sieve_before3 = (etc...)
|
||||
|
||||
# Identical to sieve_before, only the specified scripts are executed after the
|
||||
# user's script (only when keep is still in effect!). Multiple script
|
||||
# locations can be specified by appending an increasing number.
|
||||
#sieve_after =
|
||||
#sieve_after2 =
|
||||
#sieve_after2 = (etc...)
|
||||
|
||||
# Which Sieve language extensions are available to users. By default, all
|
||||
# supported extensions are available, except for deprecated extensions or
|
||||
# those that are still under development. Some system administrators may want
|
||||
# to disable certain Sieve extensions or enable those that are not available
|
||||
# by default. This setting can use '+' and '-' to specify differences relative
|
||||
# to the default. For example `sieve_extensions = +imapflags' will enable the
|
||||
# deprecated imapflags extension in addition to all extensions were already
|
||||
# enabled by default.
|
||||
#sieve_extensions = +notify +imapflags
|
||||
|
||||
# Which Sieve language extensions are ONLY available in global scripts. This
|
||||
# can be used to restrict the use of certain Sieve extensions to administrator
|
||||
# control, for instance when these extensions can cause security concerns.
|
||||
# This setting has higher precedence than the `sieve_extensions' setting
|
||||
# (above), meaning that the extensions enabled with this setting are never
|
||||
# available to the user's personal script no matter what is specified for the
|
||||
# `sieve_extensions' setting. The syntax of this setting is similar to the
|
||||
# `sieve_extensions' setting, with the difference that extensions are
|
||||
# enabled or disabled for exclusive use in global scripts. Currently, no
|
||||
# extensions are marked as such by default.
|
||||
#sieve_global_extensions =
|
||||
|
||||
# The Pigeonhole Sieve interpreter can have plugins of its own. Using this
|
||||
# setting, the used plugins can be specified. Check the Dovecot wiki
|
||||
# (wiki2.dovecot.org) or the pigeonhole website
|
||||
# (http://pigeonhole.dovecot.org) for available plugins.
|
||||
# The sieve_extprograms plugin is included in this release.
|
||||
#sieve_plugins =
|
||||
|
||||
# The maximum size of a Sieve script. The compiler will refuse to compile any
|
||||
# script larger than this limit. If set to 0, no limit on the script size is
|
||||
# enforced.
|
||||
#sieve_max_script_size = 1M
|
||||
|
||||
# The maximum number of actions that can be performed during a single script
|
||||
# execution. If set to 0, no limit on the total number of actions is enforced.
|
||||
#sieve_max_actions = 32
|
||||
|
||||
# The maximum number of redirect actions that can be performed during a single
|
||||
# script execution. If set to 0, no redirect actions are allowed.
|
||||
#sieve_max_redirects = 4
|
||||
|
||||
# The maximum number of personal Sieve scripts a single user can have. If set
|
||||
# to 0, no limit on the number of scripts is enforced.
|
||||
# (Currently only relevant for ManageSieve)
|
||||
#sieve_quota_max_scripts = 0
|
||||
|
||||
# The maximum amount of disk storage a single user's scripts may occupy. If
|
||||
# set to 0, no limit on the used amount of disk storage is enforced.
|
||||
# (Currently only relevant for ManageSieve)
|
||||
#sieve_quota_max_storage = 0
|
||||
|
||||
# The primary e-mail address for the user. This is used as a default when no
|
||||
# other appropriate address is available for sending messages. If this setting
|
||||
# is not configured, either the postmaster or null "<>" address is used as a
|
||||
# sender, depending on the action involved. This setting is important when
|
||||
# there is no message envelope to extract addresses from, such as when the
|
||||
# script is executed in IMAP.
|
||||
#sieve_user_email =
|
||||
|
||||
# The path to the file where the user log is written. If not configured, a
|
||||
# default location is used. If the main user's personal Sieve (as configured
|
||||
# with sieve=) is a file, the logfile is set to <filename>.log by default. If
|
||||
# it is not a file, the default user log file is ~/.dovecot.sieve.log.
|
||||
#sieve_user_log =
|
||||
|
||||
# Specifies what envelope sender address is used for redirected messages.
|
||||
# The following values are supported for this setting:
|
||||
#
|
||||
# "sender" - The sender address is used (default).
|
||||
# "recipient" - The final recipient address is used.
|
||||
# "orig_recipient" - The original recipient is used.
|
||||
# "user_email" - The user's primary address is used. This is
|
||||
# configured with the "sieve_user_email" setting. If
|
||||
# that setting is unconfigured, "user_mail" is equal to
|
||||
# "recipient".
|
||||
# "postmaster" - The postmaster_address configured for the LDA.
|
||||
# "<user@domain>" - Redirected messages are always sent from user@domain.
|
||||
# The angle brackets are mandatory. The null "<>" address
|
||||
# is also supported.
|
||||
#
|
||||
# This setting is ignored when the envelope sender is "<>". In that case the
|
||||
# sender of the redirected message is also always "<>".
|
||||
#sieve_redirect_envelope_from = sender
|
||||
|
||||
## TRACE DEBUGGING
|
||||
# Trace debugging provides detailed insight in the operations performed by
|
||||
# the Sieve script. These settings apply to both the LDA Sieve plugin and the
|
||||
# IMAPSIEVE plugin.
|
||||
#
|
||||
# WARNING: On a busy server, this functionality can quickly fill up the trace
|
||||
# directory with a lot of trace files. Enable this only temporarily and as
|
||||
# selective as possible.
|
||||
|
||||
# The directory where trace files are written. Trace debugging is disabled if
|
||||
# this setting is not configured or if the directory does not exist. If the
|
||||
# path is relative or it starts with "~/" it is interpreted relative to the
|
||||
# current user's home directory.
|
||||
#sieve_trace_dir =
|
||||
|
||||
# The verbosity level of the trace messages. Trace debugging is disabled if
|
||||
# this setting is not configured. Possible values are:
|
||||
#
|
||||
# "actions" - Only print executed action commands, like keep,
|
||||
# fileinto, reject and redirect.
|
||||
# "commands" - Print any executed command, excluding test commands.
|
||||
# "tests" - Print all executed commands and performed tests.
|
||||
# "matching" - Print all executed commands, performed tests and the
|
||||
# values matched in those tests.
|
||||
#sieve_trace_level =
|
||||
|
||||
# Enables highly verbose debugging messages that are usually only useful for
|
||||
# developers.
|
||||
#sieve_trace_debug = no
|
||||
|
||||
# Enables showing byte code addresses in the trace output, rather than only
|
||||
# the source line numbers.
|
||||
#sieve_trace_addresses = no
|
||||
}
|
||||
21
dovecot/conf.d/auth-checkpassword.conf.ext
Normal file
21
dovecot/conf.d/auth-checkpassword.conf.ext
Normal file
@@ -0,0 +1,21 @@
|
||||
# Authentication for checkpassword users. Included from 10-auth.conf.
|
||||
#
|
||||
# <doc/wiki/AuthDatabase.CheckPassword.txt>
|
||||
|
||||
passdb {
|
||||
driver = checkpassword
|
||||
args = /usr/bin/checkpassword
|
||||
}
|
||||
|
||||
# passdb lookup should return also userdb info
|
||||
userdb {
|
||||
driver = prefetch
|
||||
}
|
||||
|
||||
# Standard checkpassword doesn't support direct userdb lookups.
|
||||
# If you need checkpassword userdb, the checkpassword must support
|
||||
# Dovecot-specific extensions.
|
||||
#userdb {
|
||||
# driver = checkpassword
|
||||
# args = /usr/bin/checkpassword
|
||||
#}
|
||||
15
dovecot/conf.d/auth-deny.conf.ext
Normal file
15
dovecot/conf.d/auth-deny.conf.ext
Normal file
@@ -0,0 +1,15 @@
|
||||
# Deny access for users. Included from 10-auth.conf.
|
||||
|
||||
# Users can be (temporarily) disabled by adding a passdb with deny=yes.
|
||||
# If the user is found from that database, authentication will fail.
|
||||
# The deny passdb should always be specified before others, so it gets
|
||||
# checked first.
|
||||
|
||||
# Example deny passdb using passwd-file. You can use any passdb though.
|
||||
passdb {
|
||||
driver = passwd-file
|
||||
deny = yes
|
||||
|
||||
# File contains a list of usernames, one per line
|
||||
args = /etc/dovecot/deny-users
|
||||
}
|
||||
16
dovecot/conf.d/auth-dict.conf.ext
Normal file
16
dovecot/conf.d/auth-dict.conf.ext
Normal file
@@ -0,0 +1,16 @@
|
||||
# Authentication via dict backend. Included from 10-auth.conf.
|
||||
#
|
||||
# <doc/wiki/AuthDatabase.Dict.txt>
|
||||
|
||||
passdb {
|
||||
driver = dict
|
||||
|
||||
# Path for dict configuration file, see
|
||||
# example-config/dovecot-dict-auth.conf.ext
|
||||
args = /etc/dovecot/dovecot-dict-auth.conf.ext
|
||||
}
|
||||
|
||||
userdb {
|
||||
driver = dict
|
||||
args = /etc/dovecot/dovecot-dict-auth.conf.ext
|
||||
}
|
||||
16
dovecot/conf.d/auth-master.conf.ext
Normal file
16
dovecot/conf.d/auth-master.conf.ext
Normal file
@@ -0,0 +1,16 @@
|
||||
# Authentication for master users. Included from 10-auth.conf.
|
||||
|
||||
# By adding master=yes setting inside a passdb you make the passdb a list
|
||||
# of "master users", who can log in as anyone else.
|
||||
# <doc/wiki/Authentication.MasterUsers.txt>
|
||||
|
||||
# Example master user passdb using passwd-file. You can use any passdb though.
|
||||
passdb {
|
||||
driver = passwd-file
|
||||
master = yes
|
||||
args = /etc/dovecot/master-users
|
||||
|
||||
# Unless you're using PAM, you probably still want the destination user to
|
||||
# be looked up from passdb that it really exists. pass=yes does that.
|
||||
pass = yes
|
||||
}
|
||||
20
dovecot/conf.d/auth-passwdfile.conf.ext
Normal file
20
dovecot/conf.d/auth-passwdfile.conf.ext
Normal file
@@ -0,0 +1,20 @@
|
||||
# Authentication for passwd-file users. Included from auth.conf.
|
||||
#
|
||||
# passwd-like file with specified location.
|
||||
# <doc/wiki/AuthDatabase.PasswdFile.txt>
|
||||
|
||||
passdb {
|
||||
driver = passwd-file
|
||||
args = scheme=CRYPT username_format=%Lu /etc/dovecot/dovecot.passwd
|
||||
}
|
||||
|
||||
userdb {
|
||||
driver = passwd-file
|
||||
args = username_format=%Lu /etc/dovecot/dovecot.passwd
|
||||
|
||||
# Default fields that can be overridden by passwd-file
|
||||
#default_fields = quota_rule=*:storage=1G
|
||||
|
||||
# Override fields from passwd-file
|
||||
#override_fields = home=/home/virtual/%u
|
||||
}
|
||||
30
dovecot/conf.d/auth-sql.conf.ext
Normal file
30
dovecot/conf.d/auth-sql.conf.ext
Normal file
@@ -0,0 +1,30 @@
|
||||
# Authentication for SQL users. Included from 10-auth.conf.
|
||||
#
|
||||
# <doc/wiki/AuthDatabase.SQL.txt>
|
||||
|
||||
passdb {
|
||||
driver = sql
|
||||
|
||||
# Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
|
||||
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||
}
|
||||
|
||||
# "prefetch" user database means that the passdb already provided the
|
||||
# needed information and there's no need to do a separate userdb lookup.
|
||||
# <doc/wiki/UserDatabase.Prefetch.txt>
|
||||
#userdb {
|
||||
# driver = prefetch
|
||||
#}
|
||||
|
||||
userdb {
|
||||
driver = sql
|
||||
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||
}
|
||||
|
||||
# If you don't have any user-specific settings, you can avoid the user_query
|
||||
# by using userdb static instead of userdb sql, for example:
|
||||
# <doc/wiki/UserDatabase.Static.txt>
|
||||
#userdb {
|
||||
#driver = static
|
||||
#args = uid=vmail gid=vmail home=/var/vmail/%u
|
||||
#}
|
||||
24
dovecot/conf.d/auth-static.conf.ext
Normal file
24
dovecot/conf.d/auth-static.conf.ext
Normal file
@@ -0,0 +1,24 @@
|
||||
# Static passdb. Included from 10-auth.conf.
|
||||
|
||||
# This can be used for situations where Dovecot doesn't need to verify the
|
||||
# username or the password, or if there is a single password for all users:
|
||||
#
|
||||
# - proxy frontend, where the backend verifies the password
|
||||
# - proxy backend, where the frontend already verified the password
|
||||
# - authentication with SSL certificates
|
||||
# - simple testing
|
||||
|
||||
#passdb {
|
||||
# driver = static
|
||||
# args = proxy=y host=%1Mu.example.com nopassword=y
|
||||
#}
|
||||
|
||||
#passdb {
|
||||
# driver = static
|
||||
# args = password=test
|
||||
#}
|
||||
|
||||
#userdb {
|
||||
# driver = static
|
||||
# args = uid=vmail gid=vmail home=/home/%u
|
||||
#}
|
||||
74
dovecot/conf.d/auth-system.conf.ext
Normal file
74
dovecot/conf.d/auth-system.conf.ext
Normal file
@@ -0,0 +1,74 @@
|
||||
# Authentication for system users. Included from 10-auth.conf.
|
||||
#
|
||||
# <doc/wiki/PasswordDatabase.txt>
|
||||
# <doc/wiki/UserDatabase.txt>
|
||||
|
||||
# PAM authentication. Preferred nowadays by most systems.
|
||||
# PAM is typically used with either userdb passwd or userdb static.
|
||||
# REMEMBER: You'll need /etc/pam.d/dovecot file created for PAM
|
||||
# authentication to actually work. <doc/wiki/PasswordDatabase.PAM.txt>
|
||||
passdb {
|
||||
driver = pam
|
||||
# [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>]
|
||||
# [cache_key=<key>] [<service name>]
|
||||
#args = dovecot
|
||||
}
|
||||
|
||||
# System users (NSS, /etc/passwd, or similar).
|
||||
# In many systems nowadays this uses Name Service Switch, which is
|
||||
# configured in /etc/nsswitch.conf. <doc/wiki/AuthDatabase.Passwd.txt>
|
||||
#passdb {
|
||||
#driver = passwd
|
||||
# [blocking=no]
|
||||
#args =
|
||||
#}
|
||||
|
||||
# Shadow passwords for system users (NSS, /etc/shadow or similar).
|
||||
# Deprecated by PAM nowadays.
|
||||
# <doc/wiki/PasswordDatabase.Shadow.txt>
|
||||
#passdb {
|
||||
#driver = shadow
|
||||
# [blocking=no]
|
||||
#args =
|
||||
#}
|
||||
|
||||
# PAM-like authentication for OpenBSD.
|
||||
# <doc/wiki/PasswordDatabase.BSDAuth.txt>
|
||||
#passdb {
|
||||
#driver = bsdauth
|
||||
# [blocking=no] [cache_key=<key>]
|
||||
#args =
|
||||
#}
|
||||
|
||||
##
|
||||
## User databases
|
||||
##
|
||||
|
||||
# System users (NSS, /etc/passwd, or similar). In many systems nowadays this
|
||||
# uses Name Service Switch, which is configured in /etc/nsswitch.conf.
|
||||
userdb {
|
||||
# <doc/wiki/AuthDatabase.Passwd.txt>
|
||||
driver = passwd
|
||||
# [blocking=no]
|
||||
#args =
|
||||
|
||||
# Override fields from passwd
|
||||
#override_fields = home=/home/virtual/%u
|
||||
}
|
||||
|
||||
# Static settings generated from template <doc/wiki/UserDatabase.Static.txt>
|
||||
#userdb {
|
||||
#driver = static
|
||||
# Can return anything a userdb could normally return. For example:
|
||||
#
|
||||
# args = uid=500 gid=500 home=/var/mail/%u
|
||||
#
|
||||
# LDA and LMTP needs to look up users only from the userdb. This of course
|
||||
# doesn't work with static userdb because there is no list of users.
|
||||
# Normally static userdb handles this by doing a passdb lookup. This works
|
||||
# with most passdbs, with PAM being the most notable exception. If you do
|
||||
# the user verification another way, you can add allow_all_users=yes to
|
||||
# the args in which case the passdb lookup is skipped.
|
||||
#
|
||||
#args =
|
||||
#}
|
||||
54
dovecot/dovecot-dict-auth.conf.ext
Normal file
54
dovecot/dovecot-dict-auth.conf.ext
Normal file
@@ -0,0 +1,54 @@
|
||||
# This file is commonly accessed via passdb {} or userdb {} section in
|
||||
# conf.d/auth-dict.conf.ext
|
||||
|
||||
# Dictionary URI
|
||||
#uri =
|
||||
|
||||
# Default password scheme
|
||||
default_pass_scheme = MD5
|
||||
|
||||
# Username iteration prefix. Keys under this are assumed to contain usernames.
|
||||
iterate_prefix = userdb/
|
||||
|
||||
# Should iteration be disabled for this userdb? If this userdb acts only as a
|
||||
# cache there's no reason to try to iterate the (partial & duplicate) users.
|
||||
#iterate_disable = no
|
||||
|
||||
# The example here shows how to do multiple dict lookups and merge the replies.
|
||||
# The "passdb" and "userdb" keys are JSON objects containing key/value pairs,
|
||||
# for example: { "uid": 1000, "gid": 1000, "home": "/home/user" }
|
||||
|
||||
key passdb {
|
||||
key = passdb/%u
|
||||
format = json
|
||||
}
|
||||
key userdb {
|
||||
key = userdb/%u
|
||||
format = json
|
||||
}
|
||||
key quota {
|
||||
key = userdb/%u/quota
|
||||
#format = value
|
||||
# The default_value is used if the key isn't found. If default_value setting
|
||||
# isn't specified at all (even as empty), the passdb/userdb lookup fails with
|
||||
# "user doesn't exist".
|
||||
default_value = 100M
|
||||
}
|
||||
|
||||
# Space separated list of keys whose values contain key/value paired objects.
|
||||
# All the key/value pairs inside the object are added as passdb fields.
|
||||
passdb_objects = passdb
|
||||
|
||||
#passdb_fields {
|
||||
#}
|
||||
|
||||
# Userdb key/value object list.
|
||||
userdb_objects = userdb
|
||||
|
||||
userdb_fields {
|
||||
# dict:<key> refers to key names
|
||||
quota_rule = *:storage=%{dict:quota}
|
||||
|
||||
# dict:<key>.<objkey> refers to the objkey inside (JSON) object
|
||||
mail = maildir:%{dict:userdb.home}/Maildir
|
||||
}
|
||||
23
dovecot/dovecot-dict-sql.conf.ext
Normal file
23
dovecot/dovecot-dict-sql.conf.ext
Normal file
@@ -0,0 +1,23 @@
|
||||
# This file is commonly accessed via dict {} section in dovecot.conf
|
||||
|
||||
#connect = host=localhost dbname=mails user=testuser password=pass
|
||||
|
||||
# CREATE TABLE quota (
|
||||
# username varchar(100) not null,
|
||||
# bytes bigint not null default 0,
|
||||
# messages integer not null default 0,
|
||||
# primary key (username)
|
||||
# );
|
||||
|
||||
map {
|
||||
pattern = priv/quota/storage
|
||||
table = quota
|
||||
username_field = username
|
||||
value_field = bytes
|
||||
}
|
||||
map {
|
||||
pattern = priv/quota/messages
|
||||
table = quota
|
||||
username_field = username
|
||||
value_field = messages
|
||||
}
|
||||
144
dovecot/dovecot-sql.conf.ext
Normal file
144
dovecot/dovecot-sql.conf.ext
Normal file
@@ -0,0 +1,144 @@
|
||||
# This file is commonly accessed via passdb {} or userdb {} section in
|
||||
# conf.d/auth-sql.conf.ext
|
||||
|
||||
# This file is opened as root, so it should be owned by root and mode 0600.
|
||||
#
|
||||
# http://wiki2.dovecot.org/AuthDatabase/SQL
|
||||
#
|
||||
# For the sql passdb module, you'll need a database with a table that
|
||||
# contains fields for at least the username and password. If you want to
|
||||
# use the user@domain syntax, you might want to have a separate domain
|
||||
# field as well.
|
||||
#
|
||||
# If your users all have the same uig/gid, and have predictable home
|
||||
# directories, you can use the static userdb module to generate the home
|
||||
# dir based on the username and domain. In this case, you won't need fields
|
||||
# for home, uid, or gid in the database.
|
||||
#
|
||||
# If you prefer to use the sql userdb module, you'll want to add fields
|
||||
# for home, uid, and gid. Here is an example table:
|
||||
#
|
||||
# CREATE TABLE users (
|
||||
# username VARCHAR(128) NOT NULL,
|
||||
# domain VARCHAR(128) NOT NULL,
|
||||
# password VARCHAR(64) NOT NULL,
|
||||
# home VARCHAR(255) NOT NULL,
|
||||
# uid INTEGER NOT NULL,
|
||||
# gid INTEGER NOT NULL,
|
||||
# active CHAR(1) DEFAULT 'Y' NOT NULL
|
||||
# );
|
||||
|
||||
# Database driver: mysql, pgsql, sqlite
|
||||
#driver =
|
||||
|
||||
# Database connection string. This is driver-specific setting.
|
||||
#
|
||||
# HA / round-robin load-balancing is supported by giving multiple host
|
||||
# settings, like: host=sql1.host.org host=sql2.host.org
|
||||
#
|
||||
# pgsql:
|
||||
# For available options, see the PostgreSQL documentation for the
|
||||
# PQconnectdb function of libpq.
|
||||
# Use maxconns=n (default 5) to change how many connections Dovecot can
|
||||
# create to pgsql.
|
||||
#
|
||||
# mysql:
|
||||
# Basic options emulate PostgreSQL option names:
|
||||
# host, port, user, password, dbname
|
||||
#
|
||||
# But also adds some new settings:
|
||||
# client_flags - See MySQL manual
|
||||
# connect_timeout - Connect timeout in seconds (default: 5)
|
||||
# read_timeout - Read timeout in seconds (default: 30)
|
||||
# write_timeout - Write timeout in seconds (default: 30)
|
||||
# ssl_ca, ssl_ca_path - Set either one or both to enable SSL
|
||||
# ssl_cert, ssl_key - For sending client-side certificates to server
|
||||
# ssl_cipher - Set minimum allowed cipher security (default: HIGH)
|
||||
# ssl_verify_server_cert - Verify that the name in the server SSL certificate
|
||||
# matches the host (default: no)
|
||||
# option_file - Read options from the given file instead of
|
||||
# the default my.cnf location
|
||||
# option_group - Read options from the given group (default: client)
|
||||
#
|
||||
# You can connect to UNIX sockets by using host: host=/var/run/mysql.sock
|
||||
# Note that currently you can't use spaces in parameters.
|
||||
#
|
||||
# sqlite:
|
||||
# The path to the database file.
|
||||
#
|
||||
# Examples:
|
||||
# connect = host=192.168.1.1 dbname=users
|
||||
# connect = host=sql.example.com dbname=virtual user=virtual password=blarg
|
||||
# connect = /etc/dovecot/authdb.sqlite
|
||||
#
|
||||
#connect =
|
||||
|
||||
# Default password scheme.
|
||||
#
|
||||
# List of supported schemes is in
|
||||
# http://wiki2.dovecot.org/Authentication/PasswordSchemes
|
||||
#
|
||||
#default_pass_scheme = MD5
|
||||
|
||||
# passdb query to retrieve the password. It can return fields:
|
||||
# password - The user's password. This field must be returned.
|
||||
# user - user@domain from the database. Needed with case-insensitive lookups.
|
||||
# username and domain - An alternative way to represent the "user" field.
|
||||
#
|
||||
# The "user" field is often necessary with case-insensitive lookups to avoid
|
||||
# e.g. "name" and "nAme" logins creating two different mail directories. If
|
||||
# your user and domain names are in separate fields, you can return "username"
|
||||
# and "domain" fields instead of "user".
|
||||
#
|
||||
# The query can also return other fields which have a special meaning, see
|
||||
# http://wiki2.dovecot.org/PasswordDatabase/ExtraFields
|
||||
#
|
||||
# Commonly used available substitutions (see http://wiki2.dovecot.org/Variables
|
||||
# for full list):
|
||||
# %u = entire user@domain
|
||||
# %n = user part of user@domain
|
||||
# %d = domain part of user@domain
|
||||
#
|
||||
# Note that these can be used only as input to SQL query. If the query outputs
|
||||
# any of these substitutions, they're not touched. Otherwise it would be
|
||||
# difficult to have eg. usernames containing '%' characters.
|
||||
#
|
||||
# Example:
|
||||
# password_query = SELECT userid AS user, pw AS password \
|
||||
# FROM users WHERE userid = '%u' AND active = 'Y'
|
||||
#
|
||||
#password_query = \
|
||||
# SELECT username, domain, password \
|
||||
# FROM users WHERE username = '%n' AND domain = '%d'
|
||||
|
||||
# userdb query to retrieve the user information. It can return fields:
|
||||
# uid - System UID (overrides mail_uid setting)
|
||||
# gid - System GID (overrides mail_gid setting)
|
||||
# home - Home directory
|
||||
# mail - Mail location (overrides mail_location setting)
|
||||
#
|
||||
# None of these are strictly required. If you use a single UID and GID, and
|
||||
# home or mail directory fits to a template string, you could use userdb static
|
||||
# instead. For a list of all fields that can be returned, see
|
||||
# http://wiki2.dovecot.org/UserDatabase/ExtraFields
|
||||
#
|
||||
# Examples:
|
||||
# user_query = SELECT home, uid, gid FROM users WHERE userid = '%u'
|
||||
# user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u'
|
||||
# user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u'
|
||||
#
|
||||
#user_query = \
|
||||
# SELECT home, uid, gid \
|
||||
# FROM users WHERE username = '%n' AND domain = '%d'
|
||||
|
||||
# If you wish to avoid two SQL lookups (passdb + userdb), you can use
|
||||
# userdb prefetch instead of userdb sql in dovecot.conf. In that case you'll
|
||||
# also have to return userdb fields in password_query prefixed with "userdb_"
|
||||
# string. For example:
|
||||
#password_query = \
|
||||
# SELECT userid AS user, password, \
|
||||
# home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \
|
||||
# FROM users WHERE userid = '%u'
|
||||
|
||||
# Query to get a list of all usernames.
|
||||
#iterate_query = SELECT username AS user FROM users
|
||||
101
dovecot/dovecot.conf
Normal file
101
dovecot/dovecot.conf
Normal file
@@ -0,0 +1,101 @@
|
||||
# this file was autogenerated, please do not edit
|
||||
## Dovecot configuration file
|
||||
|
||||
# If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration
|
||||
|
||||
# "doveconf -n" command gives a clean output of the changed settings. Use it
|
||||
# instead of copy&pasting files when posting to the Dovecot mailing list.
|
||||
|
||||
# '#' character and everything after it is treated as comments. Extra spaces
|
||||
# and tabs are ignored. If you want to use either of these explicitly, put the
|
||||
# value inside quotes, eg.: key = "# char and trailing whitespace "
|
||||
|
||||
# Default values are shown for each setting, it's not required to uncomment
|
||||
# those. These are exceptions to this though: No sections (e.g. namespace {})
|
||||
# or plugin settings are added by default, they're listed only as examples.
|
||||
# Paths are also just examples with the real defaults being based on configure
|
||||
# options. The paths listed here are for configure --prefix=/usr
|
||||
# --sysconfdir=/etc --localstatedir=/var
|
||||
|
||||
# Enable installed protocols
|
||||
!include_try /usr/share/dovecot/protocols.d/*.protocol
|
||||
|
||||
# A comma separated list of IPs or hosts where to listen in for connections.
|
||||
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
|
||||
# If you want to specify non-default ports or anything more complex,
|
||||
# edit conf.d/master.conf.
|
||||
listen = *,::
|
||||
|
||||
|
||||
# Base directory where to store runtime data.
|
||||
#base_dir = /var/run/dovecot/
|
||||
|
||||
# Name of this instance. In multi-instance setup doveadm and other commands
|
||||
# can use -i <instance_name> to select which instance is used (an alternative
|
||||
# to -c <config_path>). The instance name is also added to Dovecot processes
|
||||
# in ps output.
|
||||
#instance_name = dovecot
|
||||
|
||||
# Greeting message for clients.
|
||||
#login_greeting = Dovecot ready.
|
||||
|
||||
# Space separated list of trusted network ranges. Connections from these
|
||||
# IPs are allowed to override their IP addresses and ports (for logging and
|
||||
# for authentication checks). disable_plaintext_auth is also ignored for
|
||||
# these networks. Typically you'd specify your IMAP proxy servers here.
|
||||
#login_trusted_networks =
|
||||
|
||||
# Sepace separated list of login access check sockets (e.g. tcpwrap)
|
||||
#login_access_sockets =
|
||||
|
||||
# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do
|
||||
# proxying. This isn't necessary normally, but may be useful if the destination
|
||||
# IP is e.g. a load balancer's IP.
|
||||
#auth_proxy_self =
|
||||
|
||||
# Show more verbose process titles (in ps). Currently shows user name and
|
||||
# IP address. Useful for seeing who are actually using the IMAP processes
|
||||
# (eg. shared mailboxes or if same uid is used for multiple accounts).
|
||||
#verbose_proctitle = no
|
||||
|
||||
# Should all processes be killed when Dovecot master process shuts down.
|
||||
# Setting this to "no" means that Dovecot can be upgraded without
|
||||
# forcing existing client connections to close (although that could also be
|
||||
# a problem if the upgrade is e.g. because of a security fix).
|
||||
#shutdown_clients = yes
|
||||
|
||||
# If non-zero, run mail commands via this many connections to doveadm server,
|
||||
# instead of running them directly in the same process.
|
||||
#doveadm_worker_count = 0
|
||||
# UNIX socket or host:port used for connecting to doveadm server
|
||||
#doveadm_socket_path = doveadm-server
|
||||
|
||||
# Space separated list of environment variables that are preserved on Dovecot
|
||||
# startup and passed down to all of its child processes. You can also give
|
||||
# key=value pairs to always set specific settings.
|
||||
#import_environment = TZ
|
||||
|
||||
##
|
||||
## Dictionary server settings
|
||||
##
|
||||
|
||||
# Dictionary can be used to store key=value lists. This is used by several
|
||||
# plugins. The dictionary can be accessed either directly or though a
|
||||
# dictionary server. The following dict block maps dictionary names to URIs
|
||||
# when the server is used. These can then be referenced using URIs in format
|
||||
# "proxy::<name>".
|
||||
|
||||
dict {
|
||||
#quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
|
||||
#expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
|
||||
}
|
||||
|
||||
# Most of the actual configuration gets included below. The filenames are
|
||||
# first sorted by their ASCII value and parsed in that order. The 00-prefixes
|
||||
# in filenames are intended to make it easier to understand the ordering.
|
||||
!include conf.d/*.conf
|
||||
|
||||
# A config file can also tried to be included without giving an error if
|
||||
# it's not found:
|
||||
!include_try local.conf
|
||||
!include_try /etc/dovecot/certs/*.conf
|
||||
4
dovecot/dovecot.passwd
Normal file
4
dovecot/dovecot.passwd
Normal file
@@ -0,0 +1,4 @@
|
||||
admin@panman-translog.de:{CRAM-MD5}2c87cd2da663c45793987573147c4f6ecf8d549877168e86db5b04463db018f9:1001:1004::/var/www/panman_trans_usr/data/email/panman-translog.de/admin:::maildir:/var/www/panman_trans_usr/data/email/panman-translog.de/admin/.maildir userdb_quota_rule=*:bytes=0M
|
||||
info@panman-translog.de:{CRAM-MD5}ad9e94ca0d6609a19b2b8f73cc6cfe0e4d5aad1ad58d0daeca9b98ea055861ec:1001:1004::/var/www/panman_trans_usr/data/email/panman-translog.de/info:::maildir:/var/www/panman_trans_usr/data/email/panman-translog.de/info/.maildir userdb_quota_rule=*:bytes=0M
|
||||
service@panman-translog.de:{CRAM-MD5}814269fe60ccfede01e566e53334106b75bc3d25af6c30d5e31eb34e369b29b1:1001:1004::/var/www/panman_trans_usr/data/email/panman-translog.de/service:::maildir:/var/www/panman_trans_usr/data/email/panman-translog.de/service/.maildir userdb_quota_rule=*:bytes=0M
|
||||
rechnung@panman-translog.de:{CRAM-MD5}5df290131dde026c3fe7ec7d24470bbb10496f8b38776f4551959dc3d21e86d7:1001:1004::/var/www/panman_trans_usr/data/email/panman-translog.de/rechnung:::maildir:/var/www/panman_trans_usr/data/email/panman-translog.de/rechnung/.maildir userdb_quota_rule=*:bytes=0M
|
||||
1
dovecot/private/dovecot.key
Symbolic link
1
dovecot/private/dovecot.key
Symbolic link
@@ -0,0 +1 @@
|
||||
/etc/ssl/private/ssl-cert-snakeoil.key
|
||||
1
dovecot/private/dovecot.pem
Symbolic link
1
dovecot/private/dovecot.pem
Symbolic link
@@ -0,0 +1 @@
|
||||
/etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||
60
httpd-cert/mail.panman-translog.de_panel.crt
Normal file
60
httpd-cert/mail.panman-translog.de_panel.crt
Normal file
@@ -0,0 +1,60 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFCzCCA/OgAwIBAgISBXehFf5CrUhoqvWowwMqcIhAMA0GCSqGSIb3DQEBCwUA
|
||||
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
|
||||
EwNSMTEwHhcNMjUwODAxMTAwMTM5WhcNMjUxMDMwMTAwMTM4WjAiMSAwHgYDVQQD
|
||||
ExdtYWlsLnBhbm1hbi10cmFuc2xvZy5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||
ADCCAQoCggEBAL9QBDo7rESYZoJYxjfCafFjoiswUwTqemsJGc7iSr237520UOCy
|
||||
ou9CdlLM4qAJ38TcmHzvayzCwmqYn473g3WZ72/3iLSjYAknRWvpjgU3RZ5qKj1x
|
||||
TIze+UtN99s0MHWvFQ8A/D8lKF/AMzwdneDwbJabUup6CPVU7J2QUKMvxxghKAig
|
||||
6k4CBUoMGu4vAe9JcohewBVD/X3Ta2W1ha9wLQ95/HgCYuNdZ5SfubxO6Xuk+ax7
|
||||
HlFKdG9CVxlWncXVEiSFYEXGDkJeHjohsEkG3HnybAuJXxWcNnVqxH1Kb8wocAw0
|
||||
cKX+IlujFyfWq/zlZUVB4f3qrmvfRMwdtcsCAwEAAaOCAigwggIkMA4GA1UdDwEB
|
||||
/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/
|
||||
BAIwADAdBgNVHQ4EFgQU9vNp8kp742+7jXSXrn6QXavjFbAwHwYDVR0jBBgwFoAU
|
||||
xc9GpOr0w8B6bJXELbBeki8m47kwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAC
|
||||
hhdodHRwOi8vcjExLmkubGVuY3Iub3JnLzAiBgNVHREEGzAZghdtYWlsLnBhbm1h
|
||||
bi10cmFuc2xvZy5kZTATBgNVHSAEDDAKMAgGBmeBDAECATAuBgNVHR8EJzAlMCOg
|
||||
IaAfhh1odHRwOi8vcjExLmMubGVuY3Iub3JnLzY1LmNybDCCAQUGCisGAQQB1nkC
|
||||
BAIEgfYEgfMA8QB3AA3h8jAr0w3BQGISCepVLvxHdHyx1+kw7w5CHrR+Tqo0AAAB
|
||||
mGVKE1UAAAQDAEgwRgIhAJfEDpBoDPj9WvDW0nxc5YfzjOd7XL1QgeFPq0+mPraC
|
||||
AiEAvnyOHK892jSl6zIwSYBbLBkn9+m5Vj4/f3WVStVmt2MAdgDd3Mo0ldfhFgXn
|
||||
lTL6x5/4PRxQ39sAOhQSdgosrLvIKgAAAZhlShRfAAAEAwBHMEUCIE7eduFYnlgn
|
||||
p6fDlKrPYrpRsmQAaLWjIh8Wa+GLhPVlAiEA05r2sgZFcY1lEqNydyNKeZ34Wc2b
|
||||
tOzyKr6acaXNwYQwDQYJKoZIhvcNAQELBQADggEBAGZNW4NxV4/EDWPf0qeViD2u
|
||||
k0mDaNwhMe8Zl8jy6UwYucK2XGpRabuFhXtOXvWqebCVfBS1rGXmFMrDCVH46LYN
|
||||
atJ6eGiZUUv3Xi9o6ovhmPGo6GRSF6eGjgbWaCVFUYkyRZ170fAQoYfy822aG+rf
|
||||
37MgcOL54F9AwkziIBJ/uokYiNuC1TUHF/+X4Cu1Ve9peyzEmKvpK9QuFF+xwF8u
|
||||
3TMU2XC04IAwzd90dvgFviYQ1qlUtZB8cLHo+Nvh51rz72gIIMeK/LEKphHujWMU
|
||||
cyYsNwiDzeunU+mzenIJitqUpyp6OU7u7wiykLHHmU6XY/8z53nzWz+fzxu0p9A=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ
|
||||
DAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG
|
||||
AGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy
|
||||
6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw
|
||||
SVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP
|
||||
Xzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB
|
||||
hjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB
|
||||
/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU
|
||||
ebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC
|
||||
hhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG
|
||||
A1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN
|
||||
AQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y
|
||||
v4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38
|
||||
01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1
|
||||
e9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn
|
||||
UfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV
|
||||
aneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z
|
||||
WghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R
|
||||
PBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q
|
||||
pdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo
|
||||
6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV
|
||||
uYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
27
httpd-cert/mail.panman-translog.de_panel.key
Normal file
27
httpd-cert/mail.panman-translog.de_panel.key
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEAv1AEOjusRJhmgljGN8Jp8WOiKzBTBOp6awkZzuJKvbfvnbRQ
|
||||
4LKi70J2UszioAnfxNyYfO9rLMLCapifjveDdZnvb/eItKNgCSdFa+mOBTdFnmoq
|
||||
PXFMjN75S0332zQwda8VDwD8PyUoX8AzPB2d4PBslptS6noI9VTsnZBQoy/HGCEo
|
||||
CKDqTgIFSgwa7i8B70lyiF7AFUP9fdNrZbWFr3AtD3n8eAJi411nlJ+5vE7pe6T5
|
||||
rHseUUp0b0JXGVadxdUSJIVgRcYOQl4eOiGwSQbcefJsC4lfFZw2dWrEfUpvzChw
|
||||
DDRwpf4iW6MXJ9ar/OVlRUHh/equa99EzB21ywIDAQABAoIBAFZOxPl4fkkb7/MS
|
||||
FaqGHMF3z2toi6uGFOBA5NG+qTVZy9H7zRjxvivuce7826iTi84GLwz9/f3dh1QL
|
||||
ssAOzdG6NpjutU+4/NRkUR9T6GxV+SR0hMXfXUeYOCNO82iC7PHKoNd5/FKIcuRv
|
||||
ky2lttoJ3RM803VQxMXZID4dIyPa3E8WCwWNHoBmv+Gg00JzsSwjj2RFl8djtCKA
|
||||
bt1Flp9UGLFDaZN7FD7nyjznxrpTM/k3uLnF2dji3Gx2IGCV5MgFhhuBNziW38q0
|
||||
ekpYMiBimBRySbNH0wDv4Nknx449ll1eIoHYhZKieKNecG/5sH2eahTmvmyLbcKx
|
||||
wvD5ksECgYEA5Lqjaqhv03GXKsQzZ9xRhIq9p38nGXOydC8F6N4XTBBE+lrQb8lZ
|
||||
y/BPoV67IYeRMzDtxUcDk3gronrGPwSo+J0UNDO9f4+Y94TXO49ulaPugl6uqyU1
|
||||
P4iJELpgvRUm9tGcAoOHVeF91M5LqPjfpRGiTNOoofDrBOLUZ+7xXJECgYEA1h9W
|
||||
NCP6iim6UdoxQHz7KEwsqBL1XDpcz0R6EFe/2yGYeCc27+bqmupKfujdsCwQ1P3Y
|
||||
54eciQGRNMXT1T9hUQQFX2UbLzq9BqgEQNSezePdGxj5wYJyelI5LYOwIRaHswAV
|
||||
8drNfiQTCauM+hFwI7BXV4TUtLkL1WYQ248NCpsCgYB6XZMRe30f3JQn0AFEXizK
|
||||
QMNHuZG8XxYobAO4WiCSk92jJjR+qXS90xl21kw8mt9GSLXbpas3GMIXUaF/k0mm
|
||||
f7qQVuHZPYRzXwEanxhlO+dcnbTKYMSE8dGKPnuEjK1kvCy/d4hOnK0JzTfS9RoI
|
||||
oE941H9R66Z/3a4O0FkV0QKBgDeUDLkd+aMxL5adbxlRF5QfKZw6x4s37u0x1gk1
|
||||
7avAbaYKb70XkB/D3rBQW3KmDXxro4h9b8k0Ke+rxc9dUzJHO+nGAadhtLzskaYO
|
||||
SmYg1jx5YCK1bGeJviOtQeNkyLZSuF99rscmL/bbm40xR41L8W/bH6cFPSgYBRoo
|
||||
aHcvAoGAJPsgIyzyf6sq4op0C5A778YhKiCxUsRmAd9OZUUStfp4QBe8mN8WpcT+
|
||||
v8wmO6xsV15L8YiEOeUy6wqYvz+GtGh2KqATjR7D5zmmPTSiAAJ8dHA21K5P+y5b
|
||||
Gq8+0X1bmKa55NIjynKA7xOdPGDBQeulr8KiAvhgZeyZgQ/U83g=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
61
httpd-cert/panman-translog.de_2025-03-28-14-45_40.crt
Normal file
61
httpd-cert/panman-translog.de_2025-03-28-14-45_40.crt
Normal file
@@ -0,0 +1,61 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFGDCCBACgAwIBAgISBWAQrQ5CpP5IxWcAMn2JcvKQMA0GCSqGSIb3DQEBCwUA
|
||||
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
|
||||
EwNSMTAwHhcNMjUwNTI3MTI1MTQzWhcNMjUwODI1MTI1MTQyWjAdMRswGQYDVQQD
|
||||
ExJwYW5tYW4tdHJhbnNsb2cuZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQDPUtJWU8GfYPbVTtNCAvH3iB49H4MjkwnPMNTSl0susy0x8GVHmDRIkf5I
|
||||
+sNsr0FypxwQgZhv3Dnu4F4RQf+2h6sAflpAxtwUfiBm6GDhrM7yLuLs1sWNWEy/
|
||||
EUXepUHs/X872Zs51aFrXTwr6NvUIiKIBvSnhvRughHRSwvjpStbFYLPKkfR/FVq
|
||||
vCq3jmrzKoyc7iD1JzrDFWGWEYBu3hbQvzOwEbDMUoJvnl5q3Oc+9u3YNAFlIu4p
|
||||
A4mLzBWihaoGl969ZvNXlk6DPzb2YnTwSU3y++0LCJzC9Sxg6MilOMy/8AMjEY0Z
|
||||
Ww58sJ4DhoMDjN5zLYKNVaqOtHLjAgMBAAGjggI6MIICNjAOBgNVHQ8BAf8EBAMC
|
||||
BaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAw
|
||||
HQYDVR0OBBYEFBOP9s5ZIRA1+DGJGEivFBYqZMGcMB8GA1UdIwQYMBaAFLu8w0el
|
||||
5LypxsOkcgwQjaI14cjoMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAoYXaHR0
|
||||
cDovL3IxMC5pLmxlbmNyLm9yZy8wNQYDVR0RBC4wLIIScGFubWFuLXRyYW5zbG9n
|
||||
LmRlghZ3d3cucGFubWFuLXRyYW5zbG9nLmRlMBMGA1UdIAQMMAowCAYGZ4EMAQIB
|
||||
MC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9yMTAuYy5sZW5jci5vcmcvMTcuY3Js
|
||||
MIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYApELFBklgYVSPD9TqnPt6LSZFTYep
|
||||
fy/fRVn2J086hFQAAAGXEgILyAAABAMARzBFAiEAik/Zmkx6yL/8snxiG6M9G6KN
|
||||
9Evzb0MYdtnE7BXPX8YCIEAFxsjvLa3vFBqrpqe2NO2oAdXwpcQtw99F0nBPQAhC
|
||||
AHYADeHyMCvTDcFAYhIJ6lUu/Ed0fLHX6TDvDkIetH5OqjQAAAGXEgITmQAABAMA
|
||||
RzBFAiBviPacA9UiZjKeCbMyb4S6F1OPr3sSPYwLUnxZMMUuZgIhAPiZ0KW+CAwj
|
||||
4/SBNy3ENRYBZquCnOzjWQMIkmx5QMQcMA0GCSqGSIb3DQEBCwUAA4IBAQA/fz3V
|
||||
RUxuDAJziKoLCQpN7j5uFikYLxbekaYqStjcRKlHKO7s16L/9uQZu58R5rOzwBBz
|
||||
xy3TWTsD3z/fW+ydRfc1f+juQYoywA32EcnBY8ErCMFkFg8D7qu+uP97tUYkzJ0T
|
||||
mJOQabPu126pxdpJ2CvKceNc4OxABCdZJOin0xqnIUheJT7mFdlLzrLP7MBociHZ
|
||||
hx2vtjaL3x7P9zbNO85gk4k4Aez3OyiJ7t5oAFpeyU5BG1rBT/T5WUEowiI5Mnrj
|
||||
mWSvzp8dIzvU8FTMerGnqA2Jhh2EalYednokOpiP2yqM4en9W+USLFdcoWCVHBTP
|
||||
TYZcPry/AbKitJT4
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP
|
||||
MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
|
||||
Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
|
||||
Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
|
||||
bmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL
|
||||
YlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a
|
||||
/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4
|
||||
FpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR
|
||||
mudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3
|
||||
DZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG
|
||||
MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/
|
||||
AgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5
|
||||
tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG
|
||||
Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD
|
||||
VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B
|
||||
AQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo
|
||||
zwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd
|
||||
u6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9
|
||||
1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0
|
||||
GaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh
|
||||
1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ
|
||||
QjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N
|
||||
4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz
|
||||
rsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei
|
||||
RmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx
|
||||
KPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
27
httpd-cert/panman-translog.de_2025-03-28-14-45_40.key
Normal file
27
httpd-cert/panman-translog.de_2025-03-28-14-45_40.key
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAz1LSVlPBn2D21U7TQgLx94gePR+DI5MJzzDU0pdLLrMtMfBl
|
||||
R5g0SJH+SPrDbK9BcqccEIGYb9w57uBeEUH/toerAH5aQMbcFH4gZuhg4azO8i7i
|
||||
7NbFjVhMvxFF3qVB7P1/O9mbOdWha108K+jb1CIiiAb0p4b0boIR0UsL46UrWxWC
|
||||
zypH0fxVarwqt45q8yqMnO4g9Sc6wxVhlhGAbt4W0L8zsBGwzFKCb55eatznPvbt
|
||||
2DQBZSLuKQOJi8wVooWqBpfevWbzV5ZOgz829mJ08ElN8vvtCwicwvUsYOjIpTjM
|
||||
v/ADIxGNGVsOfLCeA4aDA4zecy2CjVWqjrRy4wIDAQABAoIBABVadGuLyN9/fyzN
|
||||
J5ke8IkMLgEho8IgPNxoLSNbjdTLg5YnKmdLV+c5kjU2Dra8/kKuz4crseWjixv9
|
||||
Y/LnF01Xf9dXLDiLwtMhgnjW6lOUFuR+y8SVAlfihlUPlGCwKLAeE+K4MPKt/Cgw
|
||||
vCfRngKlWWUlQkGW9soC/47M6faSNwYDu6qs1JSC4+KJNIrEaBRP14GvliauH7eh
|
||||
+gad57HN3Pyb2A1y0C9g07lUS//eNZt5rilJCh+EIbdPqmm4kjtc5Ta3g6WDS5DG
|
||||
izNovyTEj+VeHLJCudSpL1pte6zt8sQzPFX2M4SxqEOLjNbhLRXv88qNnwrKKzWj
|
||||
vScQZrECgYEA5quXDkDRRX0FWYncTd+TLJgTrCL7mB4HCJ/W5w4rzCjxQ4L7kYLk
|
||||
D7cB6LuV52oFgCBHAo0vUV3exEnl+474AFHMb4VDMMTQJ278eIEmX7KJ84IY7Xl+
|
||||
yTMDwTsOG/YsX14c5JHzaGKiA76uCQyKZikaHCFKAfLIX00LL+qvcK8CgYEA5hbt
|
||||
XN/yB9F1L7T9oa4mrLFpaRp7+/ksPcCSiRJnxz9EVBUSREx4417aTjmIEriL8zru
|
||||
W+V7pU/sNFw39ifMk2Iz2+7B5Hg2RaXsSa8d+lO1vYH8ankOPbuJN+7gsEwHvmC/
|
||||
Mhb7tshucDOehNpXXxos7Jdq7SxhkpviTe76Zg0CgYEAkMEnl0s3yLqvK8Rm2vut
|
||||
2TNKTSDa8FgPo+riqrbq50DePrao9mTEh9QZv5pQdRvEfeZDiadeBVq6HEYfrCDJ
|
||||
IzIx794aDzXDRqvQhjLOCQn6pjSDPiubU9nOxmkv7n4q1GI0EYBB1sTm1SDJCGa1
|
||||
R20NtI9zaQuZkKzBk31cQYMCgYEAvddi5wNbVfoLP16M+i6PeGM0/uQ8Mg1H5HeU
|
||||
MAaAm9Pmk52DIdka0Tb81hf/3rpntjsEWcxBNYd480a3YaE62Mvoz+jyD4jj9plN
|
||||
GQqkqFsTE5ZBZrQU/PhT4lN1DeDdbsWyWyi9bPV4sZjVjPX9qtkVAex469F3fBik
|
||||
IvsvnK0CgYBSM/W+A6x/PEYDad+IFbD1Zg0Tp0maUeGRXAtC3WhJeHmbEA8ww5+m
|
||||
ESaUqjsclyKCeCX/QC3buNf23oJ1xrA/uV/StKbejMaO7FrNuOxJvmHIY6sL2vp5
|
||||
GOCejZxWjNxowTfwC6z5s63in8Iwwo6W8ieDOEhyVkfzpSn3bBZ4Rw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
60
httpd-cert/panman-translog.de_panel.crt
Normal file
60
httpd-cert/panman-translog.de_panel.crt
Normal file
@@ -0,0 +1,60 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE/jCCA+agAwIBAgISBoBt2gw+OAT/E6pWvJCCUqYLMA0GCSqGSIb3DQEBCwUA
|
||||
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
|
||||
EwNSMTEwHhcNMjUwNjAyMTAzMjI2WhcNMjUwODMxMTAzMjI1WjAdMRswGQYDVQQD
|
||||
ExJwYW5tYW4tdHJhbnNsb2cuZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQC1bTwQpHMFDe7UqSkjOjQUPwmJ1k+4bI/Cow1jJnmbdjgl7ASkfGuBZS+Q
|
||||
I6AnxIGWbdisZ+ETd7sPztDyotWOFiyM+YOVcJT+xGoBZjq2OlWs/H4Pyt/i5TL6
|
||||
esnWI6+1ckw00gakLdOhx/YWWndxwKOCpInt1eEz4yrVeJDP6FpvIogt8TUXH3pb
|
||||
/+DmY74tuoTALxvZgMmZOqLG/sA8J80/ZnJmcEyCULt88ToyXFm7OatF92cYMf1B
|
||||
g9HSV/74/yvnJfJlyfjXgoDmW+VZgsYWG5OXaLtlumik6VFUFvbyC4P7LA4p2YP3
|
||||
s5YDC/boo3yfFk6d9c1MHlTcA13TAgMBAAGjggIgMIICHDAOBgNVHQ8BAf8EBAMC
|
||||
BaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAw
|
||||
HQYDVR0OBBYEFH0Cy50ed56YFoJxwPnpyo41RTf/MB8GA1UdIwQYMBaAFMXPRqTq
|
||||
9MPAemyVxC2wXpIvJuO5MDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAoYXaHR0
|
||||
cDovL3IxMS5pLmxlbmNyLm9yZy8wHQYDVR0RBBYwFIIScGFubWFuLXRyYW5zbG9n
|
||||
LmRlMBMGA1UdIAQMMAowCAYGZ4EMAQIBMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6
|
||||
Ly9yMTEuYy5sZW5jci5vcmcvMTIuY3JsMIIBAgYKKwYBBAHWeQIEAgSB8wSB8ADu
|
||||
AHUA7TxL1ugGwqSiAFfbyyTiOAHfUS/txIbFcA8g3bc+P+AAAAGXMGiv1AAABAMA
|
||||
RjBEAiAgg08Kz9m+PdSPYf4+18cZZptdL9q4fZM4RF9i7702ZQIgSKx0wb+q7l6P
|
||||
vUPX0vFXe2C1jk7TkJJcohhmFVqOyLQAdQAN4fIwK9MNwUBiEgnqVS78R3R8sdfp
|
||||
MO8OQh60fk6qNAAAAZcwaK/cAAAEAwBGMEQCIDxZxTWiz2tQ/MA5AE/fIJvup5AW
|
||||
kPaH49jPDfBN+LejAiAFLVNAbIvFwsqM8nPNQGCW+tnBed51dRK2ySGMoz/tgzAN
|
||||
BgkqhkiG9w0BAQsFAAOCAQEAVDeUfUFLavmZ8OC0gZThSz9QT71dErpK2lpclSsr
|
||||
Y8fMdhoBd4rOJiJvJYkSw7oMHK8pWsCncv8v2JpV7CH3u7elnAn4KOrivn4WyN6t
|
||||
tpQ7PLS8dYyyW+d7iafETewJDwW6n2uMwY+yV2ED6q8lt2m4C4AFFi1XV55x4L/b
|
||||
w3n0E7CE2mcfvPwQpgAL5AAdyJHKSJ4H2K22Q4EWTeIPEo5KMM/Kxg8xCB5LFGhU
|
||||
/13xGBMugicu+hSj+e5YjxOHVmyGN08SK7eDKYZ1RA0cFT/13SvgjdszzgbISDRZ
|
||||
8O/3QUUiiMPb9khU8wnUJnbfGnvP3moCFNx1/aW8BP6UUA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ
|
||||
DAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG
|
||||
AGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy
|
||||
6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw
|
||||
SVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP
|
||||
Xzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB
|
||||
hjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB
|
||||
/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU
|
||||
ebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC
|
||||
hhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG
|
||||
A1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN
|
||||
AQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y
|
||||
v4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38
|
||||
01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1
|
||||
e9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn
|
||||
UfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV
|
||||
aneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z
|
||||
WghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R
|
||||
PBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q
|
||||
pdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo
|
||||
6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV
|
||||
uYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
27
httpd-cert/panman-translog.de_panel.key
Normal file
27
httpd-cert/panman-translog.de_panel.key
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAtW08EKRzBQ3u1KkpIzo0FD8JidZPuGyPwqMNYyZ5m3Y4JewE
|
||||
pHxrgWUvkCOgJ8SBlm3YrGfhE3e7D87Q8qLVjhYsjPmDlXCU/sRqAWY6tjpVrPx+
|
||||
D8rf4uUy+nrJ1iOvtXJMNNIGpC3Tocf2Flp3ccCjgqSJ7dXhM+Mq1XiQz+habyKI
|
||||
LfE1Fx96W//g5mO+LbqEwC8b2YDJmTqixv7APCfNP2ZyZnBMglC7fPE6MlxZuzmr
|
||||
RfdnGDH9QYPR0lf++P8r5yXyZcn414KA5lvlWYLGFhuTl2i7ZbpopOlRVBb28guD
|
||||
+ywOKdmD97OWAwv26KN8nxZOnfXNTB5U3ANd0wIDAQABAoIBAAFJiiCQGiTSCXzG
|
||||
ynzuf8oY/GdW9u/XDVoTMBghAMHin9ldCFdmbpjXb/P03MELeuPnWZ83iXhK5C/j
|
||||
hsYB88PzUlOZvZ5E0znPiPUDla0PUuZMUFSqWtZQTAFM97umOyvtaK8DQnrNvG+s
|
||||
bImSEMDk3gQiSLxART3KAdbL6TMgbtwnVpKMlllx2ZmfZM5ELOlxhCJLEMMXrpBn
|
||||
zvTHevmtxocqB6R3jBcPt4jQD23KIOVmkc9hIvBB6sl5Po/60WdJKufV19jEcHMQ
|
||||
corEU/guMxZDaqScL6uyzHbY7Ep+qz2m+99lVUyj/3D4uL7AwxrRKO2wIUxSygza
|
||||
0I7CeQkCgYEAzjDpIRiXXDWfohpuna96M0kcQR4uVuvpwOijhFDv5LM1GlQ4aUba
|
||||
u0WIMoiNnYhbsuCbGxYd4LRpoytlMgZGNUbGBkVcQsRaU9XGIJjhMAgr41//aFff
|
||||
4JzCngfP/XQ2+/gsBFnWpZN+5QwOa7SIp2RXK9uzO6hWyNJGAs1+VG8CgYEA4UDe
|
||||
Kgkms/op76tGJ1MABDidZVIQtFMx7JB0PGrOlG2O8A/CPJmy/Vu4Pco4iXpZdh2H
|
||||
Uxr1bWYQcqU9/CoAgp6j2I4bVzVfj0I0nDF5M6lVFjUBy3CgX4cyDxNAVvKdgsgz
|
||||
cRtwjXzdmoh1bKkSh1pPwkH6esLscAbbZY9UJt0CgYBPUkmdTdSMyKRMvFZpmyQr
|
||||
rqiL9IxnLAKVD+o38NsY5Eg9hMDe3z8uZCVtK1Mvk1GTkwyYcv2zgDRTbVJU2E0S
|
||||
GdP8fZpspRUKw2ahC681xy77HecnwQaDZksIeIDvRFISxPpKAjWtJPzgKK8ziBQ6
|
||||
MUPHv5FIFg6s2xfL5DoBSQKBgHhD+Ro6fpaTV7amHLO8RgL681Z4hYCx9rLWwajM
|
||||
YfWvtSSJVWyjp4RMZ0deY+dLEt7Ujz8Y4rcBSoDbpweuqU0URGjIHuLmFVpYv9wx
|
||||
MgQaQdq0fHvRa171wQ15et2xddWw7H5UZziz1WG/v+o/LyxjVLhkH8dRsYlyr8s+
|
||||
xnBlAoGBAJcjPPo2xefktEZAI6tckDT839Jzeb1wMgVUohal9odMW9R9cQXzmt+d
|
||||
E9NH/5SbxhjXRYNbPTdxsho72V08Y5g/hx575MhY2Whjvxy07Z860XoA/+LloSyC
|
||||
oxFGUn7zCKp4IGpzQPQYIyIln4fdy1rbxtsRLpqWSpq6OQUTUH1W
|
||||
-----END RSA PRIVATE KEY-----
|
||||
1
postfix/dynamicmaps.cf
Normal file
1
postfix/dynamicmaps.cf
Normal file
@@ -0,0 +1 @@
|
||||
# dict-type so-name (pathname) dict-function mkmap-function
|
||||
21
postfix/main.cf
Normal file
21
postfix/main.cf
Normal file
@@ -0,0 +1,21 @@
|
||||
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
|
||||
|
||||
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
|
||||
|
||||
alias_maps = hash:/etc/aliases
|
||||
alias_database = hash:/etc/aliases
|
||||
mydestination = $myhostname, localhost.$mydomain, localhost
|
||||
relayhost =
|
||||
mynetworks = 127.0.0.0/8
|
||||
inet_interfaces = loopback-only
|
||||
recipient_delimiter = +
|
||||
|
||||
compatibility_level = 2
|
||||
|
||||
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
|
||||
137
postfix/master.cf
Normal file
137
postfix/master.cf
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}
|
||||
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
|
||||
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
|
||||
Reference in New Issue
Block a user