postmap - Postfix lookup table management
postmap [-bfFhimnNoprsuUvw] [-c config_dir] [-d
   key] [-q key]
 [file_type:]file_name ...
The postmap(1) 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 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.
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-whitespace 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) will concatenate the file content (with a newline
    character inserted 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 double 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.
  - -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 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) 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. 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 anyway. 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 creating 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. 
- -F
- When querying a map, or listing a map, base64-decode each value. When
      creating a map 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
- 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 5322 format. Each logical 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) processing, enable MIME parsing with -m.
        With this, the -h option also generates header-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. 
- -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 terminates 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, create 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
      information was found.
    Note: this performs a single query with the key as specified,
        and does not make iterative queries with substrings of the key as
        described for access(5), canonical(5), transport(5), virtual(5) 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
- 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 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
- Disable UTF-8 support. UTF-8 support is enabled by default when
      "smtputf8_enable = yes". It requires that keys and values are
      valid UTF-8 strings.
- -U
- With "smtputf8_enable = yes", force UTF-8 syntax checks with the
      -b and -h options.
- -v
- Enable verbose logging for debugging purposes. Multiple -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 supported, 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.
- 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 concurrent writes and reads from different processes,
      unlike other supported file-based tables. This is available on systems
      with support for lmdb 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_database_type configuration
    parameter.
 
  - file_name
- The name of the lookup table source file when rebuilding a database.
Problems are logged to the standard error stream and to syslogd(8) or
  postlogd(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.
  - MAIL_CONFIG
- Directory with Postfix configuration files.
- MAIL_VERBOSE
- Enable verbose logging for debugging purposes.
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 examples.
  - 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.
- 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 example, "smtpd" becomes "prefix/smtpd".
Available in Postfix 2.11 and later:
  - lmdb_map_size (16777216)
- The initial OpenLDAP LMDB database size limit in bytes.
postalias(1), create/update/query alias database
postconf(1), supported database types
postconf(5), configuration parameters
postlogd(8), Postfix logging
syslogd(8), system logging
Use "postconf readme_directory" or "postconf
  html_directory" to locate this information.
DATABASE_README, Postfix lookup table overview
The Secure Mailer license must be distributed with this software.
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