MEMCACHE_TABLE(5)                                            MEMCACHE_TABLE(5)

       memcache_table - Postfix memcache client configuration

       postmap -q "string" memcache:/etc/postfix/filename

       postmap -q - memcache:/etc/postfix/filename <inputfile

       The  Postfix  mail system uses optional tables for address
       rewriting or mail routing. These tables are usually in dbm
       or db format.

       Alternatively,  lookup tables can be specified as memcache
       instances.  In order to use  memcache  lookups,  define  a
       memcache source as a lookup table in, for example:

           virtual_alias_maps = memcache:/etc/postfix/

       The file  /etc/postfix/  has  the  same
       format  as  the  Postfix  file, and specifies the
       parameters described below.

       The Postfix memcache client supports the lookup and update

       hosts (default: localhost:11211)
              The  memcache servers that Postfix will try to con-
              nect to.  Specify a hostname or address, optionally
              followed  by  ":"  and  a  port name or number. The
              default port is 11211.  Examples:

                  hosts =

       key_format (default: %s)
              Format of the lookup and update  keys  in  memcache
              queries.   By  default,  these  are the same as the
              lookup and update keys that are given to the  Post-
              fix memcache client.

              When  the  same  memcache database is used to cache
              information from multiple tables, you can  use  the
              key_format  feature  to  avoid  name  collisions by
              prepending a fixed string.  Examples:

                  key_format = aliases:%s
                  key_format = access:%s

              The key_format parameter supports the following '%'

              %%     This is replaced by a literal '%' character.

              %s     This is  replaced  by  the  memcache  client
                     input key.

              %u     When the input key is an address of the form
                     user@domain,  %u  is  replaced  by  the  SQL
                     quoted  local  part  of the address.  Other-
                     wise, %u 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 warn-

              %d     When the input key is an address of the form
                     user@domain,  %d  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).

              %[SUD] The  upper-case  equivalents  of  the  above
                     expansions  behave in the key_format parame-
                     ter identically to their lower-case counter-

              %[1-9] The  patterns %1, %2, ... %9 are replaced by
                     the corresponding most significant component
                     of  the input key's domain. If the input key
                     is, then %1 is com, %2
                     is  example and %3 is mail. If the input key
                     is  unqualified  or  does  not  have  enough
                     domain  components to satisfy all the speci-
                     fied patterns, a  lookup  is  silently  sup-
                     pressed and returns no results (an update is
                     skipped with a warning).

       domain (default: no domain list)
              This  feature  can  significantly  reduce  database
              server load.  Specify a list of domain names, paths
              to files, or dictionaries.   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:

                  domain =, hash:/etc/postfix/searchdomains

       flags (default: 0)
              Optional  flags  that should be stored along with a
              memcache update.

       ttl (default: 604800)
              The expiration time in seconds of memcache updates.
              The default is one week.

              When  using  memcache  tables with postscreen(8) or
              verify(8), specify a zero  *_cache_cleanup_interval
              value,  and specify the largest postscreen(8) *_ttl
              value or verify(8) *_expire_time value as the  mem-
              cache map's ttl value.

              Note: 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.

       The Postfix memcache client is based on libmemcache, which
       will  terminate  its  process after a memcache server goes
       down. To avoid this, set  up  redundant  memcache  servers
       that have no common source of failure.

       The  Postfix  memcache client cannot be used for security-
       sensitive tables such as  alias_maps  (these  may  contain
       "|command   and   "/file/name"   destinations),   or  vir-
       tual_uid_maps and  virtual_gid_maps  (these  specify  UNIX
       process  privileges).   In a typical deployment a memcache
       database is shared via a  TCP  socket,  and  is  therefore
       writable  not only by Postfix, but by any process that can
       talk to the memcache server.

       The Postfix memcache client requires additional configura-
       tion  when  used with the postscreen(8) and verify(8) dae-
       mons.  For details see the ttl parameter discussion at the
       end of the MEMCACHE PARAMETERS section in this document.

       The Postfix memcache client is supported only with libmem-
       cache version 1.4.0.  Some libmemcache features are  docu-
       mented  by  reading  libmemcache  source  code,  instead a
       proper API.

       postmap(1), Postfix lookup table manager
       postconf(5), configuration parameters

       DATABASE_README, Postfix lookup table overview
       MEMCACHE_README, Postfix memcache client guide

       The  Secure  Mailer  license must be distributed with this

       The first memcache client for Postfix was written by  Omar
       Kilani.   Besides  being  implemented on libmemcache, this
       implementation bears no resemblance to his work.

       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA