服务器测评网
我们一直在努力

Linux搭建Sendmail如何配置并确保邮件正常发送?

Linux系统下Sendmail服务的搭建与配置

Sendmail简介与环境准备

Sendmail是一款历史悠久、功能强大的邮件传输代理(MTA)软件,广泛应用于Linux/Unix系统中,负责邮件的发送、接收与中转,在开始搭建前,需确保系统已满足基本条件:推荐使用CentOS 7/Ubuntu 20.04等主流发行版,具备root权限或sudo权限,并确保网络连通性(若需外发邮件)。

Linux搭建Sendmail如何配置并确保邮件正常发送?

首先更新系统软件包列表,确保基础环境稳定,以CentOS为例,执行:

sudo yum update -y  

对于Ubuntu系统,使用:

sudo apt update && sudo apt upgrade -y  

安装Sendmail及相关组件

Sendmail的安装通常分为两部分:核心包和配置工具,以CentOS为例,执行以下命令安装:

sudo yum install sendmail sendmail-cf -y  

sendmail为核心运行包,sendmail-cf提供配置文件生成工具,若需支持SMTP认证(防止邮件中继滥用),还需安装cyrus-sasl相关组件:

sudo yum install cyrus-sasl cyrus-sasl-plain -y  

Ubuntu系统的安装命令略有不同:

sudo apt install sendmail sendmail-bin -y  

安装完成后,启动Sendmail服务并设置开机自启:

sudo systemctl start sendmail  
sudo systemctl enable sendmail  

Sendmail基础配置

Sendmail的主配置文件为/etc/mail/sendmail.cf,但直接修改该文件较为复杂,推荐使用m4工具生成配置。

  1. 定义域与主机名
    编辑/etc/mail/local-host-names文件,添加需要接收邮件的域名(如example.com),每行一个域名:

    sudo vi /etc/mail/local-host-names  
    # 添加内容:  
    example.com  
    mail.example.com  
  2. 配置本地邮件用户
    系统用户默认可接收邮件,若需为特定用户(如webmaster)设置别名,编辑/etc/mail/aliases

    sudo vi /etc/mail/aliases  
    # 添加内容:  
    webmaster: admin@example.com  

    执行newaliases命令使别名生效:

    Linux搭建Sendmail如何配置并确保邮件正常发送?

    sudo newaliases  
  3. 生成主配置文件
    备份原始配置文件后,使用m4工具生成新配置:

    cd /etc/mail  
    sudo cp sendmail.cf sendmail.cf.bak  
    sudo m4 cf/cf.mc > sendmail.cf  

    若需自定义配置(如修改SMTP端口、中继策略等),可编辑cf/cf.mc文件后重新生成。

SMTP认证配置(可选)

为防止邮件服务器被滥用,建议启用SMTP认证,以下是基于SASL的配置步骤:

  1. 编辑Sendmail.mc文件

    sudo vi /etc/mail/sendmail.mc  

    找到以下行并取消注释(删除dnl):

    TRUST_AUTH_MECH(`EXTERNAL LOGIN PLAIN')  
    define(`confAUTH_MECHANISMS', `EXTERNAL LOGIN PLAIN')  

    DAEMON_OPTIONS中添加监听端口(默认25端口无需修改):

    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl  
  2. 重新生成配置文件并重启服务

    sudo m4 cf/cf.mc > sendmail.cf  
    sudo systemctl restart sendmail  
  3. 测试SMTP认证
    使用telnetopenssl命令连接本地SMTP服务,输入EHLO查看支持的认证方式,应包含LOGINPLAIN

防火墙与SELinux配置

为确保邮件服务正常通信,需开放25端口(SMTP)及465端口(SMTPS,若启用SSL)。

  1. CentOS防火墙配置

    Linux搭建Sendmail如何配置并确保邮件正常发送?

    sudo firewall-cmd --permanent --add-service=smtp  
    sudo firewall-cmd --permanent --add-service=smtps  
    sudo firewall-cmd --reload  
  2. SELinux配置(CentOS)
    若启用SELinux,需为Sendmail设置正确上下文:

    sudo semanage port -a -t smtp_port -p tcp 25  
    sudo setsebool -P sendmail_can_network_connect=1  

邮件发送与测试

  1. 使用命令行发送测试邮件

    echo "Test mail body" | mail -s "Test Subject" recipient@example.com  
  2. 查看邮件日志
    日志文件位于/var/log/maillog(CentOS)或/var/log/mail.log(Ubuntu),可通过以下命令实时监控:

    tail -f /var/log/maillog  
  3. 常见问题排查

    • 邮件被拒收:检查DNS记录是否包含MX记录,以及域名是否正确配置在local-host-names中。
    • 认证失败:确认SASL库安装正确,sendmail.mc中认证配置无误。
    • 端口被占用:使用netstat -tuln | grep 25检查25端口是否被Sendmail监听。

安全加固建议

  1. 限制中继访问:编辑sendmail.mc,添加Access文件控制中继权限:

    FEATURE(`access_db', `hash -o /etc/mail/access')  

    编辑/etc/mail/access,添加允许中继的IP或域名:

    Connect:192.168.1.0/24   RELAY  

    生成数据库文件后重启服务:

    sudo makemap hash /etc/mail/access < /etc/mail/access  
    sudo systemctl restart sendmail  
  2. 启用TLS加密:配置SSL证书(如使用Let’s Encrypt),修改sendmail.mc添加TLS支持:

    define(`confCACERT_PATH', `/etc/pki/tls/certs')  
    define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')  
    define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')  
    define(`confSERVER_KEY', `/etc/pki/tls/private/sendmail.key')  

通过以上步骤,已完成Linux系统下Sendmail服务的搭建与基础配置,Sendmail功能强大但配置复杂,建议在实际生产环境中结合需求进一步优化,如结合SpamAssassassin过滤垃圾邮件,或使用Postfix作为替代方案(配置更简单),定期检查日志、更新系统补丁,是保障邮件服务器稳定运行的关键。

赞(0)
未经允许不得转载:好主机测评网 » Linux搭建Sendmail如何配置并确保邮件正常发送?