Принцип согласования параметров
NVT — это минимально необходимый набор параметров, который позволяет работать даже самым примитивным устройствам. Реальные современные устройства обладают гораздо большими возможностями представления информации. Принцип согласования параметров позволяет использовать эти возможности. Например, NVT является терминалом, который не может использовать функции управления курсором, а реальный терминал, с которого осуществляется работа, возможно умеет это делать. Используя согласование параметров, терминальная программа предлагает обслуживающему процессу использовать управляющие последовательности для управления выводом информации. Получив такую команду процесс начинает вставлять управляющие последовательности в данные, предназначенные для отображения.
Протокол предлагает структуру дополнительных параметров «DO, DON’T, WILL, WON’T», позволяющую пользователю и серверу более точно договориться об используемых в соединении соглашениях.
Команда WILL XXX указывает на предложение отправляющей стороны использовать параметр XXX. DO XXX и DON’T XXX являются, соответственно, положительным и отрицательным ответом.
Аналогично, DO XXX посылается как предложение получающей стороне использовать параметр XXX. WILL XXX и WON’T XXX суть положительный и отрицательный ответы. Так как NVT это то, что остается, когда никакие параметры не используются, ответы DON’T и WON’T гарантируют, что соединение останется в состоянии, которое подходит обеим сторонам.В отличие от других протоков сеансового уровня, таких как FTP или SMTP, команды передаются не английскими словами (или их сокращениями), а в виде восьмибитных последовательностей (байтов).
Так, команде DO соответствует байт 253, WON’T — 252, и т.д.
Установка определенного параметра происходит так: один из участников соединения посылает другому запрос, предлагая использовать в сеансе работы определенный параметр. Если другая сторона соглашается, параметр немедленно вступает в силу. Если приходит отказ, используется то значение параметра, которое определяется для NVT. Обычно параметры согласуются вначале при установке соединения, хотя при работе одна из сторон может вновь изменить какие-либо параметры.
A Complete Example
Here is a complete SMTP session, including some spoofing, as an example.
$ openssl s_client -connect smtp-us.atmailcloud.com:25 -crlf -quiet -starttls smtp depth=0 C = UK, O = Exim Developers, CN = us11-012mrc.dh.atmailcloud.com verify error:num=18:self signed certificate verify return:1 depth=0 C = UK, O = Exim Developers, CN = us11-012mrc.dh.atmailcloud.com verify return:1 250 HELP EHLO EXAMPLE 250-us11-012mrc.dh.atmailcloud.com Hello 27-33-184-51.static.tpgi.com.au 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH LOGIN PLAIN 250-CHUNKING 250 HELP AUTH PLAIN 334 AHNvbWV1c2VyQGV4YW1wbGUuYXRtYWlsY2xvdWQuY29tAG15XlBhc3N3MHJk 235 Authentication succeeded MAIL FROM: 250 OK RCPT TO: 250 Accepted Recipient DATA 354 Enter message, ending with "." on a line by itself From: To: Subject: Hello everyone! A little spoofed message from someone pretending to be the I hope you enjoyed this blog post. . 250 OK id=1g0eWC-0003vH-Su QUIT 221 Bye
Почему необходимо усиливать безопасность Postfix?
Каждый сервис, подключенный к сети Интернет, рано или поздно подвергается атаке автоматизированными скриптами. Например, некорректно сконфигурированный Postfix может отправлять сообщения любой сетевой системе. Этот тип конфигурации называется open-relay. В результате система окажется в черных списках. Хорошо, если это просто тестовая система. Если же это может коснуться клиентов, то вы можете понести репутационные риски.
Другой причиной для усиления защиты Postfix является растущая потребность в сохранении личной информации. Безопасность и сохранность конфиденциальных данных стоят не на первых местах в списке приоритетов большинства действующих протоколов, включая SMTP. Согласно им обмен данными с другими системами может производиться без какой-либо защиты. Это может привести к несанкционированному отслеживанию данных кем-угодно, от системного администратора до, возможно, ЦРУ или АНБ.
Поэтому важно самостоятельно усилить защиту Postfix, и данная статья поможет вам в этом
проверка SMTP сервера через Telnet
Для авторизации на почтовом сервер с с помощью AUTH LOGIN, нам нужно преобразовать имя и пароль пользователя, из-под которого будет отправляться письмо в формат Base64. Это можно сделать с помощью скриптов или онлайн сервисов. Я воспользоваться сайтом https://www.base64encode.org/ или https://calcus.ru/base64.
Имя пользователя: testuser@contoso.com, в кодировке Base64 получилось: dGVzdHVzZXJAY29udG9zby5jb20=
Пароль: $up3RsTr)ng — в Base64 JHVwM1JzVHIpbmc=
Теперь в командой строке с помощью Telnet подключаемся на 25(SMTP) порт нашего почтового сервера (вводимые команды я буду выделять синим цветов):
Если это Exchange, он вернет что-то вроде;
Сервер вернет список поддерживаемых типов авторизаций и возможностей. Как вы видите базовая авторизация (AUTH LOGIN) в списке имеется.
Сообщаем SMTP серверу, что мы хотим авторизоваться с помощью имеющейся учетной записи:
Сервер должен ответить:
Теперь вставляем имя пользователя в формате Base64, которое мы закодировали ранее:
Сервер должен ответить:
Теперь пора вставить пароль в формате Base64:
Если имя и пароль пользователя верны, сервер ответит.
Теперь можно заполнить стандартные поля письма:
Оставьте комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Testing SMTP Authentication with Telnet
In order to authenticate to a remote SMTP host via telnet, Basic Authentication must be allowed in its settings. Basic Authentication is enabled by default on Exchange servers on the corporate network. This type of authentication involves sending the username and password over the network in base64 encoded form.
In Exchange Server, you can enable or disable Basic Authentication in the receive connector settings.
You can enable Basic Authentication on the Exchange connector from the PowerShell console (you need to install EMS on your computer or connect to Exchange Server remotely):
Note. Please, pay your attention that if the attacker has got an access to the communication channel, he can easily capture and decrypt user credentials encoded with Base64. So this authentication method is recommended only for private corporate networks.
If you are using unsecured communication channels between the client and Exchange host, it is advisable to allow BasicAuth only after establishing a secure TLS session. Enable the Offer basic authentication only after starting TLS option in the connector properties in EMC, or use PowerShell:
The specifics of sending SMTP messages over TLS/SSL are described in the next section of the article.
Or the Perl MIME::Base64 module:
Or use any online service, for example, https://www.base64encode.org.
The user name test_user@woshub.com looked like dGVzdF91c2VyQHdvc2h1Yi5jb20g in Base64
The password $up3RsTr)ng turned into JHVwM1JzVHIpbmc= in Base64
Open a command prompt and use Telnet to connect to port 25 (SMTP) of the server (I’ll highlight the commands to be entered in blue):
telnet mail.woshub.com 25
If it is a host with Exchange Server, it will return something like;
First you need to introduce yourself to the server:
ehlo sender.woshub.com
The server will return the list of supported authentication methods and options. As you can see, there is AUTH LOGIN (basic authentication) in the list.
The following authentication protocols can be used on SMTP servers: PLAIN, GSSAPI, DIGEST-MD5, MD5, CRAM-MD5, OAUTH10A, OAUTHBEARER.
For example, such a response from the SMTP server indicates that 3 authentication protocols are supported.
The basic authentication methods PLAIN and LOGIN use BASE64 encoding of the name and password. The difference between them is that for the PLAIN method the login and password are sent in one line. And when using LOGIN, the login is sent first, then the password.
If your SMTP server supports the PLAIN authentication method, you can encode the username and password using the perl function or PowerShell:
Tell the SMTP server that you want to authenticate using the LOGIN method:
AUTH LOGIN
The server will respond:
When authenticating with the PLAIN method, you can send the user’s credentials immediately:
AUTH PLAIN XDB0ZXN0X3VzZXJAd29zaHViLmNvbVwwKW5n
Now copy and paste the username in the Base64 format you encrypted earlier:
dGVzdF91c2VyQHdvc2h1Yi5jb20g
The server will respond with a 334 code:
Then copy and paste the password in Base64 format:JHVwM1JzVHIpbmc=
If the user name and password are correct, the server will return:
If not:
mail from: test_user@woshub.comrcpt to: root@woshub.comdatafrom: TestUser <test_user@woshub.com>< to: TheMainAdmin < root@woshub.com > Subject: Test BASE SMTP Authenticated via Telnet This is test .
QUIT
The Get-MessageTrackingLog PowerShell cmdlet can be used to search for message delivery information stored in the message tracking log in on-premises Exchange.
Telnet на сетевых устройствах
Мы уже говорили о том, что с помощью протокола Telnet можно управлять не только компьютерами, но и самыми различными сетевыми устройствами. Наиболее часто встречающийся класс таких устройств — это маршрутизаторы. Так что такое Telnet в роутере, для чего он нужен, как его включить?
В зависимости от производителя и конкретной модели включить доступ по Telnet можно по-разному. Вы можете зайти на роутер по веб-интерфейсу либо через консоль. В первом случае вам нужно будет найти пункт удаленного администрирования, где разрешается тот или иной вид подключения (Telnet, ssh). Во втором случае доступ может быть предоставлен посредством командной строки. Каждый администратор выбирает удобный для себя сценарий. Однако встречаются маршрутизаторы, в которых реализован только один из двух возможных вариантов первоначального подключения, например, доступен лишь веб-интерфейс. Администратору, привыкшему к работе с консолью, будет достаточно некомфортно искать пункт, где нужно поставить заветную галочку, но в действительности ничего сложного в этом нет. Интерфейс большинства современных роутеров достаточно понятен. Названия пунктов меню говорят сами за себя, минималистический дизайн не позволит запутаться.
Как избежать ошибок при составлении и отправке писем
Причинами возникновения ошибок и, как следствие, неполучения сообщений могут служить разные факторы. Одни из них связаны с неправильным составлением исходящих писем самим пользователем, другие относятся к более глобальным программным настройкам со стороны получателя.
Самый простой способ это понять – отправить тестовое сообщение на свой ящик. Затем следует протестировать его отправку и получение, используя разные внешние почтовые сервисы: gmail, yandex, mail, rambler и другие. Если сообщение получено, следует ответить на него, проверив корректность исполнения команды «RE» вашим почтовым сервером и принятие ответа условным отправителем.
Довольно часто проблемы с попаданием писем в папку «Спам» или программной блокировкой на стороне получателя лежат в неверном оформлении ключевых полей. Особенно это касается массовых рассылок коммерческого характера. Для отправки большого количества однотипных сообщений как минимум потребуется выполнение следующих параметров настройки:
- выделенный IP-адрес с целью исключить блокировку на стороне сервера-ретранслятора или почтовой программы конечного получателя;
- криптографические подписи DKIM и SPF, помогающие подтвердить подлинность домена и минимизировать количество писем, воспринимаемых как спам.
Некорректное использование бота для отправки писем может привести к блокировке отправителя и другим нежелательным последствиям. Даже если информация, которую вы отправляете потенциальным клиентам, реально интересна им, система спам-фильтрации может воспринять данную рассылку как вредоносную. Чтобы избежать этого, лучше всего воспользоваться услугами специализированных компаний.
В моей практике был случай, когда никак не удавалось добиться получения моей электронной корреспонденции одним из сотрудников компании «Лукойл». Письма я отправлял самые простые, используя корпоративный ящик. Только после того, как мой респондент обратился в IT-службу своего предприятия, выяснилось, что данный адрес находится в блэк-листе. Попал он туда из-за каких-то ошибок, допущенных моим предшественником. Понадобилось больше недели, чтобы адрес включили в «белый список». Все это время письма, высылаемые с личного mail@yandex.ru, доходили без проблем.
Полезно: Почему не приходят письма с сайта. Пример частного случая.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Telnet и SMTP
Тестирование почтового сервера (Тестирование отправки электронной почты) при помощи telnet: отправка и получение почты. Для грамотного тестирования необходимо знать RFC, описывающий работу протокола SMTP — простой протокол передачи почты.
Отправка почты. $ telnet localhost 25
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 mx.exim.teachers, ESMTP EXIM 4.66
-1> helo localhost
250 mx.exim.teachers Hello localhost
-2> mail from:
250 OK
-3> rcpt to:
250 Accepted
-4> data
354 Enter message, ending with «.» on a line by itself
-5> test
-6> .
250 OK id=1HJa5R-0005Fe-Ln
-7> quit
221 mx.exim.teachers closing connection
Connection closed by foreign host.
$
Запросы, которые вы должны посылать серверу выделены «-N>», где N — номер команды. Теперь кратенькое описание по запросам:
- helo. после команды helo пишется имя сервера, который подключился к данному mail серверу. В данном случае я подключался с localhost’а, поэтому тут я и указал localhost.
- mail from используется для указания отправителя письма.
- rcpt to используется для указания получателя письма.
- data. После ввода команды data сервер будет принимать сообщение, пока не встретит «.» в строке.
- текст нашего сообщения
- завершающая «.».
- Команда quit используется для закрытия соединения с сервером.
Это простейший способ отправки текстового сообщения, которого вполне достаточно для тестирования любого почтового сервера(естественно просматривая при этом на другой консоли maillog).
Аутентификация при отправке.
Второе, что необходимо тестировать — аутентификацию пользователей. Для этого так же необходимо соединиться с сервером, но перед этого необходимо закодировать логин и пароль пользователя. Я для этого использую Perl в командной строке — примеры использования:
exim# perl -MMIME::Base64 -e 'print encode_base64("\0test\@exim.teachers\0pass")' AHRlc3RAZXhpbS50ZWFjaGVycwBwYXNz
Здесь мы закодировали данные для логина: test@exim.teachers и для пароля: pass. Кодировать данные таким образом нужно для PLAIN аутентификации.
Для LOGIN аутентификации данные нужно кодировать в два этапа:
-
кодирование логина
exim# perl -MMIME::Base64 -e 'print encode_base64("test\@exim.teachers")' dGVzdEBleGltLnRlYWNoZXJz
-
кодирование пароля
exim# perl -MMIME::Base64 -e 'print encode_base64("pass")' cGFzcw==
Аналогичного результата можно добиться PHP скриптом, запустив в консоли команду
$ php -r 'echo "\n".base64_encode("test@exim.teachers")."\n".base64_encode("pass")."\n";'
Теперь можно проверять:
для PLAIN:
exim# telnet localhost 25 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mx.exim.teachers, ESMTP EXIM 4.66 ehlo localhost 250-mx.exim.teachers Hello localhost 250-SIZE 2097152 250-PIPELINING 250-AUTH PLAIN LOGIN CRAM-MD5 250-STARTTLS 250 HELP AUTH PLAIN 334 AHRlc3RAZXhpbS50ZWFjaGVycwBwYXNz 235 Authentication succeeded quit 221 mx.exim.teachers closing connection Connection closed by foreign host.
для LOGIN
exim# telnet localhost 25 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mx.exim.teachers, ESMTP EXIM 4.66 ehlo localhost 250-mx.exim.teachers Hello localhost 250-SIZE 2097152 250-PIPELINING 250-AUTH PLAIN LOGIN CRAM-MD5 250-STARTTLS 250 HELP AUTH LOGIN 334 VXNlcm5hbWU6 dGVzdEBleGltLnRlYWNoZXJz 334 UGFzc3dvcmQ6 cGFzcw== 235 Authentication succeeded quit 221 mx.exim.teachers closing connection Connection closed by foreign host.
Как видите, все опять прошло успешно.
В команде ehlo клиент посылает свое имя(имя компьютера). После этого сервер возвращает возмодные способы аутентификации. В данном случае мы использовали два варианта: PLAIN и LOGIN аутентификацию.
С протоколом SMTP все. Как видите, нет ничего сложного в том, чтобы отправить почту.
Команда RCPT
Команда RCPT определяет получателей сообщения. Одно и то же сообщение могут получать несколько пользователей. Обычно каждый получатель указывается отдельной строкой с командой RCPT. Формат команды RCPT следующий:
RCPT forward-path
Аргумент forward-path определяет, куда направляется электронная почта. Как правило, здесь указывается полный адрес электронной почты, но может также указываться и имя пользователя локального сервера SMTP. Рассмотрим для примера следующую команду:
RCPT TO: haley
С помощью этой команды указывается, что сообщение должно быть направлено пользователю haley на сервер SMTP, который обрабатывает сообщения. Таким же образом можно посылать сообщения и пользователям других компьютеров, которые не являются пользователями сервера SMTP, куда направлено сообщение. Рассмотрим, например, следующую команду:
RCPT TO: riley@meshach.smallorg.org
Команда, направленная серверу SMTP с именем shardrach.smallorg.org, вынуждает принять решение о доставке сообщения именно этот сервер. Так как пользователь не зарегистрирован на локальном сервере shardrach, то серверу придется определить, что делать с сообщением дальше. В этом случае возможны три варианта действий хоста shardrach. Давайте остановимся на них подробнее.
- Хост shardrach может переслать сообщение получателю и возвратить утвердительный ответ отправителю (OK). В этом случае он добавляет свое имя в поле <reverse-path> команды MAIL, чтобы включить его в маршрут прохождения сообщения при необходимости уведомить отправителя.
- Хост shardrach не может переслать сообщение и уведомляет об этом отправителя, подтверждая в то же время правильность адреса хоста meshach.smallorg.org. Таким образом, отправитель может попытаться повторно отправить сообщение прямо на meshach.smallorg.org.
- Хост shardrach не может переслать сообщение и посылает уведомление о том, что эту операцию невозможно осуществить с данным сервером. Тогда причины случившегося следует проанализировать системному администратору.
На начальной стадии развития сети Internet практиковалась пересылка сообщений электронной почты вслепую между компьютерами по всему миру, в которых использовался исходный алгоритм передачи почтовых сообщений.
Отправка сообщения SMTP командами
Приветствуем сервер:
helo domain.local
В ответ получаем встречное приветствие с кодом 250, например, 250 relay.dmosk.ru.
Вводим адрес, от которого будем отправлять сообщение:
mail from:master@dmosk.ru
В ответ должны получить 250 2.1.0 Ok.
На какой адрес отправляем сообщение:
rcpt to:test@dmosk.ru
Получаем ответ 250 2.1.5 Ok.
Вводим команду:
data
Получим 354 End data with <CR><LF>.<CR><LF> — это означает, что можно вводить текст сообщения:
subject:test subject
test text
Чтобы закончить, с новой строки ставим точку и нажимаем Enter:
В ответ должны увидеть что-то подобное: 250 2.0.0 Ok: queued as A340FC4B70C, где последний код — идентификатор сообщения, присвоенный сервером.
Сообщение отправлено.
Итоговая картина:
220 relay.dmosk.ru ESMTP Postfix
502 5.5.2 Error: command not recognized
helo domain.local
250 relay.dmosk.ru
mail from:master@dmosk.ru
250 2.1.0 Ok
rcpt to:test@dmosk.ru
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:test subject
test text
.
250 2.0.0 Ok: queued as A5E60C4B70C
Test SMTP with telnet or openssl
We use Sendgrid for sending mails in most of our web applications, so I’ll use their SMTP server as an example.
Requirements
Before we can get started, make sure you have telnet or openssl installed. Both come installed by default on most Linux distro’s. If it isn’t installed you can grab it using your default package manager:
On Mac, you can install it with Homebrew:
Connecting to the SMTP server
To connect to smtp.sendgrid.com , we issue the following command:
If the connection is initiated, you’ll get output similar to the following back:
It’s important to note that we have initiated an unencrypted connection. This means that all information is being sent to the server in plaintext. Because we need to authenticate and send passwords, I recommend to connect using SSL or TLS if your server supports it.
To connect using the TLS protocol on port 587 , use:
To use SSL on port 465 :
You’ll get a lot of output concerning the SSL session and certificates used, but afterwards you’ll see a similar confirmation as with the telnet command (a 220 or 250 status code with a message). For example:
Initiate the conversation
Now we need to identify ourself and initiate the SMTP conversation with the EHLO command. This command takes an IP address or domain name as argument:
On most SMTP servers you will get a list of commands back when using the Extended Hello ( EHLO ) command:
Authenticate yourself
Time to log in! The previous output listed the AUTH command and the available mechanisms. In this case PLAIN and LOGIN .
Using PLAIN
The PLAIN mechanism expects a base64 encoded string containing both username and password, each prefixed with a NULL byte. To generate this string using the base64 binary, run this command:
Note in Sendgrid, the username should be apikey and the password is the API key you generated (as described in their documentation).
Now you can pass this base64 encoded string to the AUTH command in your openssl or telnet session:
The result should be:
Using LOGIN
The LOGIN mechanism also expects base64 encoded username and password, but separately. First, generate the base64 encoded strings:
and authenticate with the SMTP server:
You will be prompted for the username first, then the password. The entire conversation will look like this:
Send an e-mail
- The sender ( MAIL FROM )
- The recipient ( RCPT TO )
- and the message body ( DATA )
We follow that up by the recipient’s address and finally the message subject and body. Both the subject header and body are passed via the DATA command. I also recommend to always include the From: header again in the DATA command.
Once we are ready to send our message, we end with a single dot ( . ) character. Here’s how that looks if you put it all together:
You should receive a confirmation ( 250 Ok ) at the end that the message was accepted.
Note: if you connected with openssl instead of telnet , you have to make sure to type the rcpt to command in lowercase. Pressing R in the client session instructs openssl to renegotiate the TLS connection.
Отправка письма через telnet с авторизацией:
А что если нужно авторизоваться? Сначала нам понадобится наш логин и пароль закодировать в base64-кодировку, это можно сделать например вот тут: base64.ru
Предположим что мой логин — «elimS», пароль: «MyPassword». Тогда закодированные логин и пароль будут соответственно: «ZWxpbVM=» и «TXlQYXNzd29yZA==»
Последовательность команд будет следующей (если разрешена plaintext-авторизация ):
- telnet адрес_сервера 25 — подключаемся к серверу
- ehlo
- auth login
- ZWxpbVM= — закодированный логин «elimS»
- TXlQYXNzd29yZA== — закодированный пароль «MyPassword»
- mail from:user@domain.com — ваш почтовый ящик, с которого отправляется письмо
- rcpt to:mail@domain2.com — ящик на который отправляется письмо
- data
- subject:тема письма — не обязательная команда, если ее пропустить, то письмо будет без темы
- тут печатаем текст письма
- текст письма может быть из множества строк
- конец письма заканчивается одной точкой в отдельной строке, так как в следующей строке:
- .
- quit — завершаем сеанс и выходит из telnet
И снова лог общения с сервером с пояснениями:
telnet MailServer 25 220 domain.com.ua Microsoft ESMTP MAIL Service, Version: 42 ehlo 250-domain.com.ua Hello - IP адрес локального компьютера 250-TURN 250-SIZE 250-ETRN 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-8bitmime 250-BINARYMIME 250-CHUNKING 250-VRFY 250-TLS 250-STARTTLS 250-X-EXPS GSSAPI NTLM LOGIN 250-X-EXPS=LOGIN 250-AUTH GSSAPI NTLM LOGIN 250-AUTH=LOGIN 250-X-LINK2STATE 250-XEXCH50 250 OK auth login 334 VXNlcm5hbWU6 - что значит в base64-кодировке "Username:" ZWxpbVM= 334 UGFzc3dvcmQ6 - что значит в base64-кодировке "Password:" TXlQYXNzd29yZA== 235 2.7.0 Authentication successful. mail from:elims@domain.com.ua 250 2.1.0 elims@domain.com.ua....Sender OK rcpt to:elims-test@gmail.com 250 2.1.5 elims-test@gmail.com data 354 Start mail input; end with <CRLF>.<CRLF> subject:тема письма тут печатаем текст письма текст письма может быть из множества строк конец письма заканчивается одной точкой в отдельной строке как в следующей строке: . 250 2.6.0 <MailServerO5bxr@domain.com.ua> Queued mail for delivery quit 221 2.0.0 domain.com.ua Service closing transmission channel подключение к узлу утеряно
Вот, собственно и все.
Опубликовано в рубрике Администрирование
Предварительная подготовка
По умолчанию передача сообщений между транспортными серверами-концентраторами шифруется и сопровождается проверкой подлинности. Telnet на порту 25 можно использовать только для отправки сообщений на внутренний транспортный сервер-концентратор, на котором имеется соединитель приема, для которого разрешен анонимный доступ или обычная проверка подлинности для приема сообщений. Анонимный доступ требуется для серверов, подключенных к Интернету. При отправке сообщения на соединитель приема, на котором разрешена обычная проверка подлинности, необходима служебная программа для преобразования текстовых строк, используемых для имени пользователя и пароля, в формат Base64. Поскольку имя пользователя и пароль при использовании обычной проверки подлинности легко перехватываются, обычную проверку подлинности не рекомендуется использовать без шифрования.
Подключенные к Интернету SMTP-серверы для обмена сообщениями во многих организациях настроены на проверку IP-адреса источника, соответствующего DNS-имени домена и на воспроизведение по IP-адресу любого узла Интернета, который пытается отправить сообщение на сервер. При подключении к Интернету тестового компьютера и попытке отправить тестовое сообщение на удаленный сервер обмена сообщениями с помощью Telnet на порту 25, сообщение может быть отклонено. Чтобы удовлетворить требованиям к безопасности, предъявляемым удаленным сервером обмена сообщениями, можно подключиться к удаленному серверу обмена сообщениями с пограничного транспортного сервера. Обслуживаемые домены, настроенные на пограничном транспортном сервере, имеют необходимые MX-записи, записи адреса и записи обратного просмотра, которые идентифицируют пограничный транспортный сервер в качестве допустимого и отслеживаемого источника сообщения электронной почты для этих обслуживаемых доменов в Интернете.
Процедуры, приведенные в данном разделе, показывают, как использовать клиент Microsoft Telnet, входящий в состав Microsoft Windows Server 2003 и Windows XP. В предыдущих версиях Windows или клиентах Telnet сторонних производителей может использоваться другой синтаксис. Команды клиента Windows Telnet вводятся без учета регистра. Команды SMTP набраны заглавными буквами для большей ясности.
После подключения к SMTP-серверу назначения в сеансе Telnet нельзя использовать клавишу BACKSPACE. Если при вводе команды SMTP допущена ошибка, следует нажать клавишу ВВОД и повторно ввести команду. Неизвестные команды SMTP или синтаксические ошибки приведут к появлению сообщения об ошибке следующего вида:
Копировать код |
---|
Действие 2. Поиск полного доменного имени или IP-адреса в записи MX удаленного сервера SMTP с помощью средства командной строки Nslookup.
Для подключения к конечному серверу SMTP с помощью протокола Telnet на порте 25 необходимо использовать полное доменное имя или IP-адрес сервера SMTP. Если полное доменное имя или IP-адрес неизвестны, самым простым способом получения этих сведений является использование средства командной строки Nslookup для поиска записи MX конечного домена.
-
В командной строке введите nslookup и нажмите клавишу ВВОД. Эта команда открывает сеанс Nslookup.
-
Введите set type=mx и нажмите клавишу ВВОД.
-
Введите set timeout=20 и нажмите клавишу ВВОД. По умолчанию DNS-серверы Windows отводят 15-секундный интервал для выполнения рекурсивного DNS-запроса.
-
Введите имя домена, для которого требуется найти запись MX. Например, чтобы найти запись MX для домена fabrikam.com, введите fabrikam.com., а затем нажмите клавишу ВВОД.
Примечание.
Конечный период ( . ) указывает полное доменное имя. Использование завершающей точки препятствует непреднамеренному добавлению к имени домена каких-либо DNS-суффиксов по умолчанию, настроенных для сети.
Выходные данные команды выглядят следующим образом:
В качестве SMTP-сервера назначения можно использовать любые имена узлов или IP-адреса, связанные с MX-записями. Меньшее значение приоритета означает более предпочтительный SMTP-сервер. В целях балансировки нагрузки и отказоустойчивости можно использовать несколько MX-записей и различные значения приоритета.
-
Когда вы будете готовы завершить сеанс Nslookup, введите exit и нажмите клавишу ВВОД.
Примечание.
Ограничения брандмауэра и прокси-сервера Интернета, установленные для внутренней сети организации, могут препятствовать использованию средства Nslookup для опроса публичных DNS-серверов в Интернете.
EHLO contoso.com
Успешный ответ:
Ответ на сбой:
Возможные причины сбоя: в доменном имени есть недопустимые символы. Кроме того, на SMTP-сервере назначения установлены ограничения на подключение.
Примечание.
EHLO это команда протокола ESMTP (Extended Simple Message Transfer Protocol), определенная в RFC 2821. ESMTP-серверы могут объявлять о своих возможностях в процессе начального подключения. Эти возможности включают максимально допустимый размер сообщения и поддерживаемые методы проверки подлинности. HELO это более старая команда SMTP, определенная в RFC 821. Большинство SMTP-серверов обмена сообщениями поддерживают ESMTP и EHLO.
Отправка почты через smtp яндекса
Почта будет приходить на любой адрес, который будет указан в скрипте вместо значения ‘to’, но обрабатывать и отправлять эту почту будет именно тот SMTP, который будет указан в настройках openserver.
- Запускаем сервер
- Открываем модуль openserver с настройками в меню “почта”
- Заполняем все поля как показано на картинке, при этом, имя пользователя, e-mail отправителя и пароль подставляем от реального почтового ящика на яндексе.
Сохраняем настройки и после того, как сервер будет перезапущен, можно обратиться к самому скрипту. Из папки “Мои сайты”, открыть папку “send” в которой и находится сохраненный ранее скрипт index.php.
К стати, данный скрипт можно сохранить под любым именем, главное чтобы расширение скрипта было “php”
Как только произойдет обращение к данному скрипту, в новом окне браузера появится информация о том, что скрипт отработал.
После этого стоит проверить свой почтовый ящик, адрес которого был указан в скрипте, пришло ли письмо.
Если его нет, значит что-то настроено не правильно, либо письмо попало в папку спам.
Все остальные настройки выглядят аналогично, но на всякий случай дополнительная информация не помешает.
Использование Telnet на порту 25 для проверки связи по протоколу SMTP
Процедура в этом разделе показывает, как использовать Telnet на порту 25 для проверки связи по протоколу SMTP. Эта процедура использует значения, описанные в следующем списке:
SMTP-сервер назначения mail1.fabrikam.com
Примечание. |
---|
Всегда следует использовать работающий адрес электронной почты отправителя, чтобы все отчеты о недоставке, созданные SMTP-сервером назначения, доставлялись отправителю сообщения. |
Использование Telnet на порту 25 для проверки связи по протоколу SMTP
В командной строке введите telnet и нажмите клавишу ВВОД. Эта команда открывает сеанс Telnet.
Введите set localecho и нажмите клавишу ВВОД. Эта необязательная команда позволяет видеть вводимые знаки. Этот параметр может быть необходим для некоторых SMTP-серверов.
Введите set logfile <имя_файла>. Это необязательная команда включает ведение журнала сеанса Telnet в указанный файл журнала. Если указать только имя файла, местоположением файла журнала будет текущий рабочий каталог. При указании пути и имени файла путь должен быть локальным для компьютера. И путь, и имя файла необходимо вводить в формате Microsoft DOS 8.3. Указанный путь должен уже существовать. Если указать файл журнала, который не существует, он будет создан.
Введите open mail1.fabrikam.com 25 и нажмите клавишу ВВОД.
Введите EHLO contoso.com и нажмите клавишу ВВОД.
Введите MAIL FROM:chris@contoso.com и нажмите клавишу ВВОД.
Введите RCPT TO:kate@fabrikam.com NOTIFY=success,failure и нажмите клавишу ВВОД. Необязательная команда NOTIFY определяет конкретные уведомления о доставке, которые SMTP-сервер назначения должен предоставить отправителю. Уведомления о доставке определены в RFC 1891. В данном случае запрашивается уведомление об успешной доставке или невозможности доставки сообщения.
Введите DATA и нажмите клавишу ВВОД. Появится отклик, подобный приведенному ниже:
Копировать код |
---|
Введите Subject: Test from Contoso и нажмите клавишу ВВОД.
Нажмите клавишу ВВОД. RFC 2822 требует, чтобы между полем заголовка Subject: и текстом сообщения была пустая строка.
Введите This is a test message и нажмите клавишу ВВОД.
Нажмите клавишу ВВОД, введите точку ( . ) и нажмите клавишу ВВОД. Появится отклик, подобный приведенному ниже:
Копировать код |
---|
Чтобы отключиться от SMTP-сервера назначения, введите QUIT и нажмите клавишу ВВОД. Появится отклик, подобный приведенному ниже:
Копировать код |
---|
Чтобы закрыть сеанс Telnet, введите quit и нажмите клавишу ВВОД.