91 lines
3.8 KiB
Markdown
91 lines
3.8 KiB
Markdown
# AyrisMail Central
|
||
|
||
AyrisMail Central, Mailcow altyapısı üzerine inşa edilmiş, **veritabanı gerektirmeyen (Database-less)**, modern ve hızlı bir Webmail ve E-posta Yönetim İstemcisidir. Next.js App Router kullanılarak geliştirilmiştir ve kullanıcı e-posta güvenliğini en üst düzeyde tutmak için şifreleri veritabanında saklamaz; bunun yerine güvenli, şifrelenmiş çerezler (cookies) aracılığıyla doğrudan IMAP ve SMTP sunucularıyla iletişim kurar.
|
||
|
||
## 🚀 Özellikler
|
||
|
||
- **Modern ve Responsive Arayüz:** Gmail tarzı 3 sütunlu (Klasörler - Liste - Detay) "Glassmorphism" esintili karanlık tema tasarımı. Mobil uyumlu.
|
||
- **Database-less Mimari:** Kullanıcıların e-posta parolaları veritabanında saklanmaz. Her oturum doğrudan Mailcow IMAP/SMTP üzerinden doğrulanır.
|
||
- **Çoklu Kiracı (Multi-tenant) Yönetimi:** `.env` üzerinden tanımlanan roller (`SUPER_ADMIN`, `DOMAIN_ADMIN`) ile domain bazlı yetkilendirme.
|
||
- **Gelişmiş Mail Yönetimi:**
|
||
- Gelen kutusu, gönderilenler, çöp kutusu ve özel klasörler arası anında senkronizasyon.
|
||
- Mail okuma, yanıtlama, silme ve taşıma işlemleri.
|
||
- **Ek Dosya Desteği:**
|
||
- Gelen maillerdeki ekleri (PDF, Resim, Office dosyaları vb.) indirme ve önizleme.
|
||
- Yeni mail gönderirken Sürükle-Bırak (Drag & Drop) ile kolay dosya ekleme.
|
||
- **Güvenli HTML Render:** Gelen e-postalar, potansiyel XSS açıklarına karşı sanitize edilerek güvenli bir `iframe` içerisinde render edilir.
|
||
|
||
## 🛠️ Teknoloji Yığını
|
||
|
||
- **Frontend & Backend:** Next.js 16 (App Router, Turbopack)
|
||
- **Stil & Tasarım:** Özel CSS (Tailwind reset üzerine inşa edilmiş modern UI)
|
||
- **IMAP İstemcisi:** `imapflow` (Klasör okuma, mesaj çekme, taşıma, silme)
|
||
- **SMTP İstemcisi:** `nodemailer` (Mail gönderimi ve `Sent` klasörüne APPEND işlemi)
|
||
- **E-posta Ayrıştırma:** `mailparser` (Gelen raw RFC822 verilerini anlamlandırma)
|
||
- **Kimlik Doğrulama:** NextAuth.js (Custom Credentials Provider) & `iron-session` tarzı şifreli çerezler
|
||
|
||
## 📦 Kurulum ve Çalıştırma
|
||
|
||
### Gereksinimler
|
||
- Node.js 20+
|
||
- Çalışan bir Mailcow sunucusu
|
||
|
||
### 1. Depoyu Klonlayın
|
||
```bash
|
||
git clone https://git.ayris.tech/ayrisdev/webmailserver.git
|
||
cd webmailserver
|
||
```
|
||
|
||
### 2. Bağımlılıkları Yükleyin
|
||
```bash
|
||
npm install --legacy-peer-deps
|
||
```
|
||
|
||
### 3. Çevresel Değişkenleri (.env) Ayarlayın
|
||
Proje dizininde bir `.env` dosyası oluşturun ve aşağıdaki değerleri kendi sunucunuza göre düzenleyin:
|
||
|
||
```env
|
||
# Mailcow API & IMAP/SMTP Sunucusu
|
||
MAILCOW_API_URL="https://mail.yourdomain.com"
|
||
MAILCOW_API_KEY="YOUR_MAILCOW_SUPER_ADMIN_API_KEY"
|
||
|
||
# NextAuth Güvenlik
|
||
NEXTAUTH_URL="http://localhost:3000"
|
||
AUTH_SECRET="super-secret-32-character-random-string"
|
||
|
||
# IMAP & SMTP Portları (Gerekirse)
|
||
IMAP_PORT=993
|
||
SMTP_PORT=587
|
||
|
||
# Multi-tenant Kullanıcı Tanımları (DB Kullanılmadığı İçin)
|
||
USER_0_NAME="Admin User"
|
||
USER_0_EMAIL="admin@yourdomain.com"
|
||
USER_0_PASSWORD="admin_password"
|
||
USER_0_ROLE="SUPER_ADMIN"
|
||
USER_0_DOMAINS="*"
|
||
```
|
||
|
||
### 4. Geliştirme Sunucusunu Başlatın
|
||
```bash
|
||
npm run dev
|
||
```
|
||
Uygulama `http://localhost:3000` adresinde çalışmaya başlayacaktır.
|
||
|
||
## 🐳 Docker ile Kurulum (Production)
|
||
|
||
Proje, standalone modda production için optimize edilmiş bir `Dockerfile` içerir. Coolify, CapRover veya standart Docker ortamlarında kolayca çalıştırılabilir.
|
||
|
||
```bash
|
||
docker build -t ayrismail-central .
|
||
docker run -p 3000:3000 --env-file .env ayrismail-central
|
||
```
|
||
|
||
## 🔒 Güvenlik Yaklaşımı
|
||
|
||
- **Veri Saklanmaz:** E-postalar ve şifreler sunucuda barındırılmaz, her istekte Mailcow'dan anlık olarak çekilir.
|
||
- **TLS/SSL:** IMAP ve SMTP bağlantıları `secure: true` (veya STARTTLS) zorunluluğu ile çalışır.
|
||
- **XSS Koruması:** E-posta içerikleri `sanitizeHtml` fonksiyonu ile temizlenir ve izole `iframe` sandbox'ı içerisinde gösterilir.
|
||
|
||
---
|
||
© 2026 AyrisTech - Tüm hakları saklıdır.
|