กรณีใช้งาน: เรามี Eaton PDU/PSU หลายตัวที่ไม่รองรับการตรวจสอบสิทธิ์ SSL/TLS ฉันได้รับมอบหมายให้สร้างเซิร์ฟเวอร์ส่งต่อ SMTP ที่สามารถรับอีเมล SMTP/25 พื้นฐานและส่งต่อไปยังผู้ให้บริการอีเมลของเราผ่าน SSL

หมายเหตุ: โฮสต์รีเลย์ทำให้การเชื่อมต่อ smtps บน 465 โดยใช้ stunnel

ฉันอยู่ในจุดที่เซิร์ฟเวอร์ SMTP Postfix Relay ของฉันสามารถส่งอีเมลได้สำเร็จผ่านผู้ให้บริการอีเมลของเรา alimail แต่ฉันไม่สามารถส่งต่ออีเมลจากโฮสต์อื่นในเครือข่ายของเราได้

/etc/postfix/main.cf

smtpd_banner = mail01v-la ESMTP
inet_interfaces = all
inet_protocols = ipv4

mynetworks = 127.0.0.0/8, 10.96.80.0/24
relayhost = [127.0.0.1]:5000
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CApath = /etc/ssl/certs
smtp_use_tls = no
smtp_generic_maps = regexp:/etc/postfix/generic

/etc/postfix/sasl_passwd

[127.0.0.1]:5000 [email protected]:notifypwd

/etc/postfix/ทั่วไป

/^[email protected](.*)$/ [email protected]

/etc/stunnel/stunnel.conf

client = yes
foreground = no

[smtps]
accept = 5000
connect = smtp.mxhichina.com:smtps

SMTP Telnet ไปยังผู้ให้บริการ

[[email protected] ~]# telnet smtp.mxhichina.com smtp
Trying 205.204.101.152...
Connected to smtp.mxhichina.com.
Escape character is '^]'.
220 smtp.aliyun-inc.com MX AliMail Server
ehlo google.come
250-smtp.aliyun-inc.com
250-STARTTLS
250-8BITMIME
250-AUTH=PLAIN LOGIN XALIOAUTH
250-AUTH PLAIN LOGIN XALIOAUTH
250-PIPELINING
250 DSN

กำลังตรวจสอบการเชื่อมต่อ Stunnel

[[email protected] ~]# telnet 127.0.0.1 5000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 smtp.aliyun-inc.com MX AliMail Server

การส่งอีเมลจากเซิร์ฟเวอร์รีเลย์

echo "Stack Body" | mail -s "Test Subject for Stack" [email protected]

ผลลัพธ์

Feb 14 18:30:29 mail01v-la postfix/pickup[4812]: 3194940DE2: uid=0 from=<root>
Feb 14 18:30:29 mail01v-la postfix/cleanup[4865]: 3194940DE2: message-id=<[email protected]>
Feb 14 18:30:29 mail01v-la postfix/qmgr[2606]: 3194940DE2: from=<[email protected]>, size=481, nrcpt=1 (queue active)
Feb 14 18:30:30 mail01v-la postfix/smtp[4867]: 3194940DE2: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:5000, delay=1.3, delays=0.01/0.01/0.85/0.46, dsn=2.0.0, status=sent (250 Data Ok: queued as freedom)
Feb 14 18:30:30 mail01v-la postfix/qmgr[2606]: 3194940DE2: removed

อีเมล

ทดสอบกับโฮสต์อื่น

เซิร์ฟเวอร์ CentOS สุ่ม

/etc/postfix/main.cf

relayhost = [10.96.80.126]:5000

ผลลัพธ์

Feb 14 18:06:52 test01v-la postfix/pickup[1247]: BB87C305A42F: uid=0 from=<root>
Feb 14 18:06:52 test01v-la postfix/cleanup[1387]: BB87C305A42F: message-id=<[email protected]>
Feb 14 18:06:52 test01v-la postfix/qmgr[1248]: BB87C305A42F: from=<[email protected]>, size=477, nrcpt=1 (queue active)
Feb 14 18:06:53 test01v-la postfix/smtp[1389]: BB87C305A42F: to=<[email protected]>, relay=10.96.80.126[10.96.80.126]:5000, delay=0.78, delays=0.01/0.01/0.61/0.15, dsn=5.0.0, status=bounced (host 10.96.80.126[10.96.80.126] said: 553 authentication is required (in reply to MAIL FROM command))

