Score:-1

จะส่งอีเมลด้วย openssl และ Microsoft Exchange Online ได้อย่างไร

ธง vn

กับ Microsoft ปิดใช้งานการรับรองความถูกต้องพื้นฐานใน Exchange Onlineฉันตั้งใจจะเพิ่มการรองรับ Modern Authentication ในแอปพลิเคชันของเรา แอพของเราส่งการแจ้งเตือนทางอีเมลพื้นฐาน ขณะนี้เราใช้ SMTP Basic auth หรือ open relay สำหรับสิ่งนี้ แต่ Modern Auth จะเป็นส่วนเสริมที่ดี

เพื่อให้เข้าใจกระบวนการทั้งหมด ฉันต้องการดำเนินการตามกระบวนการอีเมลทั้งหมดด้วยตนเอง ฉันมีผู้เช่าการพัฒนาที่ Microsoft ซึ่งฉันได้ลงทะเบียนแอปพลิเคชันของเรา ฉันไม่มีปัญหาในการรับโทเค็น Oauth ด้วยขอบเขตอีเมล เป็นการสื่อสารกับเซิร์ฟเวอร์ SMTP ที่ฉันไม่สามารถผ่านได้

เนื่องจากการสื่อสารต้องมีการเข้ารหัส ฉันจึงใช้ opensl (แทน telnet) ฉันเชื่อมต่อกับเซิร์ฟเวอร์ด้วยคำสั่งนี้:

openssl s_client -เชื่อมต่อ smtp.office365.com:587 -crlf -starttls smtp

มีข้อเสนอแนะบางประการเกี่ยวกับการเจรจา SSL จากนั้นเซิร์ฟเวอร์ตอบกลับด้วย:

250 SMTPUTF8

เมื่อถึงจุดนั้น ฉันเชื่อว่าฉันควรใช้คำสั่ง EHLO อย่างไรก็ตามหลังจาก

EHLO

การตอบสนองเป็นเพียง (เซิร์ฟเวอร์เปลี่ยนแปลงทุกครั้งที่พยายาม)

' [AM4PR0101CA0056.eurprd01.prod.exchangelabs.com] 

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

501 5.5.4 ชื่อโดเมนไม่ถูกต้อง [AM4PR0101CA0056.eurprd01.prod.exchangelabs.com]

ใครช่วยอธิบายวิธีเริ่มต้นการสื่อสารกับผู้เช่า Microsoft Exchange Online ผ่าน OpenSSL ได้ไหม ฉันจะใส่อะไรหลังจาก EHLO? ฉันเชื่อมต่อกับที่อยู่ที่ถูกต้องหรือไม่ ฉันแค่พยายามไปถึงจุดที่สามารถออกคำสั่ง AUTH XOAUTH2 เพื่อเข้าสู่ระบบผู้เช่าของฉันได้

ฉันสามารถทำตามขั้นตอนทั้งหมดโดยใช้เซิร์ฟเวอร์ smtp ของ Gmail (smtp.gmail.com) ที่นั่น ไม่สำคัญว่าคุณจะเพิ่มอะไรหลังจากคำสั่ง ehlo หลังจากออกคำสั่งแล้ว คุณจะได้รับการต้อนรับและสามารถเข้าสู่ระบบด้วยคำสั่ง AUTH ต่างๆ ได้

Score:0
ธง us
Rob

เดอะ EHLO เป็นผู้สืบทอด "ขั้นสูง" ของผู้อาวุโสกว่า สวัสดี และมีวัตถุประสงค์เพื่อให้ไคลเอนต์ SMTP ของคุณแนะนำตัวเอง คล้ายจะบอกว่า "สวัสดี! ฉันชื่อร็อบ ยินดีที่ได้รู้จัก" คุณต้องระบุชื่อโฮสต์ของคุณเองหลัง EHLO

อาร์เอฟซี 5312

ไวยากรณ์:

"EHLO" "(ช่องว่าง)" "(โดเมน / ที่อยู่ตัวอักษร)" "CRLF"

ชื่อโดเมนที่กำหนดในคำสั่ง EHLO จะต้องเป็นชื่อหลัก ชื่อโฮสต์ (ชื่อโดเมนที่แปลงเป็นที่อยู่ RR) หรือถ้า โฮสต์ไม่มีชื่อ ที่อยู่ตามตัวอักษร ตามที่อธิบายไว้ใน หัวข้อ 4.1.3 และกล่าวถึงเพิ่มเติมในการอภิปราย EHLO ของ ส่วนที่ 4.1.4

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

vn flag
โอเค ฉันใช้บริการอย่างเช่น http://www.whatismyhostname.com/ เพื่อระบุชื่อโฮสต์ของฉัน smtp.office365.com ไม่ยอมรับสิ่งนี้ RFC ระบุไว้ใน 4.1.3 ว่าสามารถใช้ที่อยู่ตามตัวอักษร (ที่อยู่ IP) ในวงเล็บเหลี่ยมได้ ใช้งานไม่ได้เช่นกัน สิ่งนี้ใช้ได้ผลสำหรับคุณหรือไม่? หากคุณมี OpenSSL นี่เป็นการทดสอบที่ง่ายมาก
Score:0
ธง vn

ปัญหาของฉันอยู่ในคำสั่งเริ่มต้น:

openssl s_client -เชื่อมต่อ smtp.office365.com:587 -crlf -starttls smtp

และโดยเฉพาะอย่างยิ่งแฟล็ก -crlf - หากไม่มีสิ่งนี้ฉันสามารถป้อนอะไรก็ได้หลังจาก EHLO และยังคงได้รับการต้อนรับจากเซิร์ฟเวอร์ SMTP และดำเนินการต่อที่ AUTH

แฟล็กดูเหมือนจะทำบางอย่างกับการสิ้นสุดบรรทัดซึ่งเซิร์ฟเวอร์ SMTP นี้พิถีพิถันเป็นพิเศษ ดังนั้นคำสั่งนี้จึงใช้ได้กับฉัน:

opensl s_client -เชื่อมต่อ smtp.office365.com:587 -starttls smtp

ฉันได้อ่านแหล่งข้อมูลอื่นที่กล่าวถึงการเพิ่มการตั้งค่าสถานะนี้เพื่อแก้ไขปัญหา สำหรับการลบออกนั้นเป็นการหลอกลวง ฉันแนะนำให้ทุกคนที่มีปัญหาเดียวกันลองใช้ทั้งสองอย่าง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา