Aliasy Postfix i zduplikowane wiadomości e-mail, jak to naprawić?


18

Mam skonfigurowane aliasy w Postfiksie, takie jak następujące:

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

Kiedy wiadomość e-mail jest wysyłana na adres all@moja_domena.com, a każdy adresat w tym aliasie jest cc: ed, co jest dość powszechne (tj. „Odpowiedz wszystkim”), wiadomość e-mail jest dostarczana w dwóch egzemplarzach. Na przykład, jeśli wiadomość e-mail zostanie wysłana na adres all@mydomain.com, a foo@mydomain.com to cc: ed, zostanie dostarczona dwukrotnie. Zgodnie z często zadawanymi pytaniami dotyczącymi Postfix jest to projekt, ponieważ Postfix wysyła e-maile równolegle bez rozwijania grup, co czyni go szybszym niż sendmail. Teraz wszystko jest w porządku i eleganckie, ale czy można skonfigurować Postfix, aby faktycznie usuwał zduplikowanych odbiorców przed wysłaniem wiadomości e-mail?

Znalazłem wiele postów od ludzi w całej sieci, którzy mają ten sam problem, ale jeszcze nie znalazłem odpowiedzi. Jeśli nie jest to możliwe w Postfix, czy można to zrobić gdzieś po drodze? Próbowałem edukować moich użytkowników, ale obawiam się, że to raczej bezcelowe ...

Korzystam z Postfiksa na Mac OS X Server 10.6, amavis jest ustawiony jako content_filter, a dovecot jest ustawiony jako mailbox_command. Próbowałem skonfigurować procmaila jako filtr treści dla dostarczania smtp (zgodnie z sugestią poniżej), ale wydaje się, że nie mogę tego poprawnie zrobić. Z różnych powodów nie mogę zastąpić standardowej konfiguracji OS X, co oznacza, że ​​postfix, amavis i dovecot pozostają na swoim miejscu. Mogę jednak dodać, jeśli chcę.


Myślę, że to naprawdę po prostu niemożliwe ...
Antoine Benkemoun

Naprawdę zaczynam wierzyć, że masz rację, Antoine.
Marcus Stade

Cóż, to była strata nagrody ...
Marcus Stade,

2
czy kiedykolwiek znalazłeś na to rozwiązanie? Mam ten sam problem.
Tommy Arnold

Odpowiedzi:


4

Postfix nie ma pojęcia o zduplikowanych wiadomościach e-mail ze względu na strukturę. Możesz zrobić to, co sugerujesz, używając procmaila jako swojego agenta dostawy.

Zasadniczo każda wiadomość pochodząca od klienta powinna być dostarczana z unikalnym identyfikatorem wiadomości. W przypadku, gdy jest dostarczany do wielu osób, identyfikator wiadomości powinien być taki sam, więc zapisujemy wszystkie Message-Idnagłówki, które widzieliśmy, i odrzucamy, a także przyszłe, które pasują do tej listy.

Od http://novosial.org/procmail/

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

Jeśli dobrze rozumiem problem, nie można go rozwiązać w Postfix, ponieważ Postfix wysyła wiadomości e-mail równolegle, tj. Wysyła je na adres foo@moja_domena.com w tym samym czasie, gdy rozwija wszystko@moja_domena.com, a następnie ponownie wysyła na adres foo@moja_domena.com. Czy rozwiązanie Procmail nie wprowadziłoby wtedy warunku wyścigu, w którym pomiędzy dwoma danymi e-mailami wysyłany jest inny niepowiązany e-mail (z innym identyfikatorem wiadomości), a tym samym nadpisujący pamięć podręczną, dzięki czemu zduplikowane wiadomości e-mail są dostarczone mimo to?
Marcus Stade

Staram się, aby twoja sugestia zadziałała, ale nie jestem pewien, jak połączyć to z dostarczaniem dovecot, które jest domyślnie używane w systemie OS X 10.5+.
Marcus Stade,

Jeśli używasz dovecot jako agenta dostarczania, możesz użyć procmaila jako narzędzia, content_filterktóre pozwoli ci wykonać to samo zadanie na poziomie globalnym
Philip Reynolds

Muszę wyznać, że prawdopodobnie jestem tutaj ponad głową. Patrzyłem na siebie ślepo na stronie parametrów konfiguracyjnych dla postfiksa i googlowania, aż krwawią mi palce, ale wydaje mi się, że nie wiem, jak to skonfigurować. Wszelkie zasoby, które znasz lub podążają we właściwym kierunku, byłyby naprawdę mile widziane!
Marcus Stade

Wydaje mi się, że rozumiem, jak to teraz działa, ale jest już ustawiony filtr treści dla amavis. To wydaje się być rodzajem programu antywirusowego. Czytałem, że możliwe jest połączenie łańcuchowe filtrów treści, ale wydaje się to raczej nieintuicyjne, a dokumentacja jest mniej niż gwiezdna. To naprawdę niedorzeczne, jak trudno jest po prostu usunąć duplikaty e-maili. Niezależnie od projektu, wydaje mi się, że powinien on być tam po wyjęciu z pudełka lub przynajmniej nie wymagać tych hacków monstruos.
Marcus Stade

3

Jest sposób, jak to zrobić, ale nie używając samego Postfix.

