Nodemailer: как правильно пересылать?

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

Мне кажется, что есть подозрение, что адрес отправителя в почте (в необработанных данных) - это не мой собственный адрес, а адрес оригинального отправителя. Адрес отправителя в конверте установлен на мой адрес, адрес получателя - на адрес нового получателя.

Я думаю, что почтовый поставщик понимает, что адреса в необработанных данных не совпадают с адресами в конверте и подозревают спам.

Как правильно пересылать почту? Получатель должен видеть отправителя в качестве правильного адреса отправителя, а также ответы должны отправляться исходному получателю. Получатель должен быть исходным адресом получения (адрес моего сервера).

const options = {
  disabledCommands: ['AUTH'],
  name: 'SMTP-Server',
  secure: false,
  logger: true,
  key: fs.readFileSync('/home/node/app/private.key'),
  cert: fs.readFileSync('/home/node/app/server.crt'),
  onRcptTo: (address, session, callback) => {
    let found = false;
    config.domains.forEach(element => {   //allow only my domains
      if (address.address.toLowerCase().endsWith('@' + element))
        found = true;
    });
    if (found) {
      found = false;
      let addr = address.address.substr(0, address.address.indexOf('@'));
      config.aliases.forEach(alias => {
        if (alias.address === addr) {
          found = true;
        }
      });
    }
    if (found)
      return callback();
    return callback(new Error('Unbekannter Empfänger!'));
  },
  onData: (stream, session, callback) => {
    let data = '';
    stream.on('data', (chunk) => {
      data += chunk;
    });
    stream.on('end', () => {
      const message = {
        envelope: {
          from: config.mail,                        //my Address
          to: getTargets(session.envelope.rcptTo)   //the new target(s)
        },
        raw: data
      };
      transporter.sendMail(message, (err, info) => {
        if (err) {
          console.log(err);
          callback(new Error('Please try again later!'));
        } else {
          callback();
        }
      });
    });
  }
};

const server = new SMTPServer(options);

server.on('error', err => {
  console.log('Error %s', err.message);
});

server.listen(25);

Я думаю, что интересная часть - это stream.on('end') -Part.

Если это невозможно, каков "правильный путь" для реализации этого подхода?

Я имею в виду, как обычно работает пересылка почты?

Спасибо,

Кристиан

0 ответов

Другие вопросы по тегам