Compare commits
2 Commits
083bc5f546
...
b8648fb5f7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8648fb5f7 | ||
|
|
123d2c8d54 |
151
README.md
151
README.md
@@ -1,90 +1,67 @@
|
|||||||
# AyrisMail Central
|
# 🚀 AyrisMail Unified System
|
||||||
|
|
||||||
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.
|
[TR] Mailcow altyapısı için geliştirilmiş, gerçek zamanlı bildirim ve e-posta yönetim platformu.
|
||||||
|
[EN] Real-time notification and email management platform developed for Mailcow infrastructure.
|
||||||
## 🚀 Ö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.
|
|
||||||
|
## 🌍 Language / Dil
|
||||||
|
- [Türkçe](#türkçe)
|
||||||
|
- [English](#english)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<a name="türkçe"></a>
|
||||||
|
## 🇹🇷 Türkçe
|
||||||
|
|
||||||
|
AyrisMail, Mailcow sunucularını akıllı bir bildirim merkezine dönüştüren kapsamlı bir çözümdür. Sunucu seviyesindeki mailleri anlık olarak izler, analiz eder ve kullanıcı bazlı Telegram bildirimleri fırlatır.
|
||||||
|
|
||||||
|
### ✨ Öne Çıkan Özellikler
|
||||||
|
- **Anlık Bildirimler:** Worker motoru sayesinde mail sunucuya düştüğü anda Telegram bildirimi.
|
||||||
|
- **Akıllı Kod Çözücü:** RFC 2047 (MIME) desteği ile Türkçe karakterli ve kodlanmış başlıkları otomatik çözer.
|
||||||
|
- **Gelişmiş Panel:** Mailbox-Kullanıcı eşleşmelerini ve bildirim loglarını yönetebileceğiniz modern arayüz.
|
||||||
|
- **Güvenli Mimari:** Docker tabanlı, PostgreSQL veritabanlı ve Webhook korumalı yapı.
|
||||||
|
- **Çoklu Kullanıcı:** Her kullanıcı sadece kendine atanan mail kutularının bildirimlerini alır.
|
||||||
|
|
||||||
|
### 🛠️ Teknoloji Yığını
|
||||||
|
- **Core:** Next.js 16 (App Router), TypeScript
|
||||||
|
- **Database:** PostgreSQL & Prisma ORM
|
||||||
|
- **Worker:** Node.js, Chokidar (File Watcher), Doveadm
|
||||||
|
- **Deployment:** Docker & Docker Compose
|
||||||
|
|
||||||
|
### 🚀 Hızlı Kurulum
|
||||||
|
1. `.env.example` dosyasını `.env` olarak kopyalayın ve bilgilerinizi girin.
|
||||||
|
2. Sistemi başlatın:
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.unified.yml up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<a name="english"></a>
|
||||||
|
## 🇺🇸 English
|
||||||
|
|
||||||
|
AyrisMail is a comprehensive solution that transforms Mailcow servers into an intelligent notification hub. It monitors server-level emails in real-time, analyzes them, and triggers user-based Telegram alerts.
|
||||||
|
|
||||||
|
### ✨ Key Features
|
||||||
|
- **Instant Notifications:** Telegram alerts triggered the moment an email hits the server via our custom Worker engine.
|
||||||
|
- **Smart MIME Decoder:** Automatically decodes RFC 2047 encoded subjects (UTF-8, Base64, etc.) for readable notifications.
|
||||||
|
- **Advanced Dashboard:** Modern UI to manage Mailbox-to-User mappings and track notification logs.
|
||||||
|
- **Secure Architecture:** Docker-based setup with PostgreSQL and protected Webhook signals.
|
||||||
|
- **Multi-Tenant:** Each user receives notifications only for their assigned mailboxes.
|
||||||
|
|
||||||
|
### 🛠️ Tech Stack
|
||||||
|
- **Core:** Next.js 16 (App Router), TypeScript
|
||||||
|
- **Database:** PostgreSQL & Prisma ORM
|
||||||
|
- **Worker:** Node.js, Chokidar (File Watcher), Doveadm
|
||||||
|
- **Deployment:** Docker & Docker Compose
|
||||||
|
|
||||||
|
### 🚀 Quick Start
|
||||||
|
1. Copy `.env.example` to `.env` and fill in your credentials.
|
||||||
|
2. Start the system:
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.unified.yml up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
© 2026 AyrisTech - Advanced Agentic Coding Systems
|
||||||
|
|||||||
60
README_INSTALL.md
Normal file
60
README_INSTALL.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# 🚀 AyrisMail - Hepsi Bir Arada Kurulum Rehberi
|
||||||
|
|
||||||
|
Bu proje, Mailcow sunucunuzdaki mailleri anlık olarak izleyen ve Telegram üzerinden bildirim gönderen akıllı bir bildirim sistemidir.
|
||||||
|
|
||||||
|
## 📦 Sistem Bileşenleri
|
||||||
|
1. **Next.js Web Paneli:** Mailbox eşleşmelerini ve bildirim loglarını yönettiğiniz arayüz.
|
||||||
|
2. **PostgreSQL:** Tüm kullanıcı ve log verilerinin saklandığı veritabanı.
|
||||||
|
3. **Ayris Worker:** Sunucu seviyesinde mailleri anlık çözen ve Next.js'e sinyal atan motor.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Kurulum Adımları
|
||||||
|
|
||||||
|
### 1. Dosya Yapısını Hazırlayın
|
||||||
|
Projeyi şu klasör yapısında olacak şekilde sunucunuza yerleştirin:
|
||||||
|
```text
|
||||||
|
/ayris-project
|
||||||
|
├── mailserver/ # Bu repo (Next.js)
|
||||||
|
├── ayristech-worker/ # Worker repo
|
||||||
|
└── docker-compose.unified.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Çevre Değişkenlerini Ayarlayın
|
||||||
|
`mailserver` klasörü içindeki `.env` dosyasını şu değişkenlerle doldurun:
|
||||||
|
|
||||||
|
```env
|
||||||
|
# Veritabanı (Docker içinde otomatik bağlanır)
|
||||||
|
DATABASE_URL="postgresql://postgres:ayris_pass_123@db:5432/ayrismail"
|
||||||
|
|
||||||
|
# Mailcow Bilgileri
|
||||||
|
MAILCOW_API_URL="https://mail.alanadiniz.com"
|
||||||
|
MAILCOW_API_KEY="your-api-key"
|
||||||
|
|
||||||
|
# Telegram
|
||||||
|
TELEGRAM_BOT_TOKEN="your-bot-token"
|
||||||
|
|
||||||
|
# Güvenlik
|
||||||
|
WEBHOOK_SIGNAL_SECRET="guclu-bir-sifre"
|
||||||
|
AUTH_SECRET="auth-secret-key"
|
||||||
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Sistemi Başlatın
|
||||||
|
Terminalden ana dizine girin ve şu komutu çalıştırın:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.unified.yml up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 Güvenlik Notları
|
||||||
|
- `/var/run/docker.sock` dosyasının bağlanması, Worker'ın Dovecot konteynerine komut göndermesini sağlar.
|
||||||
|
- `WEBHOOK_SIGNAL_SECRET` bilgisinin hem `.env` hem de Worker konfigürasyonunda aynı olduğundan emin olun.
|
||||||
|
|
||||||
|
## 📝 Kullanım
|
||||||
|
1. `http://sunucu-ip:3000` adresinden panele giriş yapın.
|
||||||
|
2. Kullanıcı oluşturun ve Telegram ID'sini girin.
|
||||||
|
3. Mailbox Mapping kısmından hangi mailin kime gideceğini tanımlayın.
|
||||||
|
4. Worker mailleri yakaladıkça bildirimler anında Telegram'a düşecektir.
|
||||||
53
docker-compose.unified.yml
Normal file
53
docker-compose.unified.yml
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# 1. Veritabanı
|
||||||
|
db:
|
||||||
|
image: postgres:15-alpine
|
||||||
|
container_name: ayrismail-db
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ayris_pass_123}
|
||||||
|
POSTGRES_DB: ayrismail
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
# 2. Next.js Uygulaması (Panel)
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: ./mailserver
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: ayrismail-app
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
environment:
|
||||||
|
DATABASE_URL: "postgresql://postgres:${POSTGRES_PASSWORD:-ayris_pass_123}@db:5432/ayrismail"
|
||||||
|
MAILCOW_API_URL: ${MAILCOW_API_URL}
|
||||||
|
MAILCOW_API_KEY: ${MAILCOW_API_KEY}
|
||||||
|
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
|
||||||
|
WEBHOOK_SIGNAL_SECRET: ${WEBHOOK_SIGNAL_SECRET}
|
||||||
|
AUTH_SECRET: ${AUTH_SECRET}
|
||||||
|
NEXTAUTH_URL: ${NEXTAUTH_URL:-http://localhost:3000}
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
# 3. Ayris Worker (Mail İzleyici)
|
||||||
|
worker:
|
||||||
|
build:
|
||||||
|
context: ../ayristech-worker
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: ayrismail-worker
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data:/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
environment:
|
||||||
|
NEXTJS_WEBHOOK_URL: "http://app:3000/api/webhooks/mail-signal"
|
||||||
|
WEBHOOK_SECRET: ${WEBHOOK_SIGNAL_SECRET}
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
Reference in New Issue
Block a user