Score:1

หลังจากอัปเกรด postfix 3.5.6 แล้ว นามแฝงเสมือนจะแมปกับผู้รับหลายคนเป็นชื่อเดียวที่มีเครื่องหมายจุลภาค

ธง de

เพิ่งอัปเกรดเป็น debian bullseye postfix 3.5.6 จาก debian wheezy postfix 2.9.6

เราใช้แผนที่นามแฝงเสมือนกับผู้รับหลายคน เช่นนี้:

[email protected] @theidsp-network.inter-realm.net,[email protected]

ด้วยเหตุนี้ อีเมลที่ส่งถึง [email protected] จึงถูกส่งต่อไปยัง [email protected] และไปที่ [email protected] มันทำงานอย่างถูกต้องมาหลายปีแล้ว

ก่อนหน้านี้เราได้เรียนรู้จาก http://www.postfix.org/virtual.5.html นั่น ลำดับของผู้รับหลายคนมีความสำคัญ "เมื่อผลลัพธ์มีรูปแบบ @otherdomain ผลลัพธ์จะกลายเป็นผู้ใช้รายเดียวกันในโดเมนอื่น ซึ่งใช้ได้กับที่อยู่แรกในผลการค้นหาหลายที่อยู่เท่านั้น" ดังนั้นเราจึงใส่ตัวแทน @ ผู้รับก่อน

หลังจากการอัปเกรด postfix ดูเหมือนว่า smtpd จะพยายามส่งต่อไปยัง a ผู้รับเดียว "[email protected],jim"@space-port-pros.com

เนื่องจากไม่มีผู้ใช้อยู่ เมลนี้จึงถูกทิ้งไปที่ catchall

นี่คือผลลัพธ์บางส่วนจาก mail.log:

14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: เชื่อมต่อกับระบบย่อย private/proxymap
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: send attr request = lookup
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: send attr table = mysql:/etc/postfix/mysql-virtual_forwardings.cf
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: ส่งแฟล็ก attr = 540736
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: send attr key = [email protected]
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: ซ็อกเก็ตส่วนตัว/พร็อกซีแมป: แอตทริบิวต์ที่ต้องการ: สถานะ
14 เม.ย. 10:45:17 mail7-057 sslmx/smtpd[8640]: ชื่อแอตทริบิวต์อินพุต: สถานะ
14 เม.ย. 10:45:17 mail7-057 sslmx/smtpd[8640]: ค่าแอตทริบิวต์อินพุต: 0
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: ซ็อกเก็ตส่วนตัว/proxymap: แอตทริบิวต์ที่ต้องการ: ค่า
14 เม.ย. 10:45:17 mail7-057 sslmx/smtpd[8640]: ชื่อแอตทริบิวต์อินพุต: ค่า
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: ค่าแอตทริบิวต์อินพุต: @theidsp-network.inter-realm.net,[email protected]
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: ซ็อกเก็ตส่วนตัว/พร็อกซีแมป: แอตทริบิวต์ที่ต้องการ: (รายการสิ้นสุด)
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: ชื่อแอตทริบิวต์อินพุต: (สิ้นสุด)
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: dict_proxy_lookup: table=mysql:/etc/postfix/mysql-virtual_forwardings.cf flags=lock|fold_fix|utf8_request
 [email protected] -> สถานะ=0 ผลลัพธ์[email protected],[email protected]
14 เม.ย. 10:45:17 น. mail7-057 sslmx/smtpd[8640]: maps_find: virtual_alias_maps: proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf(0,lock|fold_fix|utf8
_request): [email protected] = @theidsp-network.inter-realm.net,[email protected]
14 เมษายน 10:45:17 น. mail7-057 sslmx/smtpd[8640]: mail_addr_find: [email protected] -> @theidsp-network.inter-realm.net,[email protected]
...
14 เมษายน 10:45:17 น. mail7-057 postfix/smtp[8669]: 55E65C895: to=<"[email protected],jim"@space-port-pros.com>, orig_to=< jimays@theids
p.net>, รีเลย์=mail7-052.idsp56.net[192.168.56.52]:52025, ความล่าช้า=0.06, ความล่าช้า=0.01/0.02/0.01/0.02, dsn=2.0.0, สถานะ=ส่ง (250 2.0.0 ตกลง: เข้าคิวเป็น 5F628
A882)

