Kimlik doğrulama
Tarayıcınızla ya da bir API anahtarıyla oturum açın, birden fazla profil tutun ve hassas bir değişiklikten önce bir kod doğrulayın.
Oturum açmanın iki yolu
Bir terminalde openemail login çalıştırın; hangisini istediğinizi sorar. Her iki durumda da oturum bir profil olarak kaydedilir ve sonraki her komut etkin profili kullanır.
| Komut | Kim olarak davranır | Doğrulama kodları |
|---|---|---|
| openemail login | Siz, onayladığınız çalışma alanında ve erişimle | Birkaç hassas değişiklikten önce istenir |
| openemail login --with-token | Çalışma alanı, anahtarın sahip olduğu kapsamlarla | Asla istenmez |
ai compose,ai summarizeve MCP komutlarını yalnızca bir tarayıcı oturumu kullanabilir.- Bir tarayıcı oturumu, seçtiğiniz onayın süresi dolana ya da oturumu kapatana kadar geçerlidir. Bir anahtar iptal edilene kadar çalışır.
Tarayıcı oturumu
openemail loginbu oturum içinOpenEmail CLI on <your computer>adında yeni bir uygulama kaydeder ve tarayıcınızda OpenEmail onay sayfasını açar. Tarayıcı açılmazsa yazdırdığı bağlantıyı kullanın.- Gerekirse oturum açın, ardından çalışma alanını, CLI'nin alacağı erişimi (okuma, okuma ve gönderme, tam ya da kendi izin kümeniz), ulaşacağı alan adlarını ya da adresleri ve onayın ne kadar süreceğini seçin.
- Onaylayın. Tarayıcı onayı terminale kendiliğinden geri verir ve sekmeyi kapatabilirsiniz. CLI kim olarak oturum açtığınızı, çalışma alanını ve onayın ne zaman sona ereceğini yazdırır.
openemail loginopenemail login --scopes emails:send,threads:readopenemail login --profile work- CLI onayınız için 10 dakika bekler. Onay sayfasında Şimdi değil seçeneğini seçmek, oturum açmayı
10çıkış koduyla iptal eder. --scopesonay sayfasında izinleri önceden seçer ve bunları orada hâlâ değiştirebilirsiniz.- Profilde zaten bir oturum varsa, terminal onu değiştirmeden önce sorar. Gözetimsiz çalışırken,
--forceya da--yesvermediğiniz sürece reddeder. Bir tarayıcı oturumunu değiştirmek eskisini iptal eder.
Her tarayıcı oturumu kendi bağlı uygulamasıdır; onayladığınız erişimle Hesap → Bağlı uygulamalar altında listelenir, orada değiştirebilir ya da kaldırabilirsiniz. openemail open apps o sayfayı açar.
Altında MCP sunucusunun kullandığı OAuth akışı vardır: PKCE'li herkese açık bir istemci, tek kullanımlık bir kod ve bir saat geçerli olup sizin için yenilenen bir erişim tokenı. Tarayıcı rastgele bir bağlantı noktasında 127.0.0.1 adresine döner ve orada yalnızca bu oturumun kodu kabul edilir.
SSH üzerinden ya da tarayıcı olmadan
CLI bu makinede bir tarayıcı açamadığında bağlantıyı yazdırır: SSH üzerinden, CI'da, ekransız Linux'ta ya da --no-browser verdiğinizde. Bağlantıyı herhangi bir cihazdaki bir tarayıcıda açıp onaylayın. Sayfa ardından terminale yapıştıracağınız bir oturum kodu gösterir.
$ openemail login --no-browserOpen this link in a browser on any device to sign in: https://api.openemail.uk/auth/mcp/authorize?response_type=code&client_id=…Paste the code from your browser- Bir kod yalnızca bağlantıyı yazdıran oturum için geçerlidir, bu yüzden başka bir sekmeden gelen kod reddedilir.
- Tarayıcının vardığı adresin tamamını yapıştırmak da işe yarar.
- Terminal yoksa kodu stdin ile verin.
API anahtarları
Bir API anahtarı bir betiğin tarayıcısız oturum açmasını sağlar ve ondan asla kod istenmez. Ayarlar → API anahtarları (openemail open api-keys) bölümünden, yalnızca betiğin ihtiyaç duyduğu kapsamlarla bir tane oluşturun. CLI anahtarı kaydetmeden önce GET /keys/self ile kontrol eder ve oe_live_ ve oe_test_ anahtarlarını kabul eder. Test anahtarıyla gönderilen posta asla teslim edilmez.
openemail login --with-token < ~/.config/openemail/keyecho "$OPENEMAIL_KEY" | openemail login --with-token --profile ciopenemail login --token oe_live_…--token da çalışır, ancak anahtar kabuk geçmişinize düşer, bu yüzden CLI uyarır ve --with-token önerir. Bir anahtarı kaydetmeden kullanmanın iki yolu vardır:
- Ortamdaki
OPENEMAIL_API_KEY, onu gören her komut tarafından, kayıtlı her profilden önce kullanılır. --api-key <key>yalnızca o tek komut için kullanılır.
Birden fazla kimlik bilgisi olduğunda şunlardan ilki kazanır: --api-key, OPENEMAIL_API_KEY, --profile ile adlandırılan profil, OPENEMAIL_PROFILE ile adlandırılan profil, sonra etkin profil.
Profiller
Profil, iki türden birindeki kayıtlı bir oturumdur. İlkinin adı default. --profile ile daha fazlasında oturum açın ve aralarında geçiş yapın:
openemail login --profile workopenemail profile listopenemail profile use workopenemail inbox --profile defaultOPENEMAIL_PROFILE=work openemail statusopenemail profile currentopenemail profile remove workprofile listher profili türü, çalışma alanı ve kullanıcısı ya da anahtarıyla gösterir ve etkin olanı işaretler. JSON çıktısı asla bir token ya da anahtar içermez.profile currentstdout'a yalnızca adı yazdırır, bu yüzden$(openemail profile current)bir betikte çalışır.profile remove <name>,openemail logout --profile <name>ile aynıdır.- Bir profil adı en fazla 64 harf, rakam, nokta, tire ve alt çizgiden oluşur.
profile usekomutunun diğer adıprofile switch. Etkin profili kaldırmak ya da oturumunu kapatmak hiçbir profili etkin bırakmaz ve oturum gerektiren sonraki komut siziopenemail profile use <name>komutuna yönlendirir.
Bir oturum hangi API ile konuşur
Kayıtlı bir profil oturum açtığı API'yi hatırlar ve kimlik bilgisi yalnızca oraya gönderilir. Başka bir kaynağı gösteren bir --base-url ya da OPENEMAIL_BASE_URL, hiçbir şey gönderilmeden komutu 2 çıkış koduyla durdurur ve o kaynağa ayrı bir profille nasıl oturum açılacağını söyler.
openemail login --profile other --base-url https://api.example.comopenemail inbox --profile otherOPENEMAIL_API_KEYya da--api-keyile verilen bir anahtar kayıtlı bir profil değildir; bu yüzden--base-urlya daOPENEMAIL_BASE_URLiçindeki kaynağa, ikisi de ayarlı değilsehttps://api.openemail.ukadresine gider.- Kimlik bilgisi göndermeyen komutlar, hangi profil etkin olursa olsun
--base-urlveOPENEMAIL_BASE_URLdeğerini izler: tek kullanımlık gelen kutuları, anahtar gerektirmeyen yöntemler,docsveopen. - Düz
http,localhost,127.0.0.1ve::1dışındaki her kaynak için2çıkış koduyla reddedilir: API, web uygulaması, oturum açma, token ve iptal istekleri ve MCP sunucusu. Geri kalan her şey içinhttpskullanın. - API kaynağının dışına çıkacak bir istek yolu, örneğin
openemail api //example.com/x, hiçbir şey gönderilmeden2çıkış kodu veinvalid_pathile durur.
Her oturumun yapamadıkları
Bir tarayıcı oturumu sizin adınıza hareket eder, ancak hangi erişimi seçerseniz seçin bazı şeyler bir uygulamaya asla onaylanmaz:
- API anahtarlarını yönetmek.
keys:writevekeys:manageasla verilmez, bu yüzden anahtar oluşturmak, döndürmek ve iptal etmek içinkeys:managesahibi bir API anahtarı ya da web uygulaması gerekir.openemail me rotateçağrıyı yaptığınız anahtarı döndürür, bu yüzden bir API anahtarı ister. - Faturalandırma ve çalışma alanlarının kendisi. Planlar, faturalar ve bir çalışma alanını oluşturmak, değiştirmek ya da silmek web uygulamasında kalır.
- Ücretsiz adresiniz. Bir uygulama bir iş çalışma alanı için onaylanır ve ücretsiz adresi tutan kişisel çalışma alanı asla sunulmaz; API'nin izlediği kural da budur.
- Üyeler ve roller, onay tüm çalışma alanını kapsamadıkça.
members:writeveroles:write, bazı alan adları ya da adreslerle sınırlı bir onaydan çıkarılır.
Bir API anahtarının da kendi sınırı vardır. ai compose, ai summarize ve config dışındaki her openemail mcp komutu, tarayıcı oturumu gerektiren MCP sunucusundan geçer, bu yüzden bir anahtarla 4 çıkış koduyla durur ve nedenini söyler.
Doğrulama kodları
Bir tarayıcı oturumuyla birkaç değişiklik, web uygulamasında olduğu gibi önce bir doğrulama kodu ister. CLI ihtiyaç duyduğunda sorar: size e-postayla altı haneli bir kod gönderir ya da iki adımlı oturum açma açıksa kimlik doğrulayıcı uygulamanızdan bir kod veya yedek kodlarınızdan birini ister. Kod doğru olduğunda komut çalışır ve o oturumdan 60 dakika boyunca yeniden istenmez. Bir API anahtarından asla istenmez.
| Komut | Kod ister |
|---|---|
| webhooks create, update | Her zaman |
| rules create, update | Her zaman |
| roles update, delete | Her zaman |
| members add, update, remove | Her zaman |
| members grant-address, revoke-address | Her zaman |
| domains delete, delete-address | Her zaman |
| audiences delete | Oluşturduğunuz bir kitle için |
| audiences empty | Oluşturduğunuz, hâlâ kişi içeren bir kitle için |
| mcp call createRule, setRuleEnabled | Her zaman |
| mcp call removeDomain, removeDomainAddress | Her zaman |
| mcp call deleteAudience, emptyAudience | Karşılık gelen kitle komutu gibi |
| api | Çağırdığı işlem yukarıdakilerden biri olduğunda |
$ openemail webhooks create --url https://acme.com/hooks/openemailWe emailed a code to a•••@acme.com.Verification code: 482913Verified. You will not be asked again for 60 minutes.- E-postanın yeniden gönderilmesi için istemde
ryazın. Yanlış bir kod kaç deneme kaldığını söyler. - Kod kabul edildikten sonra komut bir kez daha çalışır, asla iki kez değil.
--yesbir silmeyi onaylar ama asla bir kodu atlamaz.- Gözetimsiz çalışırken (
--jsonya da--no-inputile, CI'da ya da terminal olmadan) kodu kimse yazamaz, bu yüzden komut4çıkış koduyla durur ve hiçbir şeyi değiştirmez. - Bir kod 5 deneme hakkı verir ve beşinci yanlış denemeden sonra CLI yeni bir kod önerir. Her oturum saatte 5 ve günde 20 kod isteyebilir.
- Bir oturum için 24 saat içinde on yanlış kod, o oturumun doğrulamasını duraklatır. CLI bu durumda ne zaman yeniden başlayacağını söyler ve başka bir kod önermeden
4çıkış kodu vestep_up_pausedile durur; bunu açıklayan e-posta da uygulamanın adını verir.
Bir betik ya da yapay zekâ istemcisi hassas bir şey yapmadan önce openemail verify çalıştırın. Kodu şimdi ister ve sonraki 60 dakika boyunca o profildeki her komut, openemail mcp call ve yerel MCP köprüsü dahil, kodsuz çalışır.
openemail verifyopenemail verify --statusopenemail verify --status --jsonopenemail verify --force60 dakika tek bir oturuma aittir. Başka bir profilden ya da kendi başına oturum açmış bir yapay zekâ istemcisinden kendi kodu istenir ve oturumu kapatmak süreyi hemen bitirir. --force yeni bir kod ister ve yeni bir 60 dakika başlatır.
Süre sonu, oturum kapatma ve iptal
- Bir tarayıcı oturumunun arkasındaki erişim tokenı bir saat geçerlidir. CLI süresi dolmadan onu yeniler ve yenisini kaydeder, bu yüzden bunu hiç fark etmezsiniz.
- Her yenileme tokenı yalnızca bir kez çalışır. CLI yenisini koyduktan 30 saniyeden sonra kullanılan eski bir token, örneğin başka bir makinedeki bir
config.jsonkopyasından, sunucunun o oturumu tamamen iptal etmesine yol açar; bu yüzden dosyayı kopyalamak yerine her makinede oturum açın. - Onay, onay sayfasında seçtiğiniz süre boyunca geçerlidir. Süre dolduğunda ya da uygulama Hesap → Bağlı uygulamalar altında kaldırıldığında CLI artık sizin adınıza hareket edemez ve
openemail loginkomutunu yeniden çalıştırmanızı ister. openemail logoutbir tarayıcı oturumunu sunucuda iptal eder, bu da onu bağlı uygulamalardan kaldırır; ardından sunucuya ulaşılamasa bile onu bu cihazda unutur.--allher profilin oturumunu kapatır.- Bir API anahtarının oturumunu kapatmak onu yalnızca burada unutur. Anahtar, siz
openemail keys revoke <id>ile ya da web uygulamasında iptal edene kadar çalışmaya devam eder.
Oturumların tutulduğu yer
Her şey ~/.openemail içinde ya da OPENEMAIL_CONFIG_DIR ile belirtilen klasörde durur. Klasörü yalnızca siz okuyabilirsiniz (0700), içindeki her dosya da öyledir (0600). Her dosya önce geçici bir dosyaya yazılır ve yerine yeniden adlandırılır, böylece bir çökme asla yarım bir dosya bırakmaz; her değişiklik de bir kilit dosyası altında yapılır, böylece yan yana çalışan komutlar asla bir profil kaybetmez.
| Dosya | Ne tutar |
|---|---|
| config.json | Profilleriniz: API anahtarları, erişim ve yenileme tokenları ve hangi profilin etkin olduğu |
| temp-mail.json | Bu CLI'nin oluşturduğu tek kullanımlık gelen kutuları, kutu tokenlarıyla birlikte |
| update-check.json | npm'e yeni bir sürümü en son ne zaman sorulduğu ve ne yanıt verdiği |
Tokenlar ve anahtarlar yalnızca kullanıcınızın okuyabildiği dosyalarda düz metin olarak saklanır, bu yüzden klasöre bir SSH anahtarı gibi davranın. CLI'nin anlamlandıramadığı bir dosya asla sessizce oturum kapatılmış sayılmaz: yolu belirterek bir kez uyarır ve yenisini yazmadan önce yanına bir kopya (config.json.bak) bırakır. Hiç okuyamadığı bir dosya, örneğin izinleri yüzünden, komutu o dosyanın adını veren bir hatayla durdurur.