You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Netlify React应用的自定义域名下创建邮箱并兼顾Postfix使用?

让自定义域名同时适配Netlify和Postfix的方案

一、DNS记录配置(核心)

域名要同时兼顾网站和邮件解析,关键是配置不同类型的DNS记录,两者互不干扰:

  • A/AAAA记录(网站解析):保留Netlify提供的A/AAAA记录,把主域名(如yourdomain.com)和www子域名指向Netlify的服务器IP,保证网站正常访问。
  • MX记录(邮件接收):添加MX记录,优先级设为10(数值越小优先级越高),指向运行Postfix的服务器域名或直接IP。注意MX记录的目标不能是CNAME,必须是A/AAAA记录对应的主机。
  • SPF记录(邮件发送验证):添加TXT类型的SPF记录,允许你的Postfix服务器和Netlify(如果有需求)发送邮件,格式示例:v=spf1 ip4:你的Postfix服务器IP include:netlify.com ~all,能降低邮件被标记为垃圾邮件的概率。
  • DKIM记录(可选但推荐):在Postfix中配置DKIM生成公钥,然后添加对应的TXT类型DKIM记录,提升邮件可信度。
  • PTR反向解析:联系服务器提供商,给Postfix服务器的IP设置反向解析到你的域名,这对邮件投递成功率至关重要。

二、Postfix配置要点

确保Postfix只处理邮件请求,和Netlify的网站服务不冲突:

  • 端口监听:Postfix默认监听25(SMTP)、587(提交)、465(SMTPS)端口,这些和Netlify用的80/443端口不重叠,直接开放服务器防火墙的这些端口即可。
  • 域名标识:在/etc/postfix/main.cf中设置myhostname = yourdomain.com、mydomain = yourdomain.com,让Postfix正确识别你的自定义域名。
  • 防止开放中继:配置Postfix只允许你的Node.js服务器(或指定IP)通过587端口发邮件,在main.cf中添加:
    smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
    
    同时把Node.js服务器的IP加入mynetworks参数中。

三、Node.js + Nodemailer配置示例

用Nodemailer连接Postfix服务器发送通知,代码示例如下:

const nodemailer = require('nodemailer');

// 创建邮件传输器,连接Postfix服务器
let transporter = nodemailer.createTransport({
  host: 'yourdomain.com', // 也可以填Postfix服务器的直接IP
  port: 587,
  secure: false, // 587端口用STARTTLS,所以设为false
  auth: {
    user: 'notifications@yourdomain.com', // 你创建的自定义域名邮箱账号
    pass: '你的邮箱密码'
  }
});

// 发送通知邮件的函数
async function sendAlert() {
  try {
    let info = await transporter.sendMail({
      from: '"系统通知" <notifications@yourdomain.com>',
      to: 'user@example.com',
      subject: '新的系统通知',
      text: '这是来自Postfix服务器的测试通知邮件',
      html: '<b>这是来自Postfix服务器的测试通知邮件</b>'
    });
    console.log('邮件发送成功: %s', info.messageId);
  } catch (error) {
    console.error('邮件发送失败:', error);
  }
}

sendAlert();

四、避坑注意事项

  • 不要把mail.yourdomain.com这类邮件子域名设为CNAME指向Netlify,要单独配置A记录指向Postfix服务器。
  • 检查Netlify的域名配置,确保它没有覆盖MX、SPF等邮件相关的DNS记录(Netlify默认不会修改这些,但最好确认)。
  • 测试双向邮件:用外部邮箱(比如Gmail)发邮件到你的自定义域名邮箱,检查Postfix是否能正常接收;用Nodemailer发邮件到外部邮箱,同时查看Postfix日志(/var/log/mail.log)排查问题。

内容的提问来源于stack exchange,提问作者李白 puer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:35:37