Skip to content

Latest commit

 

History

History
82 lines (61 loc) · 2.67 KB

postfix.markdown

File metadata and controls

82 lines (61 loc) · 2.67 KB

Postfix

Last modified: 20-08-2010 00:53:35

First install postfix with mysql map support, choosing 'Internet site' when prompted.

$ aptitude install postfix-mysql

Basic setup...

$ postconf -e 'myorigin = $mydomain'
$ postconf -e 'mydestination = localhost'

$ postconf -e 'virtual_mailbox_base = /var/mail/'
$ postconf -e 'virtual_mailbox_domains = mysql:/etc/postfix/virtual_mailbox_domains.cf'
$ postconf -e 'virtual_mailbox_maps = mysql:/etc/postfix/virtual_mailbox_maps.cf'
$ postconf -e 'virtual_alias_maps = mysql:/etc/postfix/virtual_alias_maps.cf'

$ mysql -u root -p
mysql> CREATE DATABASE vmail;
mysql> GRANT ALL ON vmail.* TO 'vmail'@'localhost' IDENTIFIED BY 'your_password';

$ mysql -u vmail -p vmail < virtual_mailbox.sql

:::MySQL
DROP VIEW IF EXISTS `view_mailboxes`;
DROP VIEW IF EXISTS `view_aliases`;
DROP TABLE IF EXISTS `mailboxes`;
DROP TABLE IF EXISTS `aliases`;
DROP TABLE IF EXISTS `domains`;

CREATE TABLE `domains` (
   `id` INT(11) NOT NULL auto_increment,
   `name` VARCHAR(50) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `unique_name` (`name`)
) ENGINE=InnoDB ;

CREATE TABLE `mailboxes` (
   `id` INT(11) NOT NULL auto_increment,
   `domain_id` INT(11) NOT NULL,
   `name` VARCHAR(40) NOT NULL,
   `password` VARCHAR(48) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `unique_email` (`domain_id`,`name`),
   FOREIGN KEY (`domain_id`) REFERENCES `domains`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;

CREATE TABLE `aliases` (
   `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
   `domain_id` INT(11) NOT NULL,
   `source` VARCHAR(40) NOT NULL,
   `destination` VARCHAR(80) NOT NULL,
   FOREIGN KEY (`domain_id`) REFERENCES domains(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;

CREATE VIEW `view_mailboxes` AS
	SELECT CONCAT(m.name, '@', d.name) as email, m.password as password
	FROM mailboxes m, domains d
	WHERE m.domain_id = d.id;

CREATE VIEW `view_aliases` AS
	SELECT CONCAT(a.source, '@', d.name) as source, a.destination as destination
	FROM aliases a, domains d
	WHERE a.domain_id = d.id;

INSERT INTO `domains` (`name`) VALUES ('alas.dk̈́');
INSERT INTO `mailboxes` (`domain_id`,`name`,`password`) VALUES (1,'morten','/fdJ/Wzs4sTS+KvbPqmbygDTk0dETf3b37CK4eMRaCmqlURS');
INSERT INTO `aliases` (`domain_id`,`source`,`destination`) VALUES (1,'spicedham','morten@alas.dk');

# dovecot lda
dovecot   unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

$ postconf -e 'virtual_transport = dovecot'
$ adduser --system --uid 5000 --group vmail

Message (and thus attachment) size limit defaults to 10MB

$ postconf -e 'message_size_limit = 51200000'