У меня есть настроенный сервер debian с sendmail и majordomo для обработки входящей почты для некоторых списков рассылки. Некоторые пользователи находятся в нескольких списках и получают письмо дважды, когда оно отправляется в оба списка. Хотя это и не является неожиданным поведением, было бы неплохо, если бы эти люди получили почту только один раз.
Итак, в основном вопрос: есть ли способ предотвратить отправку письма более одного раза получателю, который находится в более чем одном (majordomo) списке?
Странно то, что я сам не получаю почту дважды при использовании внутреннего пользователя (как часть сервера) или при отправке на мою учетную запись студенческой почты. Каким-то образом эти серверы отфильтровывают повторяющуюся почту.
Решение, которое может сработать для меня, - это способ переписать заголовок при отправке сообщения на list1@x.x и list2@x.x в list1and2@x.x. Где list1and2@x.x содержит все элементы list1 и list2 без дубликатов.
В вашем дистрибутиве исходного кода majordomo существует Doc/majordomo.ora
. Там вы найдете предложение запустить sendmail с ключом -odq, чтобы сначала поставить очередь sendmail, вместо того, чтобы пытаться немедленно отправить их. Итак, в вашем majordomo.cf
иметь следующую строку:
$mailer = "$sendmail_command -oi -odq -oee -f\$sender";
Sendmail расширяет список, который он должен обрабатывать, и отправлять ему почту. Хотя он расширился и начал отправлять почту членам первого списка, он будет расширяться и отправлять почту членам второго списка. Sendmail пытается идентифицировать идентичные сообщения, чтобы отправить их один раз для каждого отправителя, но если некоторые получатели из списка 1 уже являются процессами, а они также находятся в списке 2, до его расширения, они получат его дважды. Так что с -odq
вы помещаете сообщение в очередь для обоих списков. Если сообщение одинаково для обоих, то объединенные получатели получат его один раз для каждого пользователя.