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.
Если это невозможно, каков "правильный путь" для реализации этого подхода?
Я имею в виду, как обычно работает пересылка почты?
Спасибо,
Кристиан