CentOS 下如何正确配置 sendmail 服务?

CentOS 下 Sendmail 配置指南

Sendmail 是 Linux 系统中经典的邮件传输代理(MTA),在 CentOS 环境下通过合理配置可实现稳定高效的邮件服务,本文将系统介绍其装、核心参数调整及安全加固方法。

CentOS 下如何正确配置 sendmail 服务?

基础环境准备

在开始配置前,需确保系统满足以下条件:

  • 操作系统:CentOS 7/8(以 CentOS 7 为例)
  • 网络连通性:服务器可访问互联网(用于下载依赖包)
  • 防火墙规则:开放 SMTP 服务端口(默认 25/tcp

执行以下命令更新系统并安装 Sendmail 及相关工具:

yum update -y && yum install sendmail sendmail-cf m4 -y

Sendmail 核心配置文件解析

Sendmail 的配置主要通过修改 /etc/mail/sendmail.cf 实现,该文件由 m4 宏处理器生成,关键配置项如下表所示:

配置项 默认值 说明
DAEMON_OPTIONS Port=smtp 监听地址与端口,如需监听所有 IP 可改为 Port=smtp,Addr=0.0.0.0
LOCAL_DOMAIN 本地主机名 定义本地域名,发送邮件时自动补充后缀
MAILER(smtp 启用 SMTP 邮件传输协议
define(confAUTH_MECHANISMS`,`LOGIN PLAIN’)` 开启 SMTP 认证机制(可选)

⚠️ 注意:直接编辑 sendmail.cf 可能导致语法错误,建议通过修改宏配置文件 /etc/mail/sendmail.mc 后重新生成。

配置步骤详解

修改宏配置文件

使用文本编辑器打开 /etc/mail/sendmail.mc,根据需求调整以下参数:

CentOS 下如何正确配置 sendmail 服务?

  • 监听地址:若需允许外部连接,找到 dnl DAEMON_OPTIONS(Port=smtp,Addr=127.0.0.1,Name=MTA’)并去掉dnl` 注释,改为:
    DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0,Name=MTA')
  • 启用 SMTP 认证(可选):添加以下行支持用户密码认证:
    TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
    define(`confAUTH_OPTIONS', `A p')

生成新的配置文件

运行 m4 命令将 .mc 文件编译为 .cf

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

重启服务并设置开机自启

systemctl restart sendmail
systemctl enable sendmail

安全加固措施

为防止滥用,需进行以下安全配置:

  • 限制 relay 权限:编辑 /etc/mail/access,添加仅允许的网段或 IP:
    168.1 RELAY
    localhost.localdomain       RELAY

    执行 makemap hash /etc/mail/access.db < /etc/mail/access 生成数据库文件。

  • 关闭 Open Relay:确保 sendmail.cf 中未设置全局 relay 权限(默认已禁用)。
  • 启用 TLS 加密(可选):在 sendmail.mc 中添加证书路径:
    dnl # SSL/TLS configuration
    define(`confCACERT_PATH', '/etc/pki/tls/certs')
    define(`confSERVER_CERT', '/etc/pki/tls/certs/sendmail.pem')
    define(`confSERVER_KEY', '/etc/pki/tls/private/sendmail.key')

    生成自签名证书后重启服务。

测试与验证

  1. 本地发送测试
    echo "Test email" | mail -s "Subject" user@example.com
  2. 远程连接测试
    使用 telnet 连接 SMTP 端口,输入 SMTP 命令验证服务状态:
    telnet localhost 25
    EHLO example.com

    若返回 250-SIZE 等响应,说明服务正常。

    CentOS 下如何正确配置 sendmail 服务?

常见问题排查

若遇到邮件发送失败,可通过以下方式定位问题:

  • 查看日志:tail -f /var/log/maillog
  • 测试 DNS 解析:nslookup mx.example.com
  • 检查防火墙:firewall-cmd --list-ports 确认 25/tcp 已开放

相关问答 FAQs

Q1:为什么无法从外部发送邮件到本机?
A:可能原因包括:

  • 防火墙阻止了 25/tcp 端口,需执行 firewall-cmd --add-port=25/tcp --permanent 并重启防火墙;
  • DNS MX 记录未正确指向本机,需检查域名解析配置;
  • Sendmail 未监听公网 IP,需修改 sendmail.mc 中的 DAEMON_OPTIONS 参数。

Q2:如何配置 Sendmail 支持虚拟域用户?
A:需完成以下步骤:

  1. 安装 Cyrus SASL 支持:yum install cyrus-sasl-plain
  2. sendmail.mc 中添加认证机制:TRUST_AUTH_MECH(PLAIN LOGIN’)`;
  3. 创建虚拟域配置文件 /etc/mail/virtusertable,格式为 user@virtualdomain.com local_user
  4. 生成数据库:makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
  5. 重启 Sendmail 使配置生效。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-17 21:57
下一篇 2025-10-17 22:09

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信