    POSTMAP(1)                                                          POSTMAP(1)

    NAME
           postmap - Postfix lookup table management

    SYNOPSIS
           postmap [-Nbfhimnoprsvw] [-c config_dir] [-d key] [-q key]
                   [file_type:]file_name ...

    DESCRIPTION
           The postmap(1) command creates  or  queries  one  or  more
           Postfix  lookup  tables,  or  updates an existing one. The
           input and output file formats are expected to be  compati-
           ble with:

               makemap file_type file_name < file_name

           If the result files do not exist they will be created with
           the same group and other read permissions as their  source
           file.

           While  the table update is in progress, signal delivery is
           postponed, and an exclusive, advisory, lock is  placed  on
           the entire table, in order to avoid surprises in spectator
           processes.

    INPUT FILE FORMAT
           The format of a lookup table input file is as follows:

           o      A table entry has the form

                       key whitespace value

           o      Empty lines and whitespace-only lines are  ignored,
                  as  are  lines whose first non-whitespace character
                  is a `#'.

           o      A logical line starts with non-whitespace  text.  A
                  line  that starts with whitespace continues a logi-
                  cal line.

           The key and value are processed as is,  except  that  sur-
           rounding  white space is stripped off. Unlike with Postfix
           alias databases, quotes cannot be used to  protect  lookup
           keys that contain special characters such as `#' or white-
           space.

           By default the lookup key is mapped to lowercase  to  make
           the  lookups case insensitive; as of Postfix 2.3 this case
           folding happens only with tables  whose  lookup  keys  are
           fixed-case  strings  such  as  btree:, dbm: or hash:. With
           earlier versions, the  lookup  key  is  folded  even  with
           tables where a lookup field can match both upper and lower
           case text, such as regexp: and  pcre:.  This  resulted  in
           loss of information with $number substitutions.

    COMMAND-LINE ARGUMENTS
           -b     Enable message body query mode. When reading lookup
                  keys from standard input with "-q -",  process  the
                  input as if it is an email message in RFC 2822 for-
                  mat.  Each line of body content becomes one  lookup
                  key.

                  By  default, the -b option starts generating lookup
                  keys at the first non-header line, and  stops  when
                  the  end  of  the  message is reached.  To simulate
                  body_checks(5) processing, enable MIME parsing with
                  -m.  With  this,  the  -b option generates no body-
                  style lookup keys for attachment MIME  headers  and
                  for attached message/* headers.

                  This  feature  is  available in Postfix version 2.6
                  and later.

           -c config_dir
                  Read the main.cf configuration file  in  the  named
                  directory  instead  of  the  default  configuration
                  directory.

           -d key Search the specified maps for key  and  remove  one
                  entry  per  map.   The exit status is zero when the
                  requested information was found.

                  If a key value of - is specified, the program reads
                  key values from the standard input stream. The exit
                  status is zero when at least one of  the  requested
                  keys was found.

           -f     Do not fold the lookup key to lower case while cre-
                  ating or querying a table.

                  With Postfix version 2.3 and later, this option has
                  no  effect  for  regular  expression tables. There,
                  case folding is controlled by appending a flag to a
                  pattern.

           -h     Enable  message  header  query  mode.  When reading
                  lookup  keys  from  standard  input  with  "-q  -",
                  process  the  input as if it is an email message in
                  RFC 2822 format.  Each logical header line  becomes
                  one  lookup  key.  A  multi-line header becomes one
                  lookup key with one or more embedded newline  char-
                  acters.

                  By  default,  the  -h  option generates lookup keys
                  until the first non-header  line  is  reached.   To
                  simulate  header_checks(5)  processing, enable MIME
                  parsing with -m. With this, the -h option also gen-
                  erates header-style lookup keys for attachment MIME
                  headers and for attached message/* headers.

                  This feature is available in  Postfix  version  2.6
                  and later.

           -i     Incremental  mode. Read entries from standard input
                  and  do  not  truncate  an  existing  database.  By
                  default, postmap(1) creates a new database from the
                  entries in file_name.

           -m     Enable MIME parsing with "-b" and "-h".

                  This feature is available in  Postfix  version  2.6
                  and later.

           -N     Include  the terminating null character that termi-
                  nates  lookup  keys   and   values.   By   default,
                  postmap(1)  does  whatever  is  the default for the
                  host operating system.

           -n     Don't include the terminating null  character  that
                  terminates  lookup  keys  and  values.  By default,
                  postmap(1) does whatever is  the  default  for  the
                  host operating system.

           -o     Do  not  release  root privileges when processing a
                  non-root input file. By default,  postmap(1)  drops
                  root  privileges  and runs as the source file owner
                  instead.

           -p     Do not inherit the file access permissions from the
                  input file when creating a new file.  Instead, cre-
                  ate a new  file  with  default  access  permissions
                  (mode 0644).

           -q key Search  the  specified  maps  for key and write the
                  first value found to the  standard  output  stream.
                  The exit status is zero when the requested informa-
                  tion was found.

                  If a key value of - is specified, the program reads
                  key  values  from  the  standard  input  stream and
                  writes one line of key value output  for  each  key
                  that  was  found.  The  exit status is zero when at
                  least one of the requested keys was found.

           -r     When  updating  a  table,  do  not  complain  about
                  attempts to update existing entries, and make those
                  updates anyway.

           -s     Retrieve all database elements, and write one  line
                  of  key value output for each element. The elements
                  are printed in database order, which is not  neces-
                  sarily the same as the original input order.

                  This  feature  is  available in Postfix version 2.2
                  and later, and is not available  for  all  database
                  types.

           -v     Enable verbose logging for debugging purposes. Mul-
                  tiple -v options  make  the  software  increasingly
                  verbose.

           -w     When  updating  a  table,  do  not  complain  about
                  attempts to update  existing  entries,  and  ignore
                  those attempts.

           Arguments:

           file_type
                  The  database type. To find out what types are sup-
                  ported, use the "postconf -m" command.

                  The postmap(1) command can query any supported file
                  type,  but  it  can  create only the following file
                  types:

                  btree  The output  file  is  a  btree  file,  named
                         file_name.db.   This is available on systems
                         with support for db databases.

                  cdb    The  output  consists  of  one  file,  named
                         file_name.cdb.  This is available on systems
                         with support for cdb databases.

                  dbm    The output  consists  of  two  files,  named
                         file_name.pag  and  file_name.dir.   This is
                         available on systems with  support  for  dbm
                         databases.

                  hash   The  output  file  is  a  hashed file, named
                         file_name.db.  This is available on  systems
                         with support for db databases.

                  sdbm   The  output  consists  of  two  files, named
                         file_name.pag and  file_name.dir.   This  is
                         available  on  systems with support for sdbm
                         databases.

                  When no file_type is specified, the  software  uses
                  the  database  type specified via the default_data-
                  base_type configuration parameter.

           file_name
                  The name of  the  lookup  table  source  file  when
                  rebuilding a database.

    DIAGNOSTICS
           Problems  are  logged  to the standard error stream and to
           syslogd(8).   No  output  means  that  no  problems   were
           detected.  Duplicate  entries  are skipped and are flagged
           with a warning.

           postmap(1) terminates with zero exit  status  in  case  of
           success  (including  successful  "postmap  -q" lookup) and
           terminates with non-zero exit status in case of failure.

    ENVIRONMENT
           MAIL_CONFIG
                  Directory with Postfix configuration files.

           MAIL_VERBOSE
                  Enable verbose logging for debugging purposes.

    CONFIGURATION PARAMETERS
           The following main.cf parameters are  especially  relevant
           to this program.  The text below provides only a parameter
           summary. See postconf(5) for more details including  exam-
           ples.

           berkeley_db_create_buffer_size (16777216)
                  The  per-table  I/O  buffer  size for programs that
                  create Berkeley DB hash or btree tables.

           berkeley_db_read_buffer_size (131072)
                  The per-table I/O buffer  size  for  programs  that
                  read Berkeley DB hash or btree tables.

           config_directory (see 'postconf -d' output)
                  The  default  location  of  the Postfix main.cf and
                  master.cf configuration files.

           default_database_type (see 'postconf -d' output)
                  The default database type for use in newaliases(1),
                  postalias(1) and postmap(1) commands.

           syslog_facility (mail)
                  The syslog facility of Postfix logging.

           syslog_name (see 'postconf -d' output)
                  The  mail  system  name  that  is  prepended to the
                  process name in syslog  records,  so  that  "smtpd"
                  becomes, for example, "postfix/smtpd".

    SEE ALSO
           postalias(1), create/update/query alias database
           postconf(1), supported database types
           postconf(5), configuration parameters
           syslogd(8), system logging

    README FILES
           DATABASE_README, Postfix lookup table overview

    LICENSE
           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

                                                                        POSTMAP(1)