Недавно мы по ряду причин решили отказаться от стороннего сервиса для email-рассылок и осуществлять рассылки со своего сервера. Я бы хотел указать на ряд трудностей, с которыми мы столкнулись в процессе, и пути их решения. Непосредственно тему верстки эта статья практически не затрагивает, но более подходящего хаба я не нашел.

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


Автоответчик


Будьте готовы к тому, что люди не понимают, зачем нужен автоответчик. На вас посыпятся сотни очень важных автоответов: «Спасибо!», «Я получил ваше письмо, отвечу, как только смогу» (вот зачем мне это?), или даже просто «адылопрыда». Их что, насильно заставляют заполнять поле автоответа?! Причем у большинства автоответофилов ящик на mail.ru (с трудом воздерживаюсь от комментариев по этому поводу).

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

Как с ними бороться? Казалось бы, открываем RFC, читаем, что нам нужно парсить заголовок Auto-Submitted: на предмет его наличия и неравенства значения слову no и получаем профит. Так? Неа. Ключевое слово там SHOULD. И если, например, gmail, yandex и yahoo восприняли это как руководство к действию, то вот mail.ru (опять ты?) слишком горд, чтобы слушать чьи-то советы. Спасибо хоть за заголовок X-AutoReply. Туда же идет и rambler со своим X-Autogenerated. Страшно представить, что на этот счет придумали еще более невменяемые серверы типа i.ua (о них еще пойдет речь), но от них пока автоответов не приходило. Может, у них просто вообще такой функции нет?

Server name


Помните, что в параметре myhostname postfix'а должен быть указан FQDN. И если у вас там будет стоять не example.com, а просто example, то могут возникнуть проблемы с доставкой письма. Опять же, Gmail, Yandex и даже MailRu на это забивают, но вот тот самый злополучный i.ua (а также ukr.net) просто отпинывает письма, никак это не комментируя.

Greylisting


Еще одна подлянка от ukr.net. На эту тему у них есть только вот такой придурковатый FAQ. Суть в том, что если ваш сервер не известен укрнету, то письма он доставлять сразу не будет. Чтобы попасть в его белый список, надо послать то же самое письмо через определенный промежуток времени. К счастью, postfix по умолчанию поддерживает эту опцию, так что надо просто подождать несколько часов после первого письма.

Quarantine


Нас вновь радует i.ua. По какой-то, известной только ему, причине он решил поместить часть наших писем в карантин. Чтобы вытащить их из этого карантина, нужно ввести код, отправленный в письме, или перейти по ссылке в этом же письме. Тут я уже сдался — писать отдельный парсер служебных писем для удовлетворения прихоти параноидально настроенных админов в мои планы не входило.

Верстка


По поводу самой верстки писем на хабре уже была куча статей, вряд ли я добавлю к ним что-то новое. Я выступлю немного с другой позиции: что делать, когда уже есть сверстанная страница на сайте, а ее надо отправить письмом. У нас, например, есть рассылка, которая частично состоит из материалов на сайте. Не переверстывать же ее специально под письмо? А если таких страниц почти 200? И периодически в них вносятся правки?

Поэтому я нашел для себя библиотеку, которая позволяет из готового «сайтового» хтмла сделать правильную email-версию, с инлайновыми стилями, абсолютными путями до картинок, исправленными под email-клиенты стилями и т.д. Не всегда это у нее получается идеально, но когда надо письма отправлять все-таки надо, а дедлайн — вчера, библиотека очень выручает.

В планах вот еще есть встроить ее в сайтовый workflow, чтобы она автоматически создавала email-версию при изменении контента.

Отписаться от рассылки


Про заголовок List-Unsubscribe на том же хабре писали еще в 2010 году. Тут главное помнить, что в том же Gmail, чтобы в письме появилась кнопка «Отписаться», надо, чтобы гугл считал вас добросовестным отправителем. На практике надо правильно настроить DKIM, в том числе учесть следующий пункт. Также, как минимум, гугл не требует, чтобы в заголовке List-Unsubscribe была именно mailto: ссылка, достаточно ссылки на сайт со страницей отписки.

DKIM: Body hash did not verify


Столкнулся с такой фразой в заголовках письма, когда заметил, что в части отправленных писем GMail не помещает кнопку «Отписаться». По сути, здесь всё просто — тело письма было изменено уже после подписывания, поэтому хэши не совпадают.

Выяснить причину этого было уже не так просто. Но покопавшись, я выяснил, что согласно RFC2822 длина строки тела сообщения не должна превышать 998 символов. По какой-то причине postfix (насколько я понял) расставляет переносы уже после подписывания письма, поэтому лучше подавать постфиксу на вход письмо с уже правильно расставленными переносами.

