Gmail ตั้งค่าสถานะอีเมล Dovecot ว่าไม่ปลอดภัย


10

ฉันคิดว่าฉันประสบความสำเร็จในการรักษาความปลอดภัยเซิร์ฟเวอร์อีเมล Postfix / Dovecot ของฉัน ฉันมีใบรับรองที่ลงนามจาก LetsEncrypt ซึ่งใช้ได้สำหรับโดเมนของฉัน

การส่งและรับทำงานได้ดี แต่เนื่องจาก Gmail เริ่มตั้งค่าสถานะอีเมลที่ไม่ปลอดภัยจดหมายทั้งหมดที่ส่งจากเซิร์ฟเวอร์ของฉันจะถูกตั้งค่าสถานะเป็นไม่เข้ารหัส

ผู้ใช้ Gmail เห็น "ข้อความนี้ไม่ได้เข้ารหัส" เช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ใน Postfix's main.cfท่ามกลางการตั้งค่าอื่น ๆ ฉันมี:

# SASL, for SMTP authentication
smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_path = private/auth

# TLS, for encryption
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtpd_tls_CAfile = /etc/letsencrypt/live/mydomain.com/chain.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mydomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mydomain.com/privkey.pem
tls_random_source = dev:/dev/urandom
smtpd_client_new_tls_session_rate_limit = 10
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_exclude_ciphers =
    EXP
    EDH-RSA-DES-CBC-SHA
    ADH-DES-CBC-SHA
    DES-CBC-SHA
    SEED-SHA
smtpd_tls_dh512_param_file = ${config_directory}/certs/dh_512.pem
smtpd_tls_dh1024_param_file = ${config_directory}/certs/dh_1024.pem
disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_delay_reject = yes

ใน Postfix's master.cfท่ามกลางการตั้งค่าอื่น ๆ ฉันมี:

smtp      inet  n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_use_tls=yes
  -o smtpd_tls_security_level=encrypt

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o broken_sasl_auth_clients=yes

ใน Dovecot's 10-ssl.confท่ามกลางการตั้งค่าอื่น ๆ ฉันมี:

ssl = required
ssl_ca = </etc/letsencrypt/live/mydomain.com/chain.pem
ssl_cert = </etc/letsencrypt/live/mydomain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mydomain.com/privkey.pem

Gmail กำลังตั้งค่าสถานะใบรับรอง LetsEncrypt อย่างไม่ถูกต้องเพราะไม่เชื่อถือหรืออีเมลของฉันถูกส่งโดยไม่เข้ารหัสหรือไม่


1
กรุณาโพสต์ main.cfPostfix คุณไม่ได้รวมทุกอย่างที่เกี่ยวข้องในตัวอย่างของคุณ
Michael Hampton

@MichaelHampton - แน่นอน ฉันได้เพิ่มเนื้อหาที่กำหนดเองทั้งหมดของ main.cf ของฉัน มันไม่รวมสิ่งพื้นฐานเช่นsmtpd_banner, myhostnameฯลฯ
gavanon

คำตอบ:


11

ฉันแก้ไขได้โดยเพิ่มทั้งสองบรรทัดเหล่านี้ใน Postfix's main.cf:

smtp_tls_security_level = may
smtpd_tls_security_level = may

(ฉันได้ตั้งค่าเพียงsmtpd_tls_security_levelเพราะบทความที่ทำให้เข้าใจผิดที่กล่าวว่าsmtp_ค่าทั้งหมดได้รับการพิจารณาในความโปรดปรานของsmtpd_.)


7

อีเมลของคุณถูกส่งแบบไม่เข้ารหัส หากคุณเพียงต้องการลองเพิ่มสิ่งต่อไปนี้ใน main.cf ของคุณให้ดีที่สุด

smtp_tls_security_level = may

หากต้องการบังคับใช้การเข้ารหัส TLS สำหรับอีเมลที่ส่งไปยัง Google ให้เพิ่มไปยัง main.cf ของคุณ

# Force TLS for outgoing server connection
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_tls_CApath = /etc/postfix/rootcas/ 

