A modern web-based admin tool for managing mail server data based on flurdy's "How to set up a mail server on a GNU / Linux system".
- Versions
- Quick Start
- Features
- Technology Stack
- Prerequisites
- Development
- Documentation
- Security
- Production Deployment
- Contributing
- License
- Acknowledgments
- v3: The current Rust based setup
- v1: The original Play Framework with Scala based setup, refer to the git tag v1
The easiest way to run Sorting Office is using Docker:
# Clone and start
git clone <repository-url>
cd sortingoffice
chmod +x docker.sh
./docker.sh build
./docker.sh up
Access at http://localhost:3000 (admin/admin)
For detailed installation instructions, see ONBOARDING.md.
- Domain Management: Add, edit, and remove mail domains with quota and transport settings
- User Management: Manage mail users with password hashing and quota allocation
- Alias Management: Create and manage email aliases for forwarding
- Statistics Dashboard: View system-wide and per-domain statistics
- Modern UI: Built with Tailwind CSS for a clean, responsive interface
- Dark Mode Support: Toggle between light and dark themes
- HTMX Integration: Dynamic updates without full page reloads
- Secure Authentication: Role-based access control with multiple admin support
- Backend: Rust with Axum web framework
- Database: MySQL with Diesel ORM
- Frontend: HTMX for dynamic interactions
- Styling: Tailwind CSS for modern UI
- Templates: Askama template engine
- Authentication: bcrypt password hashing
- Rust 1.70+ and Cargo
- MySQL 8.0+ or MariaDB 10.5+
- Diesel CLI
For detailed setup instructions, see ONBOARDING.md.
# Run tests
make test
# Run UI tests
make test-ui
# Database management
make db-help
# Health checks
./scripts/health-check.sh
# Makefile section help
make help
make docker-help
make dev-help
make test-help
make db-help
make tunnel-help
make code-help
src/
- Rust application codetemplates/
- HTML templatesmigrations/
- Database migrationsdocs/
- Detailed documentationtests/
- Test suites
For detailed development information, see the documentation in the docs/ directory.
- ONBOARDING.md - Installation and setup
- AUTHENTICATION.md - Authentication and security
- DATABASE_MANAGEMENT.md - Database operations
- UI_TESTS.md - Testing information
- CONTACT.md - Support and contact
- Role-based authentication with multiple admin support
- bcrypt password hashing
- SQL injection protection via Diesel ORM
- Comprehensive security headers
- HTTPS ready
For detailed security information, see AUTHENTICATION.md.
- Set production environment variables
- Use production MySQL/MariaDB instance
- Configure reverse proxy (nginx/Apache)
- Enable HTTPS with proper certificates
- Set up regular database backups
For detailed deployment information, see DATABASE_BACKUP.md.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For detailed contribution guidelines, see CONTRIBUTING.md and CONTACT.md.
This project is licensed under the MIT License - see the LICENSE file for details.
- Based on flurdy's Postfix mail server guide
- Built with modern Rust web development tools
- UI inspired by modern admin dashboard designs