นามแฝง 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 เป็นไปได้ไหมที่จะทำที่ไหนสักแห่งระหว่างทาง? ฉันพยายามให้ความรู้แก่ผู้ใช้ของฉัน แต่มันค่อนข้างไร้ประโยชน์ฉันกลัว ...

ฉันใช้ postfix บน Mac OS X Server 10.6 amavis ถูกตั้งค่าเป็น content_filter และ dovecot ถูกตั้งค่าเป็น mailbox_command ฉันได้ลองตั้งค่า procmail เป็น content_filter สำหรับการจัดส่ง smtp (ตามคำแนะนำด้านล่าง) แต่ฉันไม่สามารถทำให้ถูกต้องได้ ด้วยเหตุผลต่าง ๆ ฉันไม่สามารถแทนที่การกำหนดค่ามาตรฐาน OS X ซึ่งหมายถึง postfix, amavis และ dovecot stay put อย่างไรก็ตามฉันสามารถเพิ่มลงไปได้หากต้องการ


ฉันคิดว่ามันเป็นไปไม่ได้จริง ๆ ...
แอนทอนเบ็นเคมุน

ฉันเริ่มเชื่ออย่างแท้จริงว่าคุณเป็นแอนทอนที่ถูกต้อง
Marcus Stade

กันดีว่าเป็นเรื่องเสียเงินรางวัลที่ ...
มาร์คัส Stade

2
คุณเคยพบทางออกสำหรับสิ่งนี้หรือไม่? ฉันมีปัญหาเดียวกัน
Tommy Arnold

คำตอบ:


4

Postfix ไม่มีความคิดเกี่ยวกับอีเมลซ้ำเนื่องจากวิธีการจัดโครงสร้าง คุณสามารถทำสิ่งที่คุณแนะนำโดยใช้ procmail เป็นตัวแทนจัดส่งของคุณ

โดยพื้นฐานแล้วแต่ละข้อความที่มาจากลูกค้าควรถูกส่งด้วยรหัสข้อความที่ไม่ซ้ำกัน ในกรณีที่มีการส่งมอบให้กับหลาย ๆ คนรหัสข้อความควรเหมือนกันดังนั้นเราจึงบันทึก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 อาจจะแนะนำสภาพการแข่งขันที่มีอีเมลอื่นที่ไม่เกี่ยวข้อง (ด้วยรหัสข้อความที่แตกต่างกัน) จะถูกส่งระหว่างอีเมลทั้งสองในคำถามและจึงเขียนทับแคชทำให้มันเป็นอีเมลที่ซ้ำกัน ส่งมอบอย่างใด?
Marcus Stade

ฉันพยายามที่จะรับข้อเสนอแนะของคุณให้ทำงาน แต่ฉันไม่แน่ใจจริงๆว่าจะรวมสิ่งนี้กับการจัดส่งนกพิราบซึ่งใช้โดย OS X 10.5+ ตามค่าเริ่มต้น
Marcus Stade

หากคุณใช้ dovecot เป็นตัวแทนการจัดส่งคุณสามารถใช้ procmail content_filterซึ่งจะช่วยให้คุณทำงานเดียวกันในระดับโลก
Philip Reynolds

ฉันต้องยอมรับว่าฉันอาจจะไปทางหัวของฉันที่นี่ ฉันจ้องมองตัวเองตาบอดในหน้าพารามิเตอร์การกำหนดค่าสำหรับ postfix และ googling จนกระทั่งนิ้วมือของฉันตก แต่ฉันไม่สามารถหาวิธีกำหนดค่านี้ได้ แหล่งข้อมูลใด ๆ ที่คุณอาจรู้จักหรือเขยิบไปในทิศทางที่ถูกต้องจะได้รับการชื่นชมอย่างแท้จริง!
Marcus Stade