ต่อไปนี้คือตัวอย่างจากบันทึกของเดือนมิถุนายน ซึ่งแสดงให้เห็นว่าการส่งต่อก่อนหน้านี้ส่งผลให้เกิดบรรทัดที่แตกต่างกันสองบรรทัดโดยมีสถานะ=ส่ง บรรทัดหนึ่งส่งผ่าน smtp ขนส่งไปยัง [email protected] และอีกบรรทัดหนึ่งผ่านการขนส่ง lmtp-g ไปที่ jimays@theidsp-network .inter-realm.net.

20 มิ.ย. 06:30:58 น. mail7-057 sslmx/smtpd[28956]: เชื่อมต่อจาก mail7-055.idsp56.net[192.168.56.55]
20 มิ.ย. 06:30:58 น. mail7-057 sslmx/smtpd[28956]: การเชื่อมต่อ TLS แบบไม่ระบุตัวตนที่สร้างจาก )
20 มิ.ย. 6:30:58 น. mail7-057 sslmx/smtpd[28956]: B91A42BE4: client=mail7-055.idsp56.net[192.168.56.55]
20 มิ.ย. 06:30:58 น. mail7-057 cleanup-srs/cleanup[28963]: B91A42BE4: message-id=<[email protected]>
20 มิ.ย. 06:30:58 น. mail7-057 postfix/qmgr[19327]: B91A42BE4: from=<SRS0=Z5tX=LO=connect.match.com=bounces-MA-1-858-ea0868c4-498f-401a-b6f1- [email protected]>, size=47942, nrcpt=2 (คิวทำงานอยู่)
20 มิ.ย. 06:30:58 น. mail7-057 sslmx/smtpd[28956]: ตัดการเชื่อมต่อจาก mail7-055.idsp56.net[192.168.56.55]
20 มิ.ย. 06:30:58น. mail7-057 postfix/smtp[28966]: การเชื่อมต่อ TLS แบบไม่ระบุตัวตนที่จัดตั้งขึ้นเป็น 256 บิต)
20 มิ.ย. 06:30:58 น. mail7-057 lmtp-g/lmtp[28965]: การเชื่อมต่อ TLS ที่เชื่อถือได้สร้างเป็น lmtp7-g.inter-dimensional-space-port.net[216.184.19.228]:64007: TLSv1 พร้อมรหัส AES256- SHA (256/256 บิต)
20 มิ.ย. 06:30:58 น. mail7-057 postfix/smtp[28966]: B91A42BE4: to=<[email protected]>, relay=mail7-052.idsp56.net[192.168.56.52]:52025, ล่าช้า=0.16, ล่าช้า=0.04/0.02/0.02/0.08, dsn=2.0.0, สถานะ=ส่ง (250 2.0.0 ตกลง: เข้าคิวเป็น C66855B94)
20 มิ.ย. 06:30:59 น. mail7-057 sslmx/smtpd[28956]: เชื่อมต่อจาก mail7-055.idsp56.net[192.168.56.55]
20 มิ.ย. 06:30:59 น. mail7-057 sslmx/smtpd[28956]: การเชื่อมต่อ TLS แบบไม่ระบุตัวตนที่สร้างจาก )
20 มิ.ย. 06:30:59 น. mail7-057 sslmx/smtpd[28956]: 9D1D12CA5: client=mail7-055.idsp56.net[192.168.56.55]
20 มิ.ย. 6:30:59 น. mail7-057 cleanup-srs/cleanup[28963]: 9D1D12CA5: message-id=<[email protected]>
20 มิ.ย. 06:30:59 น. mail7-057 postfix/qmgr[19327]: 9D1D12CA5: from=<SRS0=Z5tX=LO=connect.match.com=bounces-MA-1-858-ea0868c4-498f-401a-b6f1- [email protected]>, size=50423, nrcpt=1 (คิวทำงานอยู่)
20 มิ.ย. 06:30:59 น. mail7-057 sslmx/smtpd[28956]: ตัดการเชื่อมต่อจาก mail7-055.idsp56.net[192.168.56.55]
20 มิ.ย. 06:31:07 น. mail7-057 lmtp-g/lmtp[28965]: B91A42BE4: to=<[email protected]>, relay=lmtp7-g.inter-dimensional-space-port .net[216.184.19.228]:64007, ล่าช้า=8.9, ล่าช้า=0.04/0.02/0.12/8.7, dsn=2.0.0, สถานะ=ส่งแล้ว (250 ตกลง)
20 มิ.ย. 06:31:07 น. mail7-057 postfix/qmgr[19327]: B91A42BE4: ลบออก

