C++ SSL SMTP-сервер Протокол после путаницы StartSSL

Мне нужно написать собственную службу SMTP на C++, есть требование, чтобы она поддерживала SSL, я рассматривал два SMTP RFC 2821 и RFC 5321, но я не могу понять порядок сообщений. Я получаю следующее от почтового клиента.

Сообщения, полученные от почтового клиента:

[Received from client] EHLO PAULMORRISSAB5A
[Received from client] STARTTLS
[Received from client] ▬▬☺

Какое последнее сообщение и на что должен ответить сервер?

1 ответ

SSL-соединение с SMTP-сервером по протоколу STARTTLS (без аутентификации):

S: <waits for connection on TCP port 25>
C: <opens connection>
S: 220 mail.imc.org SMTP service ready
C: EHLO mail.example.com\r\n
S: 250-mail.imc.org offers a warm hug of welcome
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 DSN
C: STARTTLS\r\n
S: 220 Go ahead

Например, часть OpenSSL в C++ (вам не нужно отправлять эти 3 строки)

    C: <starts TLS negotiation>
    C & S: <negotiate a TLS session>
    C & S: <check result of negotiation>
C: EHLO mail.example.com\r\n
S: 250-mail.imc.org touches your hand gently for a moment
S: 250-8BITMIME
S: 250 DSN
C: mail from: <email>\r\n
S: 250 OK
C: rcpt to: <email@com.com>\r\n
S: 250 OK
C: DATA\r\n
S: 354 Go adead
C: From: <email>\r\n
C: To: <email@email.to>\r\n
C: Subject: Hello costam\r\n
C:
C: Hello from email smtp
C: 
C: .
S: 250 qued as 5s4f564ds65f4
C: quit
S: 221 Bye...

Простой C++ ssl smtp клиент здесь: https://github.com/breakermind/SslSMTPClient

Другие вопросы по тегам