# phpman > man > postmap(1)

[POSTMAP(1)](https://www.chedong.com/phpMan.php/man/POSTMAP/1/markdown)                             General Commands Manual                            [POSTMAP(1)](https://www.chedong.com/phpMan.php/man/POSTMAP/1/markdown)



## NAME
       postmap - Postfix lookup table management

## SYNOPSIS
       **postmap** [**-bfFhimnNoprsuUvw**] [**-c** _config_dir_] [**-d** _key_] [**-q** _key_]
               [_file_type_:]_file_name_ ...

## DESCRIPTION
       The  [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown)  command  creates or queries one or more Postfix lookup tables, or updates an
       existing one.

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

       While  the table update is in progress, signal delivery is postponed, and an exclusive, advi‐
       sory, 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:

       •      A table entry has the form

                   _key_ whitespace _value_

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

       •      A  logical  line  starts  with non-whitespace text. A line that starts with whitespace
              continues a logical line.

       The _key_ and _value_ are processed as is, except that surrounding white space is  stripped  off.
       Whitespace in lookup keys is supported as of Postfix 3.2.

       When  the **-F** option is given, the _value_ must specify one or more filenames separated by comma
       and/or whitespace; [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) will concatenate the file content (with a newline character in‐
       serted between files) and will store the base64-encoded result instead of the _value_.

       When  the _key_ specifies email address information, the localpart should be enclosed with dou‐
       ble quotes if required by RFC 5322. For example, an address localpart that contains ";", or a
       localpart that starts or ends with ".".

       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 -q
              **-**", process the input as if it is an email message in RFC 5322 format.  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)](https://www.chedong.com/phpMan.php/man/checks/5/markdown) process‐
              ing,  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.

              NOTE: with "smtputf8_enable = yes", the **-b** option option disables UTF-8 syntax  checks
              on  query  keys and lookup results. Specify the **-U** option to force UTF-8 syntax checks
              anyway.

              This feature is available in Postfix version 2.6 and later.

### -c
              Read the **main.cf** configuration file in the named directory instead of the default con‐
              figuration directory.

### -d
              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

              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.

### -F
              from  source  file, process each value as a list of filenames, concatenate the content
              of those files, and store the base64-encoded result instead of the  value  (see  INPUT
              FORMAT for details).

### -h
              "**-q** **-**", process the input as if it is an email message in RFC 5322 format.  Each logi‐
              cal  header  line  becomes  one lookup key. A multi-line header becomes one lookup key
              with one or more embedded newline characters.

              By default, the **-h** option generates lookup keys until the  first  non-header  line  is
              reached.   To  simulate **header**___**[checks**(5)](https://www.chedong.com/phpMan.php/man/checks/5/markdown) processing, enable MIME parsing with **-m**. With
              this, the **-h** option also generates header-style lookup keys for attachment MIME  head‐
              ers and for attached message/* headers.

              NOTE:  with "smtputf8_enable = yes", the **-b** option option disables UTF-8 syntax checks
              on query keys and lookup results. Specify the **-U** option to force UTF-8  syntax  checks
              anyway.

              This feature is available in Postfix version 2.6 and later.

### -i
              database. By default, [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) creates a new database from the entries in **file**___**name**.

### -m -b -h

              This feature is available in Postfix version 2.6 and later.

### -N
              fault, [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) does whatever is the default for the host operating system.

### -n
              By default, [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) does whatever is the default for the host operating system.

### -o
              [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) drops root privileges and runs as the source file owner instead.

### -p
              file.  Instead, create a new file with default access permissions (mode 0644).

### -q
              put stream. The exit status is zero when the requested information was found.

              Note: this performs a single query with the key as specified, and does not make itera‐
              tive queries with substrings of the key  as  described  for  [access(5)](https://www.chedong.com/phpMan.php/man/access/5/markdown),  [canonical(5)](https://www.chedong.com/phpMan.php/man/canonical/5/markdown),
              [transport(5)](https://www.chedong.com/phpMan.php/man/transport/5/markdown), [virtual(5)](https://www.chedong.com/phpMan.php/man/virtual/5/markdown) and other Postfix table-driven features.

              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
              make those updates anyway.

### -s
              ment. The elements are printed in database order, which is not necessarily 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.

### -u
              yes". It requires that keys and values are valid UTF-8 strings.

### -U -b -h

### -v -v
              increasingly verbose.

### -w
              ignore those attempts.

       Arguments:

       _file_type_
              The database type. To find out what types are supported, use the  "**postconf**  **-m**"  com‐
              mand.

              The  [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown)  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 sys‐
                     tems 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.

              **fail**   A  table  that  reliably  fails all requests. The lookup table name is used for
                     logging only. This table exists to simplify Postfix error tests.

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

              **lmdb**   The  output is a btree-based file, named _file_name_**.lmdb**.  **lmdb** supports concur‐
                     rent  writes  and  reads  from  different  processes,  unlike  other  supported
                     file-based  tables.   This  is available on systems with support for **lmdb** data‐
                     bases.

              **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**___**database**___**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)](https://www.chedong.com/phpMan.php/man/syslogd/8/markdown) or [**postlogd**(8)](https://www.chedong.com/phpMan.php/man/postlogd/8/markdown).  No output
       means  that  no  problems were detected. Duplicate entries are skipped and are flagged with a
       warning.

       [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) terminates with zero exit status in case of success (including successful "**postmap**
### -q

## 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)](https://www.chedong.com/phpMan.php/man/postconf/5/markdown) for more details including examples.

       **berkeley**___**db**___**create**___**buffer**___**size** **(16777216)**
              The per-table I/O buffer size for programs that create Berkeley DB hash or  btree  ta‐
              bles.

       **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)](https://www.chedong.com/phpMan.php/man/newaliases/1/markdown), [**postalias**(1)](https://www.chedong.com/phpMan.php/man/postalias/1/markdown) and [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) com‐
              mands.

       **import**___**environment** **(see** **'postconf** **-d'** **output)**
              The list of environment parameters that a privileged Postfix process will import  from
              a non-Postfix parent process, or name=value environment overrides.

       **smtputf8**___**enable** **(yes)**
              Enable preliminary SMTPUTF8 support for the protocols described in RFC 6531..6533.

       **syslog**___**facility** **(mail)**
              The syslog facility of Postfix logging.

       **syslog**___**name** **(see** **'postconf** **-d'** **output)**
              A  prefix  that is prepended to the process name in syslog records, so that, for exam‐
              ple, "smtpd" becomes "prefix/smtpd".

       Available in Postfix 2.11 and later:

       **lmdb**___**map**___**size** **(16777216)**
              The initial OpenLDAP LMDB database size limit in bytes.

## SEE ALSO
       [postalias(1)](https://www.chedong.com/phpMan.php/man/postalias/1/markdown), create/update/query alias database
       [postconf(1)](https://www.chedong.com/phpMan.php/man/postconf/1/markdown), supported database types
       [postconf(5)](https://www.chedong.com/phpMan.php/man/postconf/5/markdown), configuration parameters
       [postlogd(8)](https://www.chedong.com/phpMan.php/man/postlogd/8/markdown), Postfix logging
       [syslogd(8)](https://www.chedong.com/phpMan.php/man/syslogd/8/markdown), system logging

## README FILES
       Use "**postconf** **readme**___**directory**" or "**postconf** **html**___**directory**" to locate this information.
       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

       Wietse Venema
       Google, Inc.
       111 8th Avenue
       New York, NY 10011, USA



                                                                                          [POSTMAP(1)](https://www.chedong.com/phpMan.php/man/POSTMAP/1/markdown)