Eaton PSU

config เครดิต

ผลลัพธ์ของ Eaton

email[17131]: message error -110 in function smtp_start_session test - (Connection timed out) retrying smtp_start_session test email[17131]: Failed to connect to SMTP server 10.96.80.126:5000 with username [email protected]

__

นี่เป็นครั้งแรกที่ฉันทำการตั้งค่าแบบนี้ ความรู้ของฉันอาจมีช่องโหว่มากมายที่ทำให้ฉันเศร้าโศก

  1. ในการตั้งค่าที่เหมาะสม คุณจำเป็นต้องพิมพ์ข้อมูลรับรองอีกครั้งสำหรับโฮสต์ที่ต้องการใช้เซิร์ฟเวอร์รีเลย์หรือไม่ ตัวอย่างเช่น ในการกำหนดค่า eaton smtp ควรเป็น crds ของอีเมลที่ใช้ในไฟล์ sasl หรือไม่ หรือบัญชีระบบที่อนุญาตให้ส่งต่อด้วย postfix? หรือชื่อบัญชีที่กำหนดไว้ในไฟล์ postfix/ทั่วไป? เสียหน่อย.

  2. stunnel เป็นวิธีที่เหมาะสมที่ฉันควรจะเชื่อมต่อผ่าน ssl/tls หรือไม่ ฉันเห็น starttls พร้อมใช้งานใน telnet prompt สำหรับ smtp.mxhichina.com

พูดตามตรง ฉันคิดว่าฉันซับซ้อนเกินไปหรือขาดบางสิ่งที่ชัดเจน หากใครมีการตั้งค่าที่ดีกว่าเพื่อรองรับกรณีการใช้งานของฉัน จะได้รับการชื่นชมอย่างมากเช่นกัน


การเปลี่ยนการเชื่อมต่อ SSL จาก Stunnel เป็น Postfix เท่านั้น

ผลลัพธ์

Feb 20 11:27:22 mail01v-la postfix/qmgr[1537]: 6B38AE5EE: from=<[email protected]>, size=479, nrcpt=1 (queue active)
Feb 20 11:27:22 mail01v-la postfix/smtp[1558]: CLIENT wrappermode (port smtps/465) is unimplemented
Feb 20 11:27:22 mail01v-la postfix/smtp[1558]: instead, send to (port submission/587) with STARTTLS
Feb 20 11:27:40 mail01v-la postfix/smtp[1558]: 6B38AE5EE: to=<[email protected]>, relay=smtp.mxhichina.com[205.204.101.152]:465, delay=613, delays=595/0.02/19/0, dsn=4.4.2, status=deferred (lost connection with smtp.mxhichina.com[205.204.101.152] while receiving the initial server greeting)
Feb 20 11:32:22 mail01v-la postfix/qmgr[1537]: A3F736B2: from=<[email protected]>, size=477, nrcpt=1 (queue active)

main.cf

inet_interfaces = all
inet_protocols = ipv4

mynetworks = 127.0.0.0/8, 10.96.80.0/24
relayhost = [smtp.mxhichina.com]:465
smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_tls_wrappermode = yes

soft_bounce = yes
smtp_sasl_auth_soft_bounce = yes

/etc/postfix/sasl_passwd

smtp.mxhichina.com [email protected]:notifypwd
answer

สายของคุณ

  mynetworks = 127.0.0.0/8, 10.96.80.1/24

ดูไม่ถูกต้อง - คุณได้ระบุโฮสต์เดียว (ไม่แน่ใจว่าจะตีความเครือข่ายที่เกี่ยวข้องอย่างไร) ลองเปลี่ยนรายการที่สองเป็น 10.96.80 0 /24

เท่าที่ฉันสามารถบอกได้

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

