Назад | Перейти на главную страницу

Exim и получение электронной почты с большими списками получателей

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

Моя проблема в том, что когда электронное письмо отправляется в домен, который содержит большое количество адресов (все в один и тот же домен, но разные пользователи), Exim будет получать одно электронное письмо по нескольким соединениям. Это означает, что общий почтовый ящик получает несколько копий одного электронного письма. все содержат полный список получателей.

Например, мне удалось воспроизвести его, отправив электронное письмо из моей учетной записи gmail, содержащее 500 получателей (например, a@example.com; b@example.com; c@example.com и т. Д., Всего 500). Exim получил сообщение как 20 сообщений (25 получателей на каждый; похоже, это настройка сервера Gmail). Таким образом, общий почтовый ящик получил 20 сообщений, каждое из которых содержало все 500 адресов.

Я почти уверен, что понимаю, почему это происходит, но есть ли способ настроить Exim так, чтобы он принимал его только один раз или объединял в один? Могу ли я что-нибудь сделать с моей стороны, или я во власти отправляющего почтового сервера?

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

Обновить: Другая возможность: могу ли я сказать exim`` пересылать только первое сообщение и игнорировать остальные?

Обновление 2: Как узнать, для каких получателей было отправлено электронное письмо? Итак, если exim получает сообщение для 500 получателей, но предназначено только для 25, как мне определить, для каких 25 оно было предназначено? Самое близкое, что я вижу в заголовке сообщения, - это «Получено: от SMTPD-FWD by», которое является первым из 25 получателей. Можно ли как-нибудь exim вставить все 25 в шапку?

Конфигурация по умолчанию для Exim - разрешить неограниченное количество получателей для сообщения. Это контролируется recipients_max параметр. Если вы получаете меньше, то либо ваша конфигурация ограничивает получателей, либо проблема связана с восходящим потоком.

Как вы, наверное, заметили, Exim доставит только один раз, когда несколько расширений создают один и тот же адрес доставки для сообщения. Это просто не работает с сообщениями.

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

РЕДАКТИРОВАТЬ: вы можете заставить Exim использовать milter отфильтровать дубликаты. Если у вас включен доступ к базе данных, вы можете создать фильтр в acl данных для обнаружения дубликатов. Однако может быть лучше использовать более специализированный MDA, например procmail для доставки сообщений на общий адрес. Exim хорошо работает с procmail с MDA для некоторых или всех пользователей.

Существуют рецепты, которые обрабатывают повторяющиеся сообщения. Тимо есть правило procmail для проверки Отправленные повторяющиеся сообщения быстро сменяются. Это должно обрабатывать случаи, когда message_id сообщения изменяется.