13 10 月 2026

服务器上发邮件是个老大难:25 端口被封、发出去的邮件进垃圾箱、被邮件服务商拉黑……这篇讲清楚服务器发邮件的正确姿势,以及企业邮箱怎么选。

需要云服务器可以看看财富云计算:NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,一键开服面板,主流游戏快速部署。

一、先说结论:服务器直发邮件这条路基本堵死

很多新手想在自己服务器上装 Postfix 直接发邮件。现实是:

问题说明
25 端口被封国内云厂商默认封禁 25 端口出站,防止垃圾邮件
无 PTR 记录反向解析缺失,主流邮箱直接拒收或进垃圾箱
IP 信誉差云厂商 IP 段常被列入黑名单,Gmail、QQ 邮箱直接拒
没有 SPF/DKIM/DMARC三项认证缺一不可,缺了就是垃圾邮件

所以:网站的通知邮件、验证码、告警,一律走第三方 SMTP 服务,自己搭邮件服务器只在极少数场景(内网邮件、学习测试)才有意义。

二、方案一:第三方 SMTP(90% 的人该用这个)

免费额度够用的服务

服务免费额度特点
QQ 邮箱 SMTP基本不限(内部用)配置简单,适合个人小站
163 邮箱 SMTP基本不限同 QQ 邮箱
SendCloud每天若干封国内老牌,模板/统计全
阿里云邮件推送免费额度到达率高,和阿里云打通
Mailgun / SendGrid每月几千到上万封海外服务,API 友好

QQ 邮箱 SMTP 配置实操(最常用)

  1. QQ 邮箱 → 设置 → 账户 → 开启 POP3/SMTP 服务
  2. 按提示发短信获取授权码(不是登录密码)
  3. 服务器上测试:
# 安装邮件发送工具
apt install -y mailutils    # Debian/Ubuntu
yum install -y mailx        # CentOS

# 发送测试
echo "测试邮件内容" | mail -s "测试标题" "收件人@qq.com"

更可靠的是用 Python 直接走 SMTP:

#!/usr/bin/env python3
# /opt/scripts/send_mail.py
import smtplib
from email.mime.text import MIMEText
from email.header import Header

SMTP_HOST = "smtp.qq.com"
SMTP_PORT = 465          # SSL 端口
SMTP_USER = "你的邮箱@qq.com"
SMTP_PASS = "授权码"      # 不是登录密码!

def send(to, subject, content):
    msg = MIMEText(content, "plain", "utf-8")
    msg["From"] = Header("服务器告警", "utf-8")
    msg["To"] = Header(to, "utf-8")
    msg["Subject"] = Header(subject, "utf-8")
    
    server = smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT)
    server.login(SMTP_USER, SMTP_PASS)
    server.sendmail(SMTP_USER, [to], msg.as_string())
    server.quit()

if __name__ == "__main__":
    send("admin@example.com", "测试", "服务器邮件功能正常")

接入自己的程序

Typecho 评论通知:后台 → 设置 → 评论,填 SMTP 服务器、端口、账号、授权码。

Shell 告警脚本(配合监控用):

#!/bin/bash
# 磁盘超过85%发邮件告警
USE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$USE" -gt 85 ]; then
  echo "磁盘使用率 ${USE}%,请及时清理" | \
    mail -s "【告警】服务器磁盘空间不足" admin@example.com
fi

三、方案二:正规企业邮箱

公司场景用第三方 SMTP 显得不专业,该上企业邮箱:

服务商基础版价格量级特点
腾讯企业邮每人每年几百元和微信/企业微信打通
阿里邮箱每人每年几百元管理后台强,钉钉打通
网易企业邮每人每年几百元老牌,反垃圾强
Google Workspace每人每月几十元海外用,国内访问不稳
Microsoft 365每人每月几十元Office 全家桶

选型建议:国内团队用腾讯或阿里(生态顺、移动端好);有海外业务选 Google/Microsoft。人数少(5 人以下)先用免费版个人邮箱顶着也行。

企业邮箱要配的 DNS 记录(重点)

买了企业邮箱,域名解析要加这几条记录,少一条送达率就掉一截:

# MX 记录(邮件交换,服务商会给具体值)
@  MX  10 mx1.qq.com
@  MX  20 mx2.qq.com

