Linux如何配置SMTP发邮件?

SMTP服务核心方案

方案1:配置本地SMTP服务器(以Postfix为例)

  1. 安装Postfix

    sudo apt update && sudo apt install postfix  # Debian/Ubuntu
    sudo yum install postfix                     # CentOS/RHEL

    安装时选择 Internet Site,根据提示设置域名(如 example.com)。

  2. 基础配置
    编辑主配置文件:

    sudo nano /etc/postfix/main.cf

    修改以下参数:

    myhostname = mail.example.com     # 服务器主机名
    mydomain = example.com            # 域名
    myorigin = $mydomain              # 发件人域名
    inet_interfaces = all             # 监听所有网络接口
    mydestination = $myhostname, localhost.$mydomain, $mydomain  # 接收域
  3. 启动服务

    sudo systemctl restart postfix
    sudo systemctl enable postfix
  4. 防火墙放行SMTP端口

    sudo ufw allow 25/tcp  # 标准SMTP端口

方案2:使用外部SMTP中继(如Gmail)

  1. 安装邮件客户端工具

    sudo apt install mailutils   # Debian/Ubuntu
    sudo yum install mailx       # CentOS/RHEL
  2. 配置Postfix使用Gmail SMTP
    编辑 /etc/postfix/main.cf,添加:

    relayhost = [smtp.gmail.com]:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
    smtp_use_tls = yes
  3. 创建认证文件

    sudo nano /etc/postfix/sasl_passwd
    [smtp.gmail.com]:587 your-email@gmail.com:app-password

    :使用Google两步验证的应用专用密码。

  4. 应用配置

    sudo postmap /etc/postfix/sasl_passwd
    sudo chmod 600 /etc/postfix/sasl_passwd*
    sudo systemctl restart postfix

验证SMTP功能

测试邮件发送

echo "Test email body" | mail -s "SMTP Test" recipient@example.com
  • 检查收件箱(包括垃圾邮件夹)。
  • 查看日志:
    tail -f /var/log/mail.log  # Debian/Ubuntu
    tail -f /var/log/maillog   # CentOS/RHEL

Telnet手动测试

telnet localhost 25

依次输入:

EHLO example.com
MAIL FROM: test@example.com
RCPT TO: recipient@example.com
DATA
Subject: Test
This is a test email.
.  # 英文句点结束
QUIT

安全加固措施

  1. 启用TLS加密
    /etc/postfix/main.cf 中增加:

    smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
    smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
    smtpd_use_tls = yes
  2. 防止开放中继
    确保配置中不含:

    mynetworks = 127.0.0.0/8 [::1]/128  # 仅允许本地发送
  3. SPF/DKIM/DMARC配置

    • SPF:在DNS添加 v=spf1 mx ~all
    • DKIM:使用 opendkim 生成密钥并签名
    • DMARC:DNS记录 v=DMARC1; p=quarantine; rua=mailto:admin@example.com

常见问题解决

  • 邮件被拒收:检查域名反向解析(PTR记录)是否匹配主机名。
  • 端口25被屏蔽:联系云服务商解封,或改用端口587(提交端口)。
  • 认证失败
    • 确认SASL配置:sudo postconf -n | grep sasl
    • 检查日志:grep "SASL" /var/log/mail.log

替代方案

  • 轻量级工具
    • ssmtp:仅发送邮件的微型客户端。
    • msmtp:支持多账户的命令行SMTP客户端。
  • 容器化部署
    使用Docker运行Mailcow或Mailu集成套件。

引用说明

  • Postfix官方文档:http://www.postfix.org/documentation.html
  • Google SMTP使用指南:https://support.google.com/a/answer/176600
  • Let’s Encrypt证书申请:https://letsencrypt.org/docs/

重要提示:自建SMTP服务器需严格遵循反垃圾邮件规范(如RFC 5321),避免IP被列入黑名单,生产环境建议使用专业邮件服务(如SendGrid、Mailgun)或配置SPF/DKIM/DMARC三件套。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4335.html

(0)
酷番叔酷番叔
上一篇 2025年6月13日 03:13
下一篇 2025年6月13日 04:04

相关推荐

  • Linux云主机如何远程登录进入系统?

    进入Linux云主机是日常运维和管理的核心操作,常见方式包括SSH远程连接、云服务商控制台Web连接以及VNC图形界面连接,具体操作需根据使用场景和工具选择,以下是详细步骤和注意事项,SSH连接是最主流的方式,适用于命令行操作,支持加密传输,确保数据安全,准备工作包括获取云主机的公网IP地址、登录用户名(如ro……

    2025年9月9日
    10000
  • Linux查看命令(如less/more)如何正确退出?

    在Linux系统中,查看命令是日常操作中使用频率极高的工具,无论是查看文件内容、系统状态还是进程信息,都需要依赖这些命令,不同的查看命令因其设计逻辑和交互模式不同,退出方式也存在差异,掌握正确的退出方法不仅能提升操作效率,还能避免因误操作导致的问题,本文将详细介绍Linux中常见查看命令的退出方式,并通过表格和……

    2025年10月6日
    7800
  • 如何使用ps命令监控进程?

    在Linux系统中,查看进程名是系统管理和故障排查的基础操作,进程名代表正在运行的程序(如nginx、python或java),准确识别进程有助于监控资源、结束异常任务或优化性能,以下是几种专业且高效的方法:ps(Process Status)是基础进程查看工具,通过组合参数灵活筛选信息:ps -eo comm……

    2025年7月2日
    14800
  • Linux文件目录rw权限如何管理?

    理解权限基础权限组成r(读):查看文件内容或目录列表,w(写):修改文件内容,或在目录中创建/删除文件,x(执行):运行程序或进入目录,权限分配对象:所有者(user)、所属组(group)、其他用户(others),查看当前权限使用 ls -l 命令查看权限(示例输出):-rw-r–r– 1 user g……

    2025年7月2日
    13700
  • linux 虚拟机如何退出全屏显示

    Linux 虚拟机中,通常可以按 Ctrl + Alt + Enter

    2025年8月17日
    9700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信