ฉันคิดว่าฉันเข้าใจว่ามันทำงานอย่างไร แต่มี content_filter ตั้งค่าให้ amavis อยู่แล้ว นี่น่าจะเป็นตัวตรวจจับไวรัสบางประเภท ฉันได้อ่านแล้วว่าเป็นไปได้ที่จะโยง content_filters แต่ดูเหมือนจะไม่ได้ใช้งานง่ายและเอกสารนั้นน้อยกว่าตัวเอก มันค่อนข้างไร้สาระจริงๆมันยากแค่ไหนที่จะกำจัดอีเมลซ้ำ การออกแบบที่ไม่คำนึงถึงสิ่งนี้ดูเหมือนว่าฉันควรจะอยู่ข้างนอกกล่องหรืออย่างน้อยก็ไม่ต้องการแฮ็ก monstruos เหล่านี้
Marcus Stade

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 docs

หากคุณกำลังใช้ Cyrus จะมีคุณสมบัติการระงับการส่งข้อความซ้ำที่สามารถใช้งานsuppress_duplicates = yesได้


ขอบคุณสำหรับการชี้กลไกนี้ออกมา ว่า "การหาเข็มในกองหญ้า" ความรู้สึก
lkraav

การค้นพบระหว่างการติดตั้ง: duplicateส่วนขยายใช้งานได้ในระดับผู้ใช้ ฉันพยายามหยุดการซ้ำซ้อนของผู้ใช้หลายรายถึง / Cc-d ในfileintoกล่องจดหมายกลาง มันใช้งานไม่ได้ ต้องตั้งค่ารายการ post virtual_alias_maps-catch catch-all เช่น@domain.com catchall@domain.comจากนั้นการตรวจสอบที่ซ้ำกันตะแกรงจะตีcatchallรายการที่ซ้ำกันของผู้ใช้
lkraav

ใช่มันคล้ายกันมากกับ "การหาเข็มในกองหญ้า" ความรู้สึก
นักวิ่งเน็ต


0

นี่คือจากคำถามที่พบบ่อย postfix บางส่วน:

Postfix ส่งจดหมายที่ซ้ำกันบางคนจะบ่นว่า Postfix ส่งข้อความที่ซ้ำกัน สิ่งนี้จะเกิดขึ้นเมื่อใดก็ตามที่มีข้อความเดียวถูกส่งไปยังที่อยู่หลายแห่งที่เข้าถึงผู้ใช้เดียวกัน ตัวอย่างของสถานการณ์ดังกล่าวคือ:

  • ข้อความเดียวจะถูกส่งไปยังผู้ใช้และไปยังนามแฝงที่แสดงรายการผู้ใช้ ผู้ใช้จะได้รับหนึ่งสำเนาของเมลโดยตรงและอีกหนึ่งสำเนาผ่านทางนามแฝง

    • ข้อความเดียวจะถูกส่งไปยังนามแฝงหลายรายการที่แสดงรายการผู้ใช้ ผู้ใช้รับสำเนาของจดหมายหนึ่งฉบับผ่านแต่ละนามแฝง

บางคนอาจโต้แย้งว่านี่เป็นพฤติกรรมที่ "ถูกต้อง" มันอาจเป็นเรื่องของความคาดหวังและสิ่งที่เราคุ้นเคย

สิ่งนี้สามารถ "แก้ไข" เท่านั้นโดยทำให้ Postfix ทำงานช้าลง ในตัวอย่างข้างต้น Postfix จะต้องขยายรายการการแจกจ่ายทั้งหมดก่อนที่จะเริ่มจัดส่งใด ๆ จากการออกแบบ Postfix จะส่งเมลไปยังปลายทางที่ต่างกันแบบขนาน นี่คือเหตุผลที่ Postfix สามารถเร็วกว่า sendmail

ดังนั้นโดยการออกแบบคุณจะเห็นพฤติกรรมนั้น บางทีหากคุณพบตัวกรองเนื้อหาที่สามารถแยก ID ข้อความที่ซ้ำกันคุณสามารถกำจัดสิ่งนี้ได้หลังจากเหตุการณ์การนำส่ง