แทนที่ / etc / postfix / rootcas / ด้วยตำแหน่งของรูต CA ที่เชื่อถือได้ของคุณและในไฟล์ / etc / postfix / tls_policy

#/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
gmail.com       secure ciphers=high
google.com      secure ciphers=high
googlemail.com  secure ciphers=high

การดำเนินการนี้จะบังคับใช้ว่าอีเมลที่ส่งถึง gmail.com., google.com และ googlemail.com จะถูกเข้ารหัสและตรวจสอบความถูกต้องของเซิร์ฟเวอร์ SMTP

หากคุณไม่ต้องการพิสูจน์ตัวตนและเพียงเข้ารหัส (จำเป็นสำหรับเว็บไซต์ที่มีใบรับรองปลอม) ใช้

gmail.com       encrypt ciphers=high
google.com      encrypt ciphers=high
googlemail.com  encrypt ciphers=high

ก่อนที่จะเริ่มการทำงาน postfix ใหม่

postmap /etc/postfix/tls_policy

ขอบคุณสำหรับสิ่งนี้. สิ่งที่ฉันพยายามทำจริงๆคือบังคับให้ TLS ทุกครั้งที่เป็นไปได้สำหรับทุกจุดหมายปลายทางและถอยกลับไปที่ไม่เข้ารหัสอย่างปลอดภัยเป็นทางเลือกสุดท้ายหากปลายทางไม่รองรับ เป็นไปได้หรือไม่หากไม่มีรายการโดเมนที่เฉพาะเจาะจง ชอบการบังคับใช้ TLS ทั้งหมดหรือไม่
gavanon

ปัญหาคือมีเซิร์ฟเวอร์จำนวนมากที่ไม่รองรับ TLS และอื่น ๆ ที่รองรับและใช้ใบรับรองที่ลงนามเองหรือเป็นการหลอกลวง นอกจากนี้เนื่องจาก STARTLS ถูกส่งเป็นข้อความที่ชัดเจนผู้โจมตีที่ใช้งานสามารถดึงข้อมูลได้ระหว่างการขนส่ง ฉันยอมรับว่าการเก็บตารางที่ยาวแยกเป็นวิธีที่ปลอดภัยที่สุด แต่ไม่ใช่วิธีที่เชื่อถือได้มากที่สุด
Jofre


ขอบคุณ - ส่วนแรกของคำตอบของคุณมีประโยชน์: smtp_tls_security_level = may. นั่นคือทั้งหมดที่จำเป็นและการตั้งค่าเฉพาะของ Google ก็ไม่จำเป็น
gavanon

5

พิจารณาความสัมพันธ์ระหว่างลูกค้า / เซิร์ฟเวอร์โดยคำนึงถึง SMTP และการตั้งค่าเหมาะสม:

2.1 โครงสร้างพื้นฐาน

การออกแบบ SMTP สามารถวาดเป็น:

              +----------+                +----------+
  +------+    |          |                |          |
  | User |<-->|          |      SMTP      |          |
  +------+    |  Client- |Commands/Replies| Server-  |
  +------+    |   SMTP   |<-------------->|    SMTP  |    +------+
  | File |<-->|          |    and Mail    |          |<-->| File |
  |System|    |          |                |          |    |System|
  +------+    +----------+                +----------+    +------+
               SMTP client                SMTP server

(Src: rfc5321.txt)

ดังนั้น:

"smtp_tls_security_level" ใช้สำหรับไคลเอนต์ Postfix SMTP ดู: http://www.postfix.org/postconf.5.html#smtp_tls_security_level

"smtp d _tls_security_level" สำหรับเซิร์ฟเวอร์ Postfix SMTP โปรดดูที่: http://www.postfix.org/postconf.5.html#smtpd_tls_security_level

เมื่อ postfix กำลังถ่ายโอนเมลไปยัง gmail การตั้งค่าsmtp_tls_security_level เป็นการตั้งค่าที่เกี่ยวข้อง

เมื่อ postfix ได้รับเมลผ่าน smtp การตั้งค่าsmtp d _tls_security_levelเกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.