Với Microsoft vô hiệu hóa xác thực cơ bản trong Exchange Online, tôi bắt đầu thêm hỗ trợ Xác thực hiện đại trong ứng dụng của mình. Ứng dụng của chúng tôi gửi thông báo email cơ bản. Hiện tại, chúng tôi sử dụng xác thực cơ bản SMTP hoặc chuyển tiếp mở cho việc này, nhưng Xác thực hiện đại sẽ là một bổ sung tuyệt vời.
Để hiểu đầy đủ quy trình, tôi muốn thực hiện toàn bộ quy trình email theo cách thủ công. Tôi có một đối tượng thuê phát triển tại Microsoft, trong đó tôi đã đăng ký ứng dụng của mình. Tôi không gặp vấn đề gì khi nhận mã thông báo Oauth với phạm vi email. Đó là giao tiếp với máy chủ SMTP mà tôi không thể vượt qua.
Vì giao tiếp phải được mã hóa, tôi sử dụng openssl (thay vì telnet). Tôi kết nối với máy chủ bằng lệnh này:
openssl s_client -connect smtp.office365.com:587 -crlf -starttls smtp
Có một số phản hồi xung quanh đàm phán SSL và sau đó máy chủ phản hồi:
250 SMTPUTF8
Tại thời điểm đó, tôi tin rằng tôi phải sử dụng lệnh EHLO. Tuy nhiên, sau khi
EHLO
Phản hồi chỉ là (Máy chủ thay đổi sau mỗi lần thử)
' [AM4PR0101CA0056.eurprd01.prod.exchangelabs.com]
Tại thời điểm này tôi không chắc phải làm gì. Tôi tin rằng có thể cần phải chèn một số miền sau lệnh ehlo (để xác định đối tượng thuê trực tuyến của Microsoft để kết nối?). Tuy nhiên, bất kể tên miền nào tôi chèn vào, phản hồi luôn là:
501 5.5.4 Tên miền không hợp lệ [AM4PR0101CA0056.eurprd01.prod.exchangelabs.com]
Ai đó có thể giải thích cách bắt đầu liên lạc với đối tượng thuê Microsoft Exchange Online qua OpenSSL không? Tôi phải đặt gì sau EHLO? Tôi có đang kết nối với đúng địa chỉ không? Tôi chỉ đang cố gắng đạt đến điểm mà tôi có thể đưa ra lệnh AUTH XOAUTH2 để đăng nhập vào đối tượng thuê của mình.
Tôi đã có thể thực hiện toàn bộ quy trình trên máy chủ smtp của Gmail (smtp.gmail.com). Trên đó, bạn thêm gì sau lệnh ehlo không quan trọng, sau khi ban hành nó, bạn sẽ được chào đón và có thể tiến hành đăng nhập bằng các lệnh AUTH khác nhau.