Wysyłanie emaili przez zewnętrzny server SMTP

Wysyłanie emaili przez zewnętrzny server SMTP
RD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 302
0

Cześć,

mam problem z wysyłaniem emaili przez .net smtp client na serwerze linux. Wszystko działa u mnie na komputerze z windows ale nie działa na serwerze.
Przy próbie wysłania emaila otrzymuje taki błąd:

Kopiuj
the server committed a protocol violation. the server response was: ugfzc3dvcmq6

Używam zewnętrznego serwera smtp od ovh: pro1.mail.ovh.net

Próbowałem telnetem wysłać emaila z poziomu serwera, żeby zdiagnozować w czym leży problem ale nie jestem w stanie tego zrobić

wykonuję polecenie

Kopiuj
EHLO yourdomain.com

widzę że

Kopiuj
AUTH: GSSAPI NTLM

próbowałem wysłać emaila ale jakiej bym metody auth nie użył to mam błąd

Kopiuj
XXXX is unrecognied authentication type
Kopiuj
telnet pro1.mail.ovh.net 587

HELO pro1.mail.ovh.net
AUTH LOGIN
MAIL FROM:<test@example.com>
RCPT TO:<test2@example.com>
DATA
Subject: Test email
Hello world!

.
QUIT

Miałem przez chwile skonfigurowane na serwerze wysyłanie emaili za pomocą .net smtp client który łączył się z serwerem smtp Gmail i tam wszystko działało. Tylko z tym smtp ovh jest jakiś problem.

Może macie jakieś wskazówki jak to zdiagnozować ?

BartoSAS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 310
1

A dokąd wysyłasz z ovh? Ostatnio też miałem taki problem, to okazało się, że np. gmail ma ich na czarnej liście i jak chciałem wysłać maila z własnej aplikacji, to trafiało do spamu.

nalik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1039
1

Ale ten bład sugeruje, że metoda autentykacji nie jest obsługiwana. Inna sprawa - zauważ, że "ugfzc3dvcmq6" to kod Base64 dla "passwd". To tłumaczy dlaczego przez telnet się nie udało. Mam wątpliwości czy poprawnie używasz metod logowania, które są wspierane.

mam problem z wysyłaniem emaili przez .net smtp client na serwerze linux. Wszystko działa u mnie na komputerze z windows ale nie działa na serwerze.

Z taką ilością szczegółów, to trudno wróżyć na czym polega różnica.

RD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 302
0

@nalik: jakich dodatkowych informacji potrzeba, to dodam?

Wysyłając telnet również próbowałem używać hasła w formacie base64

tak wygląda konfiguracja smtp client

Kopiuj
 "SmtpServer": "pro1.mail.ovh.net",
 "Port": 587
Kopiuj
using (var client = new SmtpClient(configuration.SmtpServer, configuration.Port))
            {
                try
                {
                    client.EnableSsl = true;
                    client.Credentials = new NetworkCredential(configuration.UserName, configuration.Token);

                    await client.SendMailAsync(CreateMailMessage(email, configuration.From));
                }
                catch (Exception ex)
                {
                    throw new Exception("sendig email exception", ex);
                }
                finally
                {
                    client.Dispose();
                }
            }
RD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 302
2

Uzyłem MailKit i okazało się że ten SMTP serwer od ovh nie wspiera ssl/tls. Uzyłem STARTTLS i działa.

Jakby ktoś to kiedyś miał podobny problem to co do telnet i uwierzytlnienia NTLM to temat jest trochę bardziej skomplikowany.
Tutaj linki które wyjaśniają jak tego używać.

https://curl.se/rfc/ntlm.html#ntlmSmtpAuthentication

https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smtpntlm/a048c79f-7597-401b-bcb4-521d682de765?redirectedfrom=MSDN!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.