Jeśli używasz stosunkowo niedawnego Dovecot z implementacją Pigeonhole w Sito , istnieje specjalne rozszerzenie, którego można użyć do deduplikacji w momencie dostawy. W Dovecot starszym niż 2.2.18 nazwa tego rozszerzenia to „vnd.dovecot.duplicate” i jest ono domyślnie wyłączone, w nowszych wersjach rozszerzenie nazywa się „duplikatem” i powinno być już włączone, ale włączenie go wyraźnie nie spowoduje zaszkodzić.

/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
}

Następnie utwórz skrypt sita, aby obsłużyć samą deduplikację (możesz dostosować nazwę pliku według własnego uznania).

/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;
}

Skompiluj skrypt za pomocą sievec i upewnij się, że skrypt jest czytelny dla użytkownika dovecot . Więcej w dokumentach Dovecot.

Jeśli używasz Cyrusa, istnieje funkcja eliminacji dostarczania duplikatów wiadomości, którą można włączyć za pomocą suppress_duplicates = yes.


Wielkie dzięki za wskazanie tego mechanizmu. To uczucie „znalezienia igły w stogu siana”.
lkraav

Odkrycia podczas wdrażania: duplicaterozszerzenie działa na poziomie użytkownika. Próbowałem zatrzymać duplikaty dla wielu użytkowników To / Cc-d w centralnej fileintoskrzynce pocztowej. To nie działa Musiałem również ustawić post virtual_alias_maps- fix catch-all wpis, taki jak @domain.com catchall@domain.com, wtedy sprawdzenie duplikatu sita trafi catchallna listę duplikatów użytkownika.
lkraav

Tak, to bardzo podobne do uczucia „znalezienia igły w stogu siana”
Net Runner


0

To jest z jakiegoś starego postfix faq:

Postfix wysyła zduplikowane wiadomości Niektóre osoby narzekają, że Postfix wysyła zduplikowane wiadomości. Dzieje się tak, gdy jedna wiadomość jest wysyłana na wiele adresów, które docierają do tego samego użytkownika. Przykładami takich scenariuszy są:

  • Jedna wiadomość jest wysyłana do użytkownika i do aliasu zawierającego użytkownika. Użytkownik otrzymuje bezpośrednio jedną kopię wiadomości i jedną kopię za pośrednictwem aliasu.

    • Jedna wiadomość jest wysyłana do wielu aliasów wyświetlających użytkownika. Użytkownik otrzymuje jedną kopię wiadomości za pośrednictwem każdego aliasu.

Niektórzy twierdzą nawet, że jest to „właściwe” zachowanie. Prawdopodobnie jest to raczej kwestia oczekiwań i tego, do czego się przywykliśmy.

Można to „naprawić” tylko poprzez spowolnienie Postfix. W powyższych przykładach Postfix musiałby najpierw całkowicie rozwinąć wszystkie listy dystrybucyjne przed rozpoczęciem jakiejkolwiek dostawy. Z założenia Postfix dostarcza pocztę do różnych miejsc docelowych równolegle, a dostawa lokalna nie jest wyjątkiem. Dlatego Postfix może być szybszy niż sendmail.

Więc z założenia widzisz to zachowanie. Być może, jeśli znajdziesz filtr treści, który może usunąć zduplikowane identyfikatory wiadomości, możesz to wyeliminować po zdarzeniu dostarczenia.

Sendmail nie ma tego problemu, ponieważ najpierw rozwija wszystko i usuwa duplikaty.


Tak, przeczytałem to, być może powinienem zaktualizować moje pytanie. Z założenia czy nie, to wciąż problem. Rozumiem, dlaczego tak się zachowuje i rozumiem, że próba znalezienia rozwiązania w Postfix jest daremna. Jednak próbowałem wymyślić jakieś rozwiązanie do filtrowania treści za pomocą Procmaila i po prostu nie wydaje mi się, aby to dobrze. Jest wysoce prawdopodobne, że nie rozumiem poprawnie filtrów treści lub procmaila, lub obu tych elementów. W obu przypadkach nadal chciałbym to naprawić. Niestety, takiej konfiguracji nie można modyfikować, tylko ją dodać. Niestety nie mogę użyć sendmaila zamiast postfiksa.
Marcus Stade,

Zaktualizowałem pytanie, dodając więcej informacji, ale szczerze mówiąc, link do FAQ znajdował się na początku. Doceniam jednak wszelkie pomocne sugestie!
Marcus Stade,

Nie zdawałem sobie sprawy, że to był link do tej samej treści. Pracując w obszarze bezpieczeństwa IT, stajesz się raczej paranoikiem, gdy klikniesz losowe linki. Czy możesz potwierdzić, że zduplikowane wiadomości mają takie same identyfikatory?
jeffatrackaid

To był długi dzień, więc muszę sprawdzić twój oryginalny post, ale co z tym: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

Rzeczywiście mogę potwierdzić, że zduplikowane wiadomości mają takie same identyfikatory. Ustawienie duplicate_filter_limit nic nie pomoże, niestety.
Marcus Stade,

0

Oficjalne rozwiązanie jest tutaj .. http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) Maksymalna liczba adresów zapamiętanych przez adresatów duplikatów filtrów dla aliasów (5) lub rozszerzania aliasu wirtualnego (5), lub dla wyświetlania kolejki showq (8) (we wcześniejszych wersjach Postfix domyślny limit to 1000).

duplicate_filter_style (strict) Polityka duplikatów filtrów adresatów: ścisła lub pragmatyczna.


1
Wydaje się, że to nic nie robi ...
grufftech,

postfix.1071664.n5.nabble.com/… twierdzi, że nigdy nie został zaimplementowany
Yanko Hernández Álvarez

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.