326 lines
7.6 KiB
Markdown
326 lines
7.6 KiB
Markdown
# GNX Mail - Modern Email Client
|
|
|
|
A comprehensive, secure, and feature-rich email server built with Django and React. GNX Mail provides a complete email solution with modern UI, advanced security features, and enterprise-grade functionality.
|
|
|
|
## 🚀 Features
|
|
|
|
### Core Email Functionality
|
|
- **Send & Receive Emails**: Full SMTP/IMAP support with multiple email providers
|
|
- **Rich Text Editor**: Compose emails with rich formatting, attachments, and signatures
|
|
- **Email Threading**: Conversation view for better email organization
|
|
- **Advanced Search**: Powerful search with filters and saved searches
|
|
- **Email Templates**: Create and manage reusable email templates
|
|
- **Auto-reply**: Set up automatic responses for out-of-office scenarios
|
|
|
|
### Security & Privacy
|
|
- **End-to-End Encryption**: Secure email communication
|
|
- **Two-Factor Authentication**: Enhanced account security
|
|
- **Rate Limiting**: Protection against spam and abuse
|
|
- **CSRF Protection**: Cross-site request forgery protection
|
|
- **Secure Password Storage**: Encrypted password storage with bcrypt
|
|
- **Login Attempt Monitoring**: Track and prevent unauthorized access
|
|
|
|
### User Experience
|
|
- **Modern React UI**: Beautiful, responsive interface
|
|
- **Dark/Light Theme**: Customizable appearance
|
|
- **Mobile Responsive**: Works perfectly on all devices
|
|
- **Real-time Notifications**: Instant email notifications
|
|
- **Drag & Drop**: Easy file attachment handling
|
|
- **Keyboard Shortcuts**: Power user features
|
|
|
|
### Organization & Management
|
|
- **Custom Folders**: Organize emails with custom folders
|
|
- **Contact Management**: Comprehensive contact system with groups
|
|
- **Email Rules**: Automated email processing and organization
|
|
- **Bulk Actions**: Manage multiple emails at once
|
|
- **Email Signatures**: Professional email signatures
|
|
- **Import/Export**: Backup and restore functionality
|
|
|
|
### Enterprise Features
|
|
- **Multi-user Support**: Team collaboration features
|
|
- **Admin Dashboard**: Comprehensive administration panel
|
|
- **API Access**: RESTful API for integrations
|
|
- **Audit Logs**: Complete activity tracking
|
|
- **Scalable Architecture**: Built for growth
|
|
|
|
## 🛠 Technology Stack
|
|
|
|
### Backend
|
|
- **Django 4.2**: Python web framework
|
|
- **PostgreSQL**: Robust database system
|
|
- **Redis**: Caching and message broker
|
|
- **Celery**: Asynchronous task processing
|
|
- **JWT Authentication**: Secure token-based auth
|
|
- **Django REST Framework**: API development
|
|
|
|
### Frontend
|
|
- **React 18**: Modern JavaScript framework
|
|
- **Tailwind CSS**: Utility-first CSS framework
|
|
- **React Query**: Data fetching and caching
|
|
- **React Hook Form**: Form handling
|
|
- **Lucide React**: Beautiful icons
|
|
- **Framer Motion**: Smooth animations
|
|
|
|
### Infrastructure
|
|
- **Docker**: Containerization
|
|
- **Nginx**: Reverse proxy and load balancer
|
|
- **Gunicorn**: WSGI HTTP server
|
|
- **SSL/TLS**: Secure connections
|
|
|
|
## 📦 Installation
|
|
|
|
### Prerequisites
|
|
- Python 3.11+
|
|
- Node.js 16+
|
|
- PostgreSQL 13+
|
|
- Redis 6+
|
|
- Docker (optional)
|
|
|
|
### Quick Start with Docker
|
|
|
|
1. **Clone the repository**
|
|
```bash
|
|
git clone <repository-url>
|
|
cd gnx-mail
|
|
```
|
|
|
|
2. **Start with Docker Compose**
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
3. **Access the application**
|
|
- Frontend: http://localhost:3000
|
|
- Backend API: http://localhost:8000
|
|
- Admin Panel: http://localhost:8000/admin
|
|
|
|
### Manual Installation
|
|
|
|
1. **Clone and setup**
|
|
```bash
|
|
git clone <repository-url>
|
|
cd gnx-mail
|
|
chmod +x scripts/setup.sh
|
|
./scripts/setup.sh
|
|
```
|
|
|
|
2. **Configure environment**
|
|
```bash
|
|
cp env.example .env
|
|
# Edit .env with your settings
|
|
```
|
|
|
|
3. **Start services**
|
|
```bash
|
|
# Terminal 1: Django server
|
|
source venv/bin/activate
|
|
python manage.py runserver
|
|
|
|
# Terminal 2: Celery worker
|
|
celery -A gnxmail worker -l info
|
|
|
|
# Terminal 3: Frontend
|
|
cd frontend
|
|
npm start
|
|
```
|
|
|
|
## ⚙️ Configuration
|
|
|
|
### Environment Variables
|
|
|
|
Create a `.env` file with the following variables:
|
|
|
|
```env
|
|
# Django Settings
|
|
SECRET_KEY=your-secret-key-here
|
|
DEBUG=True
|
|
ALLOWED_HOSTS=localhost,127.0.0.1
|
|
|
|
# Database
|
|
DB_NAME=gnxmail
|
|
DB_USER=postgres
|
|
DB_PASSWORD=password
|
|
DB_HOST=localhost
|
|
DB_PORT=5432
|
|
|
|
# Email Settings
|
|
EMAIL_HOST=smtp.gmail.com
|
|
EMAIL_PORT=587
|
|
EMAIL_USE_TLS=True
|
|
EMAIL_HOST_USER=your-email@gmail.com
|
|
EMAIL_HOST_PASSWORD=your-app-password
|
|
|
|
# Redis
|
|
CELERY_BROKER_URL=redis://localhost:6379/0
|
|
CELERY_RESULT_BACKEND=redis://localhost:6379/0
|
|
```
|
|
|
|
### Email Provider Setup
|
|
|
|
#### Gmail
|
|
1. Enable 2-factor authentication
|
|
2. Generate an app password
|
|
3. Use the app password in EMAIL_HOST_PASSWORD
|
|
|
|
#### Other Providers
|
|
- **Outlook**: smtp-mail.outlook.com:587
|
|
- **Yahoo**: smtp.mail.yahoo.com:587
|
|
- **Custom SMTP**: Configure your own SMTP server
|
|
|
|
## 🔧 API Documentation
|
|
|
|
### Authentication
|
|
```bash
|
|
# Register
|
|
POST /api/accounts/register/
|
|
{
|
|
"email": "user@example.com",
|
|
"username": "username",
|
|
"first_name": "John",
|
|
"last_name": "Doe",
|
|
"password": "securepassword",
|
|
"password_confirm": "securepassword"
|
|
}
|
|
|
|
# Login
|
|
POST /api/accounts/login/
|
|
{
|
|
"email": "user@example.com",
|
|
"password": "securepassword"
|
|
}
|
|
```
|
|
|
|
### Email Operations
|
|
```bash
|
|
# Send Email
|
|
POST /api/emails/send/
|
|
{
|
|
"to_emails": ["recipient@example.com"],
|
|
"subject": "Hello",
|
|
"body_text": "Hello world!",
|
|
"attachments": [file1, file2]
|
|
}
|
|
|
|
# Get Emails
|
|
GET /api/emails/?search=keyword&is_read=false
|
|
|
|
# Mark as Read
|
|
PATCH /api/emails/{id}/
|
|
{
|
|
"is_read": true
|
|
}
|
|
```
|
|
|
|
## 🚀 Deployment
|
|
|
|
### Production Deployment
|
|
|
|
1. **Update settings for production**
|
|
```python
|
|
DEBUG = False
|
|
ALLOWED_HOSTS = ['yourdomain.com']
|
|
SECURE_SSL_REDIRECT = True
|
|
```
|
|
|
|
2. **Use Docker Compose**
|
|
```bash
|
|
docker-compose -f docker-compose.prod.yml up -d
|
|
```
|
|
|
|
3. **Set up SSL certificates**
|
|
```bash
|
|
# Using Let's Encrypt
|
|
certbot --nginx -d yourdomain.com
|
|
```
|
|
|
|
### Environment-specific Configurations
|
|
|
|
- **Development**: Use SQLite and local Redis
|
|
- **Staging**: Use PostgreSQL with Docker
|
|
- **Production**: Use managed databases and Redis
|
|
|
|
## 🔒 Security Features
|
|
|
|
### Authentication & Authorization
|
|
- JWT token-based authentication
|
|
- Password strength validation
|
|
- Account lockout after failed attempts
|
|
- Session management
|
|
|
|
### Data Protection
|
|
- Encrypted password storage
|
|
- CSRF protection
|
|
- XSS prevention
|
|
- SQL injection protection
|
|
- Rate limiting
|
|
|
|
### Email Security
|
|
- SPF, DKIM, DMARC support
|
|
- Email encryption
|
|
- Attachment scanning
|
|
- Spam filtering
|
|
|
|
## 📊 Monitoring & Logging
|
|
|
|
### Application Monitoring
|
|
- Health check endpoints
|
|
- Performance metrics
|
|
- Error tracking
|
|
- User activity logs
|
|
|
|
### Email Monitoring
|
|
- Delivery status tracking
|
|
- Bounce handling
|
|
- Spam detection
|
|
- Usage analytics
|
|
|
|
## 🤝 Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Add tests
|
|
5. Submit a pull request
|
|
|
|
### Development Guidelines
|
|
- Follow PEP 8 for Python code
|
|
- Use ESLint for JavaScript
|
|
- Write comprehensive tests
|
|
- Update documentation
|
|
|
|
## 📝 License
|
|
|
|
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
|
|
## 🆘 Support
|
|
|
|
### Documentation
|
|
- [API Documentation](docs/api.md)
|
|
- [User Guide](docs/user-guide.md)
|
|
- [Developer Guide](docs/developer-guide.md)
|
|
|
|
### Community
|
|
- [GitHub Issues](https://github.com/your-repo/issues)
|
|
- [Discord Community](https://discord.gg/your-invite)
|
|
- [Email Support](mailto:support@gnxmail.com)
|
|
|
|
## 🎯 Roadmap
|
|
|
|
### Upcoming Features
|
|
- [ ] Mobile apps (iOS/Android)
|
|
- [ ] Calendar integration
|
|
- [ ] Video conferencing
|
|
- [ ] Advanced AI features
|
|
- [ ] Multi-language support
|
|
- [ ] Plugin system
|
|
|
|
### Performance Improvements
|
|
- [ ] Database optimization
|
|
- [ ] Caching strategies
|
|
- [ ] CDN integration
|
|
- [ ] Load balancing
|
|
|
|
---
|
|
|
|
**GNX Mail** - The future of email communication. Built with ❤️ using Django and React.
|