# postmap - Postfix lookup table management - man(1) - [phpMan]

[_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 in Postfix 3.2 and later, by surrounding the key with
       double quote characters `"'. Within the double quotes, double quote  `"'  and  backslash  `\'
       characters can be included by quoting them with a preceding backslash.

       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/bodychecks/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 disables UTF-8 syntax checks on
              query keys and lookup results. Specify the **-U **option to force UTF-8 syntax checks any‐
              way.

              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
              FILE FORMAT for details).

              This feature is available in Postfix version 3.4 and later.

### -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/headerchecks/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 variables 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, RFC 6532,
              and RFC 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)