เดอะ http://www.postfix.org/COMPATIBILITY_README.html ไม่ได้กล่าวถึงสิ่งใดเป็นพิเศษเกี่ยวกับการเปลี่ยนแปลงพฤติกรรมในแผนที่นามแฝงเสมือน

mysql-virtual_forwardings.cf อยู่ในรูปแบบมาตรฐานที่สร้างโดย ISPConfig

ผู้ใช้ = ispconfig
รหัสผ่าน = ทำซ้ำ
dbname = idsp_mail7_062
ตาราง = mail_forwarding
Select_field = ปลายทาง
where_field = แหล่งที่มา
added_conditions = และ active = 'y' และ server_id = 81
โฮสต์ = 192.168.56.121

ส่วนที่เกี่ยวข้องของ main.cf ซึ่งเรียกใช้ไฟล์คือ:

virtual_alias_maps = regexp:/etc/postfix/regexp-virtual_forwardings__admin.cf, proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, proxy:mysql:/etc
/postfix/mysql-virtual_email2email.cf

ตาราง virtual_forwardings มีลักษณะดังนี้:

MariaDB [idsp_mail7_057]> เลือก * จาก mail_forwarding โดยที่ source='[email protected]';
+------------+------------+------------+------ ---------+++++++++++++++ -----+--------------------+---------------------- ----------------------------------- +---------+---- ----+
| forwarding_id | sys_userid | sys_groupid | sys_perm_user | sys_perm_group | sys_perm_other | server_id | ที่มา | ปลายทาง | พิมพ์ | ใช้งาน |
+------------+------------+------------+------ ---------+++++++++++++++ -----+--------------------+---------------------- ----------------------------------- +---------+---- ----+
| 201 | 2 | 2 | ริด | ริด | | 69 | [email protected] | @theidsp-network.inter-realm.net,[email protected] | ไปข้างหน้า | y |
+------------+------------+------------+------ ---------+++++++++++++++ -----+--------------------+---------------------- ----------------------------------- +---------+---- ----+
1 แถวในชุด (0.001 วินาที)

เพิ่มการบันทึกเป็น smtpd -v -v และสิ่งนี้แสดงในบันทึก:

dict_proxy_lookup: table=mysql:/etc/postfix/mysql-virtual_forwardings.cf flags=lock|fold_fix|utf8_request
 [email protected] -> สถานะ=0 ผลลัพธ์[email protected],[email protected]
20 เม.ย. 16:44:37 น. mail7-057 sslmx/smtpd[9561]: maps_find: virtual_alias_maps: proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf(0,lock|fold_fix|utf8
_request): [email protected] = @theidsp-network.inter-realm.net,[email protected]
20 เมษายน 16:44:37 น. mail7-057 sslmx/smtpd[9561]: mail_addr_find: [email protected] -> @theidsp-network.inter-realm.net,[email protected]

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

