Linux 系统中 Sendmail 的安装与配置指南
Sendmail 是一款历史悠久且功能强大的邮件传输代理(MTA)软件,广泛应用于 Linux 和 Unix 系统中,它负责处理本地与远程邮件的传输、路由以及中继功能,是构建邮件服务器的核心组件之一,本文将详细介绍在 Linux 系统中安装、配置及测试 Sendmail 的完整流程,帮助用户快速搭建稳定的邮件服务环境。

Sendmail 的安装准备
在开始安装 Sendmail 之前,需确保系统满足基本要求并做好准备工作,推荐使用支持良好的 Linux 发行版,如 CentOS、RHEL、Debian 或 Ubuntu,确保系统已更新至最新状态,以避免兼容性问题,以 CentOS/RHEL 系统为例,执行以下命令更新系统:
sudo yum update -y
对于 Debian/Ubuntu 系统,使用:
sudo apt update && sudo apt upgrade -y
需确认系统是否已安装其他 MTA 软件(如 Postfix、Exim),避免冲突,若已安装,建议先卸载:
# CentOS/RHEL sudo yum remove postfix -y # Debian/Ubuntu sudo apt remove postfix -y
Sendmail 的安装步骤
Sendmail 的安装因 Linux 发行版而异,以下是主流系统的安装方法:
CentOS/RHEL 系统
使用 yum 包管理器安装 Sendmail 及相关组件:
sudo yum install sendmail sendmail-cf -y
sendmail 是核心程序,sendmail-cf 包含配置文件模板,便于自定义设置。
Debian/Ubuntu 系统
通过 apt 安装 Sendmail:
sudo apt install sendmail sendmail-bin -y
安装完成后,启动 Sendmail 服务并设置为开机自启:
# CentOS/RHEL sudo systemctl start sendmail sudo systemctl enable sendmail # Debian/Ubuntu sudo systemctl start sendmail sudo systemctl enable sendmail
Sendmail 的基本配置
Sendmail 的配置文件位于 /etc/mail/ 目录下,核心文件包括 sendmail.cf(主配置文件)和 access(访问控制列表)。

修改 sendmail.cf 文件
默认配置可能无法满足需求,建议先备份原文件:
sudo cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.bak
使用文本编辑器(如 vi 或 nano)修改 sendmail.cf,或通过 m4 宏生成器生成新配置,推荐使用 m4 方式,灵活性更高:
cd /etc/mail sudo cp sendmail.mc sendmail.mc.bak sudo vi sendmail.mc
在 sendmail.mc 中,可以修改监听地址、域名等信息,将 DAEMON_OPTIONS 中的 Addr=127.0.0.1 改为 Addr=0.0.0.0 以允许外部连接:
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
保存后,使用 m4 生成新的 sendmail.cf:
sudo m4 sendmail.mc > sendmail.cf
配置访问控制
编辑 /etc/mail/access 文件,添加允许发送邮件的域名或 IP 地址。
localhost.localdomain RELAY localhost RELAY 192.168.1.0/24 RELAY
执行以下命令使配置生效:
sudo makemap hash access.db < access
重启 Sendmail 服务
完成配置后,重启服务加载新设置:
sudo systemctl restart sendmail
测试 Sendmail 功能
安装并配置完成后,需测试 Sendmail 的收发功能是否正常。
本地测试
使用 mail 命令发送测试邮件:

echo "Test email body" | mail -s "Test Subject" user@example.com
若发送成功,检查收件邮箱是否收到邮件。
远程测试
通过 telnet 连接 Sendmail 的 SMTP 端口(默认 25),测试远程发送:
telnet localhost 25
输入以下命令(注意换行):
EHLO localhost MAIL FROM: sender@example.com RCPT TO: recipient@example.com DATA Subject: Remote Test This is a test email. . QUIT
若服务器返回 250 OK 等响应,说明远程发送功能正常。
常见问题与解决方案
邮件发送失败
- 检查 DNS 解析是否正确,确保域名 MX 记录配置无误。
- 查看
/var/log/maillog日志文件,定位错误原因(如权限问题、防火墙拦截)。
防火墙阻止连接
若外部无法连接,需开放 SMTP 端口(25):
# CentOS/RHEL (firewalld) sudo firewall-cmd --permanent --add-service=smtp sudo firewall-cmd --reload # Debian/Ubuntu (ufw) sudo ufw allow 25/tcp
中继被拒绝
确保 /etc/mail/access 中正确配置了允许中继的 IP 或域名,并执行 makemap 生成数据库。
Sendmail 作为经典的 MTA 软件,功能强大且高度可定制,适合需要灵活配置的邮件服务器场景,通过本文的步骤,用户可以在 Linux 系统中顺利完成 Sendmail 的安装、配置与测试,在实际应用中,还需结合安全策略(如启用 TLS 加密、配置 SPF/DKIM 记录)和性能优化(如调整队列参数、启用数据库缓存),以确保邮件服务的安全与高效。


















