    MYSQL_TABLE(5)                                     MYSQL_TABLE(5)

    NAME
           mysql_table - Postfix MySQL client configuration

    SYNOPSIS
           postmap -q "string" mysql:/usr/local/etc/postfix/filename

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

           The file /usr/local/etc/postfix/mysql-aliases.cf has the same format
           as the Postfix main.cf file, and can specify  the  parame-
           ters described below.

    ALTERNATIVE CONFIGURATION
           For  compatibility with other Postfix lookup tables, MySQL
           parameters can also be defined in main.cf.  In order to do
           that,  specify  as  MySQL source a name that doesn't begin
           with a slash or a dot.  The MySQL parameters will then  be
           accessible as the name you've given the source in its def-
           inition, an underscore, and the  name  of  the  parameter.
           For example, if the map is specified as "mysql:mysqlname",
           the parameter "hosts" below would be defined in main.cf as
           "mysqlname_hosts".

           Note:  with this form, the passwords for the MySQL 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, $mydes-
           tination,  $relay_domains, $local_recipient_maps, etc., it
           is important to understand 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  $mydestination 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.

    MYSQL 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

                  The hosts are tried in random order, with all  con-
                  nections  over  UNIX  domain  sockets  being  tried
                  before those over TCP.  The connections  are  auto-
                  matically  closed  after  being  idle  for  about 1
                  minute, and are  re-opened  as  necessary.  Postfix
                  versions  2.0 and earlier do not randomize the host
                  order.

                  NOTE: if you specify localhost as a hostname  (even
                  if you prefix it with inet:), MySQL will connect to
                  the  default  UNIX  domain  socket.   In  order  to
                  instruct MySQL to connect to localhost over TCP you
                  have to specify
                      hosts = 127.0.0.1

           user, password
                  The user name and password to log  into  the  mysql
                  server.  Example:
                      user = someone
                      password = some_password

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

           The  following  parameters  are  used  to fill in a SELECT
           query template 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'

    SEE ALSO
           postmap(1), Postfix lookup table maintenance
           postconf(5), configuration parameters
           ldap_table(5), LDAP lookup tables
           pgsql_table(5), PostgreSQL lookup tables

    README FILES
           DATABASE_README, Postfix lookup table overview
           MYSQL_README, Postfix MYSQL client guide

    LICENSE
           The  Secure  Mailer  license must be distributed with this
           software.

    HISTORY
           MySQL support was introduced with Postfix version 1.0.

    AUTHOR(S)
           Original implementation by:
           Scott Cotton, Joshua Marcus
           IC Group, Inc.

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

                                                       MYSQL_TABLE(5)