postfix+Dovecot自建邮箱服务器

一、准备工作

  • 部署环境
1. 服务器:VMware虚拟机1c1t+1g内存
2. linux系统:CentOS7.6
3. DNS+postfix+Dovecot
  • 修改服务器主机名,需要保证服务器名称与发信域名一致
vim /etc/hostname
内容如下:
mail.zyj.com
  • 关闭防火墙(生产环境放行相应端口25/110)
systemctl stop firewalld

二、搭建DNS服务

自行搭建部署dns服务器,为电子邮件服务器和客户端提供dns解析

  • 安装dns相关软件包
yum install -y bind*
  • 相关的几个配置文件
  1. 主配置文件:/etc/named.conf 定义bind服务程序运行相关的参数
  2. 区域配置文件:/etc/named.rfc1912.zones 用于定义域名和IP地址对应关系的所在路径
  3. 数据配置文件目录:/var/named/ 用于定义域名和IP地址真实对应关系的数据配置文件
  • 修改主配置文件listen-onallow-query参数
vim /etc/named.conf
更改内容如下:
options {
        listen-on port 53 { any; };  ## any表示服务器上所有iP均可提供DNS域名解析
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };            ## any表示允许所有人对本服务器发送dns查询请求
        allow-transfer { key master-slave; };
  • 修改区域配置文件(除注释文件外,可以只保留下面这段配置)
vim /etc/named.rfc1912.zones
更改内容如下:
zone "zyj.com" IN {               ##双引号内自定义域名
        type master;              
        file "zyj.com.zone";      ##定义域名与IP解析规则文件位置
        allow-update { none; };
};
  • 修改域名数据文件
cp -a /var/named/named.localhost /var/named/zyj.com.zone   ##拷贝模板,-a 参数保留原始文件属性
内容如下:
$TTL 1D
@       IN SOA  zyj.com. root.zyj.com.  (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS             ns.zyj.com.
ns      IN A           192.168.31.220
@       IN MX 10       mail.zyj.com.
mail    IN A           192.168.31.220
  • 修改本地dns地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
添加或修改DNS,内容如下:
DNS1:192.168.31.220
  • 检查dns配置是否正确,并重启dns服务,加入开机启动。
named-checkconf && systemctl restart named
systemctl enable named
  • 重启网络
systemctl restart network
  • 测试DNS服务是否生效
[[email protected] ~]# nslookup mail.zyj.com
Server:		192.168.31.220
Address:	192.168.31.220#53

Name:	mail.zyj.com
Address: 192.168.31.220

三、部署postfix

  • 安装postfix
yum install -y postfix
  • 修改pstfix主配置文件
vim /etc/postfix/main.cf
修改以下配置段:
myhostname = mail.zyj.com   ##文件内行号76,取消注释,定义主机名变量,后续参数会调用
mydomain = zyj.com          ##文件内行号83,取消注释,定义邮件域的变量
myorigin = $mydomain        ##文件内行号99,取消注释,调用mydomain变量
inet_interfaces = 192.168.31.220       ##文件内行号116,取消注释,指定对外提供邮件服务的IP,可以设定为all即全部
mydestination = $myhostname, $mydomain ##文件内行号163,取消注释,定义可以接受邮件的主机名和域名
  • 创建电子邮件登录账户
useradd cxsw
echo "zyj.com" | passwd --stdin cxsw
  • 启动postfix并加入开机启动
systemctl start postfix && systemctl enable postfix

四、部署Dovecot

  • 安装Dovecot
yum install dovecot -y
  • 修改dovecot的主配置文件
vim /etc/dovecot/dovecot.conf
内容如下:
protocols = imap pop3 lmtp                  ##定义电子邮箱支持的协议
disable_plaintext_auth= no                  ##允许用户明文进行密码验证(暂未开启加密,所以需要添加该参数允许用户明文登录)
login_trusted_networks = 192.168.31.0/24   ##定义能够使用电子邮件系统的IP或网段
  • 定义邮件格式和存储路径
vim /etc/dovecot/conf.d/10-mail.conf
内容如下:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
  • 切换到邮件登录账户,并创建保存邮件的目录
su - cxsw
mkdir -p mail/.imap/INBOX
exit
  • 启动dovecot并加入开机启动
systemctl start dovecot
systemctl enable dovecot

五、测试电子邮件系统

  • windows端设置dns

image

  • 使用foxmail测试

打开foxmail —— 选择手动设置

image

分别填入之前设置的,邮箱账户和服务器域名

image

  • 发送测试邮件

image

  • linux端使用mail查看邮件
[[email protected] ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 cxsw                  Sat Mar  9 01:17  46/1671  "TEST"
& 
Message  1:
From [email protected]  Sat Mar  9 01:17:58 2019
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Date: Sat, 9 Mar 2019 01:17:52 +0800
From: cxsw <[email protected]>
To: root <[email protected]>
Subject: TEST
X-Priority: 3
X-Has-Attach: no
X-Mailer: Foxmail 7.2.9.156[cn]
Content-Type: multipart/alternative;
	boundary="----=_001_NextPart737254205886_=----"
Status: R

Content-Type: text/plain;
	charset="GB2312"


这是一封测试邮件,邮件系统搭建完成――赵宇杰


cxsw
&

六、其他一些问题

  • 云服务器部署

基本操作步骤相似,可以不搭建DNS服务。只需在域名控制台中加入相应解析即可

主域名                    A                                    @                                   192.168.31.220
邮件域名                A                                     mail                                192.168.31.220
邮件服务器             MX                                 @                                   mail.zyj.com
反垃圾配置             TXT                                @                                  v=spf1 a mx -all

以阿里云为例,还需申请开启25端口(默认关闭,且必须调用第三方smtp服务。)

image

image

image

image

明确指出,只能使用第三方的SMTP服务器外发邮件。

  • 注意事项

邮件服务器在设定mynetworks时,不要设置为all,届时会导致很多服务器将该服务器作为中转邮件服务器,最终导致该邮件服务器发送的邮件被qq,163,gamil,这些邮件服务商标记为垃圾邮件。