Поработаем сегодня аутлуком и поймем, почему не всегда стоит доверять письмам, даже если в поле отправитель стоит знакомый вам емейл.
Поставим SMTP-сервер sendmail.
SMTP означает Simple Mail Transfer Protocol простенький протокол передачи почты. И мы его используем для сих пор для отправки электронной почты.
В debian подобных ОС установить sendmail можно командой:
apt istall sendmail
После чего поработаем аутлуком будем делать все то же самое, что делает почтовый клиент (точнее, что он делал бы в 90х-2000х годах, сейчас все несколько сложнее)
Для этого мы подключимся в SMTP серверу локально (на 127.0.0.1 на TCP-порт 25) и будем вручную формировать почтовое письмо со всеми заголовками.
Покомандно
Подключаемся с помощью 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
.
Смотрим, письма вроде не пришло (не обращайте внимания, это ранее отправленные)
Но зайдем в СПАМ
Зайдем в письмо.
Обратите внимание на поля
Тема (Interview)
От кого (Agent El.Smith agent.s.smith@yandex.ru)
Получатель: я
Указание, что письмо является СПАМом.
И указано почему:
Отправитель не прошел проверку SPF.
Мой компьютер не входит в домен yandex.ru и не указан в качестве разрешенных для отправления в yandex.ru
Проверяем
Мы уже видим,что доменное имя не в Яндексе.
Но можем дополнительно проверить
Так и есть.
Но вдруг мы в SPF
Проверяем
Редиректит на _spf.yandex.ru
Редиректит на _spf-ipv4.yandex.ru
И вот наконец мы видим адреса, от имени которых разрешено
Нашего там нет.
Итак SPF мы провалили, а что же с DKIM?
А вот что. Наведем курсор мыши на значок перечеркнутого красного замочка.
А теперь не только наведем, но и нажмем
Посмотрим в свойства письма
И смотрим
На что обратить внимания?
for -- видим то, что указали в rcpt to
Видим IP-адрес машины, с которой физически было отправлено письмо
Видим, что SPF проверка не прошла, наш IP не был распознан как разрешенный отправитель
Метка X-Yandex-Spam равна 4 (когда письмо приходит во Входящие, это 1)
Видим данные, указанные в ehlo (localhost)
Видим, снова для кого (rcpt to)
Далее видим данные из поля data
А потом в Return-Path данные, указанные в mail from:
ну и далее тело письма.
Попробуем ход конем.
Давайте отправим письмо от имени домена, в котором мы находимся.
Сначала добавим домен в /etc/hosts
Отправим письмо
Тут все так же:
ehlo приветствуем сервер
mail from уже указываем наше имя в нашем домене
rcpt to фактический адрес получателя
data собственно письмо
from в этот раз указываем фактическое имя отправителя в нашем домене
to тоже имя получателя
subject тема письма
далее тело письма
после чего
. завершаем ввод
и Ctrl ] - выходим из подключения
q выходим из телнета.
Письмо снова попало в СПАМ
Смотрим письмо. Значок замочка в этот раз желтый а не красный
Наводим курсор на значок замочка
Нажмем на значок замочка
В этот раз ситуация изменилась, нас считают валидным отправителем, но предполагают, что данные могли быть изменены, потому что нет подписи.
Смотрим в свойства
В этот раз поля 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 и компьютерных сетей