Как успешно отправить почту с использованием домена, отличного от учетных данных SMTP? - PullRequest
0 голосов
/ 16 марта 2020

Я хочу отправить электронное письмо как myemail@domain2.com при подключении к domain1.com с использованием учетных данных SMTP domain1.com. И domain1.com, и domain2.com имеют записи SPF.

Я провел небольшое исследование и обнаружил, что вы сможете достичь этого, добавив «a: domain1.com» в запись SPF домена domain2.com. Я сделал так, но я все еще не могу успешно отправить электронное письмо.

Я создал тестовый код, используя node.js и nodemailer для проверки отправки электронной почты.

const nodemailer = require('nodemailer');

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

const message = {
  from: 'myemail@domain2.com',
  to: 'test@gmail.com',
  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 для 2 доменов:

domain1.com:

v=spf1 mx a ~all

domain2.com :

v=spf1 a a:domain1.com mx ?all

1 Ответ

0 голосов
/ 16 марта 2020

Правильный способ добавить второй домен в качестве источника почты - это использовать механизм include:

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

Я не могу сказать из ваших сообщений, является ли это причиной об ошибке, которую вы получаете.

Возможно, вы захотите изучить подпись DKIM и DMAR C.

Пока я здесь, нет смысла иметь ?all механизм по умолчанию; это эквивалентно отсутствию записи SPF вообще; используйте ~all, если вы используете DMAR C, -all в противном случае (хотя убедитесь, что все ваши почтовые источники прерваны, прежде чем это сделать).

...