การเปิดตัวเมลเซิร์ฟเวอร์ Postfix 3.6.0

หลังจากหนึ่งปีของการพัฒนา เมลเซิร์ฟเวอร์ Postfix สาขาเสถียรใหม่ได้เปิดตัว - 3.6.0 ในเวลาเดียวกัน ได้ประกาศสิ้นสุดการสนับสนุนสำหรับสาขา Postfix 3.2 ซึ่งเปิดตัวในต้นปี 2017 Postfix เป็นหนึ่งในโปรเจ็กต์หายากที่รวมความปลอดภัย ความน่าเชื่อถือ และประสิทธิภาพสูงเข้าด้วยกัน ซึ่งทำได้สำเร็จด้วยสถาปัตยกรรมที่คิดมาอย่างดีและนโยบายที่ค่อนข้างเข้มงวดสำหรับการออกแบบโค้ดและการตรวจสอบแพตช์ โค้ดโปรเจ็กต์ถูกแจกจ่ายภายใต้ EPL 2.0 (Eclipse Public License) และ IPL 1.0 (IBM Public License)

จากการสำรวจอัตโนมัติในเดือนเมษายนเกี่ยวกับเมลเซิร์ฟเวอร์ประมาณ 600 ตัว Postfix ใช้กับเมลเซิร์ฟเวอร์ 33.66% (34.29 ปีที่แล้ว 59.14%) ส่วนแบ่งของ Exim คือ 57.77% (3.6%), Sendmail - 3.83% (2.02) %), MailEnable - 2.12% (0.60%), MDaemon - 0.77% (0.32%), Microsoft Exchange - 0.47% (XNUMX%)

