Bí danh Postfix và e-mail trùng lặp, làm thế nào để khắc phục?


18

Tôi có các bí danh được thiết lập trong postfix, chẳng hạn như sau:

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

Khi một email được gửi tới all@mydomain.com và bất kỳ người nhận nào trong bí danh đó là cc: ed khá phổ biến (ví dụ: "Trả lời tất cả"), e-mail sẽ được gửi theo bản sao. Chẳng hạn, nếu một e-mail được gửi tới all@mydomain.com và foo@mydomain.com là cc: ed, nó sẽ được gửi hai lần. Theo Câu hỏi thường gặp về Postfix , đây là do thiết kế vì Postfix gửi e-mail song song mà không mở rộng các nhóm, điều này làm cho nó nhanh hơn sendmail. Bây giờ tất cả đều ổn và bảnh bao, nhưng liệu có thể định cấu hình Postfix để thực sự xóa người nhận trùng lặp trước khi gửi e-mail không?

Tôi đã tìm thấy rất nhiều bài đăng từ mọi người trên mạng có cùng một vấn đề, nhưng tôi vẫn chưa tìm thấy câu trả lời. Nếu điều này là không thể thực hiện trong Postfix, thì có thể thực hiện nó ở đâu đó trên đường không? Tôi đã cố gắng giáo dục người dùng của mình, nhưng nó khá vô ích Tôi sợ ...

Tôi đang chạy postfix trên Mac OS X Server 10.6, amavis được đặt là content_filter và dovecot được đặt là hòm thư_command. Tôi đã thử thiết lập procmail dưới dạng content_filter để phân phối smtp (theo gợi ý bên dưới), nhưng dường như tôi không thể hiểu đúng. Vì nhiều lý do, tôi không thể thay thế cấu hình OS X tiêu chuẩn, nghĩa là postfix, amavis và dovecot ở lại. Tuy nhiên tôi có thể thêm vào nó nếu tôi muốn.


Tôi nghĩ rằng nó thực sự không thể ...
Antoine Benkemoun

Tôi thực sự bắt đầu tin rằng bạn đúng Antoine.
Marcus Stade

Chà, thật lãng phí tiền thưởng ...
Marcus Stade

2
Bạn đã bao giờ tìm thấy một giải pháp cho điều này? Tôi có cùng một vấn đề.
Tommy Arnold

Câu trả lời:


4

Postfix không có ý tưởng về các email trùng lặp do cách nó được cấu trúc. Có thể thực hiện những gì bạn đề xuất bằng cách sử dụng procmail làm đại lý giao hàng.

Về cơ bản, mỗi tin nhắn đến từ một khách hàng nên được gửi với một Id tin nhắn duy nhất. Trong trường hợp được phân phối cho nhiều người, Id Tin nhắn phải giống nhau, vì vậy chúng tôi lưu bất kỳ Message-Idtiêu đề nào chúng tôi đã thấy và loại bỏ và những tiêu đề tương lai phù hợp với danh sách đó.

Từ http://novosial.org/procmail/

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

Nếu tôi hiểu vấn đề một cách chính xác, không thể giải quyết trong Postfix vì Postfix gửi song song các e-mail, tức là nó sẽ gửi tới foo@mydomain.com cùng lúc với việc mở rộng all@mydomain.com và sau đó một lần nữa gửi đến foo@mydomain.com. Sau đó, giải pháp Procmail có thể đưa ra một điều kiện cuộc đua trong đó một e-mail không liên quan khác (với một id tin nhắn khác) được gửi ở giữa hai e-mail được đề cập và do đó ghi đè lên bộ đệm khiến nó trở thành các e-mail trùng lặp giao hàng bằng cách nào?
Marcus Stade

Tôi đang cố gắng để đề xuất của bạn hoạt động, nhưng tôi không thực sự chắc chắn làm thế nào để kết hợp điều này với phân phối dovecot, được OS X 10.5+ sử dụng theo mặc định.
Marcus Stade

