# 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 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 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.