Sendmail ไม่มีปัญหานี้เพราะมันขยายทุกอย่างออกไปก่อน


ใช่ฉันอ่านแล้วบางทีฉันควรจะอัปเดตคำถามของฉัน โดยการออกแบบหรือไม่ก็ยังคงเป็นปัญหา ฉันเข้าใจว่าทำไมมันจึงทำงานเหมือนปกติและฉันเข้าใจว่าการพยายามหาวิธีแก้ปัญหาใน Postfix นั้นไร้ประโยชน์ อย่างไรก็ตามฉันได้ลองใช้โซลูชันตัวกรองเนื้อหาโดยใช้ Procmail และฉันก็ดูเหมือนจะไม่ถูกต้อง มีโอกาสสูงที่ฉันจะไม่เข้าใจตัวกรองเนื้อหาหรือ procmail อย่างถูกต้องหรือทั้งสองอย่าง ไม่ว่าในกรณีใดฉันยังคงต้องการแก้ไขปัญหานี้อยู่ น่าเสียดายที่การตั้งค่าตามที่ไม่สามารถแก้ไขได้จะเพิ่มเฉพาะ ฉันไม่สามารถใช้ sendmail แทน postfix ได้
Marcus Stade

ฉันอัปเดตคำถามด้วยข้อมูลเพิ่มเติม แต่โดยสุจริตลิงก์ไปยังคำถามที่พบบ่อยอยู่ที่นั่นเพื่อเริ่มต้นด้วย ฉันขอขอบคุณคำแนะนำที่เป็นประโยชน์ แต่!
Marcus Stade

ไม่ทราบว่าเป็นลิงก์ไปยังเนื้อหาเดียวกัน การทำงานด้านความปลอดภัยด้านไอทีทำให้คุณหวาดระแวงกับการคลิกลิงก์แบบสุ่ม คุณสามารถยืนยันได้ว่าข้อความที่ซ้ำกันมีรหัสข้อความเดียวกันหรือไม่
jeffatrackaid

เป็นวันที่ยาวนานดังนั้นฉันจึงต้องตรวจสอบโพสต์ต้นฉบับของคุณ แต่สิ่งที่เกี่ยวกับเรื่องนี้: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

ฉันสามารถยืนยันได้ว่าข้อความที่ซ้ำกันมีรหัสข้อความเดียวกัน การตั้งค่า Dup_filter_limit ไม่ได้ช่วยอะไร แต่อย่างใด
Marcus Stade

0

วิธีแก้ปัญหาอย่างเป็นทางการอยู่ที่นี่ .. http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

Duplicate_filter_limit (10000) จำนวนสูงสุดของที่อยู่ที่จำได้โดยผู้รับตัวกรองที่ซ้ำกันสำหรับนามแฝง (5) หรือเสมือน (5) การขยายนามแฝงหรือสำหรับคิว showq (8) แสดง (โดย Postfix ก่อนหน้านี้ปล่อยวงเงินเริ่มต้นที่ 1,000)

Duplicate_filter_style (เข้มงวด) นโยบายตัวกรองผู้รับที่ซ้ำกัน: เข้มงวดหรือในทางปฏิบัติ


1
ดูเหมือนว่ามันจะไม่ทำอะไรเลย ...
grufftech

postfix.1071664.n5.nabble.com/…อ้างว่าสิ่งนี้ไม่เคยถูกนำมาใช้
Yanko HernándezÁlvarez

0
enable_original_recipient=no

ฉันใส่มันลงใน main.cf ของฉันและใช้งานได้ดี แต่สำหรับอีเมลที่ส่งจากโดเมนของฉันเท่านั้น ฉันยังคงซ้ำซ้อนถ้าฉันส่งอีเมลจากนอกโดเมนของฉัน (yahoo ไปยังโดเมนของฉันเป็นต้น)

แหล่งที่มา: http://article.gmane.org/gmane.mail.postfix.user/119783

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.