如何使用与SMTP凭据不同的域成功发送邮件?

问题描述 投票:0回答:1

我想使用domain1.com SMTP凭据连接到domain1.com时以[email protected]的形式发送电子邮件。 domain1.com和domain2.com都有SPF记录。

我做了很多研究,发现您应该可以通过在domain2.com的SPF记录中添加“ a:domain1.com”来实现这一目标。我已经这样做了,但仍然无法成功发送电子邮件。

我使用node.js和nodemailer创建了一个测试代码来测试发送电子邮件。

const nodemailer = require('nodemailer');

let transport = nodemailer.createTransport({
  host: 'mail.domain1.com',
  port: 465,
  auth: {
    user: '[email protected]',
    pass: 'password'
  }
});

const message = {
  from: '[email protected]',
  to: '[email protected]',
  subject: 'Testing 123',
  text: 'Testing One Two Three....'
};

transport.sendMail(message, function (err, info) {
  if (err) {
    console.log('err: ', err);
  } else {
    console.log('info: ', info);
  }
});
{ Error: Message failed: 550 Error458 block
at SMTPConnection._formatError (C:\Users\Admin\Desktop\testsendmail\node_modules\nodemailer\lib\smtp-connection\index.js:784:19)
at SMTPConnection._actionSMTPStream (C:\Users\Admin\Desktop\testsendmail\node_modules\nodemailer\lib\smtp-connection\index.js:1661:34)
at SMTPConnection._responseActions.push.str (C:\Users\Admin\Desktop\testsendmail\node_modules\nodemailer\lib\smtp-connection\index.js:1146:22)
at SMTPConnection._processResponse (C:\Users\Admin\Desktop\testsendmail\node_modules\nodemailer\lib\smtp-connection\index.js:942:20)
at SMTPConnection._onData (C:\Users\Admin\Desktop\testsendmail\node_modules\nodemailer\lib\smtp-connection\index.js:749:14)
at TLSSocket.SMTPConnection._onSocketData.chunk (C:\Users\Admin\Desktop\testsendmail\node_modules\nodemailer\lib\smtp-connection\index.js:195:44)
at TLSSocket.emit (events.js:182:13)
at addChunk (_stream_readable.js:283:12)
at readableAddChunk (_stream_readable.js:264:11)
at TLSSocket.Readable.push (_stream_readable.js:219:10) 
code: 'EMESSAGE',
response: '550 Error458 block',
responseCode: 550,
command: 'DATA' }

这是两个域的SPF记录:

domain1.com:

v=spf1 mx a ~all

domain2.com:

v=spf1 a a:domain1.com mx ?all
javascript node.js smtp nodemailer spf
1个回答
0
投票

添加第二个域作为邮件源的正确方法是使用include机制:

v=spf1 a mx include:domain2.com ~all

我无法从您发布的内容中得知这是否实际上是导致您收到错误的原因。

您可能还想研究DKIM签名和DMARC。

虽然我在这里,但没有必要使用?all默认机制;等同于根本没有SPF记录;如果您使用的是DMARC,请使用~all,否则请使用-all(尽管在执行此操作之前,请确保已确定all邮件来源)。

© www.soinside.com 2019 - 2024. All rights reserved.