# SPF(发件人授权,声明哪些服务器能给这个域名发信)
@  TXT  "v=spf1 include:spf.mail.qq.com ~all"

# DKIM(邮件签名,服务商控制台生成)
default._domainkey  TXT  "v=DKIM1; k=rsa; p=服务商给的长字符串"

# DMARC(策略,防伪造)
_dmarc  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-report@你的域名"

配完用工具验证:dig TXT 你的域名 +short 看 SPF 在不在,或者用 mail-tester.com 打分,目标 9 分以上。

四、方案三:自建邮件服务器(多数人别碰)

什么情况才需要自建:

  • 数据敏感,邮件不能出内网(政府、金融内网)
  • 学习测试,想搞懂邮件协议
  • 特殊合规要求

最小可用搭建(Postfix + Dovecot)

# 安装
apt install -y postfix dovecot-core dovecot-imapd

# Postfix 关键配置 /etc/postfix/main.cf
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/

# SMTP 认证(必开,否则是开放中继,分分钟被拉黑)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem

# 反垃圾
smtpd_recipient_restrictions = 
    permit_sasl_authenticated,
    reject_unauth_destination

自建必须做的五件事(否则就是灾难)

  1. 关开放中继:上面配置的最后一段就是干这个的。开放中继 = 全世界垃圾邮件都用你服务器发,IP 秒黑
  2. SPF + DKIM + DMARC 全配:用 OpenDKIM 生成 DKIM 签名
  3. PTR 反向解析:找服务商给 IP 加 PTR,指向 mail.yourdomain.com。云服务器控制台一般能申请
  4. IP 不在黑名单:先去 mxtoolbox.com/blacklists.aspx 查你的 IP,在名单里趁早换 IP
  5. 25 端口能通:国内云默认封 25,要工单申请解封(通常不给个人用户批,要企业资质)

实测结论:个人/小团队自建邮件服务器,折腾一周,送达率还打不过免费 SMTP。除非刚需,否则别碰。

五、邮件进垃圾箱的排查清单

发出去的邮件进垃圾箱,按这个顺序查:

# 1. IP 是否在黑名单
# 浏览器打开 mxtoolbox.com/blacklists.aspx 输入服务器 IP

# 2. SPF 是否配置
dig TXT yourdomain.com +short | grep spf

# 3. DKIM 是否配置
dig TXT default._domainkey.yourdomain.com +short

# 4. DMARC 是否配置
dig TXT _dmarc.yourdomain.com +short

# 5. 发送源 IP 和 SPF 声明是否一致
# 看邮件原文的 Received 链,第一个 Received 的 IP 要在 SPF 里

# 6. 综合打分
# mail-tester.com 发送测试邮件,看分数和改进建议

最常见的三个死因:没配 SPF、授权码当密码用、发信频率突然暴涨(一天发几千封触发风控)。

六、常见问题

Q:25 端口被封怎么办?
用 465(SSL)或 587(STARTTLS)端口走 SMTP,这些端口云厂商不封。第三方 SMTP 服务都支持。

Q:邮件能收到但发不出去?
检查授权码、端口、SSL 设置;看服务商后台是否限制了发信频率;被判定为垃圾邮件会先限制再封号。

Q:验证码邮件延迟严重?
QQ/163 个人邮箱在高并发下会限流。验证码场景用专业服务(SendCloud、阿里云邮件推送),有专属通道和模板统计。

Q:自建邮件服务器成本多少?
一台 2G 服务器 + 域名 + SSL + 每天维护,一年几百块。但省不下多少事,除非有合规刚需。

Q:邮件内容有什么禁忌?
营销类邮件必须带退订链接(否则违反 CAN-SPAM 和国内《通信短信息服务管理规定》);批量发送要先预热 IP;标题别用全大写和感叹号(垃圾邮件特征)。

小结

邮件记住一条铁律:能用第三方 SMTP 就别自建。个人/小站用 QQ/163 授权码,团队用企业邮箱,营销/验证码场景用专业邮件推送服务。配好 SPF/DKIM/DMARC 三件套,送达率就有保障。

更多运维教程见财富云计算知识库:Nginx 配置、HTTPS 部署、DNS 解析、域名备案全系列。需要云服务器可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:域名备案流程完全指南:材料、步骤、周期与避坑
  2. 下一篇:HTTPS 强制跳转与安全响应头配置:安全评分冲到 A+
发表评论 5