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 = yessmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwdsmtp_sasl_security_options = noanonymoussmtp_sasl_tls_security_options = noanonymoussmtp_tls_security_level = encryptheader_size_limit = 4096000relayhost = [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_passwdsudo postmap /etc/postfix/sasl_passwd
最后,重启 Postfix:
systemctl restart postfix
在您的服务器上安装 SASL 插件:
apt-get install libsasl2-modules # 适用于 Ubuntudnf install cyrus-sasl-plain # 适用于 Almalinux/CloudLinuxyum install cyrus-sasl-plain # 适用于 CentOS
此外,某些实例可能需要为 Dovecot 安装 MySQL 驱动程序,以配置用于身份验证的 MySQL 后端:apt install dovecot-sqlite dovecot-mysql # 适用于 Ubuntudnf install dovecot-mysql # 适用于 Almalinux/CloudLinuxyum 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 从那里发送测试邮件。