Что за файл smtp
SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи электронной почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.
ESMTP (англ. Extended SMTP) — масштабируемое расширение протокола SMTP. В настоящее время под «протоколом SMTP», как правило, подразумевают ESMTP и его расширения.
Для нашего эксперимента буду использовать почтовый сервер яндекса. Подразумевается, что уже есть там аккаунт…
Сразу предупреждаю, что после соединения все команды нужно вводить максимально быстро, т.к. при задержке около 15 секунд соединение автоматически разрывается. Рекомендую сперва все команды заранее набрать в текстовом редакторе а после просто вставлять их в командную строку.
Код 220 говорит об успешном соединении
Этот самый VXNlcm5hbWU6 — закодированное в base64 слово “Username:”, а номер ответа 3ХХ означает, что сервер ждет от нас дополнительной информации. Не будем его огорчать:
Это, как можно догадаться, “Password:” в base64
т.е. авторизация прошла успешно. Теперь можно отправлять e-mail)
Т.е. сервер будет считывать введенные в консоли данные до того момента, пока мы не нажмем Энтер точка Энтер (после этой комбинации письмо сразу отправляется)
- Заголовков SMTP-протокола (то, что мы вводим при MAIL FROM: и RCPT TO: плюс некоторая служебная информация)
- Заголовков письма. (отправитель, обратный адрес, адресат, отметки о спам-проверках, тема письма, MIME-тип, кодировка и т.п.)
- Тела письма. (отделяется от заголовков пустой строкой, обычный ASCII текст либо соответствующий mime типу набор данных)
Это все. Как видно, протокол довольно простой, основные сложности — в формировании самого тела письма.
Конечно, здесь не приведена информация по отправке почты в кодировках текста, отличных от ASCII, не написано про вложенные файлы и MIME но если вам нужны подробности, вот несколько ссылок:
Электронная_почта Wiki
SMTP Wiki
MIME Wiki
rfc5321
При разработке приложений непосредственно с SMTP обычно работать не приходится, для этого используют различные фреймворки или стандартные функции. Для PHP можно посмотреть:
SMTP PEAR расширение
PHPMailer библиотека для работы с электронной почной
Удачных экспериментов!
В отдельных случаях может потребоваться настроить отправку почты с сайта через SMTP-подключение. Популярные CMS имеют специальные плагины или встроенные инструменты для этой функции.
Обратите внимание, что на наших серверах запрещена подмена отправителя: адрес отправителя должен совпадать с адресом, под которым выполняется авторизация на SMTP-сервере.
SMTP и его место в стеке TCP/IP
Теоретически SMTP умеет работать с практически любыми протоколами так называемого транспортного уровня, включая TCP, UDP и другие. Еще на заре развития протокола за ним закрепили два номера порта:
- Первый — это порт 25, посредством которого почта передается между почтовыми серверами.
- Второй — порт 587, благодаря которому почта передается от почтового клиента на сервер.
В большинстве случаев протокол SMTP используется для передачи исходящей почты с использованием порта TCP 25. То есть можно сказать, что SMTP-порт — это как раз TCP 25, хоть и не всегда. Иногда задействуется еще порт 465. Так происходит, когда порт требует защищенного SSL-соединения.
Но в большинстве случаев используется лишь один транспортный протокол TCP с портом 25 (это SMTP-порт по умолчанию). Другие варианты применяются крайне редко, например, когда провайдеры по какой-то причине закрывают доступ к 25 порту. Они могут делать это, например, для блокировки спам-рассылок.
Netcat
В админ-панели перейдите в раздел «Настройки» — «Настройки системы». В блоке «Вид транспорта» выберите «Использовать SMTP» и укажите следующие параметры:
Как избежать ошибок при составлении и отправке писем
- выделенный IP-адрес с целью исключить блокировку на стороне сервера-ретранслятора или почтовой программы конечного получателя;
- криптографические подписи DKIM и SPF, помогающие подтвердить подлинность домена и минимизировать количество писем, воспринимаемых как спам.
Важно! В случае несоблюдения этих элементарных правил вы рискуете не только тем, что конкретное письмо не будет доставлено адресату. При многократных попытках отправки письма в большинстве почтовых программ в блок-лист попадет вся корреспонденция, отправляемая с вашего email, и даже корпоративный домен (@domain.***).
Некорректное использование бота для отправки писем может привести к блокировке отправителя и другим нежелательным последствиям. Даже если информация, которую вы отправляете потенциальным клиентам, реально интересна им, система спам-фильтрации может воспринять данную рассылку как вредоносную. Чтобы избежать этого, лучше всего воспользоваться услугами специализированных компаний.
Данные коды являются трехзначными, каждая его часть несет в себе определенную информацию, расшифровывающую причину сбоя.
Первая цифра комбинации содержит информацию о качестве доставки:
Существует четыре варианта значений для первой цифры кода:
Вторая цифра в коде сообщает о категории ответа:
- 0 – синтаксические ошибки;
- 1 – ответы на запросы информации;
- 2 – ошибки канала передачи;
- 3 и 4 – неизвестный тип ошибки;
- 5 – статус почтовой системы.
Третья цифра дает более расширенную информацию о значении, указанном во второй цифре SMTP-ответа.
Полную информацию о кодах, их компоновке и значениях можно найти в спецификациях RFC 5321 и RFC 1893.
Следует учитывать, что SMTP-message говорит об успешном или неудачном варианте доставки именно на уровне взаимодействия почтовых серверов. Положительный ответ вовсе не означает, что ваше письмо не попало в папку « Спам » .
Instant CMS
В админ-панели сайта перейдите в раздел «Настройки» и далее на вкладку «Почта». В пункте «Почтовый транспорт» выберите «SMTP» и укажите следующие параметры:
После сохранения настроек вы можете произвести тестовую отправку по кнопке «Проверить настройки почты» слева вверху, чтобы убедиться, что все работает корректно.
Электронное письмо и его формат
- Так называемый конверт.
- Заголовок.
- Тело письма.
Что касается заголовка и тела письма, то их параметры прописаны в отдельном документе — RFC2822.
Формат поля заголовка Received:
Received:
From host
by host
via physical-path
with protocol
id message-id
for final e-mail destination
Ответы SMTP
Здесь все одновременно и проще, и сложнее. Ответы в случае SMTP состоят из двух частей:
1C-Битрикс
Специальные модули для отправки почты по SMTP существуют и для 1С-Битрикс, найти их можно в каталоге решений. Есть платные и бесплатные модули (например, этот). Описание функционала, инструкции по установке, а также отзывы других пользователей доступны на странице конкретного модуля.
Имена полей в процессе настройки могут отличаться, но основные параметры, которые вам нужно использовать, следующие:
Сертификат почтового сервера недействителен
phpBB
В панели администратора на вкладке «Общие» кликните на пункт «Настройки почты» (в разделе «Средства связи»). В блоке «Настройки SMTP» укажите следующие параметры:
Команды и ответы SMTP
MODX Revolution
MODX Revo, как и Joomla, имеет необходимые внутренние инструменты. В админ-панели наведите курсор на значок шестеренки справа вверху и откройте раздел «Системные настройки». В поле «Фильтр по разделу» выберите «Почта».
Укажите следующие значения для перечисленных ниже параметров:
В сухом остатке
Кстати, можно сделать собственный сервер SMTP для того, чтобы отправлять массовые рассылки. Но в этом случае придется выполнить множество разных тасков, включая добавление обработки статуса доставки письма, обход разного рода «черных» и «серых» списков. Требуется еще и удобная статистика отправлений, и возможность отписки от рассылки.
Для того чтобы все реализовать, лучше использовать специализированный сервис, владельцы которого развернули необходимые услуги. В этом случае разработчики требуются лишь для того, чтобы добавить сервис к CRM-системе.
Можно пойти еще дальше и организовать сервисы разных рассылок. Их достоинство состоит в том, что все возможности встроены в пользовательский интерфейс. А возможности не только базовые, ведь в таких сервисах есть функции сбора писем и форм подписки, работы с контактами, настройка цепочек в автоматическом режиме и проведение сплит-тестов.
Добавим, что собственный SMTP-сервер можно реализовать на мощностях Selectel, арендовав для этой задачи выделенные сервер или виртуальную машину в «Облачной платформе Selectel».
Wordpress
В Wordpress вы можете использовать один из плагинов, решающих данную задачу, например, WP Mail SMTP, Mail Bank и др. Скачайте нужный плагин с сайта Wordpress либо найдите его в разделе «Плагины» и выполните установку. Далее активируйте плагин и перейдите к его настройке, нажав на «Settings».
Укажите требуемые данные (имена полей могут отличаться в зависимости от используемого модуля):
После сохранения настроек у вас есть возможность произвести тестовую отправку, чтобы проверить, что все работает корректно.
Немного о безопасности и спаме
Протокол SMTP очень простой, у него нет никаких инструментов для защиты пользовательских данных от злоумышленников. Так, адреса, указанные в соответствующем поле, не проверяются.
Кроме того, у SMTP по дефолту не используется шифрование, так что любые письма, передаваемые разными компаниями, могут быть прочитаны — было бы желание и соответствующие инструменты. Но это относится к SMTP первой версии. В улучшенном варианте разработчики добавили шифрование. Для того, чтобы его задействовать, нужно использовать специальную команду STARTTLS.
Большинство почтовых серверов для безопасности настраиваются на работу лишь с локальными юзерами. То есть это те пользователи, у которых есть ящики с адресом из пула домена, который они и обслуживают. Здесь встречаются и новые термины. Так, серверы, которые работают в ином режиме, позволяя передавать почту абсолютно на все адреса, называются «открытые релеи». Они нужны обычным пользователям, но активнее всего их используют злоумышленники. Зачем? Чтобы рассылать спам, конечно же. Поэтому за режимом работы корпоративных серверов нужно следить. Если при проверке сети окажется, что сервер работает в режиме открытого релея, стоит поговорить с администратором сервера.
А еще можно проверить адрес отправителя посредством цифровой подписи, о чем мы уже упоминали выше.
Например, есть возможность проверки email отправителя, воспользовавшись цифровой подписью. С этой целью используется, например, взаимодействие с системой DNS. В ней хранится открытый ключ электронной подписи для конкретного домена. И этот ключ как раз можно использовать для проверки.
Команды
Все они состоят из четырех символов. Сакрального замысла здесь нет, просто в самом начале разработчики договорились, что длина будет именно такой. Ниже — основные команды SMPT. Есть и другие, но они используются реже.
Joomla
В случае с Joomla для настройки почты по SMTP вам доступны внутренние инструменты в админ-панели CMS. Кликните на ссылку «Система» в меню сверху, далее — «Общие настройки»; после перейдите на вкладку «Сервер» и найдите блок «Настройка почты».
Убедитесь, что опция «Отправка почты» включена, после чего укажите необходимые данные:
После сохранения настроек у вас есть возможность произвести тестовую отправку, чтобы проверить, что все работает корректно.
Ошибка почтового сервера 452
Значение: Insufficient system resources. Запрашиваемое действие не выполнено: недостаточно места в системе.
Возможные причины
Варианты решения
На сервере получателя закончилось место, поэтому письмо не доставляется
Чтобы в этом убедиться, достаточно попробовать осуществить отправку письма с другого сервера
Необходимо проверить количество отправляемых писем в очереди, наличие свободного места на диске и объем доступной памяти
В Microsoft Exchange Server есть специальный компонент мониторинга доступных ресурсов Back Pressure, который отслеживает свободное место на диске, на котором хранятся очереди транспортной службы Exchange. При возникновении такой ошибки можно сделать следующее:
- очистить диск от ненужных файлов;
- отключить мониторинг Back Pressure (не рекомендуется);
- перенести транспортную очередь на другой диск достаточного объема.
Opencart
В админ-панели перейдите в раздел «Система» — «Настройки». Нажмите на кнопку «Редактировать» у магазина и откройте вкладку «Почта». В пункте «Почтовый протокол» выберите «SMTP» и укажите следующие параметры:
SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он был представлен еще в 1982 году, но не теряет актуальности до сих пор. В статье разбираемся, какие задачи решает протокол и как он работает.
Для чего используется SMTP
У протокола две главные задачи:
Drupal
Для Drupal также существует специальный модуль — SMTP Authentication Support. По ссылке выберите модуль для нужной версии CMS (7 или 8) и скачайте архив либо скопируйте ссылку на него.
В админ-панели сайта перейдите в раздел «Расширения» и нажмите «Установить новый модуль». Укажите путь к скачанному архиву или вставьте скопированный URL, нажмите «Установить». После установки модуля перейдите в раздел «Конфигурация» и в блоке «Система» нажмите на имя нового модуля.
Дальше требуется включить его и указать необходимые данные.
После сохранения настроек у вас есть возможность произвести тестовую отправку, чтобы проверить, что все работает корректно.
Виды почтовых сервисов
На программном уровне существует несколько видов обработки электронной почтовой корреспонденции. К первой группе относятся виртуальные сервисы, доступные чаще всего в бесплатном исполнении через интернет-соединение на сайте почтового сервера. Это всем известные ресурсы:
Ко второй группе относятся почтовые клиенты – программы, обладающие более расширенным функционалом, чем виртуальные сервисы. Наиболее популярными и универсальными почтовыми клиентами для Windows являются:
- Opera Mail;
- Mozilla Thunderbird;
- Koma-Mail;
- SeaMonkey;
- The Bat!;
- Microsoft Outlook.
О вариантах выбора и способах создания корпоративных почтовых сервисов более подробно можно прочитать здесь: Что такое почтовый сервер и зачем он нужен.
Сервер сообщил об ошибке SMTP 550
Значение: Mailbox unavailable. Требуемые действия не предприняты: электронный ящик недоступен
Возможные причины
Варианты решения
Неверно указан email-адрес получателя
Необходимо связаться с адресатом альтернативным способом и уточнить правильность написания адреса, а также убедиться, что он является действующим
Система заражена вирусом, осуществляющим массовую рассылку писем с вашего адреса
Провести полную проверку специализированной антивирусной программой
Необходимо связаться с поставщиком интернет-услуг и получить консультацию по устранению данной проблемы
Сервер получателя не работает
Отправьте тестовое письмо на другой почтовый сервер. Свяжитесь с получателем и сообщите о проблеме
Проверка доступности почтового сервера программным методом
Одним из способов предупреждения появления ошибок является онлайн-проверка доступности почтового сервера с помощью бесплатных инструментов:
Эти сервисы пробуют подключиться к почтовому серверу по SMTP, подтверждают, что у него есть запись обратной зоны DNS, и замеряют время отклика. С их помощью можно диагностировать некоторые ошибки службы почтовых серверов или проверить, не занесен ли данный ресурс в черные списки из-за спама.
Формат поля заголовка Received: (Принято:) следующий:
Формат этого поля заголовка следующий:
Поле Originator является всего лишь небольшим вспомогательным полем в многоцветье полей заголовка. Оно может быть использовано в качестве более простого пути для небольших SMTP-пакетов. При этом необходимость в более сложных полях заголовка, по которым определяется отправитель, отпадает.
Поля заголовка Dates
Это поле заголовка используется для идентификации сеансов MIME по определенному идентификационному коду, когда содержимое имеет сложную структуру.
Как работает SMTP — простыми словами
Если все хорошо, то далее в работу вступают уже другие протоколы — POP и IMAP, но о них мы поговорим в другой статье.
Поле заголовка Content-Type
Данные второго типа начинаются со строки 27 и представляют собой форматированный текст с использованием обогащенного текстового формата.
Расширенный SMTP (Extended SMTP) реализован следующим образом. В начале сеанса SMTP команда HELO заменена на команду приглашения — EHLO. Получение сервером SMTP такой команды означает, что клиент может посылать ему расширенные SMTP команды. В листинге 5.7 показан пример сеанса с использованием EHLO , а также дополнительных команд.
Здесь в роли name может выступать либо имя хоста, либо доменное имя (если поступает запрос на получение почты для всего домена). Команда ETRN весьма хорошее подспорье для администратора электронной почты. Если почту для вашего почтового сервера хранит провайдер Internet, то с помощью этой команды можно уведомить его о готовности к приему собранной для вас почты. Существует несколько способов реализации такого алгоритма. Один из них — использование специальной программы Perl, которая поставляется с программой sendmail. Ее работа как раз и заключается в том, что после установления соединения с провайдером Internet она выдает команду ETRN с именем вашего домена в качестве аргумента. Получив эту команду, сервер SMTP провайдера инициирует еще одно SMTP-соединение с вашим локальным SMTP-сервером (по тому же РРР-соединению) и отдает всю предназначенную для вашего домена почту, которая имеется у него в очереди на отправку.
Нужен ли собственный сервер SMTP?
Собственный SMTP дает немного больше преимуществ перед корпоративными (или, например, Google). Это, как правило, невысокая цена, внимательное отношение со стороны разработчиков и хорошая доставляемость массовых рассылок.
Достоинство SMTP в том, что его достаточно просто внедрить, для этого протокола есть обширная документация и развитое комьюнити.
Почтовый сервер ответил ошибкой 571
Возможные причины
Варианты решения
Ваш IP-адрес заблокирован на стороне конечного получателя спам-фильтром, антивирусом или файрволом
Данную проблему может решить только администратор сети получателя, исключив ваши идентификационный данные из списка блокировки или добавив их в «белый список»
Неверные учетные данные ретранслятора. У вас нет разрешения на отправку электронной почты через сервер, который находится между вами и получателем
Обратитесь к администратору данного ресурса для изменения настроек
У IP отправителя нет RDNS
Проверьте настройки получения писем и разрешения для доменов-отправителей
Пример работы SMTP
Наступает следующий этап — использование команды RCPT TO для того, чтобы указать адрес получателя. Если сервер возвращает статус 250, то мы уже знаем, что это означает. Все удалось, теперь нужно выполнить команду DATA для ввода самого письма. В этом случае сервер отвечает уже не статусом 250, а другим — 354. После этого можно начинать вводить текст письма. Важный нюанс: заканчиваться все это должно отдельной строкой, которая содержит всего одну точку.
PrestaShop
В админ-панели в блоке «Настроить» выберите «Расширенные параметры» — «E-mail». Отметьте пункт «Задать свои параметры для SMTP сервера» и укажите следующие значения:
В блоке ниже («Проверка конфигурации электронной почты») вы можете произвести тестовую отправку, для проверки корректности настроек.
Почтовый сервер сообщил об ошибке 421
Значение: Service Not Available. Сервер недоступен: канал связи будет закрыт.
Возможные причины
Варианты решения
Неправильно заданы параметры SMTP-соединения
Необходимо перепроверить настройки
Брандмауэр блокирует IP-адрес сервера электронной почты
Необходимо создать новое правило в брандмауэре
Блокируется трафик через порт 25
Попробуйте в настройках учетной записи электронной почты сменить номер порта SMTP на 465
Проблема использования VPN
Необходимо, чтобы провайдер услуги занес ваш почтовый сервер в белый список адресов VPN
Значение: Requested action aborted: local error in processing. Требуемое действие прерывалось: ошибка в обработке.
Возможные причины
Варианты решения
Неправильно настроены MX-записи домена, из-за чего происходит неправильная маршрутизация писем
Проверьте логи, конфигурационные файлы, МХ-записи и разрешения, внесите корректировки
Читайте также: