Office 365 – SMTP server vrací autorizační chybu

MikKuba
Člen | 76
+
0
-

Ahoj,

Snažím se z aplikace posílat maily skrze klientův server Office 365, avšak bezúspěšně.
V configu mám nastavené připojení

mail:
	smtp: true  # use SmtpMailer instead of SendmailMailer
	host: 'smtp.office365.com'
	port: 587
	username: 'email@domena.cz'
	password: 'heslo'
	secure: 'tls' # possible values are ssl, tls or null

Přesto při snaze odeslat mail mi to vyhodí tuto chybu:
SMTP server did not accept password with error: 535 5.7.139 Authentication unsuccessful, the request did not meet the criteria to be authenticated successfully.

Googlil jsem už všelico, ale nic co by mě z problému dostalo.
Podle všeho je v klientu 365 povoleno SMTP. Předtím to ještě házelo chybu o chybném heslu, byť bylo správně. K tomu jsem našel náhodný tip, že stačí SMTP zakázat a zase povolit, což „pomohlo“ a přivedlo mě ale k chybě popsané tučně výše.

Nesetkal se prosím s tímto někdo?
Co vím tak Office 365 nějak loni měnil zabezpečení, přesně ale nevím co, ale nejspíš to mělo vliv i na toto SMTP.

Budu rád za jakékoliv rady, pokud je ještě co opravovat na straně aplikace a není to nastavením přímo na Office365.
Děkuji! :)

Editoval MikKuba (27. 6. 2023 11:41)

m.brecher
Generous Backer | 758
+
0
-

@MikKuba

Chyba na jakou Jsi narazil se na různých fórech opakuje často, v komentářích je opakovaně uváděno, že Microsoft ruší podporu Basic Authentication pro ověření hesla (SMTP ??), a mělo by se přejít na jiný způsob:

https://learn.microsoft.com/…hange-online

To je jeden z možných směrů, kudy pátrat.

Jiné komentáře radí, že podporu pro SMTP AUTH lze ještě aktivovat:

https://learn.microsoft.com/…p-submission#…

Editoval m.brecher (22. 6. 2023 21:04)

MikKuba
Člen | 76
+
0
-

m.brecher napsal(a):

@MikKuba

Chyba na jakou Jsi narazil se na různých fórech opakuje často, v komentářích je opakovaně uváděno, že Microsoft ruší podporu Basic Authentication pro ověření hesla (SMTP ??), a mělo by se přejít na jiný způsob:

https://learn.microsoft.com/…hange-online

To je jeden z možných směrů, kudy pátrat.

Jiné komentáře radí, že podporu pro SMTP AUTH lze ještě aktivovat:

https://learn.microsoft.com/…p-submission#…

Ten první článek jsem možná při rešerši viděl, ale dost možná mu nevěnoval pozornost.
Je tedy jasné že budu muset nastavit tu novou autorizaci a používat OAuth. Máš s novou implementací zkušenost prosím?

Co jsem teď tak prolítl i to nastavení v Microsoft Azure (které bude muset udělat klient, jehož je to emailový server) tak jsem tam viděl spíš jen nějaké nastavení Redirect URI pro autorizaci, avšak já ten server využívám k odesílání automatizovaných emailů, které spouští cron primárně. Nebude toto nějaký potenciálně problém?

Ale říkám si, že na toto se musí maily využívat drtivě, tedy nějaký proces který nijak neovládá z prohlížeče uživatel a tedy třeba připojení skrz nějaké popup okno apod nebude úplně funkční.

Děkuju!

Pavel Kravčík
Člen | 1182
+
0
-

Nastavení IMHO máš dobře, tohle používáme ve všech projektech. Funguje to na všechno (sdílené schránky, SPF na cizí domény), všechny problémy, které jsme řešili (errory při posílání) byly nastavením na straně MicroSoftu. Tj. při problémech jsme vlastně nemuseli šahat do kódu, ale vždy řešili nastavení infra (firewall) nebo nastavení přímo někde v o365. Máme na to externí firmu, tak moc neporadím, ale být Tebou zaměřím se spíš směrem, co jsem zmínil.

mail:
    host: smtp.office365.com
    port: 587
    username: xxxx
    password: xxxx
    smtp: true
    secure: tls

Z 2019 jsem našel mail, že někdo z ifra nastavil delší čas na HELLO SMTP server did not accept HELO, nastavili tam nějakou sekundu navíc a začalo fungovat.

Editoval Pavel Kravčík (27. 6. 2023 11:39)

Ozzrel
Generous Backer | 51
+
0
-

To potvrzuji nastavené to mám stejně. S OAuth2 jsem bojoval na začátku roku kdy MS zrušil Basic pro čtení. U SMTP to vynuceno není. Jen trvá na novějším TLS tak jsem musel updatovat sendmail pro Windows Server.

MikKuba
Člen | 76
+
0
-

Ozzrel napsal(a):

To potvrzuji nastavené to mám stejně. S OAuth2 jsem bojoval na začátku roku kdy MS zrušil Basic pro čtení. U SMTP to vynuceno není. Jen trvá na novějším TLS tak jsem musel updatovat sendmail pro Windows Server.

A funguje ti to i nyní a bude do budoucna, myslím čistě SMTP bez nějaké změny s tím OAuth? Updatoval sendmail myšleno jako ten balíček mailový, co poskytuje Nette a TLS zůstane, nebo tam bude i něco jako „starttls“?

Ozzrel
Generous Backer | 51
+
0
-

No funguje to SMTP přes sendmail. Je to Win Server tak to je prostě novější verze která má podporu TLS 1.2 Jestli začne MS vynucovat OAuth2 pro SMTP tak splním jejich další přání a to nepoužívat 365 pro robotické odesílání. Momentálně to funguje a ten basic potřebuju nejen já v PHP/Nette ale i Zabbix a tiskárny a další zařízení co někam něco hlásí. Pak prostě přejdu na SMTP od poskytovatele internetu nebo nějakou SMTP službu.

MikKuba
Člen | 76
+
0
-

Ozzrel napsal(a):

No funguje to SMTP přes sendmail. Je to Win Server tak to je prostě novější verze která má podporu TLS 1.2 Jestli začne MS vynucovat OAuth2 pro SMTP tak splním jejich další přání a to nepoužívat 365 pro robotické odesílání. Momentálně to funguje a ten basic potřebuju nejen já v PHP/Nette ale i Zabbix a tiskárny a další zařízení co někam něco hlásí. Pak prostě přejdu na SMTP od poskytovatele internetu nebo nějakou SMTP službu.

Omlouvám se za ještě jeden a nejspíš hloupý dotaz, ale je teda potřeba v konfiguraci v Nette měnit?
Balíčky nejsou nijak extra staré, třeba nette/mail je v3.1.10.

Nebo potřebuji od klienta nějaké jiné přístupy či změny přímo v Microsoft 365, eventuálně vytvořit aplikaci v Azure AD, jak vlastně skrz jeden proklik zmiňuje tento článek?
https://learn.microsoft.com/…hange-online

S mailovými servery mám prakticky nulovou zkušenost, vždy jsem si vystačil buďto s funkcí mail() anebo právě toto SMTP, kdy ale nebyl po zadání údajů do configu problém.

Děkuju moc!

Pavel Kravčík
Člen | 1182
+
0
-

Nette bude pravděpodobně v pohodě. Problém bude buď na serveru, kde běží Nette (mělo by podporovat TLS 1.2 apod. viz výše) anebo to bude problém v o365. Tam by měl být možná nějaký dodatečný log (protože tohle za nás vyřešil ten správce o365 bez zásahu do Nette).

MikKuba
Člen | 76
+
0
-

Pavel Kravčík napsal(a):

Nette bude pravděpodobně v pohodě. Problém bude buď na serveru, kde běží Nette (mělo by podporovat TLS 1.2 apod. viz výše) anebo to bude problém v o365. Tam by měl být možná nějaký dodatečný log (protože tohle za nás vyřešil ten správce o365 bez zásahu do Nette).

Když si vyhodím phpinfo(); tak vidím tento řádek:

Registered Stream Socket Transports | tcp, udp, unix, udg, ssl, sslv3, tls, tlsv1.0, tlsv1.1, tlsv1.2

Tedy hádám, že TLS1.2 na serveru je a při snaze spojení se využije? Protože v Tracy laděnce s chybou nedokážu najít, jaké TLS to používá. Zatím čekám na info, zda v o365 nenajdou nějaký log a případně jak to vyřešit.

kbtm
Člen | 22
+
0
-

Verze PHP ? Pro spojeni s o365 to vyžaduje nejméně 5.6.

MikKuba
Člen | 76
+
0
-

kbtm napsal(a):

Verze PHP ? Pro spojeni s o365 to vyžaduje nejméně 5.6.

PHP 8.0.27

Pavel Kravčík
Člen | 1182
+
0
-

Možná bych zkusil dát do Apache: SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1