如何在Hetzner云服务器上启用SMTP邮件服务器?
逐步教程,教您如何在 Hetzner 的云服务器上激活 SMTP 电子邮件服务器,并通过适当的域名和主机设置防止垃圾邮件。.

如何在Hetzner云服务器上启用SMTP邮件服务器?

本文将教您如何在 Hetzner 云服务器上设置 SMTP 邮件服务器,并防止垃圾邮件。通过正确的 DNS 和身份验证设置,发送安全可靠的电子邮件。.
0 股票
0
0
0
0

如何在Hetzner上设置SMTP服务器,使其能够发送电子邮件且不发送垃圾邮件?

本指南将逐步讲解如何在 Hetzner 云服务器上部署 SMTP,用于发送电子邮件以及将电子邮件接收映射到另一台服务器。此外,本指南还涵盖重要的 DNS 设置(SPF、DKIM、DMARC、PTR)、身份验证(SASL/TLS)、退信和取消订阅管理,以及避免被列入黑名单的实用建议。.

拟议架构和初步考虑

拟建架构:

  • 发送服务器(Hetzner Cloud):安装 Postfix + OpenDKIM + OpenDMARC + TLS — 负责发送电子邮件(SMTP 中继)。.
  • 传入服务器(例如您的 VPS 或主机):MX 记录指向此服务器;负责传递和接收传入消息(POP/IMAP/Dovecot 或您的电子邮件服务)。.
  • 退信和退订邮箱:退信会发送到专用地址,该邮箱由接收服务器处理。.
  • 用户/应用程序:使用 SMTP 认证 (或基于 IP 的授权)在 Hetzner 服务器上进行身份验证,才能被允许进行中继。.

准备发送服务器的步骤(Hetzner)

安装基本软件包(Debian/Ubuntu)

Ubuntu/Debian 示例:

sudo apt update
sudo apt install -y postfix dovecot-core dovecot-imapd opendkim opendkim-tools opendmarc certbot postfix-policyd-spf-python rspamd

设置主机名和 PTR

需要在转发服务器上设置主机名,并在 Hetzner 面板中注册反向 DNS。.

sudo hostnamectl set-hostname mail.example.com

Postfix 配置技巧: 数量 我的主机名 将其设置为 mail.example.com,然后在 Hetzner 面板的反向 IP 中输入 mail.example.com 的值。.

使用 Let's Encrypt 配置 TLS

颁发证书并在 Postfix 设置中引用它:

sudo certbot certonly --standalone -d mail.example.com

main.cf 将下列值相加:

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may

Postfix 基本配置(main.cf 节选)

一些重要的设置 main.cf:

myhostname = mail.example.com
myorigin = /etc/mailname
mydestination = localhost
relay_domains =
mynetworks = 127.0.0.0/8
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_helo_required = yes

解释: 拒绝未授权目标 防止您的服务器被用作开放式中继;只有授权用户或已知机器才能进行中继。.

启用 Dovecot 的 SASL(用于验证发送用户身份)

在文件中 /etc/dovecot/conf.d/10-master.conf 部分 服务认证 设置方法如下:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

您可以使用本地密码、SQL 数据库或 LDAP 进行身份验证。然后重启服务:

sudo systemctl restart dovecot postfix

DKIM、SPF 和 DMARC — DNS 配置

使用 OpenDKIM 生成 DKIM 密钥

在发送服务器上创建 DKIM 密钥的示例:

sudo mkdir /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -s mail -D /etc/opendkim/keys/example.com

文件 邮件.txt 已生成;要添加到 DNS 中的 TXT 记录内容:选择器 = 电子邮件mail._domainkey.example.com.

示例设置 /etc/opendkim.conf (摘抄):

Domain                  example.com
KeyFile                 /etc/opendkim/keys/example.com/mail.private
Selector                mail
AutoRestart             yes
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

并且 /etc/postfix/main.cf 添加:

milter_default_action = accept
smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

SPF记录

在示例域的 DNS 中:

example.com. IN TXT "v=spf1 ip4:YOUR_HETZNER_IP include:spf.protection.example ?all"

或者更确切地说:

"v=spf1 ip4:YOUR_HETZNER_IP -all"

推荐: 在开始时 ~全部 或者 ?全部 使用这种方法可以避免初始错误导致完全拒绝,然后再更加严格地审查。.

DMARC记录

DNS 中 DMARC 的示例:

_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100; adkim=s; aspf=s"

笔记: 首先,你可以 p=无 让我们看看报告吧。 p=隔离 或者 p=拒绝 激活。.

在其他服务器上接收电子邮件并处理退信

如何设置 MX 接收

DNS 中 MX 记录的示例:

example.com. IN MX 10 mail-receive.example.org

注意:MX 必须指向接收服务器;您的发件人使用 Hetzner 发送电子邮件——因此必须为发送域设置 SPF/DKIM 记录。.

返回路径配置和退信管理

