บังคับให้เข้ารหัสสำหรับ SMTP ขาออกด้วย Postfix


22

ไม่มีใครรู้วิธีบอก Postfix ให้เข้ารหัสเมลที่ส่งออกหรือไม่

ฉันกำหนดค่าให้ใช้การเข้ารหัสที่แผนกต้อนรับ แต่ฉันไม่สามารถทำได้ด้วยจดหมายขาออก นี่คือmain.cfไฟล์ของฉัน:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

คำตอบ:


30

smtp_tls_security_level = เข้ารหัสหรือsmtp_enforce_tls = ใช่

สำหรับปลายทางเฉพาะคุณสามารถใช้smtp_tls_policy_maps

smtp_use_tls = ใช่และsmtp_enforce_tls = ใช่ถูกคัดค้าน ด้วย Postfix 2.3 และใหม่กว่าให้ใช้smtp_tls_security_levelแทน

เตือนความจำ: การบังคับใช้การเข้ารหัส TLS อาจทำให้เกิดปัญหาการส่งจดหมายสำหรับโฮสต์ SMTP ซึ่งไม่มีการกำหนดค่า TLS หากเซิร์ฟเวอร์ถูกใช้เพื่อส่งอีเมลไปยังเซิร์ฟเวอร์ภายในของคุณที่มี TLS ที่กำหนดค่าไว้เท่านั้นก็ไม่ใช่ปัญหาในกรณีนั้น แต่ถ้าเซิร์ฟเวอร์ใช้เพื่อส่งเมลไปยังเซิร์ฟเวอร์สาธารณะคุณไม่สามารถคาดเดาได้ว่าเซิร์ฟเวอร์ทั้งหมดมีการสนับสนุน TLS ในกรณีนั้นให้ใช้ smtp_tls_security_level = พฤษภาคม


1
ฉันคิดว่าเขาต้องการบังคับใช้จาก mailclient ซอฟต์แวร์ไปยัง mailserver ที่ส่งเท่านั้น ไม่ใช่จาก mailserver ถึง mailserver (ดูความคิดเห็นของเขาที่โพสต์เมื่อ 7 มี.ค. 10 เวลา 23:26)
Cojones

4

แนวคิดคือบังคับให้ผู้ใช้กำหนดค่าอีเมลไคลเอ็นต์ด้วยเซิร์ฟเวอร์ smtp ขาออกที่เข้ารหัส ด้วยความเชื่อมั่นในปัจจุบันธันเดอร์เบิร์ดปล่อยให้พวกเขาเลือกที่จะสื่อสารกับเซิร์ฟเวอร์ smtp ในรูปแบบข้อความธรรมดา ...

คุณไม่สามารถปิดการใช้งานตัวเลือกในธันเดอร์เบิร์ดโดยไม่ต้องคอมไพล์ซอร์สโค้ดใหม่ แต่คุณสามารถกำหนดค่า postfix stmpd daemon (ซึ่งรับจดหมายจากลูกค้าของคุณ) เพื่อบังคับใช้การเข้ารหัส ต้องการทำเช่นนั้นการใช้smtpd_tls_security_level = เข้ารหัสซึ่งเทียบเท่าของล้าสมัยตัวเลือกsmtpd_use_tls = yesและsmtp_enforce_tls = yes smtpd_tls_security_level = เข้ารหัสและsmtp_enforce_tls = ใช่หมายถึงsmtpd_tls_autls_auth_only = ใช่

จากเอกสารคู่มือ postfix เกี่ยวกับsmtpd_tls_security_level = เข้ารหัส

การเข้ารหัส TLS บังคับ: ประกาศการสนับสนุน STARTTLS ไปยังไคลเอนต์ SMTP และกำหนดให้ไคลเอนต์ใช้การเข้ารหัส TLS ตามRFC 2487นี้จะต้องไม่ถูกนำมาใช้ในกรณีของเซิร์ฟเวอร์ SMTP อ้างอิงสาธารณะ ตัวเลือกนี้ควรใช้กับเซิร์ฟเวอร์เฉพาะเท่านั้น

