Отправка электронных писем от имени кого-либо с помощью nodemailer

#javascript #email #nodemailer #spf #dkim

Вопрос:

Я пытаюсь отправить электронное письмо от имени своего пользователя nodemailer , но все мои электронные письма отклоняются.

Мой транспортер работает для обычных случаев использования, когда я отправляю из своего собственного домена:

 const transporter = nodemailer.createTransport({
    host: 'emailhost.com',
    port: 465,
    secure: true, 
    auth: {...},
    dkim: {
      domainName: <domainname>,
      keySelector: <keyselector>,
      privateKey: <privatekey>,
    },
  });

transporter.sendMail({
  subject: "Shop subject",
  from: `kyle@mydomain.com`,
  to: <customerEmail>,
  replyTo: <shopEmail>,
  html: "<div>my user message</div>",
})
 

Но когда я пытаюсь отправить от имени своего пользователя, это не работает:

 transporter.sendMail({
  subject: "Shop subject",
  from: `shop@exampleshop.com`,
  to: <customerEmail>,
  // sender: `kyle@mydomain.com` <-- Also tried adding this field,
  replyTo: `shop@exampleshop.com`,
  html: "<div>my user message</div>",
})

>> "Can't send mail - all recipients were rejected: 553 <shop@exampleshop.com>: Sender address rejected: not owned by user kyle@mydomain.com"
 

Я подумал, что если я установлю DNS-запись DKIM и запись SPF на exampleshop.com ней, это будет означать, что я смогу отправлять электронные письма от имени домена, но все равно не повезло.

 Type: TXT Record 
Host: @ 
Value: v=spf1 include:spf.emailhost.com ~all

// Also tried adding this record in place of the one above
Type: TXT Record 
Host: @ 
Value: v=spf1 include:spf.mydomain.com ~all

Type: TXT Record 
Host: default._domainkey
Value: v=DKIM1;k=rsa;p=<DKIM DNS record from namecheap>
 

Кроме того, прошло больше часа с тех пор, как я обновил записи DNS, и я не уверен, что я здесь делаю не так.

Комментарии:

1. Это ваш почтовый сервер дает такой ответ, и я сомневаюсь, что он дошел до проверки SPF. Это будет зависеть от конфигурации вашего почтового сервера.

2. Итак, я отправляю электронное письмо, используя свой личный DKIM/auth, почтовый сервер (частная почта от namecheap) получает электронное письмо и видит другой домен «от» и не проверяет записи SPF другого домена, поэтому он отклоняет электронное письмо? Это примерно то, что происходит?

3. Да, примерно так оно и есть. Это очень распространенное ограничение, например, это делает gmail.