Псевдоніми Postfix і копії електронних листів, як виправити?


18

У мене встановлено псевдоніми в postfix, такі як:

all@mydomain.com:    foo@mydomain.com, bar@mydomain.com ...

Коли електронний лист надсилається на all@mydomain.com, а будь-який із одержувачів у цьому псевдонімі є cc: ed, що є досить поширеним (тобто: "Відповісти всім"), електронний лист доставляється у двох примірниках. Наприклад, якщо електронний лист буде надіслано на адресу all@mydomain.com, а foo@mydomain.com є cc: ed, воно буде доставлено двічі. Згідно з поширеними питаннями Postfix , це за задумом, оскільки Postfix надсилає електронні листи паралельно без розширення груп, що робить його швидшим, ніж sendmail. Тепер це все добре і безпроблемно, але чи можна налаштувати Postfix так, щоб фактично видаляти дублюючі одержувачі перед відправкою електронного листа?

Я знайшов безліч дописів людей по всій мережі, які мають таку ж проблему, але відповіді ще не знайти. Якщо це неможливо зробити у Postfix, чи можна це зробити десь у дорозі? Я спробував навчати своїх користувачів, але, боюся, це досить марно ...

Я запускаю постфікс на Mac OS X Server 10.6, amavis встановлюється як content_filter, а dovecot встановлюється як mailbox_command. Я спробував налаштувати procmail як content_filter для доставки smtp (відповідно до запропонованої нижче пропозиції), але я не можу зробити це правильно. З різних причин я не можу замінити стандартну конфігурацію OS X, тобто postfix, amavis та dovecot. Однак я можу додати його, якщо бажаю.


Я думаю, що це насправді просто неможливо ...
Антуан Бенкемун

Я справді починаю вірити, що ти прав Антуан.
Маркус Стейд

Добре, що це було марною винагородою ...
Маркус Стейд,

2
ви коли-небудь знаходили рішення для цього? У мене те саме питання.
Томмі Арнольд

Відповіді:


4

Postfix не має уявлення про дублювання електронних листів через спосіб її структурування. Можна зробити те, що ви пропонуєте, скориставшись проклейкою як агентом доставки.

По суті, кожне повідомлення, що надходить від клієнта, повинно доставлятися з унікальним ідентифікатором повідомлення. У випадку, якщо він надходить для кількох людей, повідомлення Id-ID має бути однаковим, тому ми зберігаємо будь-які Message-Idзаголовки, які ми бачили, і відкидаємо, а також майбутні, які відповідають цьому списку.

З http://novosial.org/procmail/

:0 Wh: msgid.lock
| formail -D 8192 ~/.procmail/msgid.cache

Якщо я правильно зрозумів проблему, її неможливо вирішити в Postfix, оскільки Postfix надсилає електронні листи паралельно, тобто надсилає на foo@mydomain.com одночасно з розширенням all@mydomain.com, а потім знову надсилає на foo@mydomain.com. Чи не було б рішенням Procmail, можливо, ввести перегонну умову, коли інша непов’язана електронна пошта (з іншим ідентифікатором повідомлення) надсилається між двома відповідними електронними листами і таким чином перезаписує кеш, роблячи так, що дублюються електронні листи доставлений як-небудь?
Маркус Стейд

Я намагаюся змусити ваші пропозиції працювати, але я не дуже впевнений, як поєднати це з доставкою голубців, яка використовується за замовчуванням OS X 10.5+.
Маркус Стейд

Якщо ви використовуєте голуба в якості агента доставки, ви можете використовувати procmail як агент, content_filterякий дозволить вам виконати те саме завдання на глобальному рівні
Філіп Рейнольдс

Я мушу визнати, що я, мабуть, перебуваю тут над головою. Я дивився сліпо на сторінці параметрів конфігурації для постфіксу та гуглінгу, поки пальці не кровоточать, але я не можу зрозуміти, як це налаштувати. Будь-які вдячні за будь-які ресурси, про які ви могли б знати або підштовхувати в правильному напрямку!
Маркус Стейд

Я думаю, я якось розумію, як це працює зараз, але вже є вміст content_filter для amavis. Здається, це якась антивірусна перевірка. Я читав, що можливо ланцюжок content_filters, але це здається досить неінтуїтивним, а документація - менш зоряною. Це дуже смішно, як важко просто відмивати дублікати електронних листів. Дизайнерські рішення незалежно від цього, мені здається, воно повинно бути там поза коробкою або, принаймні, не вимагати цих монстровських злому.
Маркус Стейд

3

Є спосіб, як це зробити, але не використовувати сам Postfix.

Якщо ви використовуєте досить недавній Dovecot з Pigeonhole реалізацією Sieve , є спеціальне розширення, яке можна використовувати для дедуплікації під час доставки. У Dovecot старше 2.2.18 назва цього розширення - "vnd.dovecot.duplicate", і воно за замовчуванням вимкнено, у новіших випусках розширення називається "дублікат" і воно має бути вже ввімкнено, але ввімкнути його явно не буде шкода.

/etc/dovecot/conf.d/90-sieve.conf:

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve

  sieve_before = /mnt/mail/users/global_sieve/deduplicate.sieve
  # sieve_before2 = /mnt/mail/users/global_sieve/antispam.sieve

  sieve_extensions = +vnd.dovecot.duplicate  # for dovecot < 2.2.18
  #sieve_extensions = +duplicate             # for dovecot >= 2.2.18
}

