diff --git a/README.md b/README.md index e215bc4..0f74947 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,90 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +# AyrisMail Central -## Getting Started +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. -First, run the development server: +## 🚀 Ö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 -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev +git clone https://git.ayris.tech/ayrisdev/webmailserver.git +cd webmailserver ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +### 2. Bağımlılıkları Yükleyin +```bash +npm install --legacy-peer-deps +``` -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. +### 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: -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. +```env +# Mailcow API & IMAP/SMTP Sunucusu +MAILCOW_API_URL="https://mail.yourdomain.com" +MAILCOW_API_KEY="YOUR_MAILCOW_SUPER_ADMIN_API_KEY" -## Learn More +# NextAuth Güvenlik +NEXTAUTH_URL="http://localhost:3000" +AUTH_SECRET="super-secret-32-character-random-string" -To learn more about Next.js, take a look at the following resources: +# IMAP & SMTP Portları (Gerekirse) +IMAP_PORT=993 +SMTP_PORT=587 -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +# 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="*" +``` -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! +### 4. Geliştirme Sunucusunu Başlatın +```bash +npm run dev +``` +Uygulama `http://localhost:3000` adresinde çalışmaya başlayacaktır. -## Deploy on Vercel +## 🐳 Docker ile Kurulum (Production) -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +Proje, standalone modda production için optimize edilmiş bir `Dockerfile` içerir. Coolify, CapRover veya standart Docker ortamlarında kolayca çalıştırılabilir. -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +```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.