Jim At Your Service avatar
de flag
สวัสดี @anx สงสัยว่าคุณกำลังแนะนำว่ามีข้อผิดพลาดใน postfix smtpd หรือไม่ เรามีบันทึกมากมายที่ใช้รูปแบบ ATotherdomain,somewhereATsomespecific.com นี้ เพื่อส่งต่อทั้งสองไปยัง ATotherdomain และไปยังที่อยู่อีเมลเฉพาะบางรายการ สงสัยว่าคุณเห็นวิธีแก้ปัญหาเฉพาะสำหรับสิ่งนั้นหรือไม่
Jim At Your Service avatar
de flag
@anx ยืนยันว่าสิ่งต่าง ๆ ทำงานได้อย่างถูกต้องหากฉันแทนที่รายการด้วย jimaysATtheidsp-network.inter-realm.net,jimATspace-port-pros.com ดังนั้น ฉันกำลังพิจารณาความคิดของคุณที่จะเปลี่ยนรายการทั้งหมดของเราเป็นวิธีแก้ปัญหาแต่อืม เกิดอะไรขึ้นที่นี่?
anx avatar
fr flag
anx
แม้ว่าฉันจะไม่ได้เจาะจงลงไป แต่ฉันเชื่อว่าแม้แต่เอกสาร *ความกำกวม* ที่รับรู้หรือจริงใด ๆ เกี่ยวกับวิธีปฏิบัติต่อรายการที่อยู่ที่ไม่ได้ยกมาก็สมควรที่จะถูกพิจารณาว่าเป็นข้อบกพร่อง โปรดรายงานอัปสตรีมนี้ คุณอาจสร้างตัวจำลองที่สั้นลงได้โดยใช้ขั้นตอน (sqlite ไม่ใช่ mysql) ที่ฉันระบุไว้ด้านล่าง
Score:0
ธง fr
anx

มันพบมันเมื่อใดและก็ต่อเมื่อใช้แบบฟอร์ม "@otherdomain" ดังนั้นมัน สามารถแก้ไขได้:

  1. โดยการย้ายจากที่เลิกใช้แล้ว ตาราง/select_field/.. แบบระบุ สอบถาม ในของคุณ mysql-*.cf ไฟล์และเลียนแบบใน SQL สิ่งที่ postfix ไม่ทำอีกต่อไป หรือ
  2. โดยเปลี่ยนตารางของคุณอย่างถาวรเพื่อขยายนามแฝงเหล่านั้นให้เต็ม ผู้ใช้@โดเมน รูปร่าง.

วิธีแก้ปัญหาทั้งสองจะเกี่ยวข้องกับแบบสอบถามที่มีบางอย่างเช่น กรณีที่ปลายทาง LIKE "@%" แล้วก็ SUBSTR(source,1,INSTR(source,"@"))||ปลายทาง ELSE ปลายทาง END เพื่อให้ SQL เชื่อมต่อกล่องจดหมายต้นทางหากการค้นหาเริ่มต้นด้วย @ พิจารณาอย่างรอบคอบว่าจะเกิดอะไรขึ้นกับส่วนขยายที่อยู่เช่น user+extensions@onedomain, หากคุณกำลังใช้สิ่งเหล่านั้นอยู่!

เมื่อค้นหาสาเหตุที่เป็นไปได้สำหรับพฤติกรรมที่เปลี่ยนไป ฉันพบการทำงานซ้ำของ rfc822 quote/unquote ที่ อาจ มีความเกี่ยวข้อง CHANGELOG กล่าวถึง:

เผยแพร่ส่วนขยายที่อยู่อย่างถูกต้อง

จาก "aa bb+ext"@example.com เป็น "cc dd+ext"@other.example

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


