SMTP测试环境搭建指南
更新时间: 2026/02/04
在Gitcode上查看源码

本模块用于指导如何搭建本地SNMP Trap测试环境

下载 hMailServer

通过hMailServer官网 https://www.hmailserver.com/download 下载,默认安装即可

配置 hMailServer

启动 hMailServer

启动需要选择用户,使用默认用户,输入安装时填写的密码即可启动

添加域名(即发送和接收邮箱的域名)

此处以 openubmc.com 为例

添加邮箱账户(后续配置客户端邮箱需要使用到此处的邮箱名和密码)

此处以 sender@openubmc.com, receiver0@openubmc.com 为例

添加路由

添加SSL证书(启用TLS协议时需要配置SMTP服务器证书)

若没有SSL证书则点击此处跳转到制作证书

设置IP地址范围(作为防火墙以及流量控制)

默认有ipv4的地址范围, 直接设置即可

若需要使用ipv6, 则需要手动添加ipv6范围

设置TPC/IP端口(SMTP服务器会对设置的端口进行监听)

需要配置的端口有:25, 110, 143, 465

若需要使用ipv6, 则需要额外再配置ipv6地址的端口,只需要将ip地址修改为 :: 即可。此处仅展示25端口,其他三个端口需要同样方式修改

配置客户端(接收邮箱)

此处以 outlook 邮箱为例, 添加账户: 文件 -> 信息 -> 添加账户(打开高级选项, 选中让我手动设置我的账户)

账户类型选择 IMAP

接收邮件使用143端口, 加密方法需要与 hMailServer 中设置的 25 端口一致。待发邮件使用465端口, 加密方法需要与 hMailServer 中设置的 465 端口一致

BMC发送邮件通知测试

进入邮件通知页面: 维护诊断 -> 告警上报 -> 邮件通知

需要配置的内容如下:

  • 配置SMTP服务器地址为启动hMailServer的服务器IP
  • 配置端口为25, 不启用TLS
  • 配置发件用户名、密码和邮件地址
  • 配置接收告警的邮件地址, 并设置状态为开启

点击测试即可发送邮件通知

使用加密发送邮件通知

加密发送则使用465端口,此处校验端服务器证书需要提前导入对应的CA证书,CA证书可以自己自制,参考制作证书

使用ipv6协议发送邮件通知

前提

  • BMC开启了ipv6使能,并正确配置ipv6地址,BMC能通过ipv6地址与SMTP服务器的ipv6地址通信
  • hMailServer 版本大于或等于5.4(可以通过 Help->About 查询当前版本)

配置iprange

设置IP地址范围中的ipv6部分

配置ipv6地址的端口

设置TPC/IP端口中的ipv6部分

发送邮件通知测试

制作证书

  • 此处使用 OpenSSL 创建一个自签名的 CA(证书颁发机构)证书,并用它签发一个用于 SMTP 服务器的证书

创建项目目录

bash
# 进入项目目录后创建子目录
mkdir -p ca/private ca/certs ca/csr smtp-server/private smtp-server/csr smtp-server/certs config

生成 CA 私钥

bash
openssl genrsa -out ca/private/ca.key 4096
chmod 600 ca/private/ca.key  # 仅 root 可读写

创建 CA 自签名证书

bash
# 创建 CA 请求配置文件
cat > config/ca-req.cnf <<EOF
[ req ]
default_bits        = 4096
distinguished_name  = req_distinguished_name
prompt              = no

[ req_distinguished_name ]
C  = CN
ST = GuangDong
L  = DongGuan
O  = MyOrg Internal CA
CN = MyOrg Root CA
EOF

# 生成 CA 的 CSR
openssl req -new \
    -key ca/private/ca.key \
    -out ca/csr/ca.csr \
    -config config/ca-req.cnf

# 创建 CA 证书扩展配置
cat > config/ca.ext <<EOF
[ ca_cert ]
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, keyCertSign, cRLSign
subjectKeyIdentifier = hash
EOF

# 自签名生成合规的 CA 证书(有效期 10 年)
openssl x509 -req \
    -in ca/csr/ca.csr \
    -signkey ca/private/ca.key \
    -sha256 \
    -days 3650 \
    -out ca/certs/ca.crt \
    -extfile config/ca.ext \
    -extensions ca_cert

为 SMTP 服务器生成私钥

bash
openssl genrsa -out smtp-server/private/smtp-server.key 2048
chmod 600 smtp-server/private/smtp-server.key

生成 SMTP 服务器的 CSR

bash
# 创建 SMTP 服务器 CSR 配置(含 SAN)
cat > config/smtp-req.cnf <<EOF
[ req ]
default_bits        = 2048
distinguished_name  = req_distinguished_name
req_extensions      = req_ext
prompt              = no

[ req_distinguished_name ]
C  = CN
ST = GuangDong
L  = DongGuan
O  = MyOrg
CN = smtp.example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = smtp.example.com
DNS.2 = mail.example.com
# DNS.3 = your-backup-host.example.com  # 按需添加
# IP.1 = 192.168.1.100                 # 如需支持 IP 地址
EOF

openssl req -new \
    -key smtp-server/private/smtp-server.key \
    -out smtp-server/csr/smtp-server.csr \
    -config config/smtp-req.cnf

创建 X.509 扩展配置文件

bash
cat > config/smtp.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = smtp.example.com
DNS.2 = mail.example.com
# DNS.3 = your-backup-host.example.com
# IP.1 = 192.168.1.100
EOF

使用 CA 签发 SMTP 服务器证书

bash
openssl x509 -req \
    -in smtp-server/csr/smtp-server.csr \
    -CA ca/certs/ca.crt \
    -CAkey ca/private/ca.key \
    -CAcreateserial \
    -out smtp-server/certs/smtp-server.crt \
    -days 730 \
    -sha256 \
    -extfile config/smtp.ext

最终产物

文件路径描述用途/重要性
ca/private/ca.keyCA 私钥,4096位长度非常重要 - 创建自签名CA证书和签发服务器证书所需的核心私钥,必须妥善保管
ca/certs/ca.crt自签名的CA根证书,有效期10年非常重要 - 用于客户端信任以及签发其他证书,需要导入到客户端的信任存储库中
smtp-server/private/smtp-server.keySMTP服务器私钥,2048位长度非常重要 - 配合SMTP服务器证书使用的私钥,确保安全传输,必须妥善保管
smtp-server/csr/smtp-server.csrSMTP服务器的证书签名请求(CSR),包含公钥和标识信息可选保留 - 签发证书后可删除,用于向CA申请证书时提供身份验证信息
smtp-server/certs/smtp-server.crt由内部CA签发的SMTP服务器证书,适用于SMTP服务,有效期2年重要 - 部署于SMTP服务器上,与私钥一起使用来加密通信,并通过客户端验证服务器的身份

补充说明

  • ca/private/ca.keysmtp-server/private/smtp-server.key: 这些是敏感的私钥文件,应该严格保护其访问权限,避免未经授权的访问。
  • ca/certs/ca.crt: 该证书需被分发并导入到所有希望连接至受保护的SMTP服务器的客户端的信任存储区中,以便建立信任链。
  • smtp-server/certs/smtp-server.crt: 该证书与对应的私钥一起部署在SMTP服务器上,为邮件传输提供加密和身份验证服务。