หากคุณใช้เซิร์ฟเวอร์สาธารณะคุณไม่สามารถบังคับใช้การเข้ารหัสอีเมลบนพอร์ต 25 / tcp ทางออกที่ดีกว่าคือปิดใช้งานการส่งจดหมายโดย postfix smtpd daemon พอร์ต 25 / tcp จากไคลเอ็นต์ของคุณและเปิดใช้งาน daemon การส่ง postfix (ซึ่งเป็น postfix พิเศษ smtpd daemon ใช้สำหรับรับจดหมายจากลูกค้าในพื้นที่ของคุณตามที่อธิบายไว้ในRFC 4409 ที่ทำงานบนพอร์ต 587 / tcp) . ต้องการทำเช่นนั้นชุดsmtpd_tls_security_level = อาจและลบpermit_sasl_authenticatedจากsmtpd_recipient_restrictions ในmaster.cfบรรทัดที่ไม่มีข้อคิดเห็นเกี่ยวกับ daemon การส่ง:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject

1

แค่อยากรู้คุณจะบอกได้อย่างไรว่ามันไม่ได้ใช้ TLS ค่าเริ่มต้นสำหรับ smtp_tls_loglevel (ซึ่งแตกต่างจาก smtpd_tls_loglevel) คือ 0 ดังนั้นโดยค่าเริ่มต้นคุณจะไม่เห็นอะไรเกี่ยวกับการเจรจา TLS สำหรับจดหมายขาออกในบันทึกของ Postfix

หากคุณตั้งค่า smtp_tls_loglevel = 1 หรือสูงกว่าคุณควรเห็นบรรทัดเช่นนี้ในบันทึกเมื่อมีการส่งข้อความ:

7 มี.ค. 22:28:10 ชั้น postfix / smtp [27400]: การเริ่มต้นเครื่องยนต์ TLS ฝั่งไคลเอ็นต์

ฉันยอมรับว่าฉันขี้เกียจ แต่นอกเหนือจากนั้น (และหมายเหตุของ ms ด้านบน) การตั้งค่านั้นดูดีสำหรับฉันในพริบตา


1
ฉันเข้าใจแล้วว่า Simon ต้องการบังคับให้เข้ารหัสเมลทั้งหมดโดยใช้ TLS smtp_use_tls = ใช่อนุญาตให้ใช้ postfix ของ TLS หากเซิร์ฟเวอร์ระยะไกลรองรับ (smtp_use_tls = ใช่เทียบเท่ากับ smtp_tls_security_level = พฤษภาคม) ข้อความที่เหมาะสมควรอยู่ใน maillog หากเมลขาออกถูกเข้ารหัสโดยใช้ TLS คุณคิดถูกว่าตัวเลือก smtp_ * นั้นเหมาะสำหรับ postfix daemon ที่แตกต่างจาก smtpd_ * (smtpd_ * สำหรับรับอีเมลจากเซิร์ฟเวอร์ระยะไกล smtp_ * ใช้สำหรับส่งจดหมายไปยังเซิร์ฟเวอร์ระยะไกล)
sumar

ที่จริงฉันคิดว่าคำถามอาจจะคลุมเครือเล็กน้อย อย่างน้อยฉันก็ไม่สามารถบอกได้ว่า Simon ต้องการให้ Postfix ต้องการ TLS หรือเพียงใช้ถ้าเซิร์ฟเวอร์ของผู้รับรองรับ
jlupolt

1
ขอบคุณสำหรับคำพูดของคุณฉันอาจจะอธิบายไม่ได้ แนวคิดคือบังคับให้ผู้ใช้กำหนดค่าอีเมลไคลเอ็นต์ด้วยเซิร์ฟเวอร์ smtp ขาออกที่เข้ารหัส ด้วยความเชื่อมั่นในปัจจุบันธันเดอร์เบิร์ดปล่อยให้พวกเขาเลือกที่จะสื่อสารกับเซิร์ฟเวอร์ smtp ในรูปแบบข้อความธรรมดา ... เป็นไปได้ไหมที่จะหลีกเลี่ยงปัญหานี้? ขอบคุณล่วงหน้า Simon
Simon

วิธีง่ายๆในการระบุว่า TLS นั้นเปิดใช้งานหรือไม่คือดูข้อความดิบที่ด้านรับและมองหา Authentication-Results: domainkeys = neutral (no sig); ซึ่งบ่งชี้ว่าไม่ได้ใช้ TLS
Scott Stensland ใน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.