- Основные команды клиента SMTP
- Команда AUTH
- Frequently Asked Questions
- What SMTP port is used by Gmail?
- What is the default port for SMTP?
- Is SMTP secure?
- Is SMTP more secure than IMAP?
- What does SMTP stand for?
- Is SMTP needed for a web server?
- How to test if SMTP is working?
- Команда MAIL
- Understanding IMAP
- How Does IMAP Work
- Advantages of IMAP
- Команда HELO
- How Does SMTP Work?
- Basic SMTP Commands
- Understanding SMTP
- Advantages of SMTP
- Главные мысли
- Is SMTP POP or IMAP?
- Are IMAP and SMTP passwords the same?
- How to find out my SMTP and IMAP?
- Should I use POP3 or IMAP?
- Advantages of Using an SMTP Server
- Understanding POP3
- Running Your Own SMTP Server vs Using a Third-Party Email Service
- Types of SMTP Servers
- Особенности применения SMTP
- SMTP Ports — What You Need To Know
- Команда RCPT
- Команда RSET
- Какие типы SMTP-серверов существуют
- Поле заголовка Content-Type
- What Is an SMTP Server and Why Do We Use It?
- What Is SMTP?
- Команда SEND
- Conclusion
Основные команды клиента SMTP
Hundreds of billions of emails get transferred daily because of their worldwide popularity as a reliable communication medium. But have you ever considered how your email messages reach the intended recipient once you send them?
This article will introduce one of the methods used to transfer emails: SMTP, and its key concepts.
SMTP, POP3, and IMAP are specialized TCP/IP protocols used for sending and receiving emails. As developers, it is essential to understand these protocols to meet the modern application requirements.
So, in this article, I’ll introduce SMTP, IMAP, and POP3 protocols, and discuss their usages, similarities, and differences to give you a better understanding.
SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. E SMTP (англ. Extended SMTP) — масштабируемое расширение протокола SMTP. В настоящее время под «протоколом SMTP», как правило, подразумевают ESMTP и его расширения. S MTP использует порт Порты TCP. Что такое TCP / IP порт 25.
Протокол SMTP использует простые текстовые команды в формате ASCII и возвращает трехзначные кодированные ответы с текстовыми сообщениями. Протокол SMTP описывается документом Internet Request For Comment (RFC) номер 821, который был разработан группой Internet Engineering Task Force (IETF) и опубликован 21 августа 1982 года. С тех пор он претерпел несколько модификаций, но в целом основные команды протокола не изменились.
Команда AUTH
Расширение диалога SMTP командой AUTH описывается в RFC 4954.
Возможные механизмы аутентификации:
Frequently Asked Questions
Port 25 (standard), 587, 465, and 2525 (non-standard alternative)
What SMTP port is used by Gmail?
Port 465, port 587, if the client starts with plain text before issuing the STARTTLS command.
What is the default port for SMTP?
SMTP lacks encryption by default.
Is SMTP secure?
SMTP is not exactly secure and is susceptible to attacks. So, we can use SMTPS (Simple Mail Transfer Protocol Secure) to secure the email communication.
Is SMTP more secure than IMAP?
IMAP is marked secure compared to SMTP but lacks security features by default. But IMAP is also vulnerable to attacks as it transmits credentials in plain text.
What does SMTP stand for?
The regular SMTP server support both inbound and outbound email delivery, whereas the SMTP Proxy server supports only inbound.
Is SMTP needed for a web server?
SMTP is essential for sending emails. If not, the emails will not reach the intended destination.
How to test if SMTP is working?
Open the command prompt and type ‘telnet,’ the SMTP address, and the port address in the format ‘telnet smtp.sample.com 25’. If the server is working, a 220 status code returns.
Команда MAIL
Команда MAIL используется для организации сеанса обмена электронной почтой с сервером после того, как была послана команда HELO. Она указывает, от кого исходит данное сообщение. Формат команды MAIL следующий:
Аргумент reverse-path не только определяет отправителя сообщения, но также указывает маршрут, по которому можно вернуть сообщение в случае невозможности его доставки. Если отправитель является пользователем на клиентском компьютере, который инициировал сеанс SMTP, то формат команды будет следующим:
Understanding IMAP
The Internet Message Access Protocol, also known as IMAP, is a protocol for receiving emails from a server. Since IAMP allows access to emails from multiple locations simultaneously, it keeps the email on the server after being delivered. Also, it doesn’t;t download the entire email until the recipient opens it.
Currently, the 4th version of the IMAP protocol is in use, and it is one of the most used protocols for email receiving.
How Does IMAP Work
When using the IMAP protocol, the client connects to the server, checks for new messages, and saves them in the cache as temporary files. Only the date, sender, and subject are initially downloaded from the server. The content will only be downloaded when you open the message. So, it is possible to access the email’s content without downloading the attached files using this protocol.
When an email is modified, deleted, or status changes from unread to read, the changes are reflected on the server. This process helps to reflect the status of emails on multiple devices in real-time.
Advantages of IMAP
Высокая безопасность взаимодействия. Личные данные подписчиков хранятся на сервере отправителя. S MTP-сервер лишь пересылает письмо, не сохраняя данные.
Не нужно устанавливать дополнительное программное обеспечение. Для запуска достаточно понимать принцип работы протокола и знать необходимый набор команд.
Детальные отчёты о доставке писем и возникающих ошибках. К примеру, ошибка на этапе передачи данных MAIL FROM означает, что ваш обратный адрес не понравился серверу получателя.
Высокая скорость доставки писем. При этом отправитель точно знает, получил ли адресат сообщение.
Низкая стоимость. Отправка писем через SMTP обойдётся в десятки раз дешевле в сравнении с отправкой сообщений через сервисы email-рассылок. Сервисы email-рассылок предоставляют дополнительные возможности для работы с письмами: конструкторы, шаблоны, автоматические цепочки, подробную аналитику. У SMTP-сервера лишь одна задача — доставить сообщение адресату. Когда вам требуется максимально оперативно доставить большое количество писем, например, транзакционных, лучше использовать SMTP.
Команда HELO
По определению, длина команд протокола SMTP четыре символа. Приветствие, выдаваемое клиентом на сервер, и есть команда HELO. Формат команды следующий:
HELO domain name
При работе с протоколом SMTP следует различать клиентов SMTP. Пользователи-клиенты и хосты-клиенты не одно и то же. При создании почтового сообщения пользователь системы электронной почты является одновременно и клиентом своего локального хоста. После отправки почтового сообщения он уже не является клиентом процесса SMTP. Теперь его локальный хост-компьютер осуществляет процесс доставки сообщения и сам выступает в качестве клиента SMTP. Когда локальный хост соединяется с удаленным хостом для передачи сообщения с помощью протокола SMTP, он действует как клиент SMTP-процесса. Команда HELO объявляет в качестве клиента имя локального хоста, а не реального пользователя, отославшего сообщение. Довольно часто эти понятия путают, что усложняет решение проблем, возникающих в системах электронной почты.
How Does SMTP Work?
Команда NOOP — сокращение от no operation (англ. нет операции — Прим. пер.). Эта команда не оказывает никакого воздействия на SMTP-сервер, за исключением того, что сервер возвращает на нее позитивный код ответа. Она используется при тестировании соединения без пересылки сообщения.
Basic SMTP Commands
Below are ten critical commands you should know when working with SMTP.
1. H ELO — It is the first and most essential STMP command as this starts the email sending processor and identifies the sender server. » EHLO» is another alternative command to initiate a conversation.
2. M AIL FROM — States the sender’s email address and indicates a new email transference is about to happen to the SMTP server. If the server accepts this transaction, it will respond with status code 250.
3. R CPT TO — Specifies the email recipient, and command repetition allows adding more recipients one by one.
4. S IZE — Informs the remote server about the size of the email in bytes.
5. D ATA — The email content starts transferring to the SMTP server, and the server responds with a 345 reply code.
8. T URN — Reverse the roles of the client and the sender without using a new connection.
9. Q UIT — This is a mandatory command to terminate the connection after sending the email.
10. R SET — We can use this command to abort the current email transaction if there is an error. For instance, terminate the process without closing the connection if you accidentally gave an incorrect recipient email.
Understanding SMTP
SMTP (Simple Mail Transfer Protocol) is a widely used TCP protocol for email sending. The SMTP protocol is mainly used by the clients to send emails to the servers or for the email communications between servers.
The SMTP workflow consists of 3 steps:
SMTP client uses text-based commands such as HELLO, MAIL FROM, EHLO, and RCPT to send messages to the SMTP server. S MTP server responds to these messages using numeric codes like 220, 250, and 354.
Advantages of SMTP
Along with SMTP, the two other most commonly used email protocols are IMAP and POP. However, several factors make SMTP different from these two email protocols.
Главные мысли
SMTP is the protocol used to send emails between clients and servers or between servers. On the other hand, IMAP is a protocol for managing and retrieving emails from a server.
Is SMTP POP or IMAP?
SMTP does not belong to IMAP or POP. The primary function of SMTP is to send emails, while POP and IMAP are specialized in receiving emails.
Are IMAP and SMTP passwords the same?
When you first set up an account, you only provide one password used for IMAP and SMTP.
How to find out my SMTP and IMAP?
Finding your SMTP and IMAP information is different based on the device and the email service provider. For example, if you are using Outlook, you can find details about AMTP and IMAP by going to POP and IMAP settings on Outlook.com.
Should I use POP3 or IMAP?
Both POP3 and IMAP have their advantages. However, POP3 works well for single devices, while IMAP is better when using multiple devices. On the other hand, POP3 works well if your internet connections are unstable.
So, it would be best if you thought about these facts when deciding between IMAP and POP3.
Advantages of Using an SMTP Server
Команда QUIT делает именно то, что она и означает (англ. выйти — Прим. пер.), т.е. сообщает SMTP-серверу о том, что клиентский компьютер закончил текущий сеанс и хочет закрыть соединение. Сервер SMTP должен ответить на эту команду, а затем инициировать и закрыть TCP-соединение. Если сервер принимает команду QUIT в процессе передачи почты, то все переданные в течение сеанса данные должны быть уничтожены и не поступят получателю.
Формат сообщений интернет EMail описывается в RFC2822, который заменил более старый RFC822.
Стандартные поля заголовка, согласно RFC 822
Документом RFC 822 предусматривается разбиение сообщения на две части. Первая часть называется заголовком. В нее вносятся все данные, идентифицирующие сообщение. Вторая часть называется телом сообщения. Заголовок состоит из полей данных, которые используются по мере необходимости внесения дополнительной информации в сообщение. Поля заголовка и тело сообщения должны разделяться пустой строкой. Для полей заголовка не существует определенного порядка следования, т.е. поля заголовка могут располагаться в произвольном порядке. Кроме того, в одном сообщении поля заголовка могут повторяться. На рисунке представлен общий вид почтового сообщения, соответствующего требованиям RFC 822.
Формат сообщения, согласно RFC 822
Формат поля заголовка Received: (Принято:) следующий:
Received:
from host name
by host name
via physical-path
with protocol
id message-id
for final e-mail destination
Поле заголовка Received используется для идентификации SMTP-серверов, которые принимали участие в процессе доставки сообщения от отправителя получателю. Каждый сервер добавляет к почтовому сообщению свое поле Received, с указанием специфических сведений о себе. Субполя в поле Received указывают на путь, протокол и компьютеры, принимавшие участие в передаче сообщения.
Формат этого поля заголовка следующий:
Последний SMTP-сервер в цепочке пересылки добавляет к сообщению поле возврата (Return-Path). Его цель — определение маршрута, посредством которого сообщение достигло получателя. Если сообщение было послано напрямую на сервер получателя, то в этом поле будет отображаться только один адрес. В противном случае здесь будет отображаться полный список серверов, через которые прошло сообщение, чтобы достичь адресата. Может отличаться от MAIL FROM (то есть обратный адрес может быть указан отличным от адреса отправителя).
В поле Originator указывается адрес отправителя сообщения. Эта информация весьма полезна в ситуации, когда сообщения были отвергнуты несколько раз частными сетями, прежде чем они попали в сеть Internet. Формат этого поля следующий:
Поле Originator является всего лишь небольшим вспомогательным полем в многоцветье полей заголовка. Оно может быть использовано в качестве более простого пути для небольших SMTP-пакетов. При этом необходимость в более сложных полях заголовка, по которым определяется отправитель, отпадает.
Поле заголовка Resent идентифицирует почтовое сообщение, которое по какой-либо причине должно было повторно посылаться клиентом. Формат этого поля следующий:
Данные поля заголовка идентифицируют отправителя электронного сообщения. Формат полей Authentic:
Поле From:(От:) идентифицирует автора сообщения. Обычно в полях From: и Sender:(Отправитель:) указывается один и тот же пользователь, так что в действительности требуется только одно из этих полей. В том случае, когда отправитель почты не является автором сообщения, а оно лишь посылается с его адреса, оба поля все равно должны быть указаны — этим обеспечивается возврат сообщения отправителю, если доставка его адресату оказалась невозможной.
Поля заголовка Resent-authentic
Поля Resent-authentic определяют отправителя сообщения, которое по какой-либо причине повторно передавалось программой-клиентом. Формат этих полей следующий:
Resent-From: date-time
Resent-Sender: date-time
Поля Resent-From: и Resent-Sender: работают подобно полям From: и Sender: Они лишь отражают, что сообщение было повторно передано клиентом по неизвестной причине.
Поля заголовка Dates
Поля заголовка Dates используются для помещения метки времени в сообщение при передаче его от клиента серверу. Формат полей Dates следующий:
Date: date-time
Resent-Date: date-time
Поле Date: (Дата) будет пересылать информацию в заголовке сообщения в точном соответствии с оригиналом сообщения. Этот параметр может оказаться полезным при отслеживании времени получения ответов, в особенности — множественных ответов.
В полях заголовка Destination указываются адреса электронной почты получателей сообщения. Эти поля являются чисто информационными. Сервер SMTP в любом случае не будет посылать сообщение в почтовый ящик пользователя, пока на получит команду RCPT, выданную для данного пользователя (см. раздел «Основные команды клиента SMTP»). Формат этих полей следующий:
To: address
Resent-To: address
CC: address
Resent-CC: address
BCC: address
Resent-BCC: address
Поля To:, CC: и BCC: устанавливают стандартный алгоритм обработки электронной почты. Большинство пакетов для работы с электронной почтой используют именно эту терминологию для классификации получателей сообщения. Поле CC: сходно с памяткой, и указанные в нем получатели должны получить «копию» сообщения. Еще одно новое понятие, введенное системами электронной почты, — BCC: или «невидимая копия» (blind carbon copy). В поле «невидимой копии» также указывается получатель копии сообщения, но его адрес не виден посторонним (это не совсем этично). В связи с этой опцией обсуждалась вопросы компьютерной этики, но на сегодняшний день практически все программы для работы с электронной почтой поддерживают эту возможность.
Необязательными являются поля, которые более подробно идентифицируют сообщение для сервера SMTP, но, согласно RFC 822, могут и не присутствовать в сообщении. Тем не менее эти поля в настоящее время широко распространены, и многим из вас придется столкнуться с ними. Формат некоторых из них следующий:
Message-ID: message-id
Resent-Message-ID: message-id
In-Reply-To: message-id
References: message-id
Keywords: text — list
Subject: text
Comments: text
Encrypted: word
Наиболее полезным и часто используемым из этого набора является поле Subject: (Тема). Большинство программ для работы с электронной почтой допускает ввод отправителем темы сообщения в одну строку, которая описывает для получателя содержание сообщения. Эта строка текста довольно часто используется почтовой программой-клиентом при формировании списков полученных сообщений. Еще одно необязательное поле также помогает идентифицировать почтовое сообщение. Это поле Message-ID: (Идентификатор сообщения). В этом поле сообщению присваивается уникальный идентификационный номер, который может затем отображаться в возвращенном сообщении. Специальное поле шифрования Encrypted: указывает, было ли сообщение в целях безопасности подвергнуто шифрованию, а в Keywords: можно задать ключевые слова, которые можно использовать при поиске определенного текста, встречающегося в сообщении (сообщениях).
В алгоритме кодирования MIME учитывается тип двоичного файла, подвергающегося преобразованию, а также передается дополнительная информация о файле для декодера. Алгоритм MIME позволяет помещать двоичные данные напрямую в стандартное почтовое сообщение, согласно RFC 822. Для описания двоичных данных, вкладываемых в сообщение формата RFC 822, были созданы пять новых полей заголовка. Программы для работы с почтой, которые поддерживают стандарт MIME, должны правильно обрабатывать все эти новые типы заголовков.
Первое из дополнительных полей заголовка содержит версию MIME, которую использовал отправитель при кодировании сообщения. В настоящее время в этом поле всегда 1.0.
В поле заголовка Content-Transfer-Encoding указывается способ помещения двоичных данных в сообщение текстового формата ASCII. На сегодняшний день существует семь различных способов кодирования двоичных данных, однако наиболее часто встречается кодирование base64. При применении этого метода кодирования 6-битовые блоки двоичных данных преобразуются в 8-битовые блоки, воспринимаемые как текст ASCII.
Это поле заголовка используется для идентификации сеансов MIME по определенному идентификационному коду, когда содержимое имеет сложную структуру.
Поле заголовка Content-Description используется для текстового описания в формате ASCII данных, помещенных в почтовое сообщение. Это удобно при пересылке документов, созданных при помощи текстового процессора или графики, которые ничем не отличаются, будучи закодированными base64.
Understanding POP3
Эта команда является основной в протоколе SMTP. После обработки команд MAIL и RCPT команда DATA используется для передачи информационной части сообщения. Формат команды DATA следующий:
Все, что следует за этой командой, интерпретируется как сообщение для передачи. Сервер SMTP, как правило, дополняет заголовок сообщения меткой времени и информацией об обратном маршруте return-path. Программа-клиент обозначает конец сообщения посредством передачи строки с одной точкой. Формат этой строки следующий:
Приняв эту последовательность, сервер SMTP «понимает», что передача сообщения закончена и следует вернуть код ответа, который оповестит клиента о том, что его сообщение принято.
Running Your Own SMTP Server vs Using a Third-Party Email Service
1. Running Your Own SMTP Server
2. Using a Third-Party Email Service:
Determining whether to use your own server or a third-party email server depends on the resources and requirements.
Types of SMTP Servers
Normal Server: This regular SMTP server is to acknowledge and queue emails to deliver. This server allows both inbound and outbound email delivery, and it is necessary to specify the local domains handled by the server. If an email comes from an alternate domain, it is sent to the destination if relaying is allowed.
SMTP Relay Vs. S MTP Server: The SMTP server is the server where a mail client connects to send emails, whereas the SMTP relay passes the emails coming from other servers to the correct SMTP server.
Особенности применения SMTP
Несмотря на все плюсы SMTP-сервера, у него есть свои особенности, которые нужно учитывать:
Если вы планируете использовать SMTP-сервер для рассылок, но не хотите заморачиваться с настройками, воспользуйтесь готовым решением, выбрав один из сервисов транзакционных рассылок. Самое приятное, что у большинства таких сервисов есть бесплатные тарифы.
SMTP Ports — What You Need To Know
We can use multiple SMTP ports as communication endpoints to send our emails over a network.
Команда RCPT
Команда RCPT определяет получателей сообщения. Одно и то же сообщение могут получать несколько пользователей. Обычно каждый получатель указывается отдельной строкой с командой RCPT. Формат команды RCPT следующий:
Аргумент forward-path определяет, куда направляется электронная почта. Как правило, здесь указывается полный адрес электронной почты, но может также указываться и имя пользователя локального сервера SMTP. Рассмотрим для примера следующую команду:
RCPT TO: haley
С помощью этой команды указывается, что сообщение должно быть направлено пользователю haley на сервер SMTP, который обрабатывает сообщения. Таким же образом можно посылать сообщения и пользователям других компьютеров, которые не являются пользователями сервера SMTP, куда направлено сообщение. Рассмотрим, например, следующую команду:
Команда, направленная серверу SMTP с именем shardrach.smallorg.org, вынуждает принять решение о доставке сообщения именно этот сервер. Так как пользователь не зарегистрирован на локальном сервере shardrach, то серверу придется определить, что делать с сообщением дальше. В этом случае возможны три варианта действий хоста shardrach. Давайте остановимся на них подробнее.
На начальной стадии развития сети Internet практиковалась пересылка сообщений электронной почты вслепую между компьютерами по всему миру, в которых использовался исходный алгоритм передачи почтовых сообщений.
Команда RSET
Команда RSET — сокращение от reset (англ. сброс — Прим. пер.). Если клиент запутался в ответах, получаемых от сервера, или решил, что соединение потеряно, он может послать команду RSET и вернуть сеанс к его начальной точке — выполнению команды HELO. При этом все ранее посланные команды — MAIL, RCPT и DATA будут аннулированы. Очень часто к этой команде прибегают в качестве «последнего средства», когда клиент либо потерял последовательность команд, либо получил неожиданный ответ от сервера.
Команда VRFY является сокращением от verify (англ. проверить — Прим. пер.). Ее можно использовать для определения возможности доставки сервером почты определенному получателю перед выполнением команды RCPT. Формат этой команды следующий:
По принятии данной команды сервер SMTP определяет, имеется ли у него на локальном сервере пользователь с заданным именем. Если такой пользователь найден, то сервер вернет ответ с полным почтовым адресом пользователя. Если такого пользователя нет на локальном сервере, то SMTP-сервер может либо вернуть негативный ответ клиенту, либо указать, что он будет пересылать все сообщения удаленному пользователю. Это зависит от того, будет ли сервер SMTP пересылать сообщения удаленному клиенту.
Команда VRFY может оказаться эффективным инструментом при поиске неполадок в работе электронной почты. Довольно часто, отправляя почтовые сообщения, пользователи ошибаются при написании имени адресата или хоста и затем недоумевают, почему их сообщения не были получены. Конечно, первое, что они предпримут, — это пожалуются администратору почтовой системы на отвратительную работу системы электронной почты. Как администратор почтовой системы вы, можете проверить работоспособность адресов электронной почты двумя путями. Во-первых, с помощью команды DNS host, которая позволяет определить правильность доменного имени и наличие почтового сервера, обслуживающего домен. И во-вторых, можно зайти с помощью telnet на порт 25 почтового сервера и затем задать команду VRFY, которая определит правильность имени пользователя. В листинге 5.3 показан пример использования команды VRFY для проверки имен пользователей.
В строках 8–13 представлены результаты выполнения команды VRFY. В строке 8 делается попытка выполнить VRFY для локального пользователя rich. Ответ SMTP- сервера в строке 9 подтверждает, что пользователь с таким именем имеется в системе, и клиенту возвращается его полный адрес электронной почты. В строке 10 показан еще один вариант задания команды VRFY. Здесь клиент пытается выполнить команду VRFY для пользователя на удаленном компьютере. Ответ, полученный в строке 11 от системы shadrach, отличается от результата, полученного в строке 9. В разделе «Ответы сервера» значения кодов, возвращаемых сервером, обсуждаются более детально. В нашем случае отметим, что система shadrach уведомляет клиента о том, что почта будет пересылаться пользователю prez на удаленном сервере meshach.smallorg.org. Строка 12 отображает попытку проверить несуществующее имя в системе meshach. Ответ SMTP-сервера в строке 13 в пояснениях не нуждается.
Какие типы SMTP-серверов существуют
Все SMTP-серверы условно разделяют на два типа:
Также SMTP-серверы можно классифицировать в зависимости от источника. Сервер для отправки писем могут предоставить:
Выбор подходящего сервера обусловлен целями компании и масштабами деятельности. При небольшом количестве писем можно обойтись бесплатными вариантами или функционалом своего сайта. Для массовых рассылок, когда количество писем достигает нескольких сотен, тысяч или миллионов, стоит обратить внимание на виртуальные серверы и коммерческие сервисы транзакционных рассылок.
Поле заголовка Content-Type
В этом поле заголовка как раз и происходит основное действие нашей пьесы. Это поле идентифицирует данные, заключенные в MIME-сообщение. В настоящее время используется семь основных классов данных, идентифицированных в MIME. В каждом классе имеются свои подклассы, которые более детально характеризуют тип данных, заключенных в сообщении.
Тип данных text идентифицирует данные в формате ASCII, которые должны читаться в исходном виде. Здесь существует также два подкласса — plain-текст, т.е. неформатированный ASCII-текст, и enriched-текст, который включает в себя элементы форматирования, схожие с обогащенным текстовым форматом. Новейшие программы для работы с электронной почтой могут работать даже с обогащенным текстовым форматом (RTF).
Тип данных message позволяет почтовой программе отсылать простые сообщения в формате RFC 822. Подклассы этого типа: rfc822, который указывает на то, что вложением является обычное сообщение, соответствующее RFC 822; partial, который позволяет разбивать длинные сообщения на несколько частей, и external-body, который позволяет помещать указатель на объект, не являющийся частью сообщения.
Тип данных image определяет вложение в сообщение двоичных данных, которые представляют собой графическое изображение. В настоящее время для этого типа определено два подкласса — jpeg и gif.
Тип данных video, соответственно, определяет, что вложенные в сообщение данные представляют собой видеоданные. В настоящее время для этого типа определен только один подкласс — формат mpeg.
Тип данных audio обозначает содержимое сообщения как аудиоданные (звуковые файлы). Здесь также пока определен только один подкласс basic, который соответствует одному каналу ISDN с частотой дискретизации 8 Кгц.
Тип данных multipart идентифицирует сообщения, содержащие несколько различных типов данных. Этот формат довольно часто встречается в почтовых программах, поддерживающих вывод сообщения несколькими способами, например в виде текста ASCII, HTML-текста или аудиофайла. Граничный идентификатор разделяет различные типы данных. В то же время каждый тип данных идентифицируется определенным полем заголовка типа данных. Тип данных multipart имеет четыре подкласса.
Подкласс mixed указывает на то, что каждая из частей сообщения является независимой и все они должны быть представлены получателю в том порядке, в каком они были вложены отправителем. Подкласс parallel указывает то, что каждая из частей сообщения является независимой и все они могут быть представлены получателю в любом порядке. Следующий подкласс alternative указывает, что все части сообщения представляют собой одни и те же данные, но представленные в различном виде. При этом получатель может выбрать наилучшее средство для просмотра полученных данных. Подкласс digest во многом сходен с подклассом mixed, но при этом указывает, что тело сообщения всегда представляется в формате RFC822.
Листинг 5.6. Пример сеанса SMTP с несколькими вложениями MIME (html, txt)
Пример сообщения, представленный в листинге 5.6, является сообщением MIME, которое состоит из двух частей. В строке 18 показан тип данных сообщения. Тип multipart/alternative указывает на то, что в сообщении имеются различные типы данных, которые отделены граничным разделителем bounds1. Данные первого типа начинаются со строки 21 и представляют собой простой ASCII-текст, который может прочесть практически любая почтовая программа.
Данные второго типа начинаются со строки 27 и представляют собой форматированный текст с использованием обогащенного текстового формата.
Так как тип MIME, указанный для сообщения, — multipart/alternative, то определение того, какую версию вложения отобразить, всецело зависит от почтовой программы.
С момента своего появления в 1982 году протокол SMTP прекрасно справлялся со своими задачами по пересылке сообщений между компьютерами в сети Internet. Однако со временем стали заметны заложенные в протокол ограничения. Тогда, вместо того чтобы заменить стандартный протокол, имевший к тому времени широкое распространение, было решено улучшить некоторые функции протокола SMTP. При этом было принято решение, оставив все спецификации SMTP в первозданном виде, лишь добавить к ним новые функции.
В 1995 году увидел свет документ RFC 1869, где был определен метод расширения возможностей протокола SMTP, который назывался «Расширенные службы SMTP».
Расширенный SMTP (Extended SMTP) реализован следующим образом. В начале сеанса SMTP команда HELO заменена на команду приглашения — EHLO. Получение сервером SMTP такой команды означает, что клиент может посылать ему расширенные SMTP команды. В листинге 5.7 показан пример сеанса с использованием EHLO , а также дополнительных команд.
В строке 6 задана SMTP-команда EHLO для подключения к серверу SMTP. Строки 7–16 отображают ответ сервера. Заметьте, сервер сигнализирует о том, что для использования доступно больше команд, т.е. сеанс происходит в «расширенном» режиме. Одна из новых групп команд называется параметрами уведомления о доставке сообщения (Delivery Status Notification). Эти параметры могут использоваться с командами MAIL и RCPT для отображения состояния доставки определенного сообщения электронной почты. Однако для нас как администраторов почтовой системы наибольший интерес представляет команда ETRN.
Команда TURN уже упоминалась ранее. Эта команда весьма эффективна, но, к сожалению, небезопасна. Чтобы компенсировать этот недостаток, в RFC 1985 определена новая реализация команды TURN, которая обеспечивает больший уровень безопасности. Команда ETRN позволяет SMTP-клиенту выдавать запрос на SMTP-сервер для того, чтобы инициировать еще одно SMTP-соединение с клиентом для передачи ему сообщений. Единственное отличие команды ETRN от TURN заключается в том, что запрос поступает не на использование существующего соединения, а на открытие нового сеанса SMTP. Таким образом, SMTP-сервер может соединиться с клиентским компьютером с помощью обычных алгоритмов преобразования имен системы DNS. При этом открытие нового соединения основывается не на том имени, под которым клиентский компьютер регистрируется на сервере, а на реальном имени хоста клиента. В таком случае, если хакер установит несанкционированное SMTP-соединение и воспользуется командой ETRN, то сервер SMTP просто организует новое соединение с реальным клиентом и перешлет ему электронную почту. В результате, пострадавших нет. Формат команды ETRN следующий:
Здесь в роли name может выступать либо имя хоста, либо доменное имя (если поступает запрос на получение почты для всего домена). Команда ETRN весьма хорошее подспорье для администратора электронной почты. Если почту для вашего почтового сервера хранит провайдер Internet, то с помощью этой команды можно уведомить его о готовности к приему собранной для вас почты. Существует несколько способов реализации такого алгоритма. Один из них — использование специальной программы Perl, которая поставляется с программой sendmail. Ее работа как раз и заключается в том, что после установления соединения с провайдером Internet она выдает команду ETRN с именем вашего домена в качестве аргумента. Получив эту команду, сервер SMTP провайдера инициирует еще одно SMTP-соединение с вашим локальным SMTP-сервером (по тому же РРР-соединению) и отдает всю предназначенную для вашего домена почту, которая имеется у него в очереди на отправку.
What Is an SMTP Server and Why Do We Use It?
SMTP is the protocol that defines the rule set for digital communication, whereas the SMTP server is the application that handles the email sending, receiving, and relaying processes. Therefore, it is crucial to have an SMTP server for the email to reach its destination.
There are two types of SMTP servers:
There are many email service providers that we can use for business communication and day-to-day emailing. But SMTP server is a better solution as it addresses most of the limitations of those email service providers.
For example, dedicated SMTP servers can handle bulk emails and are scalable.
What Is SMTP?
SMTP, Simple Mail Transfer Protocol, is a collection of communication guidelines for sending emails over the internet. S MTP is among the most widely used email protocols, along with protocols like IMAP (Internet Message Access Protocol) and POP (Post Office Protocol). Most famous email clients, such as Outlook, Gmail, and Apple Mail, support SMTP email protocol for message sending.
Команда SEND
Команда SEND используется для передачи почтовых сообщений непосредственно на терминал зарегистрированного пользователя системы. Эта команда выполняется только в том случае, когда пользователь находится в системе, и обычно представляет собой всплывающее сообщение, подобно команде write в ОС UNIX. У этой команды имеется серьезный недостаток: с ее помощью внешний пользователь может легко определить, кто в данный момент находится в системе. Эта «возможность» давно и активно эксплуатируется хакерами для получения идентификаторов пользователя в сети Internet у ничего не подозревающих жертв, находящихся в системе. Из-за угрозы безопасности в настоящее время большинство программных пакетов для работы с SMTP уже не содержат эту команду.
Conclusion
In this article, I introduced SMTP, IMAP, and POP3 with their usage and compared them to each other. S MTP is widely used for email sending purposes, while IMAP and POP3 are used for email receiving.