Задать вопрос

Почему не отправляются письма по SMTP с сервера Ubuntu, но с локалки Windows все хорошо?

Доброго времени суток!

Есть код на C#, который отправляет письма:
MailMessage mail = new MailMessage();
        mail.From = new MailAddress(EmailLogin); 
        mail.To.Add(new MailAddress(emailAddress)); 
        mail.Subject = "SUBJECT";
        mail.IsBodyHtml = false;
        mail.Body = "Body";

        SmtpClient client = new SmtpClient();
        client.Host = "smtp.mail.ru";
        client.Port = 587; 
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential(EmailLogin, EmailPassword); 
        client.Send(mail);


С локальной машины(ПК на котором писал и тестировал код) все ок, залил код на сервер Ubuntu, получается следующая ошибка:
spoiler

error:0E076071:configuration file routines:MODULE_RUN:unknown module name
The type initializer for 'SslInitializer' threw an exception.
The type initializer for 'Ssl' threw an exception.
The type initializer for 'SslMethods' threw an exception.
The type initializer for 'SslMethods' threw an exception.
Authentication failed, see inner exception.
Authentication failed, see inner exception.
Authentication failed, see inner exception.
Authentication failed, see inner exception.
17:54:35.388 | Error | ResetPassword | Message: Authentication failed, see inner exception. | StackTrace: at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)
at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ProcessAuthentication(LazyAsyncResult lazyResult, CancellationToken cancellationToken)
at System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)
at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
at System.Net.TlsStream.AuthenticateAsClient()
at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port)
at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port)
at System.Net.Mail.SmtpClient.GetConnection()
at System.Net.Mail.SmtpClient.Send(MailMessage message)


Как я понимаю, копать нужно в сторону ssl, но в этом я особо ничего не смыслю, есть опыт только подключения сертификатов для домена, но тут голая ВМ с открытым статичным IP, домена никакого нет, да и не нужен.

Версия OpenSSL 3.0.2

Мне бы понять, в какую сторону копать то. Спасибо!
  • Вопрос задан
  • 503 просмотра
Подписаться 3 Простой 9 комментариев
Решения вопроса 1
@Senture Автор вопроса
Спасибо всем огромное! Помог топик с issue на github. Ссылку предоставил пользователь AlexVWill в комментариях!

А именно 1ый пункт
1. Comment out the ssl_conf value in /etc/ssl/openssl.cnf
2. Uninstall OpenSSL 1.0.x
3. Set CLR_OPENSSL_VERSION_OVERRIDE=1.1 to force OpenSSL 1.1 to be used. (2.1 prefers binding to OpenSSL 1.0.x because that's what it shipped with... it only uses 1.1 if explicitly told to, or if 1.0 isn't available)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы