Zhakowany sklep PrestaShop: fałszywa captcha „jesteś człowiekiem” to ClickFix
Jeśli Twój sklep pokazuje fałszywe „potwierdź, że jesteś człowiekiem”, ktoś podrzucił do niego kod. Gdzie się ukrywa w…
Poniedziałek rano. Klient pisze z pytaniem, czy jego sobotnie zamówienie dotarło, bo nic nie dostał. Otwierasz panel i jest, opłacone. Niedzielne też, i wszystkie zamówienia z całego tygodnia. Twój sklep sprzedaje, ale odkąd przeszedłeś na PrestaShop 9, ani jeden e-mail do nikogo nie dotarł.
Jeśli wysyłasz przez własny serwer poczty — OVH, Microsoft 365, Gmail albo serwer Twojego hostingu — na porcie 587, niczego źle nie ustawiłeś. To błąd PrestaShop 9 obecny we wszystkich wersjach od 9.0.0 do 9.1.5, naprawiony dopiero w 9.2, wydanej 30 września 2026.
Wejdź w Zaawansowane → Logi. Jeśli każde zamówienie zostawiło linię taką jak ta, to Twój przypadek:
Mailer Error: Connection could not be
established with host
"ssl://ssl0.ovh.net:587":
stream_socket_client(): SSL operation
failed with code 1. OpenSSL Error
messages: error:0A00010B:SSL
routines::wrong version number
Nazwa serwera będzie Twoja. Błąd zdradza ssl:// z przodu i :587 na końcu. Ten sam komunikat dostaniesz od razu, jeśli klikniesz „Wyślij wiadomość testową” w Zaawansowane → Adres e-mail.
Najgorsze jest wszystko to, co się nie dzieje. Klient nie widzi błędu, zamówienie się zapisuje, a płatność przechodzi. Dlatego zauważenie tego trwa całe dni i prawie zawsze mówi Ci o tym klient, pytając o fakturę albo numer przesyłki.
Są dwa sposoby szyfrowania rozmowy z serwerem poczty. W jednym wszystko jest szyfrowane od pierwszej sekundy i tego oczekuje port 465. W drugim najpierw mówi się „dzień dobry” bez szyfrowania, a potem prosi o przejście na rozmowę szyfrowaną: to port 587. To dwoje różnych drzwi i każde oczekuje, że zapukasz po swojemu.
Do PrestaShop 8 opcja „TLS” w panelu pukała do drzwi 587 tak, jak te drzwi oczekują. PrestaShop 9 wymienił komponent, którym wysyła e-maile (ze SwiftMailer na Symfony Mailer), i przy okazji zmienił działanie tej opcji: „TLS” szyfruje teraz od pierwszej sekundy. Puka do 587 tak, jakby to był 465, serwer odpowiada zwykłym „dzień dobry”, a PrestaShop, który czekał na zaszyfrowaną odpowiedź, nie umie jej zrozumieć. To właśnie jest „wrong version number”.
Dlatego psuje się dokładnie przy przejściu z 8 na 9: te same ustawienia, które działały, przestają działać, choć niczego nie ruszałeś. I dlatego zniknęła opcja „SSL”, którą miałeś wcześniej: w PrestaShop 9 lista szyfrowania oferuje tylko „Żaden” i „TLS”.
Zmieniasz to w Zaawansowane → Adres e-mail, z zaznaczoną opcją „Użyj własnych ustawień SMTP (tylko dla zaawansowanych)”. Co wpisać, zależy od portów, które akceptuje Twój dostawca, a my sprawdziliśmy je jeden po drugim na serwerach jedenastu dostawców:
ssl0.ovh.net), Gmail, IONOS, Hostinger, Brevo czy Mailjet —: szyfrowanie TLS i port 465. Tak jest ustawiony nasz własny sklep, a działa na PrestaShop 9.smtp.office365.com), OVH Email Pro (pro1, pro2 lub pro3.mail.ovh.net) i OVH Exchange —: szyfrowanie Żaden i port 587. U tych dostawców, w wersjach 9.0 i 9.1, „TLS” nie działa na żadnym porcie.Wiemy, że ta druga opcja wydaje się zła, bo mówi „Żaden”. Ale to nie znaczy, że Twoje hasło leci otwartym tekstem. Z tą opcją PrestaShop 9 mówi „dzień dobry” bez szyfrowania, a gdy tylko serwer zaproponuje szyfrowanie — a wszystkie te serwery to robią — szyfruje rozmowę, zanim wyśle użytkownika i hasło. Sprawdziliśmy to na serwerach Microsoft 365 i OVH: połączenie jest szyfrowane (TLS 1.3 w Microsoft, TLS 1.2 w OVH), zanim wyjdą jakiekolwiek dane.
Zapisz, wyślij testowy e-mail i, jeśli dotrze, gotowe: zamówienia złożone od teraz wysyłają swoje e-maile. Te, które utknęły po drodze, nie wyślą się same. Na stronie każdego zamówienia, w historii statusów, przycisk „Wyślij ponownie e-mail” wysyła jeszcze raz e-mail danego statusu, na przykład płatność przyjęta albo zamówienie wysłane.
Jeśli w PrestaShop 8 miałeś wybrane „SSL” z portem 465, po aktualizacji e-maile dalej wychodzą: PrestaShop 9 zachowuje tę wartość i traktuje ją jak swoje „TLS”. Problem pojawia się w dniu, w którym otworzysz tę stronę i klikniesz „Zapisz”, nawet żeby zmienić coś innego. Ponieważ „SSL” nie ma już na liście, panel pokazuje „Żaden” i to właśnie się zapisuje. Z „Żaden” i portem 465 sklep czeka na odpowiedź, która nigdy nie przychodzi, a log mówi Connection to "…:465" timed out.
Odtworzyliśmy to w naszym sklepie testowym. Zanim zapiszesz cokolwiek na tej stronie, sprawdź, czy szyfrowanie mówi to, co chcesz.
Wersja 9.2 naprawia to porządnie: „TLS” znowu działa na porcie 587, jak w PrestaShop 8. To zmiana 42197 w projekcie, która zamyka zgłoszenie otwarte w sierpniu 2024. Nie weszła do 9.1.5, ostatniej z linii 9.1: jeśli masz którąkolwiek wersję 9.0 lub 9.1, masz ten błąd.
Cokolwiek ustawisz dziś według tego artykułu, będzie działać po aktualizacji — „TLS” z 465 i „Żaden” z 587 wysyłają tak samo w 9.2 — więc nie ma czego cofać. Napraw pocztę teraz, a aktualizuj, kiedy Ci pasuje, bez pośpiechu: 9.2 przynosi duże zmiany, takie jak nowy proces zamówienia na jednej stronie, a Twoje moduły płatności i wysyłki muszą być na to gotowe. Taką aktualizację testuje się najpierw na kopii sklepu.
Microsoft zapowiedział, że pod koniec grudnia 2026 domyślnie wyłączy wysyłanie z aplikacji na nazwę użytkownika i hasło, czyli dokładnie tak, jak wysyła PrestaShop. Administrator Twojego konta Microsoft będzie mógł to włączyć z powrotem, a ostateczna data usunięcia zostanie ogłoszona w drugiej połowie 2027 roku. Jeśli Twój sklep wysyła e-maile przez Microsoft 365, to dobry moment, żeby przenieść go na usługę e-maili transakcyjnych, taką jak Brevo czy Mailjet, i mieć tę datę z głowy.
Log mówi Ci, gdzie szukać dalej. Jeśli pisze Failed to authenticate, chodzi o użytkownika albo hasło: użytkownik to zawsze pełny adres, a w Microsoft 365 skrzynka musi mieć włączony uwierzytelniony SMTP. Jeśli pisze timed out, albo ten port nie istnieje u Twojego dostawcy — Microsoft 365 i OVH Email Pro nie mają 465 — albo złapała Cię pułapka z listą, albo Twój hosting nie wypuszcza ruchu na tym porcie.
A jeśli wolisz, żeby przyjrzał się temu ktoś, kto już to rozwiązał, wyślij nam komunikat z logu i swoją wersję PrestaShop. Powiemy Ci, co ustawić w Twoim przypadku, a jeśli kryje się za tym coś jeszcze, sprawimy, że zadziała.
Kiedy Twoje e-maile znowu wychodzą, niech będą warte otwarcia: o tym pisaliśmy w tekście potwierdzenie zamówienia to najgorsza strona Twojego sklepu.
Jeśli Twój sklep pokazuje fałszywe „potwierdź, że jesteś człowiekiem”, ktoś podrzucił do niego kod. Gdzie się ukrywa w…
Z zagranicy działa, z Hiszpanii się nie ładuje — akurat w dzień meczu. To nie Twój serwer, tylko zablokowany adres IP…
Moduł, aplikacja, serwer, który sprawia problemy, albo coś pilnego. Odpowiadamy w ciągu 24 godzin, ze stałą wyceną: cena i termin.