三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Linux系统Email服务搭建完整文档

Linux系统Email服务搭建完整文档

系统环境:CentOS 7
服务器IP:172.10.192.64
邮件域名:mail.test.com
组件:postfix(发邮件SMTP) + dovecot(收邮件POP3) + cyrus‑sasl(身份认证)

一、准备工作

1. 网络配置(配置静态IP)

  1. 使用root用户登录系统
  2. 进入网卡配置目录
cd /etc/sysconfig/network-scripts/
  1. 查看网卡配置文件,排除回环网卡lo
ll | grep ifcfg | grep -v lo

示例输出网卡:ifcfg‑ens192ifcfg‑ens195

  1. 编辑网卡配置文件(以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
  1. 重启网卡使网络配置生效
systemctl restart network

2. 切换YUM源

将CentOS7默认YUM源替换为阿里云国内源,提升软件包下载速度。

3. 修改主机名(邮件服务器域名:mail.test.com)

  1. 修改hostname文件
vim /etc/hostname

写入内容

mail.test.com
  1. 修改hosts解析
vim /etc/hosts

追加

172.10.192.64 mail.test.com
  1. 修改network配置
vim /etc/sysconfig/network

写入

HOSTNAME=mail.test.com
  1. 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,使用系统用户密码

八、常见排错

  1. 端口无法访问:检查firewalld放行端口,selinux是否关闭
setenforce 0
  1. postfix启动失败:执行postfix check检查配置文件语法
  2. 收不到邮件:查看日志 /var/log/maillog,邮件服务全部日志均输出到此文件
tail -f /var/log/maillog

参考资料

  1. CentOS7搭建简单的邮件服务器 - 秋夜雨巷 - 博客园
  2. linux搭建邮件服务器 - NAVYSUMMER - 博客园
  3. Linux下Postfix邮件服务器搭建 - 准备篇_Linux系统门户网站

提示:本教程为内网测试邮件服务器,公网使用需要配置DNSMX记录、SSL证书,否则邮件会被判定为垃圾邮件。

← 返回列表