Найти в Дзене
Кручинин.Linux

Как отправляется электронная почта

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

Поставим SMTP-сервер sendmail.

SMTP означает Simple Mail Transfer Protocol простенький протокол передачи почты. И мы его используем для сих пор для отправки электронной почты.

В debian подобных ОС установить sendmail можно командой:

apt istall sendmail

-2

После чего поработаем аутлуком будем делать все то же самое, что делает почтовый клиент (точнее, что он делал бы в 90х-2000х годах, сейчас все несколько сложнее)

Для этого мы подключимся в SMTP серверу локально (на 127.0.0.1 на TCP-порт 25) и будем вручную формировать почтовое письмо со всеми заголовками.

-3

Покомандно

Подключаемся с помощью telnet-а к локально установленному sendmail на порт 25 (это позволяет, так как и telnet и SMTP это простейшие текстовые ASCII протоколы).

telnet 127.0.0.1

Далее приветсвуем сервер, пишем helo, точнее ehlo (extended helo) и наше имя

ehlo localhost

сервер приветствует и выдает имена расширений

Далее мы указываем от кого на самом деле отправляется письмо.
Нагло пишем, что от нашей же жертвы

mail from: zhertvas@yandex.ru

Кому письмо должно по факту отправиться?

rcpt to: zhertvas@yandex.ru

Далее собственно вводим данные

data

все что введено далее это уже части отображаемого письма

Укажем, от кого письмо должно выглядеть отправленным (что будет отображаться в почтовике)

from: "Agent El.Smith" <agent.s.smith@yandex.ru">

Здесь мы не только емейл указали, но и имя.

Далее, кого будет видеть в почтовике жертва получателем

to: Neo <zhertvas@yandex.ru>

Какая тема письма будет отображаться?

subject: intervies

Дальше просто текст. Заканчивается ввод одной строкой, содержащей точкой.

We waiting you for interview

.

Смотрим, письма вроде не пришло (не обращайте внимания, это ранее отправленные)

-4

Но зайдем в СПАМ

-5

Зайдем в письмо.

-6

Обратите внимание на поля

Тема (Interview)

От кого (Agent El.Smith agent.s.smith@yandex.ru)

Получатель: я

Указание, что письмо является СПАМом.

И указано почему:

-7

Отправитель не прошел проверку SPF.

Мой компьютер не входит в домен yandex.ru и не указан в качестве разрешенных для отправления в yandex.ru

Проверяем

-8

Мы уже видим,что доменное имя не в Яндексе.

Но можем дополнительно проверить

-9

Так и есть.
Но вдруг мы в SPF

Проверяем

-10

Редиректит на _spf.yandex.ru

-11

Редиректит на _spf-ipv4.yandex.ru

И вот наконец мы видим адреса, от имени которых разрешено

-12

Нашего там нет.

Итак SPF мы провалили, а что же с DKIM?

А вот что. Наведем курсор мыши на значок перечеркнутого красного замочка.

-13

А теперь не только наведем, но и нажмем

-14

Посмотрим в свойства письма

-15

И смотрим

-16

На что обратить внимания?

-17

for -- видим то, что указали в rcpt to

Видим IP-адрес машины, с которой физически было отправлено письмо

Видим, что SPF проверка не прошла, наш IP не был распознан как разрешенный отправитель

Метка X-Yandex-Spam равна 4 (когда письмо приходит во Входящие, это 1)

Видим данные, указанные в ehlo (localhost)

Видим, снова для кого (rcpt to)

Далее видим данные из поля data

А потом в Return-Path данные, указанные в mail from:

ну и далее тело письма.

Попробуем ход конем.

Давайте отправим письмо от имени домена, в котором мы находимся.

-18

Сначала добавим домен в /etc/hosts

-19

Отправим письмо

-20

Тут все так же:

ehlo приветствуем сервер

mail from уже указываем наше имя в нашем домене

rcpt to фактический адрес получателя

data собственно письмо

from в этот раз указываем фактическое имя отправителя в нашем домене

to тоже имя получателя

subject тема письма

далее тело письма

после чего

. завершаем ввод

и Ctrl ] - выходим из подключения

q выходим из телнета.

Письмо снова попало в СПАМ

-21

Смотрим письмо. Значок замочка в этот раз желтый а не красный

-22

Наводим курсор на значок замочка

-23

Нажмем на значок замочка

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

Смотрим в свойства

-24

В этот раз поля Autentication-result с Soft-fail-SPF нет.

Но так как нет DKIM подписи, письмо попало в СПАМ (про DKIM и DMARC поговорим в следующих наших выпусках)

Итак, почтовый сервер проверяет,

что отправитель не был подделан с помощью SPF.

Проверка SPF считается пройденной, если

  • IP-адрес, на котором работает отправляющий SMTP-сервер, разрешается в PTR в тот же домен, от которого отправляется письмо, либо
  • IP-адрес указан в списке IP адресов в записи SPF для домена, от имени которого отправляется письмо.

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

Подписывайтесь на мой канал https://dzen.ru/olinux и читайте заметки о неочевидных моментах в работе GNU/Linux и сетевых протоколов.

Всегда с вами, Сергей Кручинин преподаватель GNU/Linux и компьютерных сетей

-25