前言
本教程基于 ubuntu 18.04(其他的 linux 理论上也是可以的,知识安装的软件包不一样)。用到的主要软件为:postfix,dovecot,mysql.废话不多说,下面是教程:
前置条件
安装软件
切换到 root 用户下,执行以下命令:
apt updateapt install postfix postfix-mysql dovecot-core dovecot-pop3d dovecot-imapd dovecot-lmtpd dovecot-mysql
安装过程中 postfix 会弹出提示:
这里我们选择第二项:Internet Site。
接着会有如下提示:
这里填入:test.com
配置mx 解析
在域名提供商增加以下解析:
MX 记录:test.com 指向 服务器IP A 记录:pop3.test.com 指向 服务器IP A 记录:smtp.test.com 指向 服务器IP创建 mysql 数据库
新建一个数据库 mailserver,管理账号为:admin/123456
创建虚拟域表,作为认证域。该表是邮件服务器用以接收邮件的域名:
-- 建立表CREATE TABLE `virtual_domains` (`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入一条记录insert into virtual_domains values(1,'test.com')
创建用户表,用于用户身份认证。
-- 创建用户表CREATE TABLE `virtual_users` (`id` INT NOT NULL AUTO_INCREMENT,`domain_id` INT NOT NULL,`password` VARCHAR(106) NOT NULL,`email` VARCHAR(120) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `email` (`email`),FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入两个用户,以md5加密密码,实际应用中应该选择强度更高的算法,md5目前以及不安全了insert into virtual_users values(1,1,md5('123456'),'first@test.com');insert into virtual_users values(2,1,md5('123456'),'second@test.com');
创建别名表.该表作用相当于当 source 收到邮件时,该邮件会自动转发到 destination 上。
-- 创建表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=InnoDB DEFAULT CHARSET=utf8;-- 插入数据,所有发给first的邮件都会自动转发给secondinsert into virtual_aliases values(1,1,'first@test.com','second@test.com')
新闻热点
疑难解答