หลังจากพัฒนามาหนึ่งปี เวอร์ชัน 3.12.0 ซึ่งเป็นเวอร์ชันเสถียรใหม่ของเซิร์ฟเวอร์อีเมล Postfix ได้ถูกปล่อยออกมาแล้ว ในขณะเดียวกัน การสนับสนุน Postfix 3.7 ซึ่งเปิดตัวเมื่อต้นปี 2022 ได้ถูกยุติลงแล้ว โครงการนี้เขียนโค้ดด้วยภาษา C และเผยแพร่ภายใต้ EPL 2.0 (Eclipse Public License) และ IPL 1.0 (IBM Public License)
Postfix เป็นหนึ่งในโครงการหายากที่ผสมผสานความปลอดภัยสูง ความน่าเชื่อถือ และประสิทธิภาพเข้าด้วยกัน โดยทำได้ผ่านสถาปัตยกรรมแบบมัลติโปรเซสที่แยกตัวจัดการแต่ละตัวออกจากกัน รวมถึงโครงสร้างโค้ดที่เข้มงวดและนโยบายการตรวจสอบแพตช์ เพื่อป้องกันข้อผิดพลาดเกี่ยวกับหน่วยความจำ โครงการนี้ใช้ฟังก์ชันการจัดสรรและยกเลิกการจัดสรรหน่วยความจำเวอร์ชันที่ได้รับการป้องกัน รวมถึงชุดฟังก์ชันตัวห่อแบบนามธรรมสำหรับการจัดการบัฟเฟอร์ (ตรวจสอบการล้นของบัฟเฟอร์และการเข้าถึงหน่วยความจำที่ถูกปล่อย) การดำเนินการกับไฟล์ การจัดรูปแบบเอาต์พุต การอ่าน/เขียนข้อมูลแบบบัฟเฟอร์ และการจัดการสตริง (รวมถึงความสามารถในการทำงานกับสตริงขนาดใดก็ได้และการปรับขนาดสตริงอัตโนมัติ)
จากการสำรวจอัตโนมัติครั้งสุดท้ายซึ่งมีผู้ตอบแบบสอบถามประมาณ 500 คน เซิร์ฟเวอร์ (การเผยแพร่รายงานจะยุติลงหลังเดือนกรกฎาคม 2025) Postfix ถูกใช้งานบนเซิร์ฟเวอร์อีเมล 37.88% (36.81% เมื่อปีที่แล้ว) Exim มีส่วนแบ่ง 55.59% (56.61% เมื่อปีที่แล้ว) Sendmail - 3.55% (3.60%) MailEnable - 1.81% (1.82%) MDaemon - 0.40% (0.40%) Microsoft Exchange - 0.20% (0.19%) OpenSMTPD - 0.12% (0.09%)
นวัตกรรมหลัก:
- ได้มีการดำเนินการเพื่อลดความซับซ้อนในการย้ายข้อมูลจากตารางค้นหา "hash:" และ "btree:" ไปยัง "lmdb:" หรือ "cdb:" เนื่องจากไลบรารี BerkeleyDB ถูกยกเลิกในระบบปฏิบัติการ Linux บางรุ่น เพื่อรักษาความเข้ากันได้กับเครื่องมือ Mailman ที่เรียกใช้คำสั่ง "postmap hash:/path/to/file" เมื่อเพิ่มหรือลบรายชื่อผู้รับจดหมาย Postfix จึงรองรับการเปลี่ยนเส้นทางคำสั่งดังกล่าวไปยังตัวเลือกที่มีประเภทฐานข้อมูลที่รองรับโดยอัตโนมัติ
- โดยค่าเริ่มต้น การเชื่อมต่อกับเซิร์ฟเวอร์ SMTP ที่ใช้การเข้ารหัส TLS จะถูกเปิดใช้งาน ในการตั้งค่าไคลเอ็นต์ SMTP พารามิเตอร์ smtp_tls_security_level จะถูกตั้งค่าเป็น "may" หาก Postfix ถูกสร้างขึ้นมาพร้อมกับการรองรับ TLS ค่า "may" จะเปิดใช้งาน TLS สำหรับเซิร์ฟเวอร์ที่รองรับการเข้ารหัส แต่จะอนุญาตให้เปลี่ยนไปใช้การถ่ายโอนข้อมูลแบบข้อความธรรมดาหากเซิร์ฟเวอร์ไม่รองรับ TLS
- ESMTP รองรับส่วนขยาย "REQUIRETLS" (RFC 8689) ซึ่งอนุญาตให้ผู้ส่งร้องขอการเข้ารหัส TLS ที่รับประกันได้ตลอดเส้นทางการส่งข้อความทั้งหมด ในโหมดนี้ เซิร์ฟเวอร์ SMTP หรือ LMTP ใดๆ ที่มีส่วนร่วมในการส่งต่อข้อความต้องรองรับ REQUIRETLS และการตรวจสอบสิทธิ์ที่เข้มงวดผ่าน DANE หรือ STS เมื่อส่งต่อข้อความไปยังเซิร์ฟเวอร์อื่นๆ ก็ต้องใช้ REQUIRETLS ด้วยเช่นกัน
- ขณะนี้ระดับความปลอดภัย TLS ได้ถูกบันทึกไว้ในบันทึกแล้ว ซึ่งหมายความว่าหากจำเป็นต้องใช้ระดับ REQUIRETLS ในการส่งข้อความ ข้อมูลเกี่ยวกับการใช้ REQUIRETLS จะถูกบันทึกไว้ในบันทึกด้วย
- ได้เพิ่มพารามิเตอร์ smtp_tls_enforce_sts_mx_patterns แล้ว พารามิเตอร์นี้ช่วยให้สามารถใช้งานร่วมกันได้ระหว่างไคลเอ็นต์ Postfix SMTP และปลั๊กอิน MTA-STS (MTA Strict Transport Security) ที่ต้องการการสนับสนุน TLSRPT สำหรับการเปลี่ยนเส้นทางแอตทริบิวต์ STS เมื่อเปิดใช้งานพารามิเตอร์นี้โดยค่าเริ่มต้น ไคลเอ็นต์ Postfix SMTP จะเชื่อมต่อกับเซิร์ฟเวอร์ MX ก็ต่อเมื่อชื่อของเซิร์ฟเวอร์ตรงกับรูปแบบที่ระบุไว้ในนโยบาย STS เท่านั้น มิเช่นนั้น จะใช้พฤติกรรมแบบเดิม คือการเชื่อมต่อกับเซิร์ฟเวอร์ MX โดยอิงจากระเบียน DNS MX หากใบรับรองเซิร์ฟเวอร์เป็นไปตามนโยบาย STS กลไก MTA-STS อนุญาตให้แจ้งไคลเอ็นต์ที่เชื่อมต่อผ่านช่องทางที่ไม่ปลอดภัยเกี่ยวกับความเป็นไปได้และพารามิเตอร์สำหรับการสร้างการเชื่อมต่อ TLS ที่ปลอดภัย การสนับสนุนสำหรับพารามิเตอร์นี้ได้ถูกเพิ่มเข้าไปในยูทิลิตี้ postfix-tlspol และ postfix-mta-sts-resolver แล้ว
- เพิ่มการรองรับอัลกอริธึมการเข้ารหัสที่ทนทานต่อควอนตัมเมื่อสร้างด้วย OpenSSL เวอร์ชัน 3.5 และเวอร์ชันที่ใหม่กว่า
- พารามิเตอร์การกำหนดค่า 16 รายการถูกยกเลิกการใช้งานแล้ว และเมื่อมีการใช้งาน จะแสดงคำเตือนในบันทึกเพื่อแจ้งให้ทราบว่าพารามิเตอร์เหล่านั้นจะถูกลบออกในเวอร์ชันถัดไป พารามิเตอร์ที่ถูกยกเลิกการใช้งานเหล่านี้ ได้แก่ "virtual_maps," "fallback_relay," "postscreen_whitelist_interfaces," และ "smtpd_client_connection_limit_exceptions"
- เพิ่มการรองรับการส่งออกข้อมูลในรูปแบบ JSON สำหรับคำสั่ง: "postconf -j|-jM|-jF|-jP", "postalias -jq|-js", "postmap -jq|-js" และ "postmulti -jl"
- ปรับปรุงการจัดการข้อผิดพลาดในตัวกรอง Milter ที่เกิดขึ้นเมื่อประมวลผลข้อความที่ได้รับผ่านการเชื่อมต่อ SMTP ที่สร้างมานานแล้ว พารามิเตอร์ #milter_default_action ได้ถูกเปลี่ยนจาก "tempfail" เป็น "shutdown" ซึ่งหมายถึงการปิดการเชื่อมต่อกับไคลเอ็นต์
ที่มา: opennet.ru
