Зачем мне SMTP-сервер?

92

Зачем мне нужен промежуточный SMTP-сервер для отправки почты? Почему мой клиент (Outlook, Thunderbird) не может отправлять сообщения непосредственно в домен SMTP получателя?

Например, если мне нужно отправить электронное письмо address@example.comс моей учетной записью Gmail, я отправлю его на smtp.gmail.comсервер; и затем этот сервер отправит мое сообщение на сервер MX example.com.

Тобия
источник

Ответы:

114

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

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

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

Но становится еще хуже - спаммеры . Большинство писем (более 80%) являются спамом. Таким образом, почтовые провайдеры делают все возможное, чтобы решить эту проблему - и большое количество методов делают предположения о способе доставки электронной почты - следующие важные соображения:

  1. Greylisting: некоторые провайдеры автоматически разрывают почтовое соединение, если отправитель и получатель не общались ранее, и ожидают, что они попробуют во второй раз - потому что спаммеры часто этого не делают, а SMTP-сервер всегда должен это делать. Это уменьшает объемы спама примерно на 80%. Это отстой, хотя делать это.

  2. Репутация: гораздо более вероятно, что кто-то, отправляющий электронную почту через известный SMTP-сервер с хорошей репутацией, является законным, чем сервер, работающий на лету. Чтобы почувствовать репутацию, провайдеры делают несколько вещей:

    1. Блокировать динамические / клиентские адреса (не 100%, но выделены большие фрагменты Интернета).

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

    3. Репутация. При взаимодействии с другими SMTP-серверами многие провайдеры отслеживают количество спама и объемы отправленных сообщений и могут уменьшить количество спама, ограничивая количество подключений и следя за этими параметрами. (Есть много способов сделать это, не все из которых очевидны, но которые требуют известного отправителя).

    4. SPF и DKIM: эти механизмы связывают ресурсы DNS с доменным именем, чтобы сделать подделку почты труднее, и было бы трудно (но не обязательно невозможно развернуть, если почтовая программа (MUA) отвечает за исходящую почту. (Добавлено, чтобы сделать этот ответ более Завершить, поскольку это уже принято. Надо отдать должное постерам ниже, так как это ускользнуло от меня, но, тем не менее, очень актуально)

Есть, вероятно, другие незначительные проблемы, но они будут основными.

davidgo
источник
19
Не забывайте о таких не совсем незначительных вещах, как SPF (белый список узлов, которым разрешено отправлять почту для домена) и DKIM (цифровая подпись сообщений на уровне домена) - особенно последнее возможно только с выделенным ретранслятором.
Гравитация
@ Grawity Определенно стоит упомянуть, но почему DKIM «невозможен» без специального реле? Селекторы DKIM не привязаны к отправляющему приложению или IP-адресу. Если ваш почтовый клиент может подписать сообщение опубликованным ключом, это так же верно, как и любой другой подписавший.
Матиас Р. Йессен
2
@ManuH: В соответствии с метриками в хорошем ответе, нормальная почта компрометирует 1/5 объема почты. Согласно метрикам на моем сервере, нормальная почта компрометирует 1/20 объема почты. Это потрясающий компромисс.
Dotancohen
1
@manuh: Greylisting работает, закрывая соединение перед отправкой электронной почты - он слушает только до тех пор, пока не получит отправителя и получателя - которые находятся в заголовке th. Кроме того, некоторые серые списки будут сразу. принять всю электронную почту от сервера smtp, у которого есть история повторных попыток доставки. К сожалению, это очень эффективно.
Давидго
4
Можно добавить, что в «старые добрые времена» почта часто отправлялась с одного SMTP-сервера на другой, затем на другой, затем на другой, прежде чем попасть в пункт назначения. Обычно это работало нормально, но, например, во время атаки на rtm-червя один из отключенных компьютеров был одним из важнейших почтовых ретрансляторов, поэтому отправка электронных писем с предупреждением, решениями и исправлениями для червя могла занять до 48 часов. их получатели.
Баард Копперуд
32

Зачем мне нужен промежуточный SMTP-сервер для отправки почты? Почему мой клиент (Outlook, Thunderbird) не может отправлять сообщения непосредственно в домен SMTP получателя?

В 1991 году - и в большинстве начале 1990-х и даже раньше - вы могли бы делать то, что описали. Но в 2015 году реальность такова, что, хотя технически можно отправить электронное письмо кому угодно с любого компьютера, на котором установлена ​​почтовая служба, мир СПАМа сделал этот метод практически бесполезным.

Когда вы используете «настоящую» службу SMTP, такие вещи, как записи PTR, записи SPF и даже DomainKeys, устанавливаются только для одной цели и только для одной цели: подтвердить, что SMTP, отправляющий сообщение, является законным. А если нет? Отфильтруйте сообщение в папку СПАМ или «большую пропасть» удаления. Вот разбивка каждого из этих пунктов:

  • PTR (запись указателя / обратная запись DNS): проверка на уровне сервера. Как объясняется здесь , запись PTR используется для сопоставления сетевого интерфейса (IP) с именем хоста. Это означает, что если у вас есть адрес 123.456.789.0на вашем SMTP-сервере, отправляющем электронные письма для smtp.example.comсоответствующей записи PTR для этого smtp.example.com. Кажется слишком простым, но это работает, поскольку единственный, кто действительно может установить запись PTR, является владельцем IP-адреса, и он может быть установлен только на их оборудовании. Таким образом, он действует как точка проверки того, кто владеет / управляет / управляет этим IP-адресом.

  • SPF (платформа политики отправителя): проверка уровня входа DNS имени хоста. Запись SPF, как объясняется здесь , в основном представляет собой запись DNS, устанавливаемую держателем имени домена, которая предоставляет список IP-адресов и имен хостов серверов, которым разрешено отправлять электронные письма для этого имени домена. Это снова еще один шаг проверки, который гарантирует, что только истинный владелец имени домена для SMTP-сервера может отправлять почту. Допустим, сервер с IP-адресом 123.456.789.9отправляет электронные письма example.com. Мы уже знаем, что smtp.example.comиспользует 123.456.789.0, но запись в записи SPF для example.comможет заявить: «Эй! 123.456.789.9хороший сервер! Он законный! Уважайте его письма! »

  • DKIM (DomainKeys Identified Mail): проверка уровня сообщения электронной почты. Как объясняется здесь и в Википедии , «DKIM - это система проверки электронной почты, предназначенная для обнаружения подделки электронной почты, предоставляя механизм, позволяющий получающим почтовым обменникам проверять, что входящая почта из домена авторизована администраторами этого домена и что электронная почта (включая вложения) не был изменен во время транспортировки ». Используя криптографические хеши, DKIM проверяет, что сама почта не была отфильтрована или подделана во время транспортировки. Это также служит еще одним пунктом проверки в цепочке «Вы законный или вы СПАМ?».

Таким образом, в конце концов, общедоступный SMTP-сервер, который стоит чего-либо, будет иметь как минимум два из этих элементов (PTR и SPF), чтобы проверить, что SMTP-сервер и связанная с ним электронная почта являются законными. Не все используют DKIM, но это еще один уровень проверки, который становится все более популярным в настоящее время, так как спаммеры становятся более настойчивыми в своих попытках отправить спам.

JakeGould
источник
15

Большинство жилых интернет-провайдеров блокируют TCP-порт 25 (SMTP), чтобы предотвратить ваше участие в спам-сети. Если ваш компьютер заражается, ваш компьютер может начать извергать спам по приказу кого-то еще.

Рон Мопин
источник
Вы пишете «Большинство жилых интернет-провайдеров блокируют TCP-порт 25 (SMTP)» <- не могли бы вы уточнить, что это значит. Вы имеете в виду, что они не позволят вам установить исходящее соединение с SMTP-сервером через порт 25? Или вы имеете в виду, что они не позволят вам получить соединение через порт 25?
Barlop
2
@ barlop the first - они блокируют исходящие соединения на 25 от внутренних ссылок на машины, отличные от их собственных почтовых серверов (или даже где угодно, потому что они могут использовать 587 или 465 для своих собственных серверов). Однако несколько преувеличено сказать, что большинство интернет-провайдеров делают это.
Хоббс
2
@hobbs - Мой опыт (и это справедливая часть моей работы) отличается. Хотя многие интернет-провайдеры будут блокировать трафик, выходящий из их сети, с целью порта 25 (который пропускает трафик порта 25 через свои почтовые серверы), в целом это не так для порта 587 или 465 - и это действительно имеет смысл. Порты 587 и 465, как правило, требуют аутентификации и блокировки, и, в частности, являются MUA для MTA, а не MTA-MTA. Блокирование этих портов вызовет ОГРОМНУЮ обратную реакцию, так как это требуется многим компаниям, чтобы обеспечить роуминг, учет и не нарушать SPF.
Давидго
3
@hobbs, я никогда не писал, что большинство интернет-провайдеров делают это; то, что я написал, - то, что большинство жилых интернет-провайдеров делают это. Например, AT & T, Comcast, TWC, Verizon и т. Д. Делают это для своих бытовых клиентов, но они не делают этого для своих бизнес-клиентов.
Рон Мопин
6

Все остальные ответы превосходны, и спам имеет к этому непосредственное отношение.

Но на самом деле есть более простой, более общий ответ: особенности. Отправка электронной почты через SMTP на самом деле очень сложная задача. Даже без спама вы не захотите реализовывать весь набор функций протокола SMTP в каждом почтовом клиенте; вам лучше с выделенным программным обеспечением (sendmail, postfix и т. д. самые большие в мире * nix, Exchange в мире Windows).

Например, даже на самом базовом уровне «настоящий» SMTP-сервер должен как минимум иметь возможность разрешать записи MX. Затем он должен согласовать функции (в основном TLS, но есть и другие функции). Он должен управлять очередями для повторных попыток, генерировать отчеты о недоставке и т. Д.

И это только базовая, обязательная функциональность, без которой сервер даже не работал бы. Он даже не включает такие вещи, как перезапись адресов, почтовые программы. Не говоря уже о дюжине других протоколов, которые поддерживают sendmail и др., Таких как UUCP.

Реализация SMTP в Outlook, Thunderbird и т. Д. Очень минимальна - в лучшем случае примерно эквивалентна использованию умного хоста на sendmail, если таковой.

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

Кевин Кин
источник
Это хороший момент. Однако речь идет не только о реальных функциях организации очередей и т. Д. Доступность сервера влияет на некоторые из этих функций. Если возникает проблема, и вы выключаете свой ноутбук, он не может повторить попытку до следующего включения - почтовый сервер, вероятно, будет доступен 24/7, хотя он находится в гораздо лучшем положении для управления очередью сообщений. После того как вы отправили свое сообщение на сервер по SMTP, вашему почтовому клиенту не нужно оставаться в сети, чтобы обеспечить доставку.
Дэвид Спиллетт
4

Зачем мне нужен промежуточный SMTP-сервер для отправки почты? Почему мой клиент (Outlook, Thunderbird) не может отправлять сообщения непосредственно в домен SMTP получателя?

Вы можете создать почтовую программу, которая бы это делала, и я не сомневаюсь, что другие уже делали (или пытались) это раньше.

По сути, вы будете писать инструмент, который будет одновременно MUA (агент пользователя почты) и MTA (агент передачи почты).

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

MTA должен:

  • Найдите и подключитесь к серверам, которым он не доверяет или которые могут плохо себя вести, и исправьте ошибки, не теряя почту.

  • Обработайте неработающие серверы и направьте их на альтернативные серверы или поставьте в очередь почту для последующей повторной попытки. Это лучше всего работает на серверном процессе, который всегда подключен к Интернету. Это также означает, что агенту пересылки почты нужны собственные области хранения для почты, находящейся в очереди.

  • Работа с различными возможностями сервера, настройка поведения в соответствии с возможностями принимающего сервера.

  • Сообщите пользователю об ошибках или о невозможности доставки почты, чтобы почта не просто потерялась.

  • Иметь отличные методы безопасности и быть очень внимательным к безопасности.

  • В идеале, находиться на надежном, всегда подключенном сервере со стабильным IP-адресом и обратной записью DNS, то есть подключением к Интернету, подходящим для общедоступных серверов. Это помогает другим системам не обнаруживать почту, отправленную как спам.

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

thomasrutter
источник
1

Еще одна вещь, которую следует учитывать, это получение возвращенного электронного письма . Как минимум, вся исходящая электронная почта имеет адрес FROM, на который можно отправить ответ (неизвестный пользователь, ответ из отпуска и т. Д.). Чтобы разрешить обратный адрес, должна существовать запись MX, указывающая на местоположение входящего почтового ящика. Если вы не отправляете электронную почту с компьютера со статическим IP-адресом, который всегда включен, вам понадобится сервер для обработки этих входящих сообщений. Это обычно (но не всегда) обрабатывается одной и той же службой.

GMail, Outlook 365 и Yahoo Mail являются примерами служб электронной почты, которые используются лицами, отправляющими электронную почту. Для коммерческой отправки электронной почты существуют такие службы, как MailChimp, Marketo и Eloqua, которые очень хороши в отправке массовой электронной почты для компании и обработке таких вещей, как отскок, регулирование и доставка.

Смотрите: https://en.m.wikipedia.org/wiki/Bounce_address

Dana
источник
Я не понимаю, зачем мне нужен статический IP-адрес для получения ответа ... Ответ должен быть доставлен на мой MX-сервер (например, Gmail), а не на мой компьютер. Я прав?
Tobia
Да вы правы. Я предполагаю, что моя точка зрения заключается в том, что почтовые ящики обычно существуют на сервере где-то для отправки исходящей электронной почты. Логично, что для этого сервера также имеет смысл обрабатывать исходящую электронную почту. В противном случае вы потеряете такие вещи, как «отправленная» папка электронной почты.
Дана
Ммм это разумно. Но я могу свободно отправлять в Gmail сообщение с неизвестным адресом «от» или «replyto», не используя свой SMTP-сервер ...
Tobia
1
Если вы используете GMail, вы должны использовать аутентификацию SMTP. Таким образом, адрес FROM установлен на ваш адрес @ gmail.com. В противном случае вы сможете использовать их сервис для подмены.
Дана
2
В настоящее время многие пользователи не могут заботиться о возвратах, НО настройку, которая не принимает отказы, обычно считают вероятным источником спама.
rackandboneman