以下几点很重要:

  • 返回路径应该专门用于处理退货;最好指向一个专用的子域名,例如: bounce.example.com 指出。.
  • 您可以使用VERP处理任何电子邮件: envelope-from="[email protected]" 为了更精确地确定回报。.

处理退信——推荐流程:

  1. 一个地址 [email protected] 创建该记录并将其 MX 记录指向处理该记录的服务器。.
  2. 那台服务器 fetchmail / 获取邮件 或者直接获取 IMAP 邮箱并使用退信处理脚本执行操作。.
  3. 要解析退信,您可以使用诸如以下工具: 侧翼 或者 邮件::投递::退信解析器 使用。.

使用 flanker 进行反弹处理的示例(Python)

首次安装:

pip install flanker

简单脚本示例(从标准输入读取数据并进行处理):

from flanker import mime
from flanker.utils import bounces
import sys

raw = sys.stdin.read()
msg = mime.from_string(raw)
bounce = bounces.parse(raw)
# classify and store bounce info in database or suppression list

按类别 硬弹 (5xx 错误) 柔软弹跳 (4xx)您可以应用删除或重试策略。.

避免垃圾邮件——最佳实践

技术设置

  • PTR 辅音 我的主机名 A 是一条记录。.
  • 防晒系数DKIMDMARC 启用 DKIM 签名。.
  • HELO/SMTP 横幅与主机名匹配。.
  • TLS 已启用 smtpd_tls_auth_only = yes 防止未加密传输。.
  • 避免使用历史记录不良的IP地址,并使用正确的反向DNS。.

内容政策和列表

  • 总是来自 双重确认加入 用于邮件列表。.
  • 每封电子邮件都应该包含一个简单易懂的退订链接;该链接应位于邮件头中。 退订列表 使用:
List-Unsubscribe: <mailto:[email protected]>, <https://example.com/unsubscribe?email=...>
  • IP预热:从第一天开始发送少量数据,然后逐渐增加。.
  • 删除或标记退信率或投诉率高的地址。.
  • 遵守 CAN-SPAM 和 GDPR 等针对欧洲用户的法律法规。.

控制发送速率、队列,并防止负面信誉

Postfix 并发和目标延迟限制设置:

postconf -e "smtp_destination_concurrency_limit = 20"
postconf -e "smtp_destination_rate_delay = 1s"

对于比策略守护进程更复杂的策略,例如 转发政策 或者 rspamd 使用。.

使用 Postfix 命令进行队列管理:

postqueue -p
postsuper -d ALLDeferred

用于检查交付能力的测试和工具

  • 要测试 SMTP 斯瓦克斯 使用:
swaks --to [email protected] --from [email protected] --server mail.example.com --auth LOGIN --auth-user smtpuser --auth-password smtppass --tls
tail -f /var/log/mail.log

通过数值分析DMARC报告 rua鲁夫 帮助您查找配送问题。.

完整流程示例:从应用程序 A 使用 Hetzner 作为中继发送数据

  1. 申请 A 至 mail.example.com:587 与用户连接 smtp_user 输入密码后,即可进行身份验证。.
  2. 验证完成后,Hetzner 服务器输出电子邮件并对其进行 DKIM 签名;SPF 和 PTR 也已设置。.
  3. 如果返回,则跳转至 [email protected] 已发送;MX 跳转指向执行解析的服务器。.
  4. 该应用程序读取抑制列表并禁用硬反弹地址。.

更多安全和操作提示

  • 请确保服务器的出站端口 25 已打开(Hetzner 有时会有网络限制)。.
  • 为防止滥用,身份验证应是强制性的;绝不能将服务器作为开放式中继。.
  • 将日志发送到监控系统(ELK/Graylog)以分析发送峰值或错误响应。.
  • 如果发送量很大,请使用专用 IP 地址并逐步预热该 IP 地址。.

推荐的开源自动化工具(免费)

  • Postfix(SMTP)
  • 鸽舍(SASL/IMAP)
  • OpenDKIM / OpenDMARC
  • 用于过滤和评分的 Rspamd
  • 使用 fetchmail / getmail 获取退信
  • 用于退信处理的 flanker 或 Mail::Delivery::BounceParser
  • postfwd / policyd 用于定价和政策

公司服务链接(85+ 个服务地点)

如果您正在寻找具有广泛网络接入和多样化位置的基础设施,您可以使用合适的服务来选择离您的受众最近的数据中心,以减少延迟并提高交付能力。.

  • 多于 85个地点 数据中心选择的世界。.
  • 高性能云服务器,配备专用 IP 地址,用于电子邮件营销和 SMTP 服务。.
  • 反DDoS服务器、各种VPS以及网络和安全设置支持。.

最后一点

如果您准备开始使用,可以了解云服务器方案、专用 IP 地址、DNS 和安全管理服务,或者联系技术团队获取定制配置、DKIM/DMARC 实施和退信管理方面的帮助。我们的支持团队随时为您提供技术指导和协助。.

您可能也喜欢