Несколько дружеских советов - вы, вероятно, хотите использовать готовый 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 поддержал его еще в тот день.