Как настроить SMTP-сервер для приложения node js для отправки почты? - PullRequest
0 голосов
/ 11 июля 2020

Я создаю приложение node js, в котором мне нужно отправить и получить электронное письмо. Я хотел создать собственный адрес электронной почты, например myname@mycompany.com, для каждого пользователя этого веб-приложения. Как создать это программно с помощью SMTP-сервера?

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

1 Ответ

0 голосов
/ 11 июля 2020

tldr

Если вы хотите, чтобы ваше приложение было автономным, оно должно функционировать как SMTP-клиент для отправки электронной почты напрямую получателям и как SMTP-сервер для получения электронной почты. Если вы хотите использовать поставщика Amazon SES - это предложение solid.

Возможно, вы неправильно понимаете SMTP

В SMTP клиент (тот, кто инициирует connection) всегда является отправителем электронной почты, а сервер всегда является получателем. SMTP используется в двух контекстах, но по сути это одно и то же, только с аутентификацией и без нее.

  • Первый - когда пользователи отправляют электронную почту своему почтовому провайдеру. Например: я, Алиса, использую Gmail. Я хочу отправить письмо на номер bob@yahoo.com.. Я начинаю с отправки письма в Gmail через SMTP. SMTP-сервер Gmail: smtp.gmail.com. smtp.gmail.com требует аутентификации. Я прохожу аутентификацию, используя свое имя пользователя и пароль Gmail. После аутентификации я могу отправлять электронную почту от alice@gmail.com кому угодно.

  • Второй - когда сервер хочет отправить электронное письмо на другой сервер. Например: я Gmail. Один из моих пользователей, Алиса, только что отправил электронное письмо на номер bob@yahoo.com.. Мне нужно отправить это сообщение на почтовые серверы, отвечающие за домен yahoo.com, поэтому я просматриваю записи MX для yahoo.com. Я вижу, что yahoo.com содержит 3 почтовых сервера: mta5.am0.yahoodns.net, mta6.am0.yahoodns.net и mta7.am0.yahoodns.net. Я должен сначала попробовать тот, у которого наименьшее значение priority, но все 3 имеют priority 1, поэтому я просто выбираю одно наугад. Я открываю SMTP-соединение с mta7.am0.yahoodns.net. Этот сервер не требует аутентификации. Мне разрешено отправлять электронную почту от кого угодно на anyone@yahoo.com.

SMTP не имеет команд для создания учетной записи. Фактически, SMTP может работать вообще без учетных записей, точно так же, как HTTP может работать без каталога файлов для обслуживания.

Что касается SMTP, единственный способ получать почту - это прослушивание SMTP-сервером порт 25 для адреса, указанного в записи MX для mycompany.com. Невозможно подключиться к другому SMTP-серверу и попросить «дать мне всю электронную почту для myname@mycompany.com». Вот для чего нужны POP и IMAP.

Как делать то, что вы хотите

У вас есть 2 отдельные проблемы. Вы должны иметь возможность отправлять почту, и вы должны иметь возможность получать почту.

  • Отправка
    • Когда вам нужно написать foo@bar.com, вы можете найти MX записи для bar.com, откройте SMTP-соединение с этим сервером и доставьте сообщение напрямую. Основная проблема в том, чтобы не попасть в папку со спамом. Здесь есть несколько уловок, но это отдельная тема.
    • Вы можете использовать промежуточный SMTP-сервер, за работу которого вы платите кому-то другому. SendGrid и MailGun - это два примера. Так же, как когда Алиса подключилась к smtp.gmail.com, вы можете подключиться к SMTP-серверу SendGrid. Вы должны пройти аутентификацию с ними, но в отличие от Алисы, которая может отправлять сообщения от alice@gmail.com кому угодно, вам будет разрешено отправлять электронную почту с anyone@mycompany.com кому угодно. SendGrid позаботится о том, чтобы ваши электронные письма не попадали в спам людей.
    • Для отправки электронной почты вы можете использовать другой API, не использующий SMTP. Amazon SES , например.
  • Получение
    • Вы можете управлять SMTP-сервером. Если хотите, его можно даже встроить в ваше приложение узла. Вам просто нужно убедиться, что ваш сервер прослушивает порт 25, и что первая MX запись (с самым низким приоритетом) для mycompany.com указывает на этот сервер. Это позволяет вам реагировать, как только вы получите электронное письмо. Вы можете получить много спама, делая это, так что будьте к этому готовы.
    • Вы можете заплатить кому-то, чтобы он работал с SMTP-сервером для вас, и попросить их сбросить полученное электронное письмо в почтовый ящик, доступный через POP или IMAP . Вы должны добавить запись MX для mycompany.com, указывающую на SMTP-сервер компании. Вы должны добавить учетные записи, используя их API. Вы можете запросить новую электронную почту через POP или IMAP (IMAP поддерживает уведомления, но это более сложный протокол).
    • Amazon SES также поддерживает получение электронной почты.
...