Connect postfix to postgres


Connect postfix to postgres

cf. https://wiki.gentoo.org/wiki/Complete_Virtual_Mail_Server/Postfix_to_Database#Postgres

/etc/postfix/main.cf

#
# Settings required to support virtual mail delivery using lookups in
# the Postgres database.
#

# A list of all virtual domains serviced by this instance of postfix.
virtual_mailbox_domains = pgsql:/etc/postfix/pgsql/virtual_mailbox_domains.cf

# Look up the mailbox location based on the email address received.
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql/virtual_mailbox_maps.cf

# Any aliases that are supported by this system
virtual_alias_maps = pgsql:/etc/postfix/pgsql/virtual_alias_maps.cf
/etc/postfix/pgsql/virtual_alias_maps.cfvirtual_alias_maps
# virtual_alias_maps.cf
user            = postfix
password        = $password
dbname          = postfix
#hosts          = localhost
query           = SELECT goto FROM alias WHERE address='%s' AND active='1';

Run the query on the database to verify its output:

# psql -U postfix postfix
postfix=>SELECT goto FROM alias WHERE address='[email protected]' AND active='1';

       goto       
------------------
 [email protected]
(1 row)

Make Postfix use this database mapping:

# postconf -e virtual_alias_maps=pgsql:/etc/postfix/pgsql/virtual_alias_maps.cf

Test if the mapping file works as expected:

# postmap -q [email protected] pgsql:/etc/postfix/pgsql/virtual_alias_maps.cf