注:
- Oracle 提供的免费实验室环境中提供了本教程。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室后,请使用特定于您的云环境的这些值替换这些值。
了解如何在 Oracle Linux 上使用 STARTTLS 安装和配置 Postfix
简介
本教程展示如何在 Oracle Linux 系统上安装和设置 Postfix 电子邮件服务器软件,以便通过 STARTTLS 加密和验证在网络中发送消息。本教程以 Oracle Linux 8 或更高版本的用户为目标。
Postfix 是一台邮件传输代理 (Mail Transfer Agent, MTA) 服务器,该服务器是作为 sendmail 的替换开发的,这是许多早期 Linux 系统上的默认 MTA 服务器。由于其基于管道的模块化架构,Postfix 具备多功能性,可以与许多其他服务(例如垃圾邮件和防病毒处理)以及消息存储软件(例如 Dovecot IMAP 和 POP 服务器)轻松集成。
至少应该配置 Postfix 来支持 STARTTLS,以便通过 SMTP 连接执行 TLS/SSL 验证和加密。使用 STARTTLS 有助于保护通信的完整性。
本教程介绍了如何设置和配置 Postfix 以主要用作简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 服务器。
目标
完成此实验室后,您将能够:
- 设置服务器主机名
- 使用相应的防火墙规则安装 Postfix
- 生成自签名 TLS 证书
- 将 Postfix 配置为使用 STARTTLS 发送电子邮件并验证完整性
- 使用
mailx发送测试电子邮件 - 查看 Postfix 邮件队列
先决条件
- 具有 Oracle Linux 8 的任何系统
安装 Postfix
注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用情况说明。
-
使用软件包管理器在实例上安装
postfix软件包,如下所示:sudo dnf install -y postfix -
允许通过服务器防火墙进行 SMTP 通信:
sudo firewall-cmd --zone=public --add-service=smtp --permanentsudo firewall-cmd --reload -
如果存在
sendmail软件包,请将其删除:sudo dnf remove -y sendmail -
将 Postfix 设置为默认邮件传输代理:
sudo alternatives --set mta /usr/sbin/sendmail.postfix -
启用和启动 Postfix 服务:
sudo systemctl enable --now postfix
生成 TLS 证书
为此实验,生成并使用自签名的 TLS 证书。在生产环境中,Oracle 强烈建议使用由外部证书颁发机构 (CA) 签名的 TLS/SSL 证书。有关更多信息,请参见 https://docs.oracle.com/en/operating-systems/oracle-linux/certmanage/。
-
使用软件包管理器在实例上安装
openssl软件包,如下所示:sudo dnf install -y openssl -
创建 RSA 私钥和自签名 X.509 测试证书:
hostname=$(hostname -f)sudo openssl req -new -x509 -days 1 -nodes -newkey rsa:2048 -keyout private.key \ -out public.cert -subj "/C=US/ST=Ca/L=Sunnydale/CN=$hostname" -
将 RSA 私钥复制到
/etc/pki/tls/private目录:sudo cp private.key /etc/pki/tls/private/ -
将自签名 X.509 测试证书复制到
/etc/pki/tls/certs目录:sudo cp public.cert /etc/pki/tls/certs/
使用 STARTTLS 配置 Postfix
-
为默认 Postfix 配置创建备份:
sudo mv /etc/postfix/main.cf /etc/postfix/main.cf.bak -
编辑配置文件
/etc/postfix/main.cf,以包含类似如下的行:sudo tee -a /etc/postfix/main.cf > /dev/null <<EOF myhostname = $(hostname -f) myorigin = \$myhostname inet_interfaces = all inet_protocols = all mydestination = \$myhostname, localhost mynetworks = 192.168.1.0/24, 127.0.0.0/8, 10.0.0.0/24 home_mailbox = mail/ # Additional STARTTLS configuration settings tls_random_source=dev:/dev/urandom # SMTPD TLS configuration for incoming connections smtpd_use_tls = yes smtpd_tls_cert_file = /etc/pki/tls/certs/public.cert smtpd_tls_key_file = /etc/pki/tls/private/private.key smtpd_tls_security_level = may # SMTP TLS configuration for outgoing connections smtp_use_tls = yes smtp_tls_cert_file = /etc/pki/tls/certs/public.cert smtp_tls_key_file = /etc/pki/tls/private/private.key smtp_tls_security_level = may EOF注意:从单个主机发送电子邮件足以满足此实验的目的。在生产环境中,应将
mydomain设置为要从中发送电子邮件的注册域名。有关更多信息,请阅读 Postfix 手册页。 -
重新启动 Postfix 服务:
sudo systemctl restart postfix
发送测试电子邮件
-
安装
mailx电子邮件客户端:sudo dnf install -y mailx -
将测试电子邮件发送到您自己的外部电子邮件地址。在
mailx命令中更新主机名,以匹配要从中发送电子邮件的实例:hostname=$(hostname -f)echo "External email" | mailx -r root@$hostname -s "Test email subject" admin@example.com注意:使用
mailx从单个主机发送测试电子邮件足以满足此实验的目的。在生产环境中,您应在发件人电子邮件地址内使用您在/etc/postfix/main.cf中配置的注册域,例如root@example.com。 -
检查您自己的电子邮件帐户中的新消息。您可能需要检查垃圾邮件文件夹。
-
如果未显示电子邮件,您可以检查 Postfix 邮件队列:
sudo mailq -
您也可以查看 Postfix 日志。按 Ctrl + C 退出:
sudo tail -f /var/log/maillog
更多学习资源
在 docs.oracle.com/learn 上浏览其他实验室,或者在 Oracle Learning YouTube 渠道上访问更多免费学习内容。此外,访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Learn to Install and Configure Postfix With STARTTLS on Oracle Linux
F47875-07
February 2023
Copyright © 2021, Oracle and/or its affiliates.