欢迎光临
我们一直在努力

现在的 VPS 几乎都封锁了 25 端口,想发注册验证邮件该怎么解决?

在个人站长管理 VPS 或公有云虚拟机时,经常会遇到一个棘手的问题:主机提供商(如 AWS、Azure、阿里云、腾讯云等)出于反垃圾邮件的目的,默认封锁了 TCP 25 端口(标准的 SMTP 端口)。这直接导致站点的注册验证、密码重置等邮件无法通过本地服务发送出去。

解决这个问题的标准且最可靠的方法是:放弃使用本地 MTA(Mail Transfer Agent)直接发送邮件,转而使用专业的第三方事务性邮件服务(Transactional Email Service Provider, ESP)作为中继(Relay),通过非标端口(如 587 或 465)发送邮件。

我们将使用 Postfix 作为本地邮件客户端,并配置它通过加密的 587 端口将所有邮件转发给外部 ESP(例如 SendGrid、Mailgun 或 AWS SES)。


实施步骤:使用 Postfix 转发至专业邮件服务

步骤一:获取外部 SMTP 凭证

首先,您需要在一家专业的邮件服务提供商处注册账号,并获取其 SMTP 发送凭证。大多数服务都提供免费或低成本的套餐,非常适合个人站长。

  • 重要信息: 您需要记录以下三项信息:
    1. SMTP 服务器地址(例如 smtp.sendgrid.net
    2. SMTP 端口(通常是 587
    3. 用户名和密码(或 API Key)

步骤二:安装 Postfix 和 SASL 模块

我们需要安装 Postfix(用于处理邮件)和 libsasl2-modules(用于加密认证)。以下命令适用于 Debian/Ubuntu 系统:

# 更新系统并安装 Postfix 及 SASL 模块
sudo apt update
sudo apt install postfix libsasl2-modules -y

如果使用 CentOS/RHEL 系统:

sudo yum install postfix cyrus-sasl-plain -y
sudo systemctl enable --now postfix

步骤三:配置 Postfix 使用外部 SMTP 转发

编辑 Postfix 的主配置文件 /etc/postfix/main.cf,添加或修改以下关键配置,告诉 Postfix 使用外部服务器进行邮件中继,并使用 587 端口和 TLS 加密。

请将 smtp.externalprovider.com 替换为您实际的邮件服务商地址。

# 编辑主配置文件
sudo nano /etc/postfix/main.cf

# --- 在文件末尾添加以下配置 ---

# 1. 设置中继主机和端口 (通常是 587)
relayhost = [smtp.externalprovider.com]:587

# 2. 启用 SASL 认证
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

# 3. 启用 TLS 加密
smtp_use_tls = yes
smtp_tls_security_level = encrypt
# 如果遇到证书问题,可以尝试使用 dane 或 verify
# smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

# --- 配置结束 ---

步骤四:创建和保护认证文件

我们需要在 /etc/postfix/sasl_passwd 文件中存储您的外部 SMTP 服务的用户名和密码。

# 创建或编辑认证文件
sudo nano /etc/postfix/sasl_passwd

# 格式: [中继主机]:端口  用户名:密码
[smtp.externalprovider.com]:587    YOUR_SMTP_USERNAME:YOUR_SMTP_PASSWORD

配置完成后,需要使用 postmap 命令生成 Postfix 可读取的数据库文件,并设置严格的权限以保护密码:

# 生成 Postfix 数据库文件
sudo postmap /etc/postfix/sasl_passwd

# 严格设置权限,防止密码泄露
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

# 删除原始的纯文本密码文件(可选但推荐)
# sudo rm /etc/postfix/sasl_passwd

步骤五:重启 Postfix 服务并测试

应用新的配置并重启 Postfix。

sudo systemctl restart postfix

现在,您可以发送一封测试邮件,确认邮件是否能成功通过外部服务发送出去(如果您的系统还没有 mail 命令,可能需要先安装 mailutilss-nail)。

# 安装 mailutils (Debian/Ubuntu)
sudo apt install mailutils -y

# 发送测试邮件
echo "恭喜,您的VPS已成功绕过25端口限制,并通过587端口发送邮件!" | mail -s "VPS邮件中继测试" your_recipient_email@example.com

检查 /var/log/mail.log (或 CentOS 上的 /var/log/maillog) 可以确认邮件是否被 Postfix 成功接受并转发给了外部中继服务器。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 现在的 VPS 几乎都封锁了 25 端口,想发注册验证邮件该怎么解决?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址