Как настроить SMTP-сервер в NATIVE nodeJS - никаких зависимостей - PullRequest
0 голосов
/ 01 мая 2020

Я видел много блогов и вопросов о переполнении стека о настройке nodejs для использования уже существующего сервера smtp, особенно через такие модули, как nodemailer et c. Некоторые из того, что я уже видел:

https://www.zeolearn.com/magazine/sending-and-receiving-emails-using-nodejs

Использование клиента SMTP для отправки электронной почты без ввода пароля

Как я могу создать собственный SMTP-сервер для отправки уведомлений по электронной почте в Nodejs?

Отправка писем в Node.js? (НЕ ЗНАЮ, ПОЧЕМУ ЭТО ЗАКРЫТО)

Используйте SMTP-клиент для отправки электронной почты без предоставления пароля

Nodemailer с Gmail и NodeJS

Nodemailer отправляет электронную почту без транспорта SMTP - это крошечный бит ближе к тому, что я хочу

Как я могу создать собственный SMTP-сервер для отправки уведомления по электронной почте в Nodejs? - это так близко пока нет ответов

Отправка электронной почты через Node.js с использованием nodemailer не работает

Smtp Js API не работает! Есть ли способ отправить электронную почту, используя SMTP-сервер с JavaScript или JQuery

Электронная почта NodeJS не может отправить

Любое предложение для почтового сервера smtp в nodejs? - этот может быть единственным, который даже пытается ответить на него, хотя из docs для службы, упомянутой там (smtp-сервер), я Я не вижу, где на самом деле создаются SMTP-сервер с нуля, т.е. я не вижу той части, которая показывает, как сделать свой собственный myemail@mydomain.com, используя nodeJS (при условии, что сервер NodeJS настроен на какой-то вид из linux ВМ, как google Compette engine).

Все эти ответы и блоги касались только отправки электронных писем через какого-либо другого почтового клиента.

Меня не интересует любые другие почтовые серверы.

Я не верю в gmail - или любых других сторонних поставщиков электронной почты.

Я хочу разместить свой собственный.

От себя компьютер.

Не ставьте под сомнение мои намерения.

Это совершенно правильная программа Вопрос на вопрос:

Как создать с нуля (т. е. только , используя встроенную библиотеку "net" в nodeJS, без внешних зависимостей в все ) создать почтовый сервер SMTP (при условии, что у меня есть собственный домен, зарегистрированный где-то на виртуальной машине HTTPS), который имеет возможность получать почту на myemail@mydomain.com и отправлять электронные письма с myemail@mydomain.com, без каких-либо сторонних лиц серверы на всех .

Как я могу по крайней мере запустить , чтобы сделать это? Любой возможный справочник или учебник, посвященный протоколам сокетов SMTP, будет отличным началом.

1 Ответ

1 голос
/ 01 мая 2020

Несколько дружеских советов - вы, вероятно, хотите использовать готовый MTA, такой как postfix, exim4 или sendmail, если вы просто хотите получать почту на локальном компьютере.

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

Тем не менее, SMTP (написание заметок) - это очень простой протокол и отличный «первый протокол», который нужно реализовать, если вы заинтересованы в этом. Было бы очень легко написать один в NodeJS.

Первое издание, которое вас заинтересует, было выпущено где-то в 1982 году, как RF C -821, он же IETF STD-10. Затем он был обновлен за эти годы до RF C -2821 и нескольких связанных спецификаций, но базовая поддержка c RF C -821 даст вам то, что вам нужно, чтобы поговорить с 99% хостов на Inte rnet сегодня. (Это число уменьшится на go, так как вам нужна поддержка ESMTP для TLS - но это не намного сложнее и не сильно отличается).

Вашему демону нужно будет прослушивать порт 25 и обрабатывать подобные команды :

YOU:  220 my.computer.com SMTP Service Ready
THEM: EHLO blah blah
YOU:  500 Syntax Error. Try again using SMTP.
THEM: HELO blah blah
YOU:  250 G'day mate
THEM: MAIL FROM: <billg@microsoft.com>
YOU:  250 Sender Okay
THEM: RCPT TO: <steve@apple.com>
YOU:  250 OK
THEM: DATA
YOU:  354 Enter mail, end with "." on a line by itself...
THEM: <BUNCH OF STUFF>
      .
YOU:  250 Mail accepted
THEM: QUIT
YOU:  221 Goodbye

Очевидно, здесь есть еще кое-что относительно обработки ошибок и т. Д. c - прочитайте spe c - но это суть. Числа являются кодами ответов и имеют определенные значения c. Строки разделены \ r \ n и должны иметь ширину менее 1024 байт.

является сообщением электронной почты, и в нем не будет строки, которая является просто точкой. Если в письме была такая точка, другой конец отправит дополнительную точку. Это в спецификации c.

Наконец, напишите в ваш файл $ MAIL (возможно, / var / mail / username или / var / spool / mail / username) и укажите на него свой MUA. Pine, Alpine, Elm или mutt - хороший MUA для сортировки.

должен начинаться с From (без двоеточия) и заканчиваться \ n. Это формат файла Berkeley Mbox. Он должен отражать заголовок MAIL FROM в транзакции SMTP.

Этот формат файла очень распространен и поддерживается большинством серверов POP3 и IMAP4. Вы также можете прочитать его с помощью Mozilla Thunderbird. Я знаю, что Netscape Mail поддержал его еще в тот день.

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