#++
# NAME
# memcache_table 5
# SUMMARY
# Postfix memcache client configuration
# SYNOPSIS
# \fBpostmap -q "\fIstring\fB" memcache:/etc/postfix/\fIfilename\fR
#
# \fBpostmap -q - memcache:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
# DESCRIPTION
# The Postfix mail system uses optional tables for address
# rewriting or mail routing. These tables are usually in
# \fBdbm\fR or \fBdb\fR format.
#
# Alternatively, lookup tables can be specified as memcache
# instances. To use memcache lookups, define a memcache
# source as a lookup table in main.cf, for example:
#
# .nf
# virtual_alias_maps = memcache:/etc/postfix/memcache-aliases.cf
# .fi
#
# The file /etc/postfix/memcache-aliases.cf has the same
# format as the Postfix main.cf file, and specifies the
# parameters described below.
#
# The Postfix memcache client supports the lookup, update,
# delete and sequence (first/next) operations. The sequence
# operation requires a backup database that supports the
# operation.
# MEMCACHE MAIN PARAMETERS
# .ad
# .fi
# .IP "\fBmemcache (default: inet:localhost:11211)\fR"
# The memcache server (note: singular) that Postfix will try
# to connect to. For a TCP server specify "inet:" followed by
# a hostname or address, ":", and a port name or number.
# Specify an IPv6 address inside "[]".
# For a UNIX-domain server specify "unix:" followed by the
# socket pathname. Examples:
#
# .nf
# memcache = inet:memcache.example.com:11211
# memcache = inet:127.0.0.1:11211
# memcache = inet:[fc00:8d00:189::3]:11211
# memcache = unix:/path/to/socket
# .fi
#
# NOTE: to access a UNIX-domain socket with the proxymap(8)
# server, the socket must be accessible by the unprivileged
# postfix user.
# .IP "\fBbackup (default: undefined)\fR"
# An optional Postfix database that provides persistent backup
# for the memcache database. The Postfix memcache client will
# update the memcache database whenever it looks up or changes
# information in the persistent database. Specify a Postfix
# "type:table" database. Examples:
#
# .nf
# # Non-shared postscreen cache.
# backup = btree:/var/lib/postfix/postscreen_cache_map
#
# # Shared postscreen cache for processes on the same host.
# backup = proxy:btree:/var/lib/postfix/postscreen_cache_map
# .fi
#
# Access to remote proxymap servers is under development.
#
# NOTE 1: When sharing a persistent \fBpostscreen\fR(8) or
# \fBverify\fR(8) cache, disable automatic cache cleanup (set
# *_cache_cleanup_interval = 0) except with one Postfix
# instance that will be responsible for cache cleanup.
#
# NOTE 2: When multiple tables share the same memcache
# database, each table should use the \fBkey_format\fR feature
# (see below) to prepend its own unique string to the lookup
# key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8)
# cache cleanup may not work.
#
# NOTE 3: When the backup database is accessed with "proxy:"
# lookups, the full backup database name (including the
# "proxy:" prefix) must be specified in the proxymap server's
# proxy_read_maps or proxy_write_maps setting (depending on
# whether the access is read-only or read-write).
# .IP "\fBflags (default: 0)\fR"
# Optional flags that should be stored along with a memcache
# update. The flags are ignored when looking up information.
# .IP "\fBttl (default: 3600)\fR"
# The expiration time in seconds of memcache updates.
#
# NOTE 1: When using a memcache table as \fBpostscreen\fR(8)
# or \fBverify\fR(8) cache without persistent backup, specify
# a zero *_cache_cleanup_interval value with all Postfix
# instances that use the memcache, and specify the largest
# \fBpostscreen\fR(8) *_ttl value or \fBverify\fR(8) *_expire_time
# value as the memcache table's \fBttl\fR value.
#
# NOTE 2: According to memcache protocol documentation, a
# value greater than 30 days (2592000 seconds) specifies
# absolute UNIX
# time. Smaller values are relative to the time of the update.
# MEMCACHE KEY PARAMETERS
# .ad
# .fi
# .IP "\fBkey_format (default: %s)\fB"
# Format of the lookup and update keys that the Postfix
# memcache client sends to the memcache server.
# By default, these are the same as the lookup and update
# keys that the memcache client receives from Postfix
# applications.
#
# NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR
# database requests.
#
# NOTE 2: When multiple tables share the same memcache
# database, each table should prepend its own unique string
# to the lookup key. Otherwise, automatic \fBpostscreen\fR(8)
# or \fBverify\fR(8) cache cleanup may not work.
#
# Examples:
#
# .nf
# key_format = aliases:%s
# key_format = verify:%s
# key_format = postscreen:%s
# .fi
#
# The \fBkey_format\fR parameter supports the following '%'
# expansions:
# .RS
# .IP "\fB%%\fR"
# This is replaced by a literal '%' character.
# .IP "\fB%s\fR"
# This is replaced by the memcache client input key.
# .IP "\fB%u\fR"
# When the input key is an address of the form user@domain,
# \fB%u\fR is replaced by the SQL quoted local part of the
# address. Otherwise, \fB%u\fR is replaced by the entire
# search string. If the localpart is empty, a lookup is
# silently suppressed and returns no results (an update is
# skipped with a warning).
# .IP "\fB%d\fR"
# When the input key is an address of the form user@domain,
# \fB%d\fR is replaced by the domain part of the address.
# Otherwise, a lookup is silently suppressed and returns no
# results (an update is skipped with a warning).
# .IP "\fB%[SUD]\fR"
# The upper-case equivalents of the above expansions behave
# in the \fBkey_format\fR parameter identically to their
# lower-case counter-parts.
# .IP "\fB%[1-9]\fR"
# The patterns %1, %2, ... %9 are replaced by the corresponding
# most significant component of the input key's domain. If
# the input key is \fIuser@mail.example.com\fR, then %1 is
# \fBcom\fR, %2 is \fBexample\fR and %3 is \fBmail\fR. If the
# input key is unqualified or does not have enough domain
# components to satisfy all the specified patterns, a lookup
# is silently suppressed and returns no results (an update
# is skipped with a warning).
# .RE
# .IP "\fBdomain (default: no domain list)\fR"
# This feature can significantly reduce database server load.
# Specify a list of domain names, paths to files, or "type:table"
# databases.
# When specified, only fully qualified search keys with a
# *non-empty* localpart and a matching domain are eligible
# for lookup or update: bare 'user' lookups, bare domain
# lookups and "@domain" lookups are silently skipped (updates
# are skipped with a warning). Example:
#
# .nf
# domain = example.com, hash:/etc/postfix/searchdomains
# .fi
# MEMCACHE ERROR CONTROLS
# .ad
# .fi
# .IP "\fBdata_size_limit (default: 10240)\fR"
# The maximal memcache reply data length in bytes.
# .IP "\fBline_size_limit (default: 1024)\fR"
# The maximal memcache reply line length in bytes.
# .IP "\fBmax_try (default: 2)\fR"
# The number of times to try a memcache command before giving
# up. The memcache client does not retry a command when the
# memcache server accepts no connection.
# .IP "\fBretry_pause (default: 1)\fR"
# The time in seconds before retrying a failed memcache command.
# .IP "\fBtimeout (default: 2)\fR"
# The time limit for sending a memcache command and for
# receiving a memcache reply.
# BUGS
# The Postfix memcache client cannot be used for security-sensitive
# tables such as \fBalias_maps\fR (these may contain
# "\fI|command\fR and "\fI/file/name\fR" destinations), or
# \fBvirtual_uid_maps\fR, \fBvirtual_gid_maps\fR and
# \fBvirtual_mailbox_maps\fR (these specify UNIX process
# privileges or "\fI/file/name\fR" destinations). In a typical
# deployment a memcache database is writable by any process
# that can talk to the memcache server; in contrast,
# security-sensitive tables must never be writable by the
# unprivileged Postfix user.
#
# The Postfix memcache client requires additional configuration
# when used as \fBpostscreen\fR(8) or \fBverify\fR(8) cache.
# For details see the \fBbackup\fR and \fBttl\fR parameter
# discussions in the MEMCACHE MAIN PARAMETERS section above.
# SEE ALSO
# postmap(1), Postfix lookup table manager
# postconf(5), configuration parameters
# README FILES
# .ad
# .fi
# Use "\fBpostconf readme_directory\fR" or
# "\fBpostconf html_directory\fR" to locate this information.
# .na
# .nf
# DATABASE_README, Postfix lookup table overview
# MEMCACHE_README, Postfix memcache client guide
# LICENSE
# .ad
# .fi
# The Secure Mailer license must be distributed with this software.
# HISTORY
# .ad
# .fi
# Memcache support was introduced with Postfix version 2.9.
# 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
#--