Linux系统Email服务搭建完整文档
系统环境:CentOS 7
服务器IP:172.10.192.64
邮件域名:mail.test.com
组件:postfix(发邮件SMTP) + dovecot(收邮件POP3) + cyrus‑sasl(身份认证)
一、准备工作
1. 网络配置(配置静态IP)
- 使用
root用户登录系统 - 进入网卡配置目录
cd /etc/sysconfig/network-scripts/
- 查看网卡配置文件,排除回环网卡lo
ll | grep ifcfg | grep -v lo
示例输出网卡:
ifcfg‑ens192、ifcfg‑ens195
- 编辑网卡配置文件(以ens192为例)
vim ifcfg-ens192
修改/追加如下配置项
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.10.192.64
NETMASK=255.255.255.0
GATEWAY=172.10.192.2
DNS1=114.114.114.114
- 重启网卡使网络配置生效
systemctl restart network
2. 切换YUM源
将CentOS7默认YUM源替换为阿里云国内源,提升软件包下载速度。
3. 修改主机名(邮件服务器域名:mail.test.com)
- 修改hostname文件
vim /etc/hostname
写入内容
mail.test.com
- 修改hosts解析
vim /etc/hosts
追加
172.10.192.64 mail.test.com
- 修改network配置
vim /etc/sysconfig/network
写入
HOSTNAME=mail.test.com
- hostnamectl命令即时生效主机名
hostnamectl hostname mail.test.com
4. 防火墙处理
二选一:直接关闭防火墙 或者 放行邮件服务端口
方式1:关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
方式2:防火墙放行邮件端口
邮件服务端口说明:
25/tcp:SMTP发送邮件110/tcp:POP3接收邮件
firewall-cmd --zone=public --add-port=25/tcp --permanent
firewall-cmd --zone=public --add-port=110/tcp --permanent
firewall-cmd --reload
# 查看已放行端口
firewall-cmd --list-ports
5. 安装邮件相关服务组件
yum -y install postfix dovecot cyrus-sasl
二、Postfix配置(SMTP邮件发送服务)
主配置文件:/etc/postfix/main.cf
vim /etc/postfix/main.cf
修改/取消注释、新增以下参数,注意等号两边保留空格
#邮件服务器主机名
myhostname = mail.test.com
#邮件域名
mydomain = test.com
#对外发邮件的邮件后缀
myorigin = $mydomain
#监听本机所有网卡
inet_interfaces = all
#禁止接收外部未知域名邮件
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#允许本地网段
mynetworks = 127.0.0.0/8,172.10.192.0/24
#开启sasl认证,防止匿名转发
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
校验postfix配置语法,无报错代表配置正确
postfix check
三、Dovecot配置(POP3邮件接收服务)
3.1 修改dovecot主配置
vim /etc/dovecot/dovecot.conf
修改
#监听所有协议
protocols = pop3
3.2 修改pop3协议配置
vim /etc/dovecot/conf.d/10-mail.conf
修改邮件存储路径
mail_location = mbox:~/mail:INBOX=/var/mail/%u
3.3 修改认证配置,允许明文密码(内网测试使用)
vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
3.4 修改监听端口配置
vim /etc/dovecot/conf.d/10-pop3.conf
确保如下配置开启
pop3_listen = *
pop3s_listen =
四、cyrus‑sasl认证配置
vim /etc/sasl2/smtpd.conf
写入配置
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN
五、服务开机自启与启动服务
#停止系统自带sendmail(防止端口冲突)
systemctl stop sendmail
systemctl disable sendmail#启动postfix并设置开机自启
systemctl start postfix
systemctl enable postfix#启动dovecot并设置开机自启
systemctl start dovecot
systemctl enable dovecot#启动saslauthd认证服务
systemctl start saslauthd
systemctl enable saslauthd
查看服务运行状态
systemctl status postfix
systemctl status dovecot
systemctl status saslauthd
端口验证,确认25、110端口监听
netstat -tulnp | grep -E "25|110"
预期结果:postfix占用25端口,dovecot占用110端口
六、创建邮件系统用户
postfix使用系统本地用户作为邮件账号,不需要额外数据库。创建两个测试用户 user1、user2
useradd user1
passwd user1useradd user2
passwd user2
账号:user1@test.com 、user2@test.com,密码为设置的系统用户密码
七、收发邮件测试
方式1:服务器本地命令行测试
1. 使用telnet测试SMTP发送邮件(25端口)
yum install telnet -y
telnet 172.10.192.64 25
telnet交互完整示例
ehlo test.com
auth login
#输入base64编码后的用户名user1
dXNlcjE=
#输入base64编码后的user1密码
cGFzc3dvcmQxMjM=
mail from:<user1@test.com>
rcpt to:<user2@test.com>
data
subject:test mail
hello,this is test email
.
quit
2. telnet测试POP3接收邮件(110端口)
telnet 172.10.192.64 110
交互示例
user user2
pass 用户密码
list
retr 1
quit
方式2:查看本地邮件文件
邮件存储路径 /var/mail/用户名
cat /var/mail/user2
方式3:客户端软件测试(Thunderbird/Foxmail)
- SMTP服务器:
mail.test.com端口:25,无加密 - POP3服务器:
mail.test.com端口:110,无加密 - 账号:user1@test.com / user2@test.com,使用系统用户密码
八、常见排错
- 端口无法访问:检查firewalld放行端口,selinux是否关闭
setenforce 0
- postfix启动失败:执行
postfix check检查配置文件语法 - 收不到邮件:查看日志
/var/log/maillog,邮件服务全部日志均输出到此文件
tail -f /var/log/maillog
参考资料
- CentOS7搭建简单的邮件服务器 - 秋夜雨巷 - 博客园
- linux搭建邮件服务器 - NAVYSUMMER - 博客园
- Linux下Postfix邮件服务器搭建 - 准备篇_Linux系统门户网站
提示:本教程为内网测试邮件服务器,公网使用需要配置DNSMX记录、SSL证书,否则邮件会被判定为垃圾邮件。