如何在 CyberPanel 上配置 SendGrid SMTP

SendGrid 是一种基于云的 SMTP 服务,无需管理电子邮件服务器即可实现邮件投递。

注意:端口 25 默认处于关闭状态,无法在我们的虚拟机上建立连接。如果您想打开端口 25,请购买 Mail Bridge 并在 其中进行配置,位置在 VPS Manager 中。

要在 WHM 上配置 SendGrid 电子邮件,请使用本指南。

请按照以下步骤,在 CyberPanel 端为您的域名配置 SendGrid 服务和电子邮件系统:

1. 注册 SendGrid:

填写完所有联系信息后,点击“Continue”。

2. 您将被重定向到浏览器中的新标签页以验证您的电子邮件账户。复制发送到您电子邮件账户的验证码,在“Code”字段下输入该验证码,然后点击“Verify”:

3. 在“Enter certification code”字段下输入发送到您手机的验证码,以验证您的电话号码,然后点击“Verify”:

4. 然后,系统会向您提供恢复代码,这在您丢失手机或无法访问验证设备时会很有帮助。复制该代码并保存,然后点击“Continue”。您还可以选择将该代码下载为文件:

5. 在下一页填写您的联系信息,然后点击“Next”:


6. 在下一页中,请打开您的 SendGrid 控制面板:

7. 进入后,前往“Settings” >> “API Keys”菜单,在那里创建一个新的 API Key:


8. 在打开的菜单中,输入 API Key 名称,将 API Key 权限设置为“Full Access”选项,然后保存配置:

9. 设置 SendGrid 发件人身份验证。有两种方法可以完成此操作:

方法 1:Single Sender Verification

Single Sender Verification 是一种快速验证方法,允许在使用 SendGrid 账户时添加已授权的收件人(一个或多个电子邮件地址)。例如,如果您想将 cPanel 服务器中添加的 john.doe@example.com 发送到 jane.doe@gmail.com,则需要为此将 jane.doe@gmail.com 电子邮件地址添加到 SendGrid 的 Single Sender Verification 中。

注意:Single Sender Verification 仅建议用于测试。

注意:您只能从已验证的地址发送邮件,而不能从已验证域名上的任意地址发送。

要设置 Single Sender Verification,请从您的 SendGrid 控制面板进入“Settings” >> “Sender Authentication”菜单 >> 点击“Verify a Single Sender”按钮:

在下一页中,填写联系信息以创建发件人,然后点击“Create”保存所有内容:

之后,您将收到一封来自 SendGrid 的验证邮件。要确认添加该电子邮件地址,请点击邮件中的“Verify Single Sender”按钮:

方法 2:域名验证(推荐)

点击 “Settings” >> 前往“Sender Authentication”菜单 >> 在“Domain Authentication”字段下,点击“Authenticate Your Domain”:

在下一页中,通过回答第一步和第二步中的问题来验证您的域名,然后点击“Next”:

注意:在截图中,我们为第二个问题选择了“No”答案。不过,此回答是可选的。

之后,输入所需的域名,如有需要可设置其他附加选项,然后点击“Next”:

现在,需要通过配置相应的 CNAME 和 TXT DNS 记录来验证该域名。

为域名创建 DNS 记录后,请在第 2 步中勾选“I’ve added these records”复选框以确认已添加,然后点击下方的“Verify”:

注意:DNS 记录传播可能需要长达 24-48 小时。

10. 下一步是为 CyberPanel 服务器配置 SMTP 设置。

遗憾的是,CyberPanel 目前尚未为用户提供专门的 SMTP 配置界面。必须通过 SSH 终端配置 SendGrid。 

  • 首先,以 root 身份登录到您的服务器:

ssh root@SERVER_IP_ADDRESS -p PORT


其中,SERVER_IP_ADDRESS 是您服务器的 IP 地址,PORT 是 SSH 连接端口(默认情况下为 22022)

  • 使用文本编辑器打开 /etc/postfix/main.cf 文件:

nano /etc/postfix/main.cf
或
vi /etc/postfix/main.cf

  • 将以下行添加到文件底部:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587

  • 现在,您需要在单独的文件 /etc/postfix/sasl_passwd 中指定您的凭据(使用 apikey 作为用户名,API Key 作为密码)(您可能需要创建该文件):

echo “[smtp.sendgrid.net]:587 apikey:YOUR_SENDGRID_API_KEY” > /etc/postfix/sasl_passwd

其中,YOUR_SENDGRID_API_KEY 是您在第 8 步中创建的密钥。

  • 接下来,请确保该文件仅允许 root 进行受限的读写访问,并使用 postmap 命令更新 Postfix 的哈希表以使用这个新文件:

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

  • 最后,重启 Postfix:

systemctl restart postfix

  • 在您的服务器上安装 SASL 插件:

apt-get install libsasl2-modules  # 适用于 Ubuntu
dnf install cyrus-sasl-plain      # 适用于 Almalinux/CloudLinux
yum install cyrus-sasl-plain       # 适用于 CentOS

此外,某些实例可能需要为 Dovecot 安装 MySQL 驱动程序,以配置用于身份验证的 MySQL 后端:

apt install dovecot-sqlite dovecot-mysql   # 适用于 Ubuntu
dnf install dovecot-mysql               # 适用于 Almalinux/CloudLinux
yum install dovecot-mysql                # 适用于 CentOS

  • 之后,重启 Dovecot:

systemctl restart dovecot

  • 现在,您可以测试电子邮件是否通过 SendGrid 中继:

sendmail -f YOUR_LOCAL_EMAIL -v DESTINATION_EMAIL

其中,YOUR_LOCAL_EMAIL 是您在 CyberPanel 账户中创建的电子邮件账户,DESTINATION_EMAIL 是接收测试邮件的收件人电子邮件地址。

然后输入您的邮件正文,并按 Ctrl+D 发送。

或者,您也可以使用 CyberPanel 账户中的 Webmail 从那里发送测试邮件。

需要提供有效的电子邮箱