Nếu bạn đang sử dụng dovecot làm đại lý phân phối, bạn có thể sử dụng procmail vì content_filternó sẽ cho phép bạn thực hiện nhiệm vụ tương tự ở cấp độ toàn cầu
Philip Reynold

Tôi phải thú nhận rằng có lẽ tôi đang ở trên đầu của tôi ở đây. Tôi đã nhìn chằm chằm vào chính mình trên trang thông số cấu hình cho postfix và googling cho đến khi ngón tay của tôi chảy máu nhưng tôi dường như không thể tìm ra cách cấu hình này. Bất kỳ tài nguyên nào bạn có thể biết hoặc đi theo hướng đúng sẽ thực sự được đánh giá cao!
Marcus Stade

Tôi nghĩ rằng tôi đã hiểu cách thức hoạt động của nó bây giờ, nhưng đã có một content_filter được đặt thành amavis. Đây có vẻ là một số loại kiểm tra chống vi-rút. Tôi đã đọc rằng có thể xâu chuỗi content_filters, nhưng có vẻ như không trực quan và tài liệu ít hơn sao. Thật sự khá nực cười là khó khăn như thế nào khi loại bỏ các email trùng lặp. Thiết kế mong muốn bất kể, điều này đối với tôi có vẻ như nó nên được đưa ra khỏi hộp hoặc ít nhất là không yêu cầu các bản hack monstruos này.
Marcus Stade

3

Có một cách để làm điều đó, nhưng không sử dụng Postfix.

Nếu bạn đang sử dụng một Dovecot hợp lý gần đây với triển khai Sàng của Pigeonhole , có một phần mở rộng đặc biệt có thể được sử dụng để chống trùng lặp khi giao hàng. Trong Dovecot cũ hơn 2.2.18, tên của tiện ích mở rộng này là "vnd.dovecot.d repeatate" và theo mặc định, nó bị vô hiệu hóa, trong các bản phát hành mới hơn, tiện ích mở rộng được gọi là "trùng lặp" và đã được bật, nhưng không cho phép rõ ràng làm hại.

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

Sau đó tạo tập lệnh sàng để xử lý sự trùng lặp (bạn có thể điều chỉnh tên tệp khi bạn thấy phù hợp).

/mnt/mail/users/global_sieve/ded repeatate.sieve:

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

if duplicate {
    discard;
    stop;
}

Biên dịch tập lệnh bằng sievec và đảm bảo tập lệnh có thể đọc được bởi người dùng dovecot . Thêm trong tài liệu Dovecot.

Nếu bạn đang sử dụng Cyrus, có một tính năng ngăn chặn gửi tin nhắn trùng lặp có thể được kích hoạt bằng cách sử dụng suppress_duplicates = yes.


Cảm ơn rất nhiều vì đã chỉ ra cơ chế này. Đó là cảm giác "tìm kim trong đống cỏ khô".
lkraav

Khám phá trong quá trình thực hiện: duplicatephần mở rộng hoạt động ở cấp độ người dùng. Tôi đã cố gắng ngăn chặn các bản sao trên nhiều người dùng To / Cc-d trong một fileintohộp thư trung tâm . Điều này không hoạt động. Cũng phải đặt một virtual_alias_mapsmục nhập bắt tất cả hậu tố, chẳng hạn như @domain.com catchall@domain.com, kiểm tra trùng lặp sàng sẽ đánh vào catchalldanh sách trùng lặp của người dùng.
lkraav

Vâng, điều đó rất giống với cảm giác "tìm kim trong đống cỏ khô"
Net Runner


0

Đây là từ một số faq postfix cũ:

