Postfix master.cf กับ main.cf


12

ฉันเห็นหลายครั้งที่การตั้งค่าเดียวกันสามารถระบุได้ทั้งใน main.cf และใน master.cf โดยใช้คำนำหน้า -o

คำถามของฉันคือหนึ่งจะแทนที่อื่น ๆ และถ้าเป็นเช่นนั้นไฟล์ใดที่ได้รับความสำคัญหากการตั้งค่าเดียวกัน (ด้วยค่าที่แตกต่างกัน) จะพบในทั้งสอง?

ตัวอย่างเช่นถ้า

smtpd_tls_auth_only=yes

ถูกระบุใน main.cf แต่

-o smtpd_tls_auth_only=no 

มีการระบุไว้ใน master.cf สิ่งใดที่หนึ่งจะ Postfix ให้ความสนใจ?

คำตอบ:


12

ตามเอกสารแล้ว

-o name=value
                 Override  the  named  main.cf  configuration
                 parameter.

main.cfตั้งค่าเริ่มต้นที่ใช้โดยบริการทั้งหมดที่กำหนดไว้ใน master.cf; -o ตัวเลือกใน master.cf สามารถแทนที่สิ่งเหล่านี้ได้บนพื้นฐานต่อการบริการ


4

การตั้งค่าพื้นฐานใน main.cf นั้นถูกต้องและใช้ได้ทั่วโลกยกเว้นว่าถูกแทนที่ใน master.cf สำหรับ Postfix daemons เฉพาะ (smtpd, trivial-rewrite, cleanup, pickup, ... ) ตัวอย่างเช่นคุณอาจระบุsmtp_tls_security_level = mayใน main.cf และปิดการใช้งานสำหรับพอร์ตการส่งที่เชื่อมโยงกับ localhost สำหรับsmtpddaemon:

localhost:submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=none

แต่สำหรับพอร์ตการส่งข้อมูลในที่อยู่ IP ภายนอกคุณอาจบังคับใช้การเข้ารหัส:

1.2.3.4:submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o ...

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

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
  -o content_filter=
  -o ...
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings
  -o ...

แน่นอนว่าในระหว่างการดำเนินงานปกตินอก Amavis คุณต้องการการแมปที่อยู่ดังนั้นโดยค่าเริ่มต้นพวกเขาจะเปิดใช้งานใน main.cf


1
คุณไม่สามารถตั้งค่า IP ใหม่: พอร์ตสำหรับบริการได้ สิ่งนี้จะสร้างอินสแตนซ์ที่สองของบริการโดยใช้ชื่อเดียวกัน (อาจทำให้สับสน) และมีโอกาสมากกว่านอกขอบเขตของ OPs หากคุณทำบริการซ้ำให้ตั้งค่า-o syslog_name=secondserviceให้แยกความแตกต่างบริการในบันทึกของคุณเสมอ
adaptr

ขอบคุณสำหรับความคิดเห็น แต่ฉันรู้ดีว่า บริการหลายอย่างจำเป็นสำหรับการโฮสต์หลายโดเมนที่มีใบรับรอง SSL ที่แตกต่างกันและที่อยู่ IP ที่ต่างกัน ฉันเพียงแค่ให้ตัวอย่างโลกแห่งความจริงที่หนึ่งจะแทนที่การตั้งค่าจาก main.cf ใน master.cf
daff

ไม่ตอบคำถามของ OP และไม่รวมการเปลี่ยนแปลง syslog_name ที่ฉันอธิบายไว้ข้างต้น ฉันจะไม่พิจารณา "โลกแห่งความเป็นจริง" นี้และไม่สามารถดูว่า "ใบรับรอง SSL" เข้าสู่ที่ใด
adaptr

ฉันตอบคำถาม OP ในประโยคแรกของฉัน และเป็นตัวอย่างที่เกิดขึ้นจริงจากเซิร์ฟเวอร์ Postfix ที่โฮสต์ 18 โดเมน "ใบรับรอง SSL" เข้ามาเนื่องจากไม่มีสิ่งใดเช่นการโฮสต์เสมือนที่ใช้ชื่อ SSL ใน Postfix (ในทางปฏิบัติ) ดังนั้นจึงจำเป็นต้องกำหนดที่อยู่ IP หนึ่งรายการต่อโดเมน มิฉะนั้นจะไม่มีวิธีแสดงใบรับรอง SSL ที่ถูกต้องให้กับลูกค้า ต้องการทำเช่นนั้นหลายกรณีของsmtpdการให้บริการที่มีความจำเป็นแต่ละคนมีการตั้งค่าที่แตกต่างกันสำหรับmyhostname, smtpd_tls_key_file, smtpd_tls_cert_fileและอื่น ๆ การตั้งค่าเหล่านั้นจะถูกแทนที่ด้วย main.cf
daff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.