Что необходимо для добавления возможностей электронной почты в веб-приложение?

У меня есть веб-приложение Java, к которому я хотел бы добавить возможности электронной почты, однако я не уверен, что необходимо для этого. В частности, я хочу, чтобы мое приложение могло:

  1. Отправка писем с подтверждением регистрации
  2. Разрешить пользователям отправлять электронные письма друг другу, используя домен моего приложения, например [email protected]

Судя по моим исследованиям, мне понадобится агент передачи почты (MTA), такой как Postfix, и, возможно, сервер IMAP, такой как Courier; но я не понимаю необходимости сервера IMAP.

Спасибо.


person Dan    schedule 29.07.2010    source источник
comment
Если вы хотите, чтобы вашим сервисом пользовались широкая общественность, а не только некоторые люди из корпоративной интрасети, которые будут получать все, что отправляется из-за маршрутизатора, вы можете прочитать это: codinghorror.com/blog/2010/04/, если вы на самом деле хотят, чтобы люди получали эти электронные письма.   -  person Marc Bollinger    schedule 29.07.2010
comment
@Marc, поэтому рекомендуется использовать существующий работающий SMTP-сервер, если это вообще возможно.   -  person Thorbjørn Ravn Andersen    schedule 29.07.2010
comment
Вам определенно нужен как минимум SMTP-сервер. См. также ">этот ответ.   -  person BalusC    schedule 29.07.2010
comment
@ Торбьорн, о, абсолютно. Я сделал свой пост комментарием, потому что у меня не было времени конкретизировать полный ответ, но хотел добавить, что просто иметь SMTP-сервер недостаточно.   -  person Marc Bollinger    schedule 29.07.2010


Ответы (3)


Вам нужен код внутри вашего веб-приложения для создания и отправки электронной почты в мир SMTP. Обычно для этого используется JavaMail, и вы можете либо включить его в свое веб-приложение, либо (предпочтительно) сделать так, чтобы веб-контейнер предоставлял правильно настроенный экземпляр через JNDI. Это зависит от поставщика.

Если у вас нет SMTP-сервера для подключения к JavaMail (часто это магазины Exchange для Windows), вы можете либо запустить его (спросите своего ИТ-администратора), либо использовать Google Mail, Hotmail или другие, если это подходит для вашего веб-приложение для отправки почты через них. Немного сложно использовать GMail в качестве SMTP-сервера, но при правильной настройке работает очень хорошо.

Вам понадобится SMTP-сервер, так как он обрабатывает все скучные детали, касающиеся MX-записей и повторной отправки, если SMTP-сервер делает серый список и т.д. и т.п.

Да, и IMAP предназначен для получения доставленной почты, а не для отправки почты. Вам это не нужно.

person Thorbjørn Ravn Andersen    schedule 29.07.2010
comment
Является ли Postfix самым простым в настройке/использовании SMTP-сервером с открытым исходным кодом? Также спасибо за пояснение роли сервера IMAP; некоторые из примеров, которые я рассмотрел в Интернете, создавали впечатление, что IMAP был компонентом отправки электронных писем, что сбивало с толку, поскольку IMAP означает протокол доступа к электронной почте в Интернете. - person Dan; 29.07.2010
comment
Postfix — это MTA, который предпочитает Ubuntu, поэтому вся документация относится к нему. Легко зависит от вашего набора навыков :) На какой платформе работает ваш веб-контейнер, если это какой-то вариант Linux, его может быть очень просто запустить и запустить. - person Thorbjørn Ravn Andersen; 29.07.2010

Если это веб-приложение Java, то серверная часть представляет собой сервлет. Учитывая сообщение электронной почты, отправленное из клиентской формы, ваш сервер должен отправить этот текст как электронное письмо.

Для этого есть код в стеке Java EE, или вы можете специально загрузить JavaMail< /а>. Это позволит вашим программам действовать как почтовые клиенты.

Ваш MTA получает сообщения от вашего сервлета и отправляет их пользователям. Все идет нормально.

Но вам также нужен почтовый ящик, то есть аналог почтового ящика для ваших пользователей. Postfix, QMail и другие предлагают базовую «плоскую» модель почтового ящика, в которой почта просто хранится до тех пор, пока клиент не заберет ее, а затем (обычно) удаляется. Доступ осуществляется по протоколу POP3. IMAP предлагает гораздо больше организационных возможностей, то есть возможность указывать иерархию вложенных почтовых ящиков, передавать почту между ними и так далее. Вы, вероятно, не захотите создавать внешний интерфейс с графическим интерфейсом для всей этой сложности, поэтому я предполагаю, что вам действительно не нужен сервер IMAP. Однако вам нужен относительно простой сервер POP3, позволяющий вашему сервлету получать доступ к почтовым ящикам через TCP/IP. Обычно это часть «стандартных» пакетов почтового сервера.

Чтобы ваш собственный домен был известен миру, вам нужен доступ к записям MX вашей службы DNS, т. е. вы должны настроить один или два ваших хоста на адресе, обращенном к Интернету, в качестве вашего почтового отделения.

Наконец, если вы хотите избавить себя от многих проблем, будьте очень осторожны при настройке вашего MTA (SMTP-сервера) таким образом, чтобы он не мог использоваться в качестве открытого ретранслятора. т. е. у ваших пользователей не должно быть возможности отправлять почту во внешний мир в целом (или хакеры найдут способ использовать ваш веб-интерфейс, чтобы сделать это), и почта из Интернета не должна доходить ваши пользователи. Самое главное, чтобы почта из Интернета не могла пересылаться куда-либо еще в Интернете. Найдите откройте службу тестирования ретрансляции (они бесплатны) в сети и получите ее для запуска теста вашей конфигурации, как только вы решите, что все готово.

ИЗМЕНИТЬ:

Глядя на ответ Торбьорна, я понял, что вы, вероятно, не хотите, чтобы ваши пользователи получали почту через ваше приложение; у них, вероятно, уже есть поставщики электронной почты и собственные учетные записи. В этом случае вам не нужно беспокоиться о возможностях почтового ящика или сервере POP3. Вы могли бы рассмотреть возможность предоставления полных почтовых услуг на своем домене, но это очень неблагодарная работа, и если у вас есть выбор, оставьте эту грязную работу GMail, Yahoo, Hotmail и им подобным. Какие бы услуги вы ни предоставляли, они никогда не будут достаточно довольны вашими клиентами, и вы будете каждый день бороться со спамом и другими преступлениями.

person Carl Smotricz    schedule 29.07.2010
comment
Большой плюс по соображениям безопасности. Подумайте дважды, а не трижды, прежде чем делать это. - person BalusC; 29.07.2010
comment
Простым решением для вашего собственного SMTP-сервера будет виртуальный экземпляр сервера Ubuntu 10.04 (работающий внутри vmware, virtualbox, parallels, виртуальный компьютер) с установленным и настроенным постфиксом. - person Thorbjørn Ravn Andersen; 29.07.2010
comment
На данный момент я хочу только предоставить пользователям моего приложения возможность отправлять электронные письма. Я согласен с тем, что предлагать полноценные услуги электронной почты, вероятно, было бы неблагодарной работой с минимальными дополнительными преимуществами (если они вообще есть). Спасибо за подробное объяснение и предупреждение о службе тестирования открытой реле; это было очень полезно. Я, конечно, посмотрю дальше на тестирование реле. - person Dan; 29.07.2010

Для начала ваш сервер должен иметь возможности рассылки. В Linux обычно используется sendmail.

Кроме того, проверьте javaMail.

http://www.oracle.com/technetwork/java/index-jsp-139225.html

person Chris    schedule 29.07.2010