首页 > 系统 > Linux > 正文

使用ubuntu搭建公网个人邮件服务器(基于postfix,dovecot,mysql)

2019-10-26 19:00:04
字体:
来源:转载
供稿:网友

前言

本教程基于 ubuntu 18.04(其他的 linux 理论上也是可以的,知识安装的软件包不一样)。用到的主要软件为:postfix,dovecot,mysql.废话不多说,下面是教程:

前置条件

mysql 数据库。本教程中使用 mysql 存储域名,用户信息等。 域名。需要有域名才能实现向公网发邮件/收邮件。这里以 test.com 为例。 ssl 证书。有不少免费的 ssl 证书提供商,或者使用自签证书,百度即可。

安装软件

切换到 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')            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表