ฉันสามารถทำซ้ำความสับสนประเภทรายการ / กล่องจดหมายนั้นใน Postfix 3.4.13 (ตามที่ Ubuntu แจกจ่าย) โดยใช้อย่างใดอย่างหนึ่ง สอบถาม และ ตาราง/select_field/..มีหรือไม่มีก็ได้ แผนที่พร็อกซีและด้วยผลลัพธ์แบบหลายแถวหรือผลลัพธ์แบบคั่นด้วยเครื่องหมายจุลภาคเดี่ยว คุณอาจสามารถทำงานตามขั้นตอนที่เกือบจะได้ผลต่อไปนี้กับตัวทำซ้ำที่ใช้งานได้เพื่อรายงานอัปสตรีม อย่างชัดเจน เรียกใช้ขั้นตอนเหล่านี้ในกล่องทดสอบเท่านั้น.

ทางออก 1 # ข้อมูลสูญหาย! รันบนเครื่องเสมือนเพื่อการทดสอบเท่านั้น!
postconf virtual_transport=ข้อผิดพลาด
postconf virtual_alias_maps=proxy:sqlite:/etc/postfix/repro.cf
postconf virtual_alias_domains=e.invalid
postconf debug_peer_list=[::1]
sqlite3 /etc/postfix/repro.sqlite3 <<'EOF'
สร้าง repro ตาราง (ข้อความ d ข้อความ);
INSERT INTO repro(s,d) VALUES ("[email protected]", "@e.invalid,[email protected]");
INSERT INTO repro(s,d) VALUES ("[email protected]", "[email protected],[email protected]");
อฟ
แมว >/etc/postfix/repro.cf << 'EOF'
dbpath=/etc/postfix/repro.sqlite3
แบบสอบถาม = เลือก d จาก repro WHERE s = '%s'
อฟ
# ส่งเมลทดสอบ (ไม่ได้ตั้งค่า smtp เนื่องจาก smtp สร้างบันทึกที่ดีกว่า)
printf %b 'นำเข้า smtplib;\nsmtplib.SMTP("::1").sendmail("","[email protected]", "")' | หลาม3
printf %b 'นำเข้า smtplib;\nsmtplib.SMTP("::1").sendmail("","[email protected]", "")' | หลาม3
# ตรวจสอบบันทึก
Jim At Your Service avatar
de flag
คำตอบของคุณมีความละเอียดถี่ถ้วนและมีประโยชน์และได้รับการตอบรับอย่างซาบซึ้งใจ จะได้รับการต้นน้ำในเวลาที่เหมาะสมโดยมีการอ้างอิงถึงที่นี่ การแก้ปัญหาของคุณมีประโยชน์มากเป็นการส่วนตัวสำหรับฉันและทีมของเราในขณะนี้ เนื่องจากมันแสดงเส้นทางไปข้างหน้าเพื่อให้จดหมายกลับมาไหลอีกครั้ง เพียงแค่เปลี่ยน ATdomain เป็น userATdomain แบบเต็ม เราสามารถเรียกใช้การอัปเดต SQL เพื่อดำเนินการทั้งหมดในคราวเดียว จากนั้น สิ่งที่เราต้องทำคือไปที่กล่องจดหมาย catchall และแจกจ่ายจดหมายทั้งหมดอีกครั้งในช่วงสองสามสัปดาห์ที่ผ่านมา.... ขอบคุณ นี่เป็นโพสต์แรกของฉันและสงสัยว่าจะทำเครื่องหมายแก้ไขอย่างไร
Jim At Your Service avatar
de flag
เซิร์ฟเวอร์อีเมลของเราได้รับการแก้ไขแล้วด้วย @anx และ lib_mysqludf_preg: `update mail_forwarding set destination=concat(regexp_replace(source,'@.*$',''),destination) where destination like '@%';`
Jim At Your Service avatar
de flag
...พยายามคลิกเครื่องหมายถูก ต้องการคะแนนชื่อเสียง 15 คะแนน... คำตอบของคุณช่วยแก้ปัญหาของเราได้อย่างแน่นอน ขอบคุณ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา