Назад | Перейти на главную страницу

Отправка (некритических) писем от «менее надежного» хоста

Задний план

У нас есть веб-приложение, работающее на webapp.example.com который (среди прочего) время от времени отправляет сообщения по электронной почте. Эти сообщения не являются критическими: хотя мы хотели бы приложить максимум усилий для их доставки, знание о том, что доставка сообщения не удалась, не представляет интереса.

Имея это в виду, вчера я спросил Что делать, если вы не хотите получать сообщения о недоставке писем?- к сожалению, кажется, что ответ - отказаться от таких отскоков после сначала получать их (а не отказываться от них, например, на уровне SMTP или ниже; или передавать исходные сообщения с нулевым обратным путем).

Варианты

Предположим, что сообщения, сгенерированные веб-приложением, в настоящее время имеют обратный путь webservice@webapp.example.com а в DNS домен example.com. полностью определяется следующими записями:

@        SOA    ns.example.net. hostmaster 1 86400 7200 604800 300
         NS     ns.example.net.
         NS     ns.example.org.

         MX 1   mx.example.net.
         TXT    "v=spf1 a:192.0.2.0/24 -all"

webapp   A      198.51.100.1
         TXT    "v=spf1 a -all"

Наша проблема в том, что для получения сообщений об отказе (хотя и чисто для того, чтобы потом их можно было выбросить), мы думаем, что либо:

  1. webapp.example.com должен запустить SMTP-сервер, который принимает рикошеты;

  2. на другом компьютере должен быть запущен SMTP-сервер, который принимает сообщения о недоставке, а запись MX должна быть добавлена ​​в webapp.example.com. чтобы они были доставлены туда; или

  3. обратный путь должен быть изменен, например к webapp@example.com- в этом случае почтовые обменники этого домена должны не только принимать сообщения о недоставке, но также:

    (а) политика отправителя для результирующего домена, например example.com., необходимо обновить, чтобы включить a:webapp.example.com; или

    (b) веб-приложение должно ретранслировать все исходящие сообщения через хосты, одобренные политикой отправителя этого домена, например 192.0.2.0/24.

Проблемы

Вариант №1 нежелателен, потому что мы не особенно хотим дополнительной уязвимости безопасности, связанной с запуском дополнительной общедоступной службы на машине, на которой размещено веб-приложение (по крайней мере, той, которая так мало выполняет).

Вариант № 2 нежелателен, потому что наша единственная общедоступная почтовая служба предоставляется третьей стороной, а создание новых доменов получателей выходит за рамки нашего существующего соглашения о предоставлении услуг.

Вариант № 3 (а) нежелателен, потому что мы не желаем предоставлять webapp.example.com разрешение на отправку сообщений от других отправителей в пределах example.com.

Вариант № 3 (б) нежелателен, поскольку он повлечет за собой поддержание VPN-соединения с (общедоступной) webapp.example.com в нашу безопасную внутреннюю сеть.

так что нам делать?

Возможно, во многих случаях вариант №2 будет лучшим решением. Однако в свете причин, указанных выше, для нас вариант №1 выглядит наименее плохим, но все же кажется огромным излишеством. Есть ли способ лучше?

Читая вашу предыдущую ветку вопросов, я понимаю, что вы используете exim. Я предлагаю настроить его как MTA только для отправки. Я лично использовал это руководство для быстрой настройки почтовых серверов только для отправки в общедоступных сетях. В основном он отказывается от внешних подключений к порту smtp.

Знаю, что это не самый «стандартный» способ решения вопроса, но очень практичный.

Обратной стороной является то, что некоторым поставщикам электронной почты может не понравиться невозможность обратной связи с исходным сервером, и они вообще отказываются принимать почту от него. По моему опыту, я никогда не видел, чтобы такое происходило, но полагаю, это зависит от количества «некритических» писем, которые вы отправляете, и от того, как часто эти письма возвращаются.