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

    xenon
    @xenon
    Too drunk to fsck
    Сто тыщщ миллионов лет назад для заказчика писали систему для массовой рассылки. Сейчас уже точно не помню, но, кажется, рассылали в 3000 одновременных коннектов. Про скорость врать не буду — не помню, но меньше миллиона в час. Может быть сейчас (компы гораздо мощнее стали, каналы шире) и возможно, но не уверен.

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

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

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

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

    В любом случае, мне кажется с обычным MTA (без очень жесткой доработки напильником) — врядли получится, тем более за час. Они все таки рассчитаны для «дорогой но надежной» доставки — то есть письмо может хоть неделю быть в очереди, если сервер получателя лежит. Если база действительно чистая и легальная — таких проблемных писем будет относительно мало, но каждое из них сильно тормозит систему. А вам нужна «дешевая и быстрая» доставка, когда проблемное письмо скорее выбросится (и черт с ним), но не будет сжирать ресурсы на попытки доставить. Ну и кроме того не забывайте про модный сейчас грейлистинг, который почти везде. Так что каждое письмо вполне может минимум 15 минут еще в очереди стоять.
    Ответ написан
    2 комментария