Потім створіть сценарій сита для обробки самого дедупликації (ви можете налаштувати ім'я файлу, як вважаєте за потрібне).

/mnt/mail/users/global_sieve/deduplicate.sieve:

require "vnd.dovecot.duplicate"; # for dovecot < 2.2.18
# require "duplicate";           # for dovecot >= 2.2.18

if duplicate {
    discard;
    stop;
}

Складіть сценарій за допомогою sievec та переконайтеся, що сценарій читає користувач dovecot . Детальніше в документах Dovecot.

Якщо ви використовуєте Cyrus, є функція придушення дублікатів доставки повідомлень, яку можна ввімкнути за допомогою suppress_duplicates = yes.


Дякую тонну за те, що вказали цей механізм. Та почуття «знаходження голки в копиці сіна».
lkraav

Відкриття під час впровадження: duplicateрозширення працює на рівні користувача. Я намагався зупинити дублікати для кількох користувачів To / Cc-d у центральній fileintoпоштовій скриньці. Це не працює. Довелося також встановити запис на постфіксах virtual_alias_maps, наприклад @domain.com catchall@domain.com, тоді перевірка дублікату сита потрапить catchallу дублікат списку користувачів.
lkraav

Так, це дуже схоже на почуття «пошук голки в копиці сіна»
Net Runner


0

Це зі старого файлу постфікса:

Postfix надсилає повторювані листи Деякі люди будуть скаржитися, що Postfix надсилає повторювані повідомлення. Це відбувається кожного разу, коли одне повідомлення надсилається на кілька адрес, що надходять до одного користувача. Прикладами таких сценаріїв є:

  • Одне повідомлення надсилається користувачеві та псевдоніму, який містить список користувачів. Користувач отримує одну копію пошти безпосередньо та одну копію через псевдонім.

    • Одне повідомлення надсилається на кілька псевдонімів, у яких перерахований користувач. Користувач отримує одну копію пошти через кожен псевдонім.

Деякі люди навіть заперечать, що це «правильна» поведінка. Це, мабуть, більше питання очікування і того, до чого звик.

Це можна виправити, лише зробивши Postfix повільніше. У наведених вище прикладах Postfix повинен спочатку повністю розгорнути всі списки розповсюдження перед початком доставки. За задумом Postfix паралельно доставляє пошту до різних напрямків, і місцева доставка не є винятком. Ось чому Postfix може бути швидшим, ніж sendmail.

Тож за дизайном ви бачите таку поведінку. Можливо, якщо ви знайдете фільтр вмісту, який може знімати повторювані ідентифікатори повідомлення, ви можете усунути це після події доставки.

У Sendmail цієї проблеми немає, оскільки вона спочатку розгортає все і викреслює дублікати.


Так, я прочитав це, можливо, я мав би оновити своє запитання. За дизайном чи ні, це все-таки питання. Я розумію, чому він поводиться так, як це робиться, і я розумію, що намагатися знайти рішення в Postfix - марно. Однак я спробував придумати якесь рішення щодо фільтра вмісту за допомогою Procmail, і я просто не можу зрозуміти, що це правильно. Цілком ймовірно, що я не розумію фільтри вмісту чи прокмейл правильно, або обидва. В будь-якому випадку я все-таки хотів би це виправити. На жаль, налаштування як такої не може бути змінено, а лише додано до. На жаль, я не можу використовувати sendmail замість Postfix, на жаль.
Маркус Стейд

Я оновив запитання ще деякою інформацією, але, чесно кажучи, тут було посилання на FAQ. Я вдячний за будь-які корисні пропозиції!
Маркус Стейд

Не усвідомлював, що це посилання на той самий контент. Працюючи в галузі ІТ-безпеки, ви стаєте досить параноїком щодо натискання випадкових посилань. Чи можете ви підтвердити, що повторювані повідомлення мають однакові ідентифікатори повідомлення?
jeffatrackaid

Пройшов довгий день, тому мені потрібно переглянути ваш вихідний пост, але що з цього приводу: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

Я дійсно можу підтвердити, що дублюючі повідомлення мають однакові ідентифікатори повідомлень. Налаштування duplicate_filter_limit, на жаль, не допомагає.
Маркус Стейд

0

Офіційне рішення тут. Http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) Максимальна кількість адрес, запам'ятовуваних одержувачем дублікатів фільтрів для псевдонімів (5) або віртуального (5) розширення псевдонімів, або для відображення черги showq (8) (для попередніх релізів Postfix вимкнено обмеження 1000).

duplicate_filter_style (строгий) Політика фільтра одержувачів дубліката: сувора або прагматична.


1
Це, здається, нічого не робить ...
grufftech

postfix.1071664.n5.nabble.com/… стверджує, що цього не реалізовували
Янко Ернандес Альварес

0
enable_original_recipient=no

Я поставив це у своєму main.cf, і він працював чудово, але лише для пошти, надісланої з мого домену. У мене все ще є дублікати, якщо я надсилаю електронне повідомлення з-за меж свого домену (yahoo до мого домену, наприклад.)

джерело: http://article.gmane.org/gmane.mail.postfix.user/119783

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.