ใช้เมื่อ postfix ทำหน้าที่เป็นไคลเอ็นต์ SMTP ไม่ใช่เซิร์ฟเวอร์ และเปิดใช้งานการตรวจสอบความถูกต้องของ postfix กับเซิร์ฟเวอร์ระยะไกล รายละเอียดเพิ่มเติมในhttp://www.postfix.org/SASL_README.html

ฉันคิดว่าคุณควรเปิดใช้งาน

smtpd_sasl_auth_enable = yes

และดูที่ส่วน"การเปิดใช้งานการพิสูจน์ตัวตนและการอนุญาต SASL ในเซิร์ฟเวอร์ Postfix SMTP"ของ readme ที่กล่าวถึงข้างต้น

เว้นแต่ว่าคุณกำลังใช้ Postfix เวอร์ชันเก่า คุณไม่จำเป็นต้องกำหนดค่าstunnelเพื่อพูดคุยกับผู้ให้บริการอีเมลของคุณโดยใช้ SSL/SMTPS Postfix >= 3.0 สามารถทำได้โดยตรงโดยการตั้งค่าพารามิเตอร์ต่อไปนี้ใน/etc/postfix/main.cf:

relayhost = [smtp.mxhichina.com]:465
smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_tls_wrappermode = yes

# Optional, but recommended to prevent mail loss
soft_bounce = yes
smtp_sasl_auth_soft_bounce = yes

จากนั้นใน your ของคุณ/etc/postfix/sasl_passwdให้ระบุรายการต่อไปนี้:

smtp.mxhichina.com [email protected]:notifypwd

เมื่อคุณเปลี่ยน/etc/postfix/sasl_passwdไฟล์ ตรวจสอบให้แน่ใจว่าpostmap /etc/postfix/sasl_passwdได้เรียกใช้บรรทัดคำสั่งแล้ว นอกจากนี้ ให้รันบรรทัดคำสั่งpostmap -q smtp.mxhichina.com hash:/etc/postfix/sasl_passwdเพื่อให้แน่ใจว่าข้อมูลรับรองการพิสูจน์ตัวตนถูกเก็บไว้อย่างถูกต้อง

อ้างอิง: http://www.postfix.org/TLS_README.html#client_smtps


เกี่ยวกับ Eaton PSU และเซิร์ฟเวอร์ CentOS อื่นๆ ในเครือข่ายของคุณ ฉันเชื่อว่าคุณต้องตั้งค่าที่อยู่ของเซิร์ฟเวอร์รีเลย์และพอร์ตของคุณ25/tcpเป็นเซิร์ฟเวอร์ SMTP/โฮสต์รีเลย์:

relayhost = [10.96.80.126]:25

การทำเช่นนี้ เซิร์ฟเวอร์ Postfix จะได้รับข้อความอีเมลโดยใช้การเชื่อมต่อ SMTP แบบธรรมดาและไม่ได้ตรวจสอบสิทธิ์ เก็บไว้ในคิวอีเมลของตัวเอง จากนั้นจึงส่งต่อข้อความไปยังผู้ให้บริการของคุณโดยใช้การเชื่อมต่อ SSL/SMTPS และข้อมูลประจำตัวที่เหมาะสม

ขอบคุณสำหรับทุกคนที่ช่วยเหลือ. การตั้งค่าดั้งเดิมของฉันถูกต้อง ยกเว้นพอร์ตที่ฉันพยายามเชื่อมต่อจากไคลเอนต์อื่น ซึ่งควรเป็น 25 แทนที่จะเป็น 5,000

อดีต. ในเซิร์ฟเวอร์สุ่ม CentOS:

/etc/postfix/main.cf

relayhost = [10.96.80.126]:25

สาเหตุที่ Eaton ไม่ทำงานเนื่องจากเครือข่ายไม่ได้ถูกกำหนดไว้ใน mynetworks ใน /etc/postfix/main.cf และเนื่องจากปัญหาการกำหนดเส้นทางไปยังเครือข่าย OOB ของฉัน

ขอบคุณทุกท่านที่ช่วยเหลือ