Procmail. Пересылка почты нескольким получателям с разными Message-ID

Вопрос или проблема

Теперь у меня есть правило в .procmailrc, которое выполняет пересылку для пользователей gmail u1-u8

:0
* !^FROM_DAEMON
! u1[@]gmail.com,u2[@]gmail.com,u3[@]gmail.com,u4[@]gmail.com,u5[@]gmail.com,u6[@]gmail.com,u7[@]gmail.com,u8[@]gmail.com

но была проблема, gmail отказывается немедленно принимать почту для этих адресов с ошибкой

Gmail обнаружил, что это сообщение превысило квоту на отправку
421-4.7.28 сообщений с одинаковым Message-ID. Чтобы лучше защитить наших
пользователей, сообщение 421-4.7.28 было временно отклонено.

Теперь вопрос. Какие должны быть правила для пересылки с разными Message-ID.

Может кто-то помочь?

Я отвечаю сам себе. Следующее правило работает

:0
* !^FROM_DAEMON
{

        :0c
        | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u1[@]gmail.com
    
        :0c
        | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u2[@]gmail.com
    
        :0
        | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u8[@]gmail.com
    }

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

Ответ или решение

Чтобы успешно настроить пересылку почты с различными идентификаторами сообщения (Message-ID) с помощью Procmail, важно учитывать специфические требования почтовых провайдеров, таких как Gmail, которые могут отклонять письма, если они имеют одинаковый заголовок Message-ID и отправляются одновременно на несколько адресов. Данная проблема решается при помощи использования уникальных идентификаторов для каждого пересылаемого письма.

Шаги для настройки пересылки почты

  1. Создание правил в файле .procmailrc: Для обеспечения того, чтобы каждое письмо, отправляемое через Procmail, имело уникальный идентификатор Message-ID, необходимо модифицировать правила в конфигурационном файле .procmailrc.

  2. Использование команды formail: Данная команда используется для изменения заголовков письма и добавления уникального идентификатора. Мы будем генерировать новый идентификатор Message-ID с помощью утилиты uuidgen, что гарантирует уникальность для каждого сообщения.

  3. Структура правил:

    • Для каждой учетной записи Gmail создается отдельное правило, которое применяет formail и sendmail.

Пример конфигурации

Ваши правила могут выглядеть следующим образом:

:0
* !^FROM_DAEMON
{
    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u1@gmail.com

    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u2@gmail.com

    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u3@gmail.com

    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u4@gmail.com

    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u5@gmail.com

    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u6@gmail.com

    :0c
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u7@gmail.com

    :0
    | formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" | sendmail -oi u8@gmail.com
}

Объяснение правил

  • :0 — обозначает начало нового блока правил в Procmail.
  • * !^FROM_DAEMON — условие, исключающее письма, отправленные от имени почтовой системы (дасс) для предотвращения возможного зацикливания.
  • { ... } — группировка команд для обработки.
  • :0c — указывает на "копирование" сообщения таким образом, чтобы все письма обрабатывались параллельно.
  • formail -I "Message-ID: <$(uuidgen)@mydomain.tld>" — команда, которая генерирует новый уникальный идентификатор и добавляет его в заголовок.
  • sendmail -oi u1@gmail.com — фактическая команда отправки письма на указанный адрес.

Заключение

Настройка пересылки почты с уникальными Message-ID — это важный шаг для обеспечения успешной доставки сообщений и избегания проблем с отклонением писем. Использование formail в сочетании с uuidgen гарантирует, что каждое письмо будет уникальным, что соответствует рекомендациям почтовых провайдеров, таких как Gmail. Следуя приведённым выше шагам, вы сможете эффективно наладить пересылку почты для нескольких получателей, исключив ошибки и обеспечив надёжную доставку сообщений.

Оцените материал
Добавить комментарий

Капча загружается...