Postfix en mysql

Afgelopen dagen heb ik bestudeerd hoe ik Postfix kan laten werken met mysql. Dat blijkt gelukkig erg eenvoudig! Voor deze uitleg ga ik uit van een werkende installatie van Postfix die via de /etc/postfix/virtual mail doorstuurt naar een extern adres.

De stappen zijn:

  • mysql database aanmaken
  • mysql databasegebruiker aanmaken
  • Postfix configureren

Mysql

Allereerst de database aanmaken:

nancy:~/# mysqladmin -u root -p create mail

Vervolgens de tabellen:

nancy:~/# mysql -u root -p

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'databasegebruiker'@'localhost' IDENTIFIED BY 'geheimwachtwoord';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'databasegebruiker'@'localhost.localdomain' IDENTIFIED BY 'geheimwachtwoord';
mysql> FLUSH PRIVILEGES;

mysql> USE mail;

CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;

CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;

CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) TYPE=MyISAM;

CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) TYPE=MyISAM;

Postfix configureren

De volgende bestanden zijn aangemaakt:

  • mysql-virtual_domains.cf
  • mysql-virtual_email2email.cf
  • mysql-virtual_forwardings.cf
  • mysql-virtual_mailbox_limit_maps.cf
  • mysql-virtual_mailboxes.cf
  • mysql-virtual_transports.cf

Volgende stap is het wijzigen van de main.cf

# Virtual domains:
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf

virtual_mailbox_base = /home/vmail
virtual_minimum_uid = 100
virtual_uid_maps = static:101
virtual_gid_maps = static:105

Tot slot doen we een postfix reload en is alles klaar! We hebben nu een Postfix installatie die via een mysql-database aangestuurd wordt. Volgende stap is om de ondersteuning voor pop toe te voegen. Maar dat is voor een volgende keer.