Узел `smtp-server` модуль не будет работать с TLS - PullRequest
0 голосов
/ 07 октября 2018

Этот минимальный код для запуска SMTP-сервера работает нормально.Когда я отправляю электронное письмо на мой сервер, все (из-за опции logger) регистрируется как положено, и данные электронной почты принимаются.

const {SMTPServer} = require("smtp-server");
const {simpleParser} = require("mailparser");
const server = new SMTPServer({
    authOptional: true,
    onData: async (stream, session, callback) => {
        const parsed = await simpleParser(stream);
        callback();
        console.log(parsed);
    },
    logger: true
});
server.listen(8025);

Однако, когда я включаю опции TLS, отправкаэлектронная почта на мой сервер больше ничего не регистрирует.Я даже не получаю соединение, согласно журналам.

const fs = require("fs");
const {SMTPServer} = require("smtp-server");
const {simpleParser} = require("mailparser");
const server = new SMTPServer({
    secure: true,
    authOptional: true,
    onData: async (stream, session, callback) => {
        const parsed = await simpleParser(stream);
        callback();
        console.log(parsed);
    },
    key: fs.readFileSync("privkey.pem"),
    cert: fs.readFileSync("cert.pem"),
    ca: fs.readFileSync("chain.pem"),
    logger: true
});
server.listen(8025);

Я думаю, что файлы сертификатов правильные, потому что я использую их для своего веб-сервера, а также для своей конфигурации Postfix, в том же домене,и HTTP / SMTP-выход работает нормально и безопасно.Я просто не могу получать электронную почту безопасно из-за этой проблемы.

Кстати, я слушаю порт 8025 с перенаправлением iptables с 25 на 8025, и я просто отправляю через мой Gmailаккаунт.

Что здесь происходит?Я что-то не так делаю?

1 Ответ

0 голосов
/ 11 октября 2018

Кстати, я слушаю порт 8025 с перенаправлением iptables с 25 на 8025, и я просто отправляю через мой аккаунт Gmail.

Поскольку вы используетеsecure: true, вы принудительно шифруете TLS.Для этого вы должны принять подключения к порту 465 и NOT 25 к вашему серверу.

Вы можете установить secure: false, что будет по-прежнему разрешать шифрованиечерез STARTTLS , на порту 25.

Однако для максимальной совместимости вы должны запустить два экземпляра smtp-сервера - один прослушивает порт 25 с secure: false, а другой прослушивает порт 465 с secure: true.

Редактировать:

Я только что провел некоторое тестирование, и я могу подтвердить, что простое удаление secure: true из вашего скрипта работает очень хорошо.

Вы можете протестироватьэто через https://www.checktls.com/TestReceiver, который проверит соединение, обновление TLS, ваш сертификат и все остальное.

Вот мои результаты, используя ваш скрипт с удаленным secure: true:

https://gyazo.com/05a34942d2cc4a2d633e830258b90f88

Как видите, соединение обновляется до TLS просто отлично, и все идет гладко.Это на порту 25.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...