Giriş ekranındaki "Parolamı unuttum" bağlantısına tıkladınız, e-posta adresinizi yazdınız, WordPress size "Parola sıfırlama e-postası gönderildi" dedi — ama gelen kutusunda hiçbir şey yok. Beş dakika beklediniz, spam klasörüne baktınız, bir kez daha denediniz. WordPress şifre sıfırlama maili gelmiyor sorununun en can sıkıcı yanı şudur: internette bulacağınız çözümlerin neredeyse tamamı "bir SMTP eklentisi kurun" diyerek başlar, oysa siz zaten panele giremiyorsunuz — eklenti kuracak yeriniz yok.
Bu yazı meseleyi doğru uçtan tutuyor. Önce panele hiç girmeden hesabınızı geri almanın dört yolunu göstereceğiz; hesabınıza kavuştuktan sonra da mailin neden gitmediğini kalıcı olarak çözeceğiz. Ayrıca kimsenin anlatmadığı iki ihtimali de ele alacağız: sıfırlama bağlantısının süresinin dolmuş olabileceğini ve hesabınıza kayıtlı e-posta adresinin veritabanında sizin bildiğinizden farklı olma ihtimalini. Bu ikincisi sandığınızdan çok daha yaygındır ve mail "gitmiyor" değil, "başka bir yere gidiyor" demektir.
Önce Şunu Doğrulayın: Mail Gerçekten Gelmedi mi#
Kurtarma operasyonuna girişmeden önce iki dakikalık bir kontrol listesi çok işe yarar, çünkü vakaların azımsanmayacak kısmı bu adımda çözülür.
- Spam / Önemsiz klasörüne bakın. WordPress'in varsayılan gönderim adresi
wordpress@sunucuadibiçimindedir; bu adres genelde alan adınıza ait değildir ve SPF doğrulamasından geçemez. Gmail ve Outlook bu tür iletileri doğrudan spam'e atar. Maillerin spama düşme sebepleri yazısı arkadaki mekanizmayı anlatıyor. - Tüm Postalar / Arama kutusunu kullanın. Gmail'de arama çubuğuna
in:anywhere wordpressyazın. Filtreler iletiyi bir etikete taşımış olabilir. - Doğru adresi mi yazdınız. Sıfırlama formu hem kullanıcı adını hem e-postayı kabul eder. Kullanıcı adınızı yazdıysanız mail, o kullanıcıya kayıtlı adrese gider — sizin şu an baktığınız kutuya değil.
- Kurumsal mail kullanıyorsanız sunucu tarafındaki filtrelere bakın. cPanel'de tanımlı bir filtre iletiyi sessizce çöpe atıyor olabilir; cPanel e-posta filtreleri ekranından kontrol edebilirsiniz.
- 10 dakika bekleyin. Bazı sunucularda giden posta kuyruğu dolmuşsa iletiler birikir. "Hemen gelmedi" ile "hiç gelmiyor" farklı şeylerdir.
Bunların hiçbiri sonuç vermediyse gerçekten bir sorun var demektir ve panele girmeden kurtarma zamanı gelmiştir.
Neden Gelmiyor: Ana Sebepler#
| Sebep | Belirti | Kalıcı çözüm |
|---|---|---|
Sunucuda PHP mail() kapalı veya kısıtlı | Hiçbir WordPress maili gitmiyor | SMTP ile gönderim |
| Gönderici adresi alan adına ait değil | Mail gidiyor ama spam'e düşüyor | SMTP + doğru gönderici adresi |
| SPF/DKIM kaydı eksik veya hatalı | Gmail/Outlook reddediyor | DNS kayıtlarını düzeltmek |
| Sunucu IP'si kara listede | Bounce geliyor veya sessiz düşüyor | Kara listeden çıkış talebi |
| Kullanıcının kayıtlı e-postası yanlış | Mail başka adrese gidiyor | Veritabanından düzeltmek |
| Güvenlik eklentisi sıfırlamayı kapatmış | "Parola sıfırlama devre dışı" mesajı | Eklenti ayarı |
| Bağlantı süresi dolmuş | Mail geldi ama "geçersiz anahtar" diyor | Yeniden talep etmek |
Son iki satır özellikle önemlidir, çünkü bunlarda mail aslında gönderilmiştir — sorun teslimatta değil, başka yerdedir. Bunları birazdan ayrı başlıklarda ele alacağız.
Panele Girmeden Parolayı Sıfırlamanın Yolları#
Buradan sonrası hosting panelinize (cPanel, Plesk vb.) veya sunucuya SSH erişiminize dayanır. En az birine erişiminiz varsa hesabınızı kesin olarak geri alabilirsiniz.
1. phpMyAdmin ile parolayı doğrudan yazma#
Klasik ve en yaygın yöntem budur. Panelinizden phpMyAdmin'i açın, wp-config.php içindeki DB_NAME ile eşleşen veritabanını seçin ve wp_users tablosuna gidin. Tablo öneki wp_ olmayabilir; wp-config.php içindeki $table_prefix değerine bakın. Arayüzü hiç kullanmadıysanız phpMyAdmin kullanımı yazısı ekranları tanıtıyor.
Kullanıcınızı bulun, satırın solundaki Düzenle bağlantısına tıklayın, user_pass alanına yeni parolanızı yazın ve aynı satırdaki fonksiyon açılır listesinden MD5'i seçip Git'e basın.
SQL ile yapmak isterseniz:
UPDATE wp_users
SET user_pass = MD5('YeniGucluParola.2026')
WHERE user_login = 'admin';
⚠️ Bu yöntemin kimsenin söylemediği bir sınırı var: WordPress'in parola saklama biçimi zaman içinde değişti. MD5 karması uzun yıllar geriye dönük uyumluluk için kabul edildi ve ilk başarılı girişte WordPress karmayı kendi güncel biçimine dönüştürüyordu. Ancak güncel kurulumlarda bu geriye dönük kabul her zaman garanti değildir. Bu yüzden MD5 yöntemini deneyin, ama çalışmazsa çuvalladınız demek değil — aşağıdaki iki yöntemden birine geçin. Türkçe kaynakların büyük kısmı bu uyarıyı hiç vermez ve kullanıcı, MD5 ile giriş yapamayınca "veritabanım bozuk" sanıp gereksiz yere paniğe kapılır.
2. WP-CLI ile parola atama#
Sunucunuzda SSH ve WP-CLI varsa en temiz yol budur, çünkü parolayı WordPress'in kendi fonksiyonlarıyla karmalar — hangi biçim geçerliyse onu kullanır.
cd /home/kullanici/public_html
wp user list --role=administrator --fields=ID,user_login,user_email
Çıktı size yönetici hesaplarını ve kayıtlı e-postalarını verir:
+----+------------+----------------------+
| ID | user_login | user_email |
+----+------------+----------------------+
| 1 | admin | [email protected] |
| 4 | editor | [email protected] |
+----+------------+----------------------+
Bu tablo çoğu zaman sorunun kendisini de gösterir: mail gitmiyor değil, sizin artık kullanmadığınız bir adrese gidiyordur. Parolayı atayın:
wp user update 1 --user_pass='YeniGucluParola.2026'
Aynı anda e-postayı da düzeltebilirsiniz:
wp user update 1 --user_email='[email protected]'
Kurulumu ve diğer komutları WP-CLI kullanımı yazısında bulabilirsiniz.
3. functions.php'ye geçici kod ekleme#
SSH ve phpMyAdmin yoksa ama FTP veya Dosya Yöneticisi varsa bu yöntem çalışır. Aktif temanızın functions.php dosyasının en üstüne, <?php satırının hemen ardına şunu ekleyin:
add_action( 'init', function () {
$user = get_user_by( 'login', 'admin' );
if ( $user ) {
wp_set_password( 'YeniGucluParola.2026', $user->ID );
}
} );
Siteyi bir kez açın (ön yüzü ziyaret etmeniz yeterli), sonra bu kodu hemen silin. Silmezseniz her sayfa yüklenişinde parola aynı değere geri döner ve parolayı değiştirmeniz imkânsız hale gelir. Ayrıca kod dosyada kaldığı sürece parolanız düz metin olarak sunucuda durur.
Bu yöntemin avantajı, wp_set_password() fonksiyonunun WordPress'in güncel karma biçimini kullanmasıdır — yani MD5 sorununu tamamen aşar.
4. SQL ile yeni bir yönetici hesabı açma#
Mevcut hesabın e-postası da parolası da elinizde değilse sıfırdan bir yönetici oluşturabilirsiniz. phpMyAdmin'in SQL sekmesinde:
INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name)
VALUES ('kurtarma', MD5('YeniGucluParola.2026'), 'kurtarma', '[email protected]', NOW(), 0, 'Kurtarma');
INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
VALUES (LAST_INSERT_ID(), 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}');
INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
VALUES (LAST_INSERT_ID(), 'wp_user_level', '10');
⚠️ İki wp_usermeta satırındaki wp_capabilities ve wp_user_level anahtarları tablo önekiyle başlar. Öneğiniz wpab3_ ise anahtarlar wpab3_capabilities ve wpab3_user_level olmalıdır. Bu ayrıntı atlanınca kullanıcı oluşur ama hiçbir yetkisi olmaz; giriş yapar, boş bir panel görür ve "hesap açtım ama hiçbir şey yok" der. Sahada en sık yapılan hata budur.
Girdikten sonra bu geçici hesabı silmeyi ve asıl hesabınızı düzeltmeyi unutmayın.
Panele girememenin şifre dışındaki sebeplerini de merak ediyorsanız WordPress admin paneline giremiyorum yazısı diğer senaryoları kapsıyor; parola sıfırlamanın normal yolları için de WordPress şifremi unuttum yazısına bakabilirsiniz.
E-posta Adresiniz Veritabanında Yanlış Kayıtlıysa#
Burada çok önemli bir ayrım var ve rehberlerin neredeyse hiçbiri bunu yapmaz: WordPress'te iki ayrı e-posta adresi vardır.
wp_optionstablosundakiadmin_email→ sitenin yönetici bildirim adresi. Yeni kullanıcı kaydı, güncelleme bildirimi, kritik hata uyarısı buraya gider.wp_userstablosundakiuser_email→ o kullanıcının kendi adresi. Parola sıfırlama maili buraya gider.
Yani Ayarlar → Genel ekranındaki adresi doğru bilmeniz hiçbir işe yaramaz; parola sıfırlama maili sizin kullanıcı kaydınızdaki adrese gider. Site yıllar önce bir ajans tarafından kurulduysa user_email alanında hâlâ o ajansın adresi duruyor olabilir. Mail gitmiştir — size değil, onlara.
Kontrol edin:
SELECT ID, user_login, user_email FROM wp_users;
SELECT option_value FROM wp_options WHERE option_name = 'admin_email';
Düzeltmek için:
UPDATE wp_users SET user_email = '[email protected]' WHERE user_login = 'admin';
admin_email değerini panelden değiştirdiğinizde WordPress onay maili gönderir ve siz onaylayana kadar değişiklik uygulanmaz — bu yüzden mail çalışmıyorken o alanı panelden düzeltmeye çalışmak sonuçsuz kalır. Veritabanından yazmak bu onay adımını atlar.
Sıfırlama Bağlantısının Süresi Dolmuş Olabilir#
Mail geç geldi ve tıkladığınızda "Bu anahtar geçersiz görünüyor" ya da benzeri bir uyarı aldıysanız, mail sorunu değil süre sorunu yaşıyorsunuz demektir.
WordPress sıfırlama talebinde wp_users tablosundaki user_activation_key alanına, zaman damgası içeren bir anahtar yazar. Bu anahtar varsayılan olarak bir gün geçerlidir. Ayrıca her yeni talep bir öncekini geçersiz kılar: art arda üç kez "parolamı unuttum" yaptıysanız sadece son gelen mail çalışır, ilk ikisi ölüdür. Panik halinde üst üste talep göndermek bu yüzden işe yaramaz, hatta işi karıştırır — gelen kutusunda üç mail görürsünüz ve doğal olarak en eskisine tıklarsınız.
Alan boş görünüyorsa talep hiç kaydedilmemiş demektir:
SELECT user_login, user_activation_key FROM wp_users WHERE user_login = 'admin';
Bir başka ihtimal, bir güvenlik eklentisinin parola sıfırlamayı tamamen kapatmış olmasıdır. Bazı sertleştirme eklentileri allow_password_reset filtresini kapatarak bu özelliği devre dışı bırakır; bu durumda giriş ekranında "Parola sıfırlama bu kullanıcı için devre dışı bırakıldı" benzeri bir mesaj görürsünüz. Çözüm, ilgili eklenti klasörünün adını FTP'den değiştirip eklentiyi pasife almak ve tekrar denemektir.
Girdikten Sonra Kalıcı Çözüm: SMTP ile Gönderim#
Hesabınıza kavuştunuz; şimdi asıl sorunu çözelim, yoksa aynı kriz yarın bir müşteriniz sipariş verdiğinde tekrarlanır.
WordPress'in varsayılan gönderimi PHP'nin mail() fonksiyonuna dayanır. Bu fonksiyon kimlik doğrulaması yapmaz, gönderici adresini wordpress@sunucuadi gibi alan adınıza ait olmayan bir değere ayarlar ve alıcı sunucular bunu güvenilmez sayar. Paylaşımlı hosting ortamlarında çoğu zaman tamamen kapalıdır.
Doğru çözüm, WordPress'i gerçek bir posta kutusu üzerinden kimlik doğrulamalı gönderim yapacak biçimde ayarlamaktır:
- Hosting panelinizde alan adınıza ait bir posta kutusu oluşturun (
[email protected]gibi). Adım adım anlatım için cPanel'de e-posta hesabı oluşturma. - Bir SMTP eklentisi kurun ve şu bilgileri girin: sunucu adı (
mail.ornek.com), port, şifreleme türü, kullanıcı adı (tam e-posta adresi) ve parola. - Gönderici adını ve adresini bu kutuyla aynı yapın.
- Eklentinin test maili gönderme özelliğini kullanarak doğrulayın.
Port ve şifreleme seçimi için hızlı referans:
| Port | Şifreleme | Not |
|---|---|---|
| 587 | STARTTLS | Genel olarak önerilen ayar |
| 465 | SSL/TLS (implicit) | Yaygın destekleniyor |
| 25 | Yok/STARTTLS | Çoğu sağlayıcı ve ISS tarafından engellenir |
Ayrıntılı yapılandırma için WordPress SMTP e-posta ayarları yazısına bakın. Bağlantıyı sunucudan test etmek isterseniz SMTP test aracı port ve TLS uyumunu kontrol etmenize yarayan komutları da üretir.
DNS Tarafı: SPF ve DKIM Olmadan Mail Yine Düşer#
SMTP'yi kurdunuz ama mailler hâlâ Gmail'de spam'e düşüyorsa eksik olan şey DNS kayıtlarıdır. Alan adınızın adına kimin mail gönderebileceğini beyan etmediğiniz sürece alıcı sunucular ihtiyatlı davranır.
Asgari iki kayıt gerekir:
ornek.com. IN TXT "v=spf1 include:sunucu-saglayicisinin-spf-kaydi ~all"
varsayilan._domainkey.ornek.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBg..."
SPF kaydı "bu alan adı adına şu sunucular gönderim yapabilir" der; DKIM ise giden her iletiyi kriptografik olarak imzalar. Üçüncü kayıt olan DMARC, bu ikisi başarısız olduğunda ne yapılacağını söyler. cPanel kullanıyorsanız Zone Editor ekranından ya da e-posta bölümündeki kimlik doğrulama sayfasından bu kayıtları oluşturabilirsiniz; çoğu panel DKIM anahtarını sizin için üretir ve kaydı tek tıkla ekler.
Bir de sunucu IP'nizin kara listede olma ihtimali var. Paylaşımlı hosting'de aynı IP'yi kullanan başka bir hesap spam gönderdiyse tüm sunucu etkilenebilir. Bu durum sürekli tekrarlıyorsa gönderimi ayrı bir IP üzerinden yapmak — yani işlem maillerini kendi kaynağından çıkarmak — en kalıcı çözümdür.
Sık Yapılan Hatalar#
- Parolayı düz metin olarak
user_passalanına yazmak. Karma fonksiyonu seçmeden kaydederseniz giriş asla çalışmaz; WordPress alanı karma olarak okur. functions.php'deki geçici kodu unutmak. Her sayfa açılışında parolayı sıfırlar ve düz metin parolayı sunucuda bırakır.- Tablo önekini
wp_usermetaanahtarlarında atlamak. Yetkisiz kullanıcı oluşur. - Üst üste sıfırlama talebi göndermek. Her yeni talep öncekini geçersiz kılar; yalnızca son mail çalışır.
- Girer girmez SMTP'yi kurmamak. Sorun çözülmedi, sadece ertelendi; bir sonraki sefer sipariş bildirimi veya iletişim formu maili gitmeyecek.
Sıkça Sorulan Sorular#
phpMyAdmin'de MD5 seçip parola yazdım ama giriş yapamıyorum#
Bu, WordPress'in parola karma biçimindeki değişiklik nedeniyle olabilir; MD5 karması artık her kurulumda geriye dönük olarak kabul edilmeyebilir. Panikleyip veritabanınızın bozulduğunu düşünmeyin, sadece yöntemi değiştirin. Aktif temanın functions.php dosyasına wp_set_password() çağıran geçici bir kod eklemek ya da SSH erişiminiz varsa wp user update komutunu kullanmak, parolayı WordPress'in kendi güncel biçimiyle yazdığı için her durumda çalışır. Ayrıca doğru kullanıcı satırını düzenlediğinizden ve tablo önekinin doğru olduğundan emin olun.
Sıfırlama maili spam klasöründe de yok, gerçekten gönderilmiş mi#
Muhtemelen gönderilmiştir ama sunucudan çıkamamış ya da sizin bilmediğiniz bir adrese gitmiştir. WordPress "gönderildi" mesajını, PHP mail() fonksiyonu isteği kabul ettiğinde gösterir; iletinin gerçekten teslim edilip edilmediğini bilmez. Önce wp_users tablosundaki user_email alanını kontrol edin, çünkü mail o adrese gider ve orada eski bir adres duruyor olabilir. Sunucudaki giden posta kayıtlarına erişiminiz varsa mailin kuyruğa girip girmediğini de görebilirsiniz.
Yeni yönetici hesabı oluşturdum ama panelde hiçbir menü görünmüyor#
Bu, wp_usermeta tablosuna eklediğiniz yetki kayıtlarının tablo önekini taşımamasından kaynaklanır. WordPress yetkileri <önek>capabilities anahtarında saklar, yani öneğiniz wp_ değilse anahtar adı da değişmelidir. Örneğin öneğiniz wpab3_ ise anahtar wpab3_capabilities olmalıdır, wp_capabilities değil. Yanlış anahtar oluşturursanız kullanıcı giriş yapar ama hiçbir yetkisi olmadığı için boş bir panel görür. Kayıtları düzeltip anahtar adlarını öneğe uydurduğunuzda menüler anında gelir.
Ayarlar ekranındaki yönetici e-postasını değiştirdim ama uygulanmadı#
WordPress site yönetici e-postasını değiştirdiğinizde, yeni adrese bir onay maili gönderir ve siz o maildeki bağlantıya tıklayana kadar değişikliği uygulamaz. Mail gönderimi çalışmıyorsa onay maili hiç ulaşmaz, dolayısıyla değişiklik askıda kalır. Bu döngüyü kırmak için değeri doğrudan veritabanından, wp_options tablosundaki admin_email satırından güncelleyebilirsiniz. Bu yöntem onay adımını atlar ve değeri anında geçerli kılar.
Sıfırlama bağlantısı geldi ama tıklayınca geçersiz diyor#
Bağlantının süresi dolmuş ya da daha yeni bir talep onu geçersiz kılmış demektir. WordPress sıfırlama anahtarını varsayılan olarak bir gün geçerli tutar ve her yeni talepte eskisini siler. Art arda birkaç kez sıfırlama istediyseniz yalnızca en son gelen mail çalışır; gelen kutusundaki eski maile tıklamak bu hatayı verir. Çözüm, tek bir talep gönderip gelen en yeni maildeki bağlantıyı kullanmaktır; mail hiç gelmiyorsa zaten yukarıdaki veritabanı yöntemlerinden birine geçmelisiniz.
SMTP eklentisi kurmadan mail sorununu çözebilir miyim#
Sunucunuz PHP mail() fonksiyonuna izin veriyorsa ve gönderici adresini alan adınıza ait bir adrese ayarlarsanız kısmen çözebilirsiniz, ancak bu güvenilir bir yol değildir. Kimlik doğrulaması yapılmadığı için alıcı sunucular iletiyi düşük itibarlı sayar ve SPF/DKIM doğrulaması olmadan spam'e düşme ihtimali yüksek kalır. Kalıcı ve öngörülebilir teslimat istiyorsanız kimlik doğrulamalı SMTP gönderimi tek doğru yoldur. Kurulum on dakika sürer ve yalnızca sıfırlama maillerini değil, sipariş ve iletişim formu maillerini de düzeltir.
Bu işlemleri yapabilmek için mutlaka phpMyAdmin gerekir mi#
Hayır, dört yöntemden en az biri elinizdeki erişime uyar. phpMyAdmin yoksa FTP veya Dosya Yöneticisi erişiminizle temanın functions.php dosyasına geçici kod ekleyerek parolayı sıfırlayabilirsiniz. SSH erişiminiz varsa WP-CLI en temiz seçenektir ve hem parolayı hem e-postayı tek komutta düzeltir. Hiçbirine erişiminiz yoksa hosting sağlayıcınızın destek ekibi veritabanına erişebilir; hesap sahibi olduğunuzu doğruladıktan sonra bu düzeltmeyi sizin adınıza yapabilirler.
Kapanış#
Şifre sıfırlama maili gelmediğinde iki ayrı problemi aynı anda çözmek gerekir: acil olan, hesabınıza geri girmektir; asıl olan, sitenin neden mail gönderemediğidir. Birincisi için phpMyAdmin, WP-CLI, geçici functions.php kodu ve SQL ile yeni yönetici oluşturma yöntemlerinden en az biri elinizdeki erişime mutlaka uyar. İkincisi için ise cevap hemen her zaman aynıdır: PHP mail() yerine kimlik doğrulamalı SMTP gönderimine geçmek ve alan adınızın SPF/DKIM kayıtlarını tamamlamak. Ayrıca wp_users.user_email ile admin_email ayrımını bir kez öğrenirseniz, "mail gitmiyor" sandığınız pek çok durumun aslında "mail başka yere gidiyor" olduğunu göreceksiniz.
E-posta tarafını kendi başınıza kurcalamak istemiyorsanız işi altyapıya devredebilirsiniz. Alan adınıza ait, SPF/DKIM kayıtları hazır gelen posta kutuları için kurumsal e-posta çözümlerine, sipariş ve bildirim maillerini yüksek teslimat oranıyla göndermek istiyorsanız ayrılmış SMTP sunucu seçeneğine bakabilirsiniz. WordPress'in kendi mail ayarlarının hazır yapılandırıldığı bir zemin arıyorsanız WordPress hosting paketleri, güncelleme ve mail teslimatı dahil bakım yükünü devretmek isterseniz WordPress bakım hizmeti bu işi üstlenir.