Skip to content

lil-mail: A minimalist Go email client with basic IMAP/SMTP support. Simple web UI for reading and sending emails - nothing fancy, just the essentials.

License

Notifications You must be signed in to change notification settings

imranparuk/lilmail

 
 

Repository files navigation

LilMail πŸ“§

Build Status License: MIT

A lightweight, resource-efficient webmail client written in Go, supporting IMAP and SMTP protocols. LilMail emphasizes simplicity and minimal system requirements, with a file-based storage system that eliminates the need for a database.

✨ Features

  • πŸš€ Simple Setup: Just run the binary - no complex configuration needed
  • πŸ’‘ Minimal Resource Usage: Designed to run on low-end hardware
  • πŸ—„οΈ No Database Required: All data stored efficiently on disk
  • πŸ“₯ IMAP Support: Connect to any IMAP-enabled email server
  • πŸ“€ SMTP Integration: Send emails through standard SMTP protocols
  • πŸ’Ύ File-Based Caching: Reliable storage without external dependencies
  • πŸ”’ JWT Authentication: Secure user sessions
  • πŸ” Encryption: Built-in encryption for sensitive data

LilMail Demo

πŸ–₯️ System Requirements

  • Memory: 64MB RAM minimum
  • Storage: Depends on cache size (approximately 1GB recommended)
  • OS: Linux, macOS, or Windows

πŸš€ Quick Start

# Clone the repository
git clone https://github.com/exolutionza/lilmail.git

# Navigate to project directory
cd lilmail

# Run the application
go run main.go

βš™οΈ Configuration

Create a config.toml file in the root directory:

[imap]
server = "mail.example.com"
port = 993
tls = true

[cache]
folder = "./cache"

[jwt]
secret = "your-secure-jwt-secret"

[encryption]
key = "your-32-character-encryption-key"

[smtp]
# If not specified, SMTP server will be derived from IMAP server
server = "mail.example.com"
port = 587
use_starttls = true

Configuration Options Explained

  • IMAP Settings:

    • server: Your IMAP server address
    • port: IMAP port (typically 993 for SSL/TLS)
    • tls: Enable/disable TLS connection
  • Cache Settings:

    • folder: Local directory for storing cached mail data
  • JWT Settings:

    • secret: Secret key for JWT token generation
    • ⚠️ Change this to a secure random string in production
  • Encryption Settings:

    • key: 32-character key for encrypting sensitive data
    • ⚠️ Change this to a secure random key in production
  • SMTP Settings:

    • server: SMTP server address (optional - defaults to IMAP server)
    • port: SMTP port (typically 587 for STARTTLS)
    • use_starttls: Enable STARTTLS for SMTP connection

πŸ“ Usage

  1. Configure your config.toml file
  2. Run the application:
go run main.go
  1. Access the webmail interface at http://localhost:8080 (default port)

πŸ—οΈ Building and Releasing

To build the project:

# Build for current platform
go build -o lilmail

# Build for specific platforms
GOOS=linux GOARCH=amd64 go build -o lilmail-linux-amd64
GOOS=windows GOARCH=amd64 go build -o lilmail-windows-amd64.exe
GOOS=darwin GOARCH=amd64 go build -o lilmail-darwin-amd64

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

lil-mail: A minimalist Go email client with basic IMAP/SMTP support. Simple web UI for reading and sending emails - nothing fancy, just the essentials.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 50.9%
  • HTML 48.9%
  • Shell 0.2%