Как разослать миллион писем за один час?

Планирую решение для клиентов, с потребностью раз в сутки рассылать около миллиона писем. Клиенты не спамеры. Купонщики, рассылающие подписчикам, жаждущим скидок. Ссылка «отписаться» в каждом письме. Письма без вложений, до 100к весом.


Есть выделенный сервер на Hetzner'е, есть Amazon SES.

Вопрос: стоит ли положиться целиком на силы своего сервера, на котором ещё и БД и веб, и слать через собственный Exim4,

или же сбрасывать все письма на Амазон, и пусть дальше он парится, доставляя их?


Приоритеты:

1. deliverability;

2. скорость рассылки, чтобы этот миллион не растягивался на пол дня;

3. расходы. Амазон влетит в доллар если каждый день слать по миллиону.


Дополнительные почему:

Как грузит сервер Exim, рассылая почту?

Насколько он распараллеливается, или отправляет строго по 1 одному письму?

Есть ли у кого-нибудь опыт рассылок и через Exim и через Amazon SES, чтобы сравнить?
  • Вопрос задан
  • 14126 просмотров
Решения вопроса 1
xenon
@xenon
Too drunk to fsck
Сто тыщщ миллионов лет назад для заказчика писали систему для массовой рассылки. Сейчас уже точно не помню, но, кажется, рассылали в 3000 одновременных коннектов. Про скорость врать не буду — не помню, но меньше миллиона в час. Может быть сейчас (компы гораздо мощнее стали, каналы шире) и возможно, но не уверен.

Почти 100% уверен что exim НЕ подойдет.

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

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

Еще проблема — при такой мощной рассылке, канал будет забит (конечно, если почтовик сумеет его загрузить). То есть, будут потери пакетов, потери DNS запросов и ответов, итд. (между делом — редхатовский bind из давних дистрибутивов — вообще падал при такой нагрузке)

В любом случае, мне кажется с обычным MTA (без очень жесткой доработки напильником) — врядли получится, тем более за час. Они все таки рассчитаны для «дорогой но надежной» доставки — то есть письмо может хоть неделю быть в очереди, если сервер получателя лежит. Если база действительно чистая и легальная — таких проблемных писем будет относительно мало, но каждое из них сильно тормозит систему. А вам нужна «дешевая и быстрая» доставка, когда проблемное письмо скорее выбросится (и черт с ним), но не будет сжирать ресурсы на попытки доставить. Ну и кроме того не забывайте про модный сейчас грейлистинг, который почти везде. Так что каждое письмо вполне может минимум 15 минут еще в очереди стоять.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
eaa
@eaa
По ощущениям это в принципе не сработает на существующих неспециализированных клиентах.
Они стараются изо всех ил обеспечить доставку, но не скорость. Соответственно письмо будет лежать и день, и два если не может сразу доставиться. Если таких будет много, то через неделю при таких объемах мусора станет просто навалом. И даже если Ваш сервис справится, то нет гарантии, что те смарт хосты и прочие внешние майл сервера потянут нагрузку, а на их настройку мы влиять не можем. Например если много будет писем на один ну пусть скажем yandex.ru — как он отреагирует на такой поток? Тут нужен специфичный агент, который будет все это учитывать…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы