Mail API
SSH üzerinden bir iRedMail yığını kurun ve benimseyin, posta yönetici panelini çalıştırın (alan adları, posta kutuları, istatistikler, yedeklemeler, DNS, bileşenler) ve webmail'i deploy edin.
Mail API, Alaf Server'ın self-hosted e-posta özelliğini yönetir: SSH üzerinden sunucularınızdan birine bir iRedMail yığını kurar, kurulum sihirbazının ilerlemesini takip eder, ardından çalışan sunucu için bir admin paneli sunar — alan adları, posta kutuları, istatistikler, yedeklemeler, DNS sağlığı ve bileşen bazında kontrol — artı tek tıklamayla bir webmail deploy'u. Dashboard'da bu, E-postalar sayfasıdır.
Yalnızca Self-hosted
Buradaki her route localOnly tarafından korunur ve Alaf Server Cloud'da asla mount edilmez — modül yalnızca self-hosted instancelarda dinamik olarak import edilir. Bir cloud instance'ında bu yollar 404 döndürür.
Temel yol ve auth
Tüm yollar, instance'ınıza göre /api/mail altında yer alır — örn. https://your-host/api/mail/status. alaf server token create ile oluşturulmuş bir personal access token'ı bearer header olarak gönderin (Authorization: Bearer <token>). Dashboard bunun yerine session cookie'nizi kullanır. Detaylar için API genel bakışına ve auth modeline bakın.
Her route sunucu kapsamlıdır
Çoğu yol bir :serverId taşır (veya body'de / ?serverId= ile alır). Alaf Server, her çağrıda sunucunun kuruluşunuza ait olup olmadığını kontrol eder — bir mail_server kutuya SSH düzeyinde erişim sağlar, bu nedenle kuruluşunuz dışındaki bir serverId mevcut olmayan bir sunucudan ayırt edilemez şekilde 404 döndürür.
Endpoints
Kurulum sihirbazı
| Metot ve yol | İzin | Ne yapar |
|---|---|---|
GET /api/mail/steps | mail_server:read | Tüm kurulum adımlarını ve toplam sayıyı listeler. |
GET /api/mail/status?serverId= | mail_server:read | Bir sunucu için mevcut kurulum ilerlemesi (sunucu üzerindeki durum dosyasından render edilir). |
GET /api/mail/servers | mail_server:list | Alaf Server'ın posta sağladığı (veya sağlamakta olduğu) her sunucuyu listeler. |
DELETE /api/mail/servers/:serverId | mail_server:admin | Bir sunucuyu yönetmeyi durdurur (yalnızca DB satırını siler; yığını + durum dosyasını sağlam bırakır). |
POST /api/mail/scan | mail_server:write | Mevcut bir iRedMail kurulumu + sunucu üzerindeki durumunu (salt okunur) bir sunucuda araştırır. |
POST /api/mail/adopt | mail_server:write | Orkestratör durumu kaybolmuş taranmış bir sunucuyu yeniden benimser. |
POST /api/mail/setup | mail_server:write | Kurulum sihirbazını başlatır veya devam ettirir — bir SSE stream'i döndürür. |
POST /api/mail/setup/cancel | mail_server:write | Çalışan kurulumu iptal eder. |
POST /api/mail/setup/dns-ack | mail_server:write | DNS (DKIM) kayıtlarını yapılandırılmış olarak işaretler, DNS kapısını serbest bırakır. |
POST /api/mail/setup/ptr-ack | mail_server:write | Reverse-DNS (PTR) kayıtlarını yapılandırılmış olarak işaretler, PTR kapısını serbest bırakır. |
POST /api/mail/setup/reset | mail_server:admin | Sunucu üzerindeki durum dosyasını siler (iRedMail'e dokunmaz). |
Kurulum sonrası
| Metot ve yol | İzin | Ne yapar |
|---|---|---|
GET /api/mail/health/:serverId | mail_server:read | Her mail-core daemon'ının canlı systemd durumunu gösterir. |
POST /api/mail/credentials/postmaster | mail_server:write | Postmaster hesabının parolasını değiştirir. |
Admin — alan adları
| Metot ve yol | İzin | Ne yapar |
|---|---|---|
GET /api/mail/admin/:serverId/domains | mail_server:list | Sunucudaki posta alan adlarını listeler. |
POST /api/mail/admin/:serverId/domains | mail_server:write | Bir posta alan adı ekler. |
GET /api/mail/admin/:serverId/domains/:domain | mail_server:read | Bir alan adının yapılandırmasını alır. |
PATCH /api/mail/admin/:serverId/domains/:domain | mail_server:write | Bir alan adını günceller (kotalar, limitler, aktif bayrağı). |
DELETE /api/mail/admin/:serverId/domains/:domain | mail_server:admin | Bir alan adını siler (posta kutularını da kaldırmak için ?cascade=true ekleyin). |
GET /api/mail/admin/:serverId/domains/:domain/dependents | mail_server:read | Bir alan adına bağlı posta kutularını/alias'ları sayar. |
GET /api/mail/admin/:serverId/domains/:domain/dns | mail_server:read | Ek bir alan adı için DNS kayıtları + yayın durumu. |
POST /api/mail/admin/:serverId/domains/:domain/dns/acknowledge | mail_server:write | Bir alan adının DNS kayıtlarının yayınlandığını onaylar. |
GET /api/mail/admin/:serverId/domains-dns/pending | mail_server:read | DNS'i hala bekleyen ek alan adlarını listeler. |
Admin — posta kutuları
| Metot ve yol | İzin | Ne yapar |
|---|---|---|
GET /api/mail/admin/:serverId/mailboxes?domain= | mail_server:list | Bir alan adındaki posta kutularını listeler. |
POST /api/mail/admin/:serverId/mailboxes | mail_server:write | Bir posta kutusu oluşturur. |
GET /api/mail/admin/:serverId/mailboxes/:email | mail_server:read | Bir posta kutusunu alır. |
PATCH /api/mail/admin/:serverId/mailboxes/:email | mail_server:write | Bir posta kutusunu günceller (ad, parola, kota, aktif). |
DELETE /api/mail/admin/:serverId/mailboxes/:email | mail_server:admin | Bir posta kutusunu siler (maildir'ini temizlemek için ?hard=true ekleyin; varsayılan olarak soft delete yapılır). |
Admin — istatistikler, yedeklemeler, DNS, bileşenler
| Metot ve yol | İzin | Ne yapar |
|---|---|---|
GET /api/mail/admin/:serverId/stats | mail_server:read | Toplu sayımlar (alan adları, posta kutuları, depolama). |
GET /api/mail/admin/:serverId/backup-policy | mail_server:read | Posta sunucusunun yedekleme politikası (veya null). |
POST /api/mail/admin/:serverId/backup-policy | mail_server:admin | Yedekleme politikasını oluşturur veya günceller. |
GET /api/mail/admin/:serverId/backup-runs | mail_server:read | Posta sunucusu için son yedekleme çalışmaları. |
GET /api/mail/admin/:serverId/dns-scan?domain= | mail_server:read | Canlı DNS sağlık taraması (MX/SPF/DKIM/DMARC/PTR). |
POST /api/mail/admin/:serverId/test-email | mail_server:write | Sunucudan bir test e-postası gönderir. |
POST /api/mail/admin/:serverId/components/restart-all | mail_server:admin | Her posta bileşenini yeniden başlatır. |
POST /api/mail/admin/:serverId/components/:key/:action | mail_server:admin | Bir bileşen üzerinde bir eylem (start/stop/restart/…) çalıştırır. |
GET /api/mail/admin/:serverId/components/:key/logs?lines= | mail_server:read | Bir bileşenin log'larını takip eder. |
Webmail
| Metot ve yol | İzin | Ne yapar |
|---|---|---|
GET /api/mail/webmail/targets?serverId= | mail_server:read | Deploy hedefi seçeneklerini listeler (self-hosted sunucular / cloud). |
POST /api/mail/webmail/deploy-project | mail_server:write | Bir webmail projesi + deployment oluşturur ve build'i başlatır. |
Kurulumu Başlat (veya Devam Ettir)
Bir sunucuya karşı iRedMail kurulum sihirbazını başlatır ve ilerlemeyi Server-Sent Events olarak stream eder. Sihirbaz idempotenttir: önceki bir çalıştırmanın durduğu (veya engellendiği) yerden devam etmek için startStep ile yeniden POST edin. Her instance'ta aynı anda yalnızca bir kurulum çalışabilir.
POST /api/mail/setupProp
Type
config isteğe bağlı bir IRedMailConfig'dir:
Prop
Type
curl -N -X POST https://your-host/api/mail/setup \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"serverId":"srv_123","domain":"example.com"}'Stream, her adım için step_start, log ve step_done olaylarını, ayrıca bu kontrol olaylarını yayar:
dns_records/dns_pending— DKIM adımı eklemeniz gereken kayıtları yayınlar, ardından bekler. Kayıtları DNS sağlayıcınıza ekleyin vePOST /api/mail/setup/dns-ackçağrısını yapın, ardından olaydan gelenresumeStepile/setupadresine yeniden POST edin.ptr_pending— DNS onaylandıktan sonra, sihirbaz reverse-DNS (PTR) için tekrar bekler. PTR kaydını VPS sağlayıcınızda ayarlayın,POST /api/mail/setup/ptr-ackçağrısını yapın ve devam edin.complete—domain,webmailUrlveadminUrltaşır.error—messageve (devam ettirilebilir olduğunda)resumeSteptaşır.
DNS / PTR Onayla
Her ikisi de sunucu üzerindeki durum dosyasında tek bir bayrağı değiştirir, böylece sihirbaz bir sonraki /setup POST'unda kapısını geçebilir. Her ikisi de aynı body'yi alır.
POST /api/mail/setup/dns-ack
POST /api/mail/setup/ptr-ackProp
Type
Aynı { serverId } body'si POST /api/mail/scan, POST /api/mail/adopt, POST /api/mail/setup/cancel ve POST /api/mail/setup/reset için geçerlidir.
Mevcut bir kurulumu benimse
Alaf Server bir posta sunucusunun kaydını kaybettiyse (yeniden oluşturulmuş masaüstü, silinmiş DB), sunucuyu tarayın, ardından benimseyin — yeniden kurulum yok, kutuda hiçbir şey değişmez.
POST /api/mail/scan
POST /api/mail/adopt# 1. iRedMail + sunucu üzerindeki durumunu araştır
curl -X POST https://your-host/api/mail/scan \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"serverId":"srv_123"}'
# 2. Yeniden benimse (idempotent)
curl -X POST https://your-host/api/mail/adopt \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"serverId":"srv_123"}'Postmaster parolasını değiştir
POST /api/mail/credentials/postmasterProp
Type
Bir posta alan adı ekle
POST /api/mail/admin/:serverId/domainsProp
Type
PATCH /api/mail/admin/:serverId/domains/:domain aynı alanları (hepsi isteğe bağlı) artı active (boolean) kabul eder.
curl -X POST https://your-host/api/mail/admin/srv_123/domains \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com","defaultQuotaMB":2048}'Bir posta kutusu oluştur
POST /api/mail/admin/:serverId/mailboxesProp
Type
PATCH /api/mail/admin/:serverId/mailboxes/:email name, password, quotaMB ve active (hepsi isteğe bağlı) kabul eder. DELETE varsayılan olarak soft delete yapar; maildir'i temizlemek için ?hard=true ekleyin.
curl -X POST https://your-host/api/mail/admin/srv_123/mailboxes \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"localPart":"alice","domain":"example.com","password":"a-strong-password"}'Yedeklemeleri Yapılandır
Posta sunucusunu genel yedekleme sistemine bağlar — bir hedef ve neyin yakalanacağını seçin. Kuruluşunuzda mevcut bir yedekleme hedefi gerektirir.
POST /api/mail/admin/:serverId/backup-policyProp
Type
Bir test e-postası gönder
POST /api/mail/admin/:serverId/test-emailProp
Type
Webmail deploy et
Bir webmail-<serverId> projesi oluşturur (veya yeniden kullanır), bir deployment'ı sıraya alır ve build'i başlatır. Dashboard'ın /build/[deploymentId] adresine yönlendirebilmesi için { deploymentId, projectId } döndürür.
POST /api/mail/webmail/deploy-projectProp
Type
target şunlardan biridir:
{ "kind": "self", "serverId": "srv_123" }— Alaf Server sunucularınızdan birinde self-hosted.{ "kind": "cloud" }— Alaf Server Cloud tarafından yönetilir.
curl -X POST https://your-host/api/mail/webmail/deploy-project \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mailServerId":"srv_123","hostname":"mail.example.com","target":{"kind":"self","serverId":"srv_123"}}'Görebileceğiniz Hatalar
404 — Mevcut Değil
Bir cloud instance'ını çağırıyorsunuz. Mail API yalnızca self-hosted'dir; CLOUD_MODE kapalı olan bir instance üzerinde çalıştırın.
404 — Sunucu bulunamadı
:serverId kuruluşunuza ait değil (veya mevcut değil). Geçerli ID'leri almak için GET /api/mail/servers ile posta sunucularınızı listeleyin.
409 — Kurulum zaten çalışıyor
Her instance'ta aynı anda yalnızca bir kurulum çalışır ve kurulumu aktifken sunucu başına yazma işlemleri (reset, postmaster rotasyonu) reddedilir. Bitmesini bekleyin veya POST /api/mail/setup/cancel ile iptal edin.
502 — Tarama / benimseme başarısız oldu
Alaf Server, SSH üzerinden sunucuya ulaşamadı veya probe hata verdi. Sunucunun çevrimiçi olduğunu ve SSH kimlik bilgilerinin geçerli olduğunu kontrol edin, ardından yeniden deneyin.
Migration API
Bir server'ın mevcut Docker deployment'ını tarayın ve bulunan servisleri bir Alaf Server projesi olarak benimseyin.
Cloud API
Kendi barındırdığınız bir Alaf Server örneğini Alaf Server Cloud'a ve onu destekleyen bulut kontrol düzlemi uç noktalarına (handoff, edge proxy, pages, subgraph transfer, GitHub App proxy) bağlayın.