Postfix gửi thư trùng lặp Một số người sẽ phàn nàn rằng Postfix gửi tin nhắn trùng lặp. Điều này xảy ra bất cứ khi nào một tin nhắn được gửi đến nhiều địa chỉ đến cùng một người dùng. Ví dụ về các tình huống như vậy là:

  • Một tin nhắn được gửi đến người dùng và đến một bí danh liệt kê người dùng. Người dùng nhận được một bản sao của thư trực tiếp và một bản sao qua bí danh.

    • Một tin nhắn được gửi đến nhiều bí danh liệt kê người dùng. Người dùng nhận được một bản sao của thư thông qua mỗi bí danh.

Một số người thậm chí sẽ cho rằng đây là hành vi "đúng". Nó có lẽ là nhiều hơn một vấn đề mong đợi và về những gì người ta đã quen.

Điều này chỉ có thể được "sửa" bằng cách làm cho Postfix chậm hơn. Trong các ví dụ trên, Postfix trước tiên sẽ phải mở rộng hoàn toàn tất cả các danh sách phân phối trước khi bắt đầu bất kỳ giao hàng nào. Theo thiết kế, Postfix chuyển thư đến các điểm đến khác nhau song song và giao hàng cục bộ cũng không ngoại lệ. Đây là lý do tại sao Postfix có thể nhanh hơn sendmail.

Vì vậy, bằng thiết kế bạn đang thấy hành vi đó. Có lẽ nếu bạn tìm thấy một bộ lọc nội dung có thể loại bỏ ID tin nhắn trùng lặp, bạn có thể loại bỏ điều này sau sự kiện gửi.

Sendmail không gặp phải vấn đề này vì nó mở rộng mọi thứ trước tiên và loại bỏ các bản sao.


Vâng, tôi đọc nó, có lẽ tôi nên cập nhật câu hỏi của tôi. Theo thiết kế hay không, nó vẫn là một vấn đề. Tôi hiểu lý do tại sao nó hành xử theo cách đó và tôi hiểu rằng cố gắng tìm giải pháp trong Postfix là vô ích. Tuy nhiên, tôi đã thử đưa ra một số giải pháp lọc nội dung bằng Procmail và dường như tôi không thể hiểu đúng. Rất có khả năng tôi không hiểu chính xác các bộ lọc nội dung hoặc procmail hoặc cả hai. Trong cả hai trường hợp tôi vẫn muốn sửa lỗi này. Thật không may, thiết lập vì nó không thể được sửa đổi, chỉ được thêm vào. Thật không may, tôi không thể sử dụng sendmail thay vì postfix.
Marcus Stade

Tôi đã cập nhật câu hỏi với một số thông tin khác nhưng thành thật mà nói, liên kết đến Câu hỏi thường gặp đã bắt đầu. Tôi đánh giá cao bất kỳ đề nghị hữu ích mặc dù!
Marcus Stade

Không nhận ra rằng đó là một liên kết đến cùng một nội dung. Làm việc trong bảo mật CNTT, bạn trở nên khá hoang tưởng về việc nhấp vào các liên kết ngẫu nhiên. Bạn có thể xác nhận rằng các tin nhắn trùng lặp có cùng một ID tin nhắn không?
jeffatrackaid

Đã một ngày dài vì vậy tôi cần xem lại bài viết gốc của bạn, nhưng về điều này: postfix.org/postconf.5.html#d repeatate_filter_limit
jeffatrackaid

Tôi thực sự có thể xác nhận rằng các tin nhắn trùng lặp có cùng ID tin nhắn. Đặt trùng lặp_filter_limit không có gì để giúp đỡ.
Marcus Stade


0
enable_original_recipient=no

Tôi đặt nó trong main.cf của tôi và nó hoạt động tốt nhưng chỉ với thư được gửi từ tên miền của tôi. Tôi vẫn có các bản sao nếu tôi gửi email từ bên ngoài tên miền của mình (ví dụ: yahoo đến tên miền của tôi).

nguồn: http://article.gmane.org/gmane.mail.postfix.user/119783

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.