Вот пока и всё. Совместными усилиями мы можем дополнять этот пост полезными советами из своей практики. И в конце небольшой опрос:
Если вы отправляете рассылки, каким инструментом вы пользуетесь?

Проголосовало 275 человек. Воздержалось 137 человек.

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

Комментарии (30)


  1. Temmokan
    17.01.2016 14:40
    +4

    Настоящие подводные камни — это обработка всех жалоб на спам и ситуаций с невозможностью доставки. При условии, что в остальном письма идеальны, что все эти SPF, DKIM, DMARC настроены как положено, а письмо не производит впечатления спама, будучи доставлено на ряд почтовых ящиков популярных почтовых серверов.

    По этой и многим другим причинам я в своё время оказался от решения «своими руками» и использую Sendy.co (в качестве собственно сервиса рассылок — Amazon SES).

    Да, и ещё: вынимать IP своего почтового сервера из чёрных списков после практически неизбежных жалоб на спам тоже задача ещё та.


    1. splatt
      17.01.2016 21:01
      +1

      Ну, если рассылка — реально не спам, а что-то полезное, то ситуацию с отправкой в спам можно контролировать через всякие сервисы вроде «Почтового офиса» на Яндексе. Там же можно смотреть, как люди реагируют на ваши письма.
      А вот blacklist сервисы вроде uceprotect — это реальный трэш. Мало того, что любой желающий может занести туда любой ip-адрес вручную через систему сомнительных репортов, так они еще и вымогают деньги за «вынимание» ip-адреса (по 100 зеленых за IP-адрес) и принципиально не рассматривают варианты ошибочного внесения.

      В свое время у меня так нехило «подгорало», когда один известный европейский ДЦ периодически блокировал нам сервер, руководствуясь этим списком. Приходилось стучать в техподдержку и объяснять, что почтового сервера у нас на заблокированной машине вообще нет (предлагали им даже проверить вручную), а то, что у нас есть недоброжелатели которые всеми возможными способами пытаются нам нагадить в том числе генерируя фейковые спам-репорты в сомнительных блэклистах — не наша вина.


      1. Temmokan
        18.01.2016 03:46

        К слову, тут SES со своим пулом исходящих адресов тоже более или менее адекватно.

        И то приходится перед запуском кампании несколько раз править письмо, пока все эти Yahoo, Mail.ru и прочие монстры не перестанут отправлять письмо в спам (по неизвестным науке причинам, понять логику их работы я не могу — вроде бы и в чёрных списках адреса нет, а письмо всё равно помечается как нежелательное)

        В общем, да, сплошная чёрная магия.


        1. splatt
          18.01.2016 09:10

          Насколько я понимаю, mail.ru и прочее пользуются эвристиками, основанными на поведении пользователей и их личных предпочтений. Например, один пользователь рассылки с сайтов поиска работы помечает спамом, в то время как второй пользователь (который в этот момент ищет работу) читает их все и переходит по ссылкам в письме. Для таких пользователей, очевидно, поведение спам-фильтра могут быть разными, и это хорошо. Опять же, инструменты вроде postmaster.mail.ru помогут в таких случаях понять, какой процент пользователей негативно реагируют на ваше письмо. Если такое количество велико, и все последующие письма начинают уходить в спам — возможно, проблема в содержании рассылки, а не в почтовике.

          Все это еще поддается логическому объяснению, в отличии от черных списков ip-адресов, которые к спаму как правило не имеют никакого отношения.


          1. Temmokan
            18.01.2016 12:06
            +1

            Тут ещё немаловажный момент: если это именно рассылка (все причиндалы — заголовки в письме и пр. — на месте), то резонный вопрос: если пользователь сам и подписался, то на кой помечает спамом? Отпишись, если не нужно. Удали, если действительно неинтересно. Иначе — на кой подписывался?

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

            Оптимально — оценивать и применять итоги для конкретного пользователя (не обобщая его выбор на всю службу в целом), а при наличии признаков списка рассылки предлагать отписаться или просто удалить.

            Впрочем, тут нужен представитель Mail.ru, чтобы расставить все точки над «i» в данном вопросе.


            1. Aracon
              18.01.2016 13:13

              Все заголовки на месте — это еще не гарант «белого» письма: некие «бизнесмены» регулярно заливают базы (спарсенные или украденные с нормальных подписных баз через уязвимости в сервисах) в сервисы рассылки. И начинают на ящик приходить письма о том, что пользователь, наверное, уже соскучился по Ивану Пупкину и хочет узнать секреты его миллионов. В подвале письма: «Вы получили это письмо, так как подписались на рассылку на сайте 127.0.0.1».


              1. ookami_kb
                18.01.2016 18:28

                Ну так DKIM-то эти «бизнесмены» подделать не смогут — значит, уже не все заголовки будут на месте.


                1. Aracon
                  18.01.2016 21:48

                  К сожалению, не очень хорошо разбираюсь в технологиях рассылок, но вроде как почтовые сервисы (mailchimp, smartresponder и т.п.) имеют настроенный DKIM, или нет?
                  Я имел в виду, что база заливается в «нормальный» (но не топовый) сервис рассылки, видимо убеждают саппорт поддельными «анкетами с конференции», или просто саппорт не особо смотрит на базу.


                  1. Temmokan
                    21.01.2016 06:32
                    +1

                    DKIM позволяет проверить, подписано ли письмо ключом домена-отправителя. От попытки сфабриковать рассылку от имени не своего домена это защищает (SPF поможет проверить, является ли сервер-отправитель легитимным для данного домена)

                    Другое дело, если залить чужую базу и отправлять с другого адреса.

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

                    К слову, сервисы рассылки, если только они не обслуживают целенаправленно спамеров, могут (и в спорных случаях делают это) проверять годность базы (например, потребовать подтверждения, что подписчик действительно давал согласие на получение рассылки).


            1. ookami_kb
              18.01.2016 18:27

              Ну вот Gmail так и делает, если есть List-Unsubscribe, и с письмом всё в порядке, то когда пользователь нажимает «В спам», гугл предлагает просто отписаться от этой рассылки.


    1. Foxcool
      17.01.2016 21:20

      А еще «прогревать» IP адреса для новых серверов. Т.е. не сразу врубать рассылки с непрогретого адреса на полную, а начинать по чуть-чуть рассылать. И прочие шаманские процессы. (:


  1. olku
    17.01.2016 17:52
    +1

    Доставка, а не рассылка со своего сервера, вот где челленж. Сделаете 99% гарантии доставки, и уже можно продавать как сервис :)


  1. Gendalph
    17.01.2016 20:27

    Люююдиии, а кто удачно воевал с AT&T? Они со своим ******** DNSBL достали. Мало того что они игнорят запросы на делист, так ими еще и разные Comcast'ы пользуются.


    1. snp
      18.01.2016 01:03
      +1

      Проще предусмотреть быструю смену исходящего IP'шника. Да, действительно, даже если рассылаешь 100% честную рассылку тем клиентам, кто зарегался на сервисе, иногда приходится вести себя как спамер. Есть идиоты, которые в 21 веке до сих пор используют DNSBL, в т.ч. такие крупные, как yahoo, hotmail, apple.


      1. stigory
        18.01.2016 04:46
        +1

        Есть идиоты, которые в 21 веке до сих пор используют DNSBL, в т.ч. такие крупные, как yahoo, hotmail, apple.

        А не могли бы вы развернуто осветить свою точку зрения по этому моменту. А то мне, как сисадмину на пенсии непонятно чем вас так разозлила эта система. В мои времена возможность разом отрезать всех диалапщиков очень помогала в работе. И да, я хорошо понимаю что такое DNSBL и к чему может привести его неразумное использование. Но подозреваю, что перечисленые yahoo, hotmail, apple используют его разумно.


        1. snp
          18.01.2016 11:06
          +2

          В DNSBL легко попасть, в т.ч. по фейковой жалобе (см. выше коммент другого) и, бывает, трудно удалиться. Или например, вот вам кейс: спамер слал с виртуалки, попал в блэклист, избавился от неё, IP отдали кому-то ещё. И новому владельцу разгребать.

          Я не знаю, сколько вы лет «на пенсии», но уже давно придумали обучаемые фильтры. Вон, gmail не пользуется DNSBL, все довольны. Почему бы не взять с гугла пример? Есть DMARC, DKIM — тоже облегчает сортировку трафика.

          > Но подозреваю, что перечисленые
          На надо подозревать, просто начните с чего-то простого типа 500 тыщ писем в неделю и сами увидите.


          1. stigory
            18.01.2016 14:25

            В общем мне ясна ваша позиция. Но смею вас уверить не DNSBL тому виной. Я не просто так написал о «неразумном использовании». Никогда не пользовался DNSBL-базами SORBS или Spamhaus. Но, во времена нулевых, база диалапщиков сильно прореживала трафик от ботов.
            А в данном случае всегда будут админы, считающие что один из компонентов защиты — самодостаточная панацея. И вечно будут об это спотыкаться.


            1. Gendalph
              19.01.2016 01:05

              Плохо когда DNSBL — используется именно как blacklist. Именно так его использует AT&T.
              Хорошо когда DNSBL используется для понижения «рейтинга», т.е. комбинируется с другими механизмами.
              greylisting тоже неплох, если, например ограничивать количество входящей почты — скомпрометированный почтовик ведь начнет как из пулемета строчить, вот и будет толк от greylist'а.


  1. cawakharkov
    18.01.2016 01:09

    Пользуемся SES


  1. snp
    18.01.2016 01:18
    +2

    mail.ru вообще долбанутые — например, тупой юзер зарегался на сайте, забыл об этом, на очередное письмо жмёт кнопку «это спам», в итоге «мыло» просто блочит подобные письмо вообще всем получателям на mail.ru; плюс, шлёт автоматически сгенерённую абузу на returnpath.net — это мутная американская контора, которая шлёт абузы дальше провайдерам и заносит в DNSBL. В общем, за гранью добра и зла.


  1. Pilat
    18.01.2016 03:20
    +1

    «Еще одна подлянка от ukr.net. На эту тему у них есть только вот такой придурковатый FAQ.…
    опцию, так что надо просто подождать несколько часов после первого письма.»

    Вы уверены что реально несколько часов? Обычно greylisting минут 15 требует (их FAQ я прочитал, но не верится).

    «нужно ввести код, отправленный в письме, или перейти по ссылке в этом же „

    А вот тут есть некоторые соображения… http://searchengines.guru/showthread.php?t=917810, сообщение #5 и далее холливар на тему “Самая надежная защита от спама — это когда на адрес, с которого ранее не получали письма, приходит письмо со ссылкой на капчу для подтверждения.» с апологетом и, возможно, автором этого метода.


    1. ookami_kb
      18.01.2016 10:11
      +2

      Вы уверены что реально несколько часов? Обычно greylisting минут 15 требует (их FAQ я прочитал, но не верится).

      Проверил сейчас по логам, первый раз письмо отправлено в 13:24, успешно отправлено — в 15:51.

      Самая надежная защита от спама — это когда на адрес...

      Это скорее защита от писем вообще. Если бы надо было еще капчу вводить, это было бы вообще за гранью… Но даже со ссылкой — в принципе-то парсить письмо и переходить по ссылке автоматически проблемы особой нет. И от спамера оно поможет, только если он увидит такую защиту и умрет со смеху. А вот всем остальным доставляет неудобства.

      Да и вообще, ну для чего тогда папка «Спам»-то придумана? Ну считает сервер письмо слишком подозрительным, так пусть тогда хотя бы туда его положит. Пользователю надо будет — он просмотрит папку, и скажет, что это — не спам. А когда письмо вообще не приходит, это уже свинство. И этим грешат и i.ua, и ukr.net, и mail.ru.


    1. Gendalph
      19.01.2016 01:09

      кур.нэт — прошел их грэйлист трижды, 4-7 часов.


  1. AndrCho
    18.01.2016 10:21
    -1

    Начинаю и сам подумывать о рассылке! Читаю кучу статей и форумов. Вот нашел тоже интересную статью по емейл рассылке ТЫЦ. Наверно остановлюсь на сервисе Mailchimp.


  1. Aracon
    18.01.2016 11:53

    В последнее время смотрю тему рассылок — у всех разные мнения, кто-то рассылает через сервисы вроде mail chimp и пр., кто-то через SES, кто-то своими силами. Вопрос: если речь идет не о сервисных/транзакционных письмах, а об информационной рассылке клиентам (естественно белой, с подтверждением и ссылками отписки), то какой вариант дешевле, учитывая затраты времени тоже как расход? Ориентируясь на средние интернет-магазины и сервисы с базой в несколько тысяч клиентов и частотой порядка раз в неделю.


    1. ookami_kb
      18.01.2016 18:38

      Технически настроить рассылку не так уж и сложно/дорого. Возможно, основная масса проблем, как подсказывают товарищи выше, еще впереди, но пока удобство работы со своей системой + гибкость настройки под себя (против кривого интерфейса сервиса), полный контроль над аккаунтами подписчиков (против отсутствия такого) — это уже реальные плюсы. А деньги на реализацию можно окупить за несколько месяцев. Может, просто с сервисом не повезло.


      1. Aracon
        18.01.2016 21:51

        А что скажете насчет SES? Как я понял, это некое промежуточное решение между «готовый сервис» и «писать своё». Есть ли опыт с ним?


        1. ookami_kb
          18.01.2016 21:56

          Нет, тут опыта не было, тоже интересно. cawakharkov выше говорил, что пользуются, предлагаю у него спросить.


          1. cawakharkov
            18.01.2016 22:01

            У нас вся почта из апи и админки идёт через SES, ну и в других проектах использовал, для различных уведомлений и спам-компании. В итоге всё сводится к SMTP.


        1. Temmokan
          21.01.2016 06:36

          SES — это API для отправления почты и автоматической обработки проблем с доставкой и жалоб на спам. Собственно удобного интерфейса, как в службах вида SmartResponder, там нет.

          Я уже упоминал (платный) продукт Sendy.co, который заточен под SES и предоставляет тот самый интерфейс, аналитику и пр.