MYSQL_TABLE(5)                                     MYSQL_TABLE(5)

NAME
       mysql_table - Postfix MySQL client configuration

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

       postmap -q - mysql:/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 /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)