CentOS 7.9 搭建 Postfix 邮件服务器

一、安装 DNS

在搭建邮件服务器之前,首先需要安装和配置 DNS 服务,因为邮件系统依赖 DNS 来进行域名解析和反向解析。以下步骤说明如何在 CentOS 7.9 上安装并配置 DNS 服务。

1. 安装 DNS 服务

使用 yum 安装 bind 和相关工具。

bash
[root@localhost ~]# yum -y install bind bind-utils bind-chroot
  • bind:这是用于域名解析的 DNS 服务器。
  • bind-utils:提供一些常用的工具,如 dignslookup,用于 DNS 查询和调试。
  • bind-chroot:提供将 bind 运行在 chroot 环境中的选项,以提高安全性。
2. 配置 DNS

配置完安装包后,需要对 DNS 服务进行一些配置,确保它能够正确解析域名。

1)修改 bind 主配置文件 /etc/named.conf

bash
[root@localhost ~]# sed -i -e 's/127.0.0.1/any/' -e 's/localhost/any/' /etc/named.conf

这里的操作将 bind 配置为监听所有 IP 地址,而不仅仅是 127.0.0.1(本地地址),以便外部也能访问。

3. 配置正向解析

在 DNS 配置中,需要设置正向解析,以便通过域名解析 IP 地址。步骤如下:

1)配置 named.rfc1912.zones 文件:

bash
[root@localhost ~]# vim /etc/named.rfc1912.zones

在文件中添加以下内容来定义正向解析的区域:

bash
zone "yangxingzhen.net" IN {
type master;
file "yangxingzhen.net.zone";
allow-update { none; };
};

zone "3.168.192.in-addr.arpa" IN {
type master;
file "192.168.3.arpa";
allow-update { none; };
};

  • zone “yangxingzhen.net”:设置域名 yangxingzhen.net 的正向解析区域,解析该域名下的主机。
  • zone “3.168.192.in-addr.arpa”:配置该子网的反向解析区域,通常用于将 IP 地址映射回域名(反向 DNS)。

通过配置这些区域,DNS 服务器将能够进行正常的域名解析和反向解析。

4. 创建 DNS 区域文件

1)为正向解析创建 yangxingzhen.net.zone 文件:

bash
[root@localhost ~]# vim /var/named/yangxingzhen.net.zone

添加以下内容:

bash
\(TTL 86400
@ IN SOA ns1.yangxingzhen.net. root.yangxingzhen.net. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL

@ IN NS ns1.yangxingzhen.net.
@ IN A 192.168.3.10
www IN A 192.168.3.10

  • SOA(Start of Authority)记录定义了 DNS 区域的起始点。
  • NS 记录指定该域名的 DNS 服务器。
  • A 记录将主机名映射到 IP 地址,www 解析为 192.168.3.10

2)为反向解析创建 192.168.3.arpa 文件:

bash
[root@localhost ~]# vim /var/named/192.168.3.arpa

添加以下内容:

bash
\)TTL 86400
@ IN SOA ns1.yangxingzhen.net. root.yangxingzhen.net. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL

@ IN NS ns1.yangxingzhen.net.
10 IN PTR www.yangxingzhen.net.

  • PTR 记录用于反向解析,10 IN PTR www.yangxingzhen.net. 表示 IP 地址 192.168.3.10 对应 www.yangxingzhen.net
5. 启动并验证 DNS 服务

1)启用并启动 named 服务:

bash
[root@localhost ~]# systemctl enable named
[root@localhost ~]# systemctl start named

2)检查 DNS 服务是否正常运行:

bash
[root@localhost ~]# systemctl status named

如果服务启动成功,DNS 配置已正确生效。

3)使用 dignslookup 工具检查 DNS 配置:

bash
[root@localhost ~]# dig yangxingzhen.net

此命令将返回 yangxingzhen.net 域名的解析信息。

二、安装 Postfix 邮件服务器

安装和配置 Postfix 邮件服务器是搭建邮件系统的核心部分。Postfix 是一个开源的邮件传输代理(MTA),用于发送、接收和转发邮件。它与其他 MTA(如 Sendmail)相比,因其安全性、性能和易配置而广泛使用。

1. 安装 Postfix

首先,确保你的系统软件包已更新,然后安装 Postfix

bash
[root@localhost ~]# yum -y update
[root@localhost ~]# yum -y install postfix

安装完成后,启用并启动 Postfix 服务。

bash
[root@localhost ~]# systemctl enable postfix
[root@localhost ~]# systemctl start postfix

检查 Postfix 服务状态,确保它正在运行。

bash
[root@localhost ~]# systemctl status postfix
2. 配置 Postfix

