3. Mysql 安装与配置
为方便管理Mysql, 建议装个phpMyAdmin, 运行phpMyAdmin就需要安装Nginx以及Php.
phpMyAdmin 效果界面如图:

可以用命令行,也可以通过phpMyAdmin,创建数据库ts_mail:
mysql> CREATE DATABASE ts_mail;
mysql> use ts_mail;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO ts_mail@localhost
mysql> FLUSH PRIVILEGES;
CREATE TABLE `virtual_domains` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO ts_mail.virtual_domains (name) VALUES ('otherhill.com');
你想加几个域名,就加几个域名.
INSERT INTO `ts_mail`.`virtual_domains`
(`id` ,`name`)
VALUES
('1', 'unusebamboo.vip'),
('2', 'mail.unusebamboo.vip');
接下来是用户表:
CREATE TABLE `virtual_users` (
`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`password` varchar(106) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
数据表中密码不要用明文.我们使用sha512编码.
[root@localhost opt]# doveadm pw -s SHA512-CRYPT -p "abcdefg" -r 5000
{SHA512-CRYPT}$6$cbus.94.MiabC2Rd$MmITsuAz0nzqjrAhfKUubFDupDKE.rTocy1ECrNxQ/lAmz8l8XhGt3/6kF7XvxWQ8Nb7WQoSvirIn9aNdp.CN/
使用dovecot自带的工具doveadm,生成sha512编码.上面就是密码abcdefg的sha512编码.
INSERT INTO ts_mail.virtual_users (domain_id, password , email) VALUES ('1', '
$6$cbus.94.MiabC2Rd$MmITsuAz0nzqjrAhfKUubFDupDKE.rTocy1ECrNxQ/lAmz8l8XhGt3/6kF7XvxWQ8Nb7WQoSvirIn9aNdp.CN/', 'i@otherhill.com');
或者用这个,效果也一样:
INSERT INTO `ts_mail`.`virtual_users`
(`domain_id`, `password` , `email`)
VALUES
('1', ENCRYPT('abcdefg', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'i@otherhill.com')
CREATE TABLE `virtual_aliases` (
`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO ts_mail.virtual_aliases (domain_id, source, destination) VALUES ('1', 'i@otherhill.com', 'root@otherhill.com');
别名, 就是只有一个邮箱,但是对外它有多个名称.