У меня есть псевдонимы, настроенные в postfix, например:
all@mydomain.com: foo@mydomain.com, bar@mydomain.com ...
Когда электронное письмо отправляется на all@mydomain.com, и любой из получателей с таким псевдонимом является cc: ed, что является довольно распространенным (то есть: «Ответить всем»), электронное письмо доставляется в двух экземплярах. Например, если электронное письмо отправлено на адрес all@mydomain.com, а foo@mydomain.com - cc: ed, оно будет доставлено дважды. Согласно FAQ по Postfix , это сделано специально, поскольку Postfix отправляет электронную почту параллельно, не расширяя группы, что делает его быстрее, чем sendmail. Теперь все нормально, но возможно ли настроить Postfix так, чтобы он фактически удалял дубликатов получателей перед отправкой электронной почты?
Я нашел много сообщений от людей по всей сети, которые имеют ту же проблему, но я еще не нашел ответа. Если это невозможно сделать в Postfix, возможно ли это сделать где-нибудь в пути? Я пытался обучить своих пользователей, но я боюсь, что это бесполезно ...
Я использую postfix на Mac OS X Server 10.6, amavis установлен как content_filter, а dovecot установлен как mailbox_command. Я попытался настроить procmail в качестве content_filter для доставки SMTP (согласно предложению ниже), но я не могу сделать это правильно. По разным причинам я не могу заменить стандартную конфигурацию OS X, то есть postfix, amavis и dovecot остаются на месте. Однако я могу добавить к этому, если я хочу.
источник
Ответы:
Postfix не имеет представления о дубликатах электронных писем из-за их структуры. Можно сделать то, что вы предлагаете, используя procmail в качестве агента доставки.
По сути, каждое сообщение от клиента должно доставляться с уникальным идентификатором сообщения. В случае, если он доставлен нескольким людям, идентификатор сообщения должен быть одинаковым, поэтому мы сохраняем все
Message-Id
заголовки, которые мы видели, и отбрасываем и будущие, которые соответствуют этому списку.С http://novosial.org/procmail/
источник
content_filter
который позволит вам выполнить ту же задачу на глобальном уровнеЕсть способ сделать это, но не использовать сам Postfix.
Если вы используете относительно свежую версию Dovecot с реализацией Sieve в Pigeonhole , есть специальное расширение, которое можно использовать для дедупликации при доставке. В Dovecot старше 2.2.18 это расширение называется «vnd.dovecot.duplicate» и по умолчанию отключено, в более новых выпусках расширение называется «duplicate» и должно быть уже включено, но его явное включение не будет причинять вред.
/etc/dovecot/conf.d/90-sieve.conf:
Затем создайте сценарий sieve для обработки самой дедупликации (вы можете изменить имя файла так, как считаете нужным).
/mnt/mail/users/global_sieve/deduplicate.sieve:
Скомпилируйте скрипт, используя sievec, и убедитесь, что скрипт доступен для чтения пользователю dovecot . Больше в Dovecot docs.
Если вы используете Cyrus, есть функция подавления доставки дублирующихся сообщений, которую можно включить с помощью
suppress_duplicates = yes
.источник
duplicate
расширение работает на уровне пользователя. Я пытался остановить дубликаты над несколькими пользователями To / Cc-d в центральномfileinto
почтовом ящике. Это не работает Пришлось также установитьvirtual_alias_maps
пост-фиксированную запись-ловушку, например@domain.com catchall@domain.com
, проверка двойного сита попадетcatchall
в список дубликатов пользователя.Решение, которое работает для меня, это добавить
-o receive_override_options=no_address_mappings
наmaster.cf
Вот документ: http://www.postfix.org/postconf.5.html#receive_override_options
источник
Это из какого-то старого постфикса faq:
Postfix отправляет дубликаты почты. Некоторые люди будут жаловаться, что Postfix отправляет дубликаты сообщений. Это происходит всякий раз, когда одно сообщение отправляется на несколько адресов, адресованных одному и тому же пользователю. Примеры таких сценариев:
Итак, по замыслу вы видите это поведение. Возможно, если вы обнаружите фильтр содержимого, который может удалить дубликаты идентификаторов сообщений, вы можете устранить это после события доставки.
Sendmail не имеет этой проблемы, потому что он сначала все расширяет и удаляет дубликаты.
источник
Официальное решение здесь. Http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html
duplicate_filter_limit (10000) Максимальное количество адресов, запоминаемых дублирующимися фильтрами получателей для расширения псевдонимов (5) или виртуальных (5), или для отображений очереди showq (8) (в более ранних выпусках Postfix ограничение по умолчанию составляло 1000).
duplicate_filter_style (строгий) Политика фильтра дубликатов получателей: строгая или прагматичная.
источник
Я поместил это в свой main.cf, и он работал нормально, но только для почты, отправленной с моего домена. У меня все еще есть дубликаты, если я отправляю электронную почту за пределами моего домена (например, на мой домен.)
источник: http://article.gmane.org/gmane.mail.postfix.user/119783
источник