Вопрос или проблема
Теперь у меня есть правило в .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 и отправляются одновременно на несколько адресов. Данная проблема решается при помощи использования уникальных идентификаторов для каждого пересылаемого письма.
Шаги для настройки пересылки почты
-
Создание правил в файле .procmailrc: Для обеспечения того, чтобы каждое письмо, отправляемое через Procmail, имело уникальный идентификатор Message-ID, необходимо модифицировать правила в конфигурационном файле
.procmailrc
. -
Использование команды
formail
: Данная команда используется для изменения заголовков письма и добавления уникального идентификатора. Мы будем генерировать новый идентификатор Message-ID с помощью утилитыuuidgen
, что гарантирует уникальность для каждого сообщения. -
Структура правил:
- Для каждой учетной записи Gmail создается отдельное правило, которое применяет
formail
иsendmail
.
- Для каждой учетной записи Gmail создается отдельное правило, которое применяет
Пример конфигурации
Ваши правила могут выглядеть следующим образом:
: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. Следуя приведённым выше шагам, вы сможете эффективно наладить пересылку почты для нескольких получателей, исключив ошибки и обеспечив надёжную доставку сообщений.