ขณะนี้ฉันกำลังตั้งค่าเซิร์ฟเวอร์อีเมลส่วนตัวที่ไม่ซ้ำใครโดยใช้ OpenSMTPd ฉันมีเซิร์ฟเวอร์ภายในเครื่อง (Raspberry Pi) และเซิร์ฟเวอร์ระยะไกล (VPS) อีเมลที่ส่งถึงฉันจะถูกส่งไปยังเซิร์ฟเวอร์ระยะไกลและส่งต่อไปยังเซิร์ฟเวอร์ภายในของฉันเมื่อฉันส่งอีเมล อีเมลจะถูกส่งจากเซิร์ฟเวอร์ภายในของฉันไปยังเซิร์ฟเวอร์ระยะไกล แล้วส่งต่อไปยังผู้รับ ขณะนี้ฉันกำลังทดสอบเฉพาะจดหมายขาเข้า และส่วนใหญ่ใช้งานได้กับปัญหาเดียว tls
หากฉันตั้งค่า "tls-require" บนเซิร์ฟเวอร์ภายในของฉัน ดูเหมือนว่าเซิร์ฟเวอร์ระยะไกลของฉันจะสามารถเชื่อมต่อได้ แต่จากนั้นยกเลิกการเชื่อมต่อ และพยายามดาวน์เกรดเป็นแบบธรรมดา (smtp+notls) ซึ่งแน่นอนว่าล้มเหลว ถ้าฉันแค่ใช้ "tls" แทน "tls-require" สิ่งเดียวกันก็จะเกิดขึ้น แต่ความพยายาม smtp+notls นั้นใช้งานได้
ข้อความแสดงข้อผิดพลาดดูเหมือนจะไม่เป็นประโยชน์ บนเซิร์ฟเวอร์ระยะไกลฉันเพิ่งได้รับ " TLS ฉวยโอกาสล้มเหลว ดาวน์เกรดเป็นแบบธรรมดา " อย่างที่ฉันพูดไปก่อนหน้านี้บนเซิร์ฟเวอร์ภายในดูเหมือนว่าการเชื่อมต่อจะสำเร็จ (อย่างน้อยฉันก็คิดอย่างนั้น) แต่จากนั้นก็ยกเลิกการเชื่อมต่อ:
ที่อยู่ที่เชื่อมต่อ smtp=redacted.remote.ip.address โฮสต์=mx1.mydomain.tld
การเข้ารหัส smtp tls=TLSv1.3:TLS_AES_256_GCM_SHA384:256
smtp เหตุผลที่ตัดการเชื่อมต่อ = ยกเลิกการเชื่อมต่อ
ฉันได้รับข้อความแสดงข้อผิดพลาดที่มีข้อมูลมากกว่านี้ หากฉันพยายามส่งอีเมลโดยใช้ opensl (จากเซิร์ฟเวอร์ระยะไกล)
openssl s_client -debug -starttls smtp -crlf -เชื่อมต่อ redacted.local.ip.address:25
บนเซิร์ฟเวอร์ระยะไกล ทุกอย่างดำเนินไปได้ด้วยดีจนกระทั่งฉันป้อนผู้รับ ซึ่งจุดนั้นฉันได้รับข้อผิดพลาด SSL:
RCPT ถึง:<[email protected]>
เจรจาใหม่
17412933263728:ข้อผิดพลาด:1404C042:รูทีน SSL:ST_OK:เรียกฟังก์ชันที่คุณไม่ควรเรียก:/usr/src/lib/libssl/ssl_lib.c:2529:
ข้อผิดพลาดนั้นดูเหมือนจะบอกฉันได้มากขึ้น แต่ฉันไม่พบสิ่งที่เกี่ยวข้องเลย เซิร์ฟเวอร์ภายในแสดงข้อผิดพลาดเหมือนเดิมทุกประการ
ฉันรู้ว่าผู้คนจำนวนมากไม่ได้ใช้ TLS ที่บังคับใช้กับอีเมล แต่สำหรับกรณีการใช้งานนี้ ฉันอยากให้มันใช้งานได้จริงๆ
เซิร์ฟเวอร์ในเครื่องของฉันกำลังเรียกใช้ "Raspberry Pi OS 11 bullseye 64-bit" และ OpenSMTPD 6.8.0p2 (เวอร์ชันล่าสุดบน apt)
เซิร์ฟเวอร์ระยะไกลของฉันกำลังเรียกใช้ "OpenBSD 7.0 GENERIC#224 amd64" และ OpenSMTPD 7.0.0
คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม
นี่คือการกำหนดค่าของฉัน:
เซิร์ฟเวอร์ท้องถิ่น smtpd.conf:
นามแฝงตาราง "/etc/smtpd/นามแฝง"
โดเมนตาราง "/etc/smtpd/domains"
รหัสผ่านตาราง "/etc/smtpd/passwds"
ตารางเซิร์ฟเวอร์ระยะไกล "/etc/smtpd/remote-servers"
pki "mydomain.tld" ใบรับรอง "/etc/letsencrypt/live/mydomain.tld/fullchain.pem"
pki "mydomain.tld" คีย์ "/etc/letsencrypt/live/mydomain.tld/privkey.pem"
# ฉันต้องการ srs ที่นี่ บนรีโมท หรือทั้งสองอย่าง?
คีย์ srs "คีย์ที่ทำซ้ำ"
กรองการเชื่อมต่อเฟส "rdns" ตรงกัน !rdns ตัดการเชื่อมต่อ "550 DNS error"
ตัวกรองการเชื่อมต่อเฟส "fcrdns" ตรงกัน !fcrdns ตัดการเชื่อมต่อ "550 DNS error"
ตัวกรอง "rspamd" proc-exec "/etc/smtpd/filter-rspamd"
#ขาเข้า
ฟังบนพอร์ต eth0 25 tls-require pki "mydomain.tld" filter { "rdns", "fcrdns" "rspamd" }
#listen บนพอร์ต eth0 25 tls pki "mydomain.tld" filter { "rdns", "fcrdns" "rspamd" }
การดำเนินการ "RECV" lmtp "/var/run/dovecot/lmtp" rcpt-to virtual <นามแฝง>
จับคู่จาก src <เซิร์ฟเวอร์ระยะไกล> สำหรับโดเมน <โดเมน> การดำเนินการ "RECV"
จับคู่ !จาก src <เซิร์ฟเวอร์ระยะไกล> สำหรับโดเมน <โดเมน> ปฏิเสธ
#ขาออก
ฟังบนพอร์ต eth0 465 smtps pki "mydomain.tld" auth <passwds> filter "rspamd" mask-src
ฟังบนพอร์ต eth0 587 tls-require pki "mydomain.tld" auth <passwds> filter "rspamd" mask-src
การดำเนินการ "ส่ง" โฮสต์รีเลย์ mx1.mydomain.tld:465
จับคู่จากการรับรองความถูกต้องสำหรับการกระทำใด ๆ "ส่ง"
เซิร์ฟเวอร์ระยะไกล smtpd.conf:
นามแฝงตาราง "/etc/smtpd/นามแฝง"
โดเมนตาราง "/etc/smtpd/domains"
pki "mydomain.tld" ใบรับรอง "/etc/letsencrypt/live/mydomain.tld/fullchain.pem"
pki "mydomain.tld" คีย์ "/etc/letsencrypt/live/mydomain.tld/privkey.pem"
# ฉันต้องการ srs ที่นี่ บนรีโมท หรือทั้งสองอย่าง?
คีย์ srs "คีย์ redacted เดียวกัน"
กรองการเชื่อมต่อเฟส "rdns" ตรงกัน !rdns ตัดการเชื่อมต่อ "550 DNS error"
ตัวกรองการเชื่อมต่อเฟส "fcrdns" ตรงกัน !fcrdns ตัดการเชื่อมต่อ "550 DNS error"
#ขาเข้า
ฟังบนพอร์ต eth0 25 tls pki "mydomain.tld" filter { "rdns", "fcrdns" }
การดำเนินการ "RECV" โฮสต์รีเลย์ redacted.local.ip.address:25
จับคู่จากการกระทำใด ๆ สำหรับโดเมน <domains> "RECV"
#ขาออก
ฟังบนพอร์ต eth0 465 smtps pki "mydomain.tld" mask-src
การดำเนินการ "ส่ง" รีเลย์ srs
จับคู่จาก src redacted.local.ip.address สำหรับการดำเนินการใด ๆ "ส่ง"
จับคู่ !from src redacted.local.ip.address สำหรับการปฏิเสธใดๆ
นี่คือเมลล็อกถ้าฉันมี "tls-require" ชุด:
จดหมายบันทึกของเซิร์ฟเวอร์ท้องถิ่น:
3 เมษายน 11:57:26 LocalHostname smtpd [3614276]: 3c3d3943d2bc7134 ที่อยู่ที่เชื่อมต่อ smtp = redacted.remote.ip.address host = mx1.mydomain.tld
3 เมษายน 11:57:26 LocalHostname smtpd[3614276]: 3c3d3943d2bc7134 smtp tls ciphers=TLSv1.3:TLS_AES_256_GCM_SHA384:256
3 เมษายน 11:57:26 LocalHostname smtpd[3614276]: 3c3d3943d2bc7134 smtp เหตุผลที่ตัดการเชื่อมต่อ = ตัดการเชื่อมต่อ
3 เมษายน 11:57:26 LocalHostname smtpd [3614276]: 3c3d39441db05cc1 ที่อยู่ที่เชื่อมต่อ smtp = redacted.remote.ip.address host = mx1.mydomain.tld
3 เมษายน 11:57:26 LocalHostname smtpd[3614276]: 3c3d39441db05cc1 smtp คำสั่งล้มเหลว command="MAIL FROM:<[email protected]>" result="530 5.5.1 คำสั่งไม่ถูกต้อง: ต้องออก STARTTLS สั่งก่อน"
3 เมษายน 11:57:43 LocalHostname smtpd [3614276]: 3c3d39441db05cc1 smtp เหตุผลที่ตัดการเชื่อมต่อ = ออก
จดหมายบันทึกเซิร์ฟเวอร์ระยะไกล:
3 เมษายน 11:57:19 RemoteHostname smtpd[94758]: 7349563019b45aeb smtp ที่เชื่อมต่อ =209.85.128.178 host=mail-yw1-f178.google.com
3 เมษายน 11:57:19 RemoteHostname smtpd [94758]: 7349563019b45aeb smtp tls ciphers = TLSv1.3:AEAD-AES256-GCM-SHA384:256
3 เมษายน 11:57:20 RemoteHostname smtpd[94758]: 7349563019b45aeb ข้อความ smtp msgid=f8226363 size=2682 nrcpt=1 proto=ESMTP
3 เมษายน 11:57:20 RemoteHostname smtpd[94758]: 7349563019b45aeb smtp ซองจดหมาย evpid=f822636342a8821f from=<[email protected]> ถึง=<[email protected]>
3 เมษายน 11:57:20 RemoteHostname smtpd [94758]: 734956336de69e03 ที่อยู่เชื่อมต่อ mta = smtp://redacted.local.ip.address:25 host=redacted-local-ip-address.isp.tld
3 เมษายน 11:57:20 RemoteHostname smtpd [94758]: 734956336de69e03 mta เชื่อมต่อแล้ว
3 เมษายน 11:57:20 RemoteHostname smtpd[94758]: 7349563019b45aeb smtp เหตุผลที่ตัดการเชื่อมต่อ = ออก
3 เมษายน 11:57:20 RemoteHostname smtpd[94758]: smtp-out: ข้อผิดพลาดในเซสชัน 734956336de69e03: TLS ฉวยโอกาสล้มเหลว ปรับลดรุ่นเป็นแบบธรรมดา
3 เมษายน 11:57:20 RemoteHostname smtpd [94758]: 734956336de69e03 ที่อยู่เชื่อมต่อ mta=smtp+notls://redacted.local.ip.address:25 host=redacted-local-ip-address.isp.tld
3 เมษายน 11:57:20 RemoteHostname smtpd [94758]: 734956336de69e03 mta เชื่อมต่อแล้ว
3 เมษายน 11:57:20 RemoteHostname smtpd[94758]: 734956336de69e03 mta delivery evpid=f822636342a8821f from=<[email protected]> to=<[email protected]> rcpt=<-> source="redacted .remote.ip.address" relay="redacted.local.ip.address (redacted-local-ip-address.isp.tld)" delay=1s result="PermFail" stat="530 5.5.1 คำสั่งไม่ถูกต้อง: ต้อง ออกคำสั่ง STARTTLS ก่อน"
3 เมษายน 11:57:22 RemoteHostname smtpd [94758]: 73495634e55adfe9 ที่อยู่ที่เชื่อมต่อ smtp = local host = mx1.mydomain.tld
3 เมษายน 11:57:22 RemoteHostname smtpd[94758]: 73495634e55adfe9 smtp ล้มเหลวคำสั่ง command="RCPT TO: <[email protected]>" result="550 ผู้รับไม่ถูกต้อง: <redacted.email.address@ googlemail.com>"
3 เมษายน 11:57:22 RemoteHostname smtpd[11238]: เตือน: รายงานความล้มเหลวในการแทรก PermFail ในข้อความ f8226363 ถึง <[email protected]> สำหรับ 1 ซองจดหมาย: 550 ผู้รับไม่ถูกต้อง: <redacted.email.address@googlemail .com>
3 เมษายน 11:57:22 RemoteHostname smtpd [94758]: 73495634e55adfe9 smtp ยกเลิกการเชื่อมต่อเหตุผล = ออก
3 เมษายน 11:57:37 RemoteHostname smtpd [94758]: 734956336de69e03 สาเหตุการตัดการเชื่อมต่อ mta = ออกจากข้อความ = 0
และนี่คือเมล์ล็อก ถ้าฉันมี "ทล" ชุด:
จดหมายบันทึกของเซิร์ฟเวอร์ท้องถิ่น:
3 เมษายน 12:07:09 LocalHostname smtpd [3849290]: b981307e92d2eeac smtp ที่เชื่อมต่อ = redacted.remote.ip.address host = mx1.mydomain.tld
3 เมษายน 12:07:09 LocalHostname smtpd[3849290]: b981307e92d2eeac smtp tls ciphers=TLSv1.3:TLS_AES_256_GCM_SHA384:256
3 เมษายน 12:07:09 LocalHostname smtpd[3849290]: b981307e92d2eeac smtp เหตุผลที่ตัดการเชื่อมต่อ = ตัดการเชื่อมต่อ
3 เมษายน 12:07:09 LocalHostname smtpd [3849290]: b981307ff6e18ae3 ที่อยู่ที่เชื่อมต่อ smtp = redacted.remote.ip.address host = mx1.mydomain.tld
3 เมษายน 12:07:10 LocalHostname smtpd[3849290]: b981307ff6e18ae3 ข้อความ smtp msgid=082c7a5e size=2850 nrcpt=1 proto=ESMTP
3 เมษายน 12:07:10 LocalHostname smtpd[3849290]: b981307ff6e18ae3 ซองจดหมาย smtp evpid=082c7a5e9dec905f from=<[email protected]> to=<[email protected]>
3 เมษายน 12:07:11 LocalHostname dovecot: lmtp(3967460): เชื่อมต่อจากท้องถิ่น
3 เมษายน 12:07:11 LocalHostname dovecot: lmtp([email protected])<3967460><hmVpIN9/SWLkiTwAmV7YnQ>: msgid=<CACEbY1Hm4jdhjFKoZ2374zbEq1MZV-yTxsUauV4gzxXqNBVeaQ@mail.gmail.com>: บันทึกจดหมายไปที่ INBOX
3 เมษายน 12:07:11 LocalHostname dovecot: lmtp(3967460): ตัดการเชื่อมต่อจากโลคัล: ไคลเอ็นต์ออกจากการเชื่อมต่อ (state=READY)
3 เมษายน 12:07:11 LocalHostname smtpd[3849290]: b981308066da2115 mda delivery evpid=082c7a5e9dec905f from=<[email protected]> to=<[email protected]> rcpt=<[email protected]> ผู้ใช้=vmail ล่าช้า=ผลลัพธ์ 2 วินาที=ตกลง stat=ส่งแล้ว
3 เมษายน 12:07:27 LocalHostname smtpd[3849290]: b981307ff6e18ae3 smtp เหตุผลที่ตัดการเชื่อมต่อ = ออก
จดหมายบันทึกเซิร์ฟเวอร์ระยะไกล:
3 เมษายน 12:06:59 น. RemoteHostname smtpd[94758]: 73495635c8c7456b ที่อยู่ที่เชื่อมต่อ smtp=209.85.219.174 host=mail-yb1-f174.google.com
3 เมษายน 12:06:59 RemoteHostname smtpd [94758]: 73495635c8c7456b smtp tls ciphers = TLSv1.3:AEAD-AES256-GCM-SHA384:256
3 เมษายน 12:07:00 RemoteHostname smtpd[94758]: 73495635c8c7456b ข้อความ smtp msgid=b912e335 size=2670 nrcpt=1 proto=ESMTP
3 เมษายน 12:07:00 RemoteHostname smtpd[94758]: 73495635c8c7456b ซองจดหมาย smtp evpid=b912e33501250790 from=<[email protected]> ถึง=<[email protected]>
3 เมษายน 12:07:00 RemoteHostname smtpd [94758]: 7349563834c66e1a ที่อยู่เชื่อมต่อ mta = smtp://redacted.local.ip.address:25 host=redacted-local-ip-address.isp.tld
3 เมษายน 12:07:00 RemoteHostname smtpd[94758]: 7349563834c66e1a เชื่อมต่อ mta แล้ว
3 เมษายน 12:07:00 RemoteHostname smtpd[94758]: 73495635c8c7456b smtp เหตุผลที่ตัดการเชื่อมต่อ = ออก
3 เมษายน 12:07:00 RemoteHostname smtpd[94758]: smtp-out: ข้อผิดพลาดในเซสชัน 7349563834c66e1a: TLS ฉวยโอกาสล้มเหลว ปรับลดรุ่นเป็นแบบธรรมดา
3 เมษายน 12:07:00 RemoteHostname smtpd [94758]: 7349563834c66e1a ที่อยู่เชื่อมต่อ mta = smtp+notls://redacted.local.ip.address:25 host=redacted-local-ip-address.isp.tld
3 เมษายน 12:07:00 RemoteHostname smtpd[94758]: 7349563834c66e1a เชื่อมต่อ mta แล้ว
3 เมษายน 12:07:02 RemoteHostname smtpd [94758]: 7349563834c66e1a การจัดส่ง mta evpid=b912e33501250790 from=<[email protected]> to=<[email protected]> rcpt=<-> source="redacted .remote.ip.address" relay="redacted.local.ip.address (redacted-local-ip-address.isp.tld)" delay=2s result="Ok" stat="250 2.0.0 082c7a5e ข้อความได้รับการยอมรับสำหรับ จัดส่ง"
3 เมษายน 12:07:19 RemoteHostname smtpd [94758]: 7349563834c66e1a mta ยกเลิกการเชื่อมต่อเหตุผล = ออกจากข้อความ = 1
เซิร์ฟเวอร์ระยะไกล pf.conf:
# $OpenBSD: pf.conf,v 1.55 2017/12/03 20:40:04 จากนั้น Exp $
#
# ดู pf.conf(5) และ /etc/examples/pf.conf
ตั้งข้ามในแท้จริง
บล็อกการส่งคืน # บล็อกทราฟฟิกไร้สัญชาติ
ผ่าน # สร้าง Keep-State
# โดยค่าเริ่มต้น ไม่อนุญาตให้เชื่อมต่อระยะไกลกับ X11
บล็อกการกลับมาใน ! lo0 โปรโต tcp ไปยังพอร์ต 6000:6010
# ผู้ใช้สร้างพอร์ตไม่จำเป็นต้องใช้เครือข่าย
บล็อกการส่งคืนล็อกโปรโต {tcp udp} ผู้ใช้ _pbuild