นวัตกรรมหลัก:

  • เนื่องจากการเปลี่ยนแปลงในโปรโตคอลภายในที่ใช้สำหรับการโต้ตอบระหว่างส่วนประกอบ Postfix จึงจำเป็นต้องหยุดเซิร์ฟเวอร์เมลด้วยคำสั่ง "postfix stop" ก่อนทำการอัพเดต มิฉะนั้น อาจมีความล้มเหลวเมื่อโต้ตอบกับกระบวนการรับสินค้า, qmgr, ตรวจสอบ, tlsproxy และกระบวนการหลังหน้าจอ ซึ่งอาจส่งผลให้เกิดความล่าช้าในการส่งอีเมลจนกว่า Postfix จะรีสตาร์ท
  • การกล่าวถึงคำว่า "ขาว" และ "ดำ" ที่สมาชิกบางคนในชุมชนมองว่าเป็นการเหยียดเชื้อชาติได้ถูกลบออกไปแล้ว แทนที่จะใช้ "whitelist" และ "blacklist" ตอนนี้ควรใช้ "allowlist" และ "denylist" (เช่น พารามิเตอร์ postscreen_allowlist_interfaces, postscreen_denylist_action และ postscreen_dnsbl_allowlist_threshold) การเปลี่ยนแปลงส่งผลต่อเอกสาร การตั้งค่ากระบวนการหลังหน้าจอ (ไฟร์วอลล์ในตัว) และการสะท้อนข้อมูลในบันทึก postfix/postscreen[pid]: ALLOWLIST VETO [ที่อยู่]:พอร์ต postfix/postscreen[pid]: ALLOWLISTED [ที่อยู่]:พอร์ต postfix/postscreen[pid]: DENYLISTED [ที่อยู่]:พอร์ต

    เพื่อรักษาข้อกำหนดก่อนหน้านี้ไว้ในบันทึก จึงได้จัดเตรียมพารามิเตอร์ “respectful_logging = no” ซึ่งควรระบุใน main.cf ก่อน “compatibility_level = 3.6” การรองรับชื่อการตั้งค่า postscreen แบบเก่ายังคงอยู่เพื่อความเข้ากันได้แบบย้อนหลัง นอกจากนี้ ไฟล์การกำหนดค่า “master.cf” ยังคงไม่มีการเปลี่ยนแปลงในขณะนี้

  • ในโหมด "compatibility_level = 3.6" สวิตช์เริ่มต้นถูกสร้างขึ้นเพื่อใช้ฟังก์ชันแฮช SHA256 แทน MD5 หากคุณตั้งค่าเวอร์ชันก่อนหน้าในพารามิเตอร์ความเข้ากันได้ระดับ MD5 จะยังคงใช้ต่อไป แต่สำหรับการตั้งค่าที่เกี่ยวข้องกับการใช้แฮชซึ่งไม่ได้กำหนดอัลกอริทึมไว้อย่างชัดเจน คำเตือนจะแสดงในบันทึก การสนับสนุนเวอร์ชันส่งออกของโปรโตคอลการแลกเปลี่ยนคีย์ Diffie-Hellman ถูกยกเลิกแล้ว (ตอนนี้ค่าของพารามิเตอร์ tlsproxy_tls_dh512_param_file จะถูกละเว้น)
  • วินิจฉัยปัญหาที่เกี่ยวข้องกับการระบุโปรแกรมตัวจัดการที่ไม่ถูกต้องใน master.cf ได้ง่ายขึ้น เพื่อตรวจพบข้อผิดพลาดดังกล่าว บริการแบ็กเอนด์แต่ละบริการ รวมถึง postdrop จะโฆษณาชื่อโปรโตคอลก่อนเริ่มการสื่อสาร และแต่ละกระบวนการของไคลเอนต์ รวมถึง sendmail จะตรวจสอบว่าชื่อโปรโตคอลที่โฆษณาตรงกับรูปแบบที่รองรับหรือไม่
  • เพิ่มประเภทการแมปใหม่ "local_login_sender_maps" เพื่อการควบคุมที่ยืดหยุ่นในการกำหนดที่อยู่ซองจดหมายของผู้ส่ง (ระบุไว้ในคำสั่ง "MAIL FROM" ระหว่างเซสชัน SMTP) ให้กับกระบวนการ sendmail และ postdrop ตัวอย่างเช่น หากต้องการอนุญาตให้ผู้ใช้ภายในเครื่อง ยกเว้น root และ postfix ระบุเฉพาะการเข้าสู่ระบบใน sendmail โดยใช้การเชื่อมโยง UID กับชื่อ คุณสามารถใช้การตั้งค่าต่อไปนี้: /etc/postfix/main.cf: local_login_sender_maps = inline :{ { root = *} , { postfix = * } }, pcre:/etc/postfix/login_senders /etc/postfix/login_senders: # อนุญาตให้ระบุทั้งการเข้าสู่ระบบและรูปแบบการเข้าสู่ระบบ@โดเมน /(.+)/ $1 $1…@example.com
  • เพิ่มและเปิดใช้งานโดยค่าเริ่มต้นการตั้งค่า “smtpd_relay_before_recipient_restrictions=yes” ซึ่งเซิร์ฟเวอร์ SMTP จะตรวจสอบ smtpd_relay_restrictions ก่อน smtpd_recipient_restrictions และไม่กลับกันเหมือนเมื่อก่อน
  • เพิ่มพารามิเตอร์ "smtpd_sasl_mechanism_list" ซึ่งมีค่าเริ่มต้นเป็น "!external, static:rest" เพื่อป้องกันข้อผิดพลาดที่ทำให้เกิดความสับสนในกรณีที่แบ็กเอนด์ SASL อ้างว่ารองรับโหมด "EXTERNAL" ซึ่งไม่รองรับใน Postfix
  • เมื่อแก้ไขชื่อใน DNS API ใหม่ที่รองรับมัลติเธรด (threadsafe) จะถูกเปิดใช้งานตามค่าเริ่มต้น หากต้องการสร้างด้วย API เก่า คุณควรระบุ “make makefiles CCARGS=”-DNO_RES_NCALLS…” เมื่อสร้าง
  • เพิ่มโหมด "enable_threaded_bounces = yes" เพื่อทดแทนการแจ้งเตือนเกี่ยวกับปัญหาการจัดส่ง การจัดส่งล่าช้า หรือการยืนยันการจัดส่งด้วย ID การสนทนาเดียวกัน (การแจ้งเตือนจะแสดงโดยโปรแกรมรับส่งเมลในชุดข้อความเดียวกัน พร้อมด้วยข้อความโต้ตอบอื่นๆ)
  • ตามค่าเริ่มต้น ฐานข้อมูลระบบ /etc/services จะไม่ถูกใช้อีกต่อไปเพื่อกำหนดหมายเลขพอร์ต TCP สำหรับ SMTP และ LMTP แต่หมายเลขพอร์ตจะถูกกำหนดค่าผ่านพารามิเตอร์known_tcp_ports (ค่าเริ่มต้น lmtp=24, smtp=25, smtps=submissions=465, submission=587) หากบริการบางอย่างหายไปจากknown_tcp_ports ระบบจะยังคงใช้ /etc/services ต่อไป
  • ระดับความเข้ากันได้ (“compatibility_level”) ได้รับการยกระดับเป็น “3.6” (พารามิเตอร์ถูกเปลี่ยนสองครั้งในอดีต ยกเว้น 3.6 ค่าที่รองรับคือ 0 (ค่าเริ่มต้น), 1 และ 2) จากนี้ไป "compatibility_level" จะเปลี่ยนเป็นหมายเลขเวอร์ชันที่มีการเปลี่ยนแปลงที่ละเมิดความเข้ากันได้ ในการตรวจสอบระดับความเข้ากันได้ มีการเพิ่มตัวดำเนินการเปรียบเทียบแยกต่างหากใน main.cf และ master.cf เช่น “<=level” และ “<level” (ตัวดำเนินการเปรียบเทียบมาตรฐานไม่เหมาะสม เนื่องจากจะถือว่า 3.10 น้อยกว่า 3.9)

ที่มา: opennet.ru

เพิ่มความคิดเห็น