Введение

Тип электронной почты

HTML-письмо – это использование подмножества HTML для обеспечения возможностей форматирования и семантической разметки в электронной почте, недоступных в обычном тексте: текст можно сделать ссылкой, не отображая URL-адрес, или разбивать длинные URL-адреса на части. Текст переносится в соответствии с шириной окна просмотра, а не равномерно разбивается на строки по 78 символов (как определено в RFC 5322, что было необходимо для старых текстовых терминалов). Это позволяет встраивать изображения, таблицы, а также диаграммы или математические формулы в виде изображений, которые иначе сложно передать (обычно с помощью ASCII-графики).

Усыновление

Большинство графических почтовых клиентов поддерживают HTML-письма, и многие используют их по умолчанию. Многие из этих клиентов включают как графический редактор для создания HTML-писем, так и движок для отображения полученных HTML-писем. С момента появления HTML-писем, многие люди активно выступали против них (и даже против самого MIME) по различным причинам. Например, кампания "ASCII Ribbon Campaign" призывала отправлять все письма в текстовом формате ASCII. Кампания оказалась безуспешной и была прекращена в 2013 году. Хотя до сих пор использование HTML-писем считается неуместным во многих новостных группах и рассылках, их применение для личной и деловой переписки со временем только возросло. Некоторые из тех, кто изначально резко критиковал HTML-письма, теперь считают их в основном безобидными. Согласно опросам, проведенным компаниями онлайн-маркетинга, использование почтовых клиентов, поддерживающих HTML, сейчас практически повсеместно, и менее 3% пользователей сообщают, что используют только текстовые клиенты. Большинство пользователей предпочитают получать письма в формате HTML, а не в виде простого текста.

Стиль

Некоторые отправители могут злоупотреблять крупными, яркими или отвлекающими шрифтами, что затрудняет чтение сообщений. Для тех, кому это особенно мешает, некоторые почтовые клиенты позволяют частично переопределить форматирование (например, в Mozilla Thunderbird можно задать минимальный размер шрифта), однако такая возможность доступна не везде. Более того, разница в визуальном оформлении между отправителем и получателем может помочь отличить автора каждого фрагмента текста, повышая удобочитаемость.

Форматы с несколькими частями

Многие почтовые серверы настроены на автоматическое создание простой текстовой версии сообщения и отправку её вместе с версией HTML, чтобы гарантировать возможность прочтения даже почтовыми клиентами, работающими только с текстом, используя тип содержимого multipart/alternative, как указано в RFC 1521. Само сообщение имеет тип multipart/alternative и содержит две части: первую – типа text/plain, предназначенную для почтовых клиентов, работающих только с текстом, и вторую – типа text/html, предназначенную для клиентов, поддерживающих HTML. Однако в простой текстовой версии может отсутствовать важная информация о форматировании. (Например, математическое уравнение может потерять верхний индекс и приобрести совершенно иной смысл.) Многие списки рассылки намеренно блокируют HTML-письма, либо удаляя HTML-часть и оставляя только простую текстовую, либо отклоняя сообщение целиком. Порядок частей сообщения имеет значение. RFC1341 определяет, что пользовательские агенты, формирующие сообщения multipart/alternative, должны располагать части сообщения в порядке возрастания предпочтения, то есть наиболее предпочтительный формат – последним. Для многокомпонентных электронных писем с HTML и текстовыми версиями это означает, что сначала должна идти текстовая версия, а затем – HTML-версия, иначе клиент может по умолчанию отображать текстовую версию, даже если доступна HTML-версия.

Размер сообщения

HTML-письма имеют больший размер, чем обычный текст. Даже если не используется специальное форматирование, будет накладной расход, обусловленный тегами, используемыми в минимальном HTML-документе, а при интенсивном форматировании он может быть значительно выше. Многокомпонентные сообщения, содержащие дубликаты одного и того же контента в разных форматах, еще больше увеличивают размер. Однако текстовую часть многокомпонентного сообщения можно получить отдельно, используя команду FETCH в протоколе IMAP. Хотя разница во времени загрузки между обычным текстом и сообщениями смешанного типа (которая могла достигать десятикратной и более) вызывала опасения в 1990-х годах (когда большинство пользователей получали доступ к почтовым серверам через медленные модемы), на современных соединениях эта разница для большинства людей незначительна, особенно по сравнению с изображениями, музыкальными файлами или другими распространенными вложениями.

Слабые места в системе безопасности

HTML позволяет отображать ссылку в виде произвольного текста, так что вместо полного URL-адреса ссылка может показывать только его часть или просто удобное для пользователя целевое имя. Это может использоваться в фишинговых атаках, когда пользователей обманом заставляют поверить, что ссылка ведет на сайт авторитетного источника (например, банка), после чего они переходят по ней и непреднамеренно раскрывают личные данные (например, номера банковских счетов) злоумышленнику. Если электронное письмо содержит веб-маяки (встроенный контент с внешнего сервера, например, изображение), сервер может уведомить третью сторону об открытии письма. Это представляет собой потенциальную угрозу конфиденциальности, поскольку подтверждает, что адрес электронной почты действующий (и может быть использован в дальнейшем) и показывает время прочтения сообщения. Для обработки HTML-контента почтовым программам требуются движки для разбора, отрисовки и отображения документа. Это может привести к увеличению числа уязвимостей в системе безопасности, отказу в обслуживании или снижению производительности на устаревших компьютерах. В периоды повышенной сетевой активности Министерство обороны США преобразует все входящие HTML-письма в текстовый формат. Тип multipart предназначен для представления одного и того же контента разными способами, однако это иногда используется в злонамеренных целях: некоторые спам-сообщения используют этот формат, чтобы обмануть спам-фильтры и заставить их принять сообщение за легитимное. Они делают это, добавляя безобидный контент в текстовую часть сообщения, а спам – в HTML-часть (которая отображается пользователю). Большинство спама по электронной почте отправляется в формате HTML по этим причинам, поэтому спам-фильтры часто присваивают HTML-сообщениям более высокий спам-рейтинг. В 2018 году была обнаружена уязвимость EFAIL, серьезная проблема, которая могла позволить злоумышленнику раскрыть фактическое содержимое зашифрованных HTML-писем.