Postfix 安装后,配置文件通常位于 /etc/postfix/main.cf。你需要根据你的需求对其进行修改。

1)编辑 main.cf 配置文件:

bash
[root@localhost ~]# vim /etc/postfix/main.cf

确保配置文件中包含以下内容:

bash
# 设置域名
myhostname = mail.yangxingzhen.net

# 配置邮件域名
mydomain = yangxingzhen.net

# 配置邮件系统的主机名
myorigin = \(mydomain
# 允许的域名和邮件中继
mydestination = \)myhostname, localhost.\(mydomain, localhost, \)mydomain
# 邮件传输代理协议
inet_interfaces = all

# 邮件交换(MX)服务器设置
mynetworks = 127.0.0.0/8 [::1]/128

# 配置SMTP端口
smtp_tls_security_level = may
smtp_tls_loglevel = 1

# 配置 Postfix SMTP 认证
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/certs/mail.crt
smtpd_tls_key_file = /etc/ssl/private/mail.key

解释:

  • myhostname:设置邮件服务器的主机名,通常是你域名的子域名,如 mail.yangxingzhen.net
  • mydomain:设置邮件服务器的域名。
  • mydestination:指定允许接受邮件的域名,通常是邮件服务器本身及其域名。
  • inet_interfaces:决定邮件服务器监听的接口,设置为 all 表示所有接口。
  • mynetworks:设置允许与本机通信的网络(如 localhost 和局域网 IP)。
  • smtp_tls_security_levelsmtpd_tls_security_level:配置 SSL/TLS 加密传输邮件。
3. 配置邮件用户和邮箱

1)创建邮件用户:

首先,确保你在系统上创建了适当的用户帐户。每个用户将对应一个邮箱。

bash
[root@localhost ~]# useradd user1
[root@localhost ~]# passwd user1

2)为每个用户创建邮箱:

创建邮箱的方式通常是通过创建对应的目录。例如,为 user1 创建一个邮箱目录:

bash
[root@localhost ~]# mkdir /var/spool/mail/user1
[root@localhost ~]# chown user1:user1 /var/spool/mail/user1
4. 配置防火墙

如果系统启用了防火墙,确保允许邮件服务器的端口(如 25587465)通过。使用 firewalldiptables 配置防火墙规则。

1)允许 Postfix 使用的端口:

bash
[root@localhost ~]# firewall-cmd --permanent --add-service=smtp
[root@localhost ~]# firewall-cmd --permanent --add-service=smtp-submission
[root@localhost ~]# firewall-cmd --permanent --add-port=587/tcp
[root@localhost ~]# firewall-cmd --reload

2)确认防火墙规则生效:

bash
[root@localhost ~]# firewall-cmd --list-all
5. 配置 SSL/TLS(可选)

如果你想加密邮件的传输,生成或使用 SSL/TLS 证书来加密 SMTP 连接。

1)生成 SSL 证书(可使用 Let’s Encrypt 等工具,或者使用自签名证书):

bash
[root@localhost ~]# mkdir /etc/ssl/private
[root@localhost ~]# openssl genpkey -algorithm RSA -out /etc/ssl/private/mail.key
[root@localhost ~]# openssl req -new -key /etc/ssl/private/mail.key -out /etc/ssl/certs/mail.csr
[root@localhost ~]# openssl x509 -req -days 365 -in /etc/ssl/certs/mail.csr -signkey /etc/ssl/private/mail.key -out /etc/ssl/certs/mail.crt

2)编辑 main.cf 配置文件,指定证书和私钥的路径:

bash
smtpd_tls_cert_file = /etc/ssl/certs/mail.crt
smtpd_tls_key_file = /etc/ssl/private/mail.key
6. 测试邮件发送和接收

一旦完成了配置,你可以使用 telnetswaks 工具进行测试,或者直接使用邮件客户端发送和接收邮件。

1)使用 telnet 测试 SMTP 连接:

bash
[root@localhost ~]# telnet mail.yangxingzhen.net 25

如果能成功连接并开始交互,说明 Postfix 配置正常。

2)从客户端发送邮件:

配置你的邮件客户端(如 Outlook 或 Thunderbird)指向你的邮件服务器,并尝试发送和接收邮件。


三、总结

通过以上步骤,你已经在 CentOS 7.9 系统上搭建了一个基本的 Postfix 邮件服务器。此邮件服务器配置了 DNS 解析、Postfix 安装和基本配置、以及 SSL/TLS 加密传输和防火墙设置。你可以通过配置更多的高级特性(如垃圾邮件过滤、SPF、DKIM 等)来进一步增强邮件服务器的功能和安全性。