SYNOPSIS

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

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


DESCRIPTION

       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 PostgreSQL  databases.
       In  order  to  use  PostgreSQL lookups, define a PostgreSQL source as a
       lookup table in main.cf, for example:
           alias_maps = pgsql:/etc/pgsql-aliases.cf

       The file /etc/postfix/pgsql-aliases.cf has the same format as the Post-
       fix main.cf file, and can specify the parameters described below.


ALTERNATIVE CONFIGURATION

       For  compatibility with other Postfix lookup tables, PostgreSQL parame-
       ters can also be defined in main.cf.  In order to do that,  specify  as
       PostgreSQL source a name that doesn't begin with a slash or a dot.  The
       PostgreSQL parameters will then be accessible as the name you've  given
       the source in its definition, an underscore, and the name of the param-
       eter.  For example, if the map is specified as  "pgsql:pgsqlname",  the
       parameter  "hosts"  below  would  be  defined  in  main.cf  as  "pgsql-
       name_hosts".

       Note: with this form, the passwords  for  the  PostgreSQL  sources  are
       written in main.cf, which is normally world-readable.  Support for this
       form will be removed in a future Postfix version.


LIST MEMBERSHIP

       When using SQL to store  lists  such  as  $mynetworks,  $mydestination,
       $relay_domains,  $local_recipient_maps, etc., it is important to under-
       stand that the table must store each list member as a separate key. The
       table  lookup  verifies  the *existence* of the key. See "Postfix lists
       versus tables" in the DATABASE_README document for a discussion.

       Do NOT create tables that return the full list of domains in  $mydesti-
       nation or $relay_domains etc., or IP addresses in $mynetworks.

       DO create tables with each matching item as a key and with an arbitrary
       value. With SQL databases it is not uncommon to return the  key  itself
       or a constant value.


PGSQL PARAMETERS

       hosts  The  hosts  that  Postfix will try to connect to and query from.
              Specify unix: for UNIX-domain sockets, inet: for TCP connections
              (default).  Example:
                  hosts = host1.some.domain host2.some.domain
                  hosts = unix:/file/name

                  user = someone
                  password = some_password

       dbname The database name on the servers. Example:
                  dbname = customer_database

       The  following  parameters  can  be  used  to fill in a SELECT template
       statement of the form:
           select [select_field] from [table] where
               [where_field] = '$lookup' [additional_conditions]

       $lookup contains the search string, and is escaped so  if  it  contains
       single quotes or other odd characters, it will not cause a parse error,
       or worse, a security problem.

       select_field
              The SQL "select" parameter. Example:
                  select_field = forw_addr

       table  The SQL "select .. from" table name. Example:
                  table = mxaliases

       where_field
              The SQL "select .. where" parameter. Example:
                  where_field = alias

       additional_conditions
              Additional conditions to the SQL query. Example:
                  additional_conditions = and status = 'paid'

       The following parameters provide ways to override  the  default  SELECT
       statement.   Setting them will instruct Postfix to ignore the above ta-
       ble, select_field, where_field and additional_conditions parameters:

       query  This parameter specifies a complete SQL query. Example:
                  query = select forw_addr from mxaliases where
                      alias = '%s' and status = 'paid'

              This parameter supports the following '%' expansions:

              %s     This is replaced by the input key.  Quoting  is  used  to
                     make  sure  that  the  input  key does not add unexpected
                     metacharacters.

              %u     When the input key is an address of the form user@domain,
                     %u  is  replaced by the quoted local part of the address.
                     If no domain is specified, %u is replaced by  the  entire
                     search string.

              %d     When the input key is an address of the form user@domain,
                     %d is replaced by the quoted domain part of the  address.
                     When  the  input  key  has  no  domain  qualifier,  %d is

              treated as if the key was not in the dictionary.

              Future versions will allow functions to return result sets.


SEE ALSO

       postmap(1), Postfix lookup table manager
       postconf(5), configuration parameters
       ldap_table(5), LDAP lookup tables
       mysql_table(5), MySQL lookup tables


README FILES

       Use  "postconf readme_directory" or "postconf html_directory" to locate
       this information.
       DATABASE_README, Postfix lookup table overview
       PGSQL_README, Postfix PostgreSQL client guide


LICENSE

       The Secure Mailer license must be distributed with this software.


HISTORY

       PgSQL support was introduced with Postfix version 2.1.


AUTHOR(S)

       Based on the MySQL client by:
       Scott Cotton, Joshua Marcus
       IC Group, Inc.

       Ported to PostgreSQL by:
       Aaron Sethman

       Further enhanced by:
       Liviu Daia
       Institute of Mathematics of the Romanian Academy
       P.O. BOX 1-764
       RO-014700 Bucharest, ROMANIA



                                                                PGSQL_TABLE(5)

Man(1) output converted with man2html