Skip to content

Mythfinity/imapsync-ini-wrapper

Repository files navigation

ImapSync Web Interface

A self-hostable web interface for imapsync, the email migration tool. Provides a friendly form for kicking off IMAP-to-IMAP migrations and a real-time view of sync progress.

Features

  • Real-time sync progress over WebSockets, with polling as a fallback
  • Per-user log isolation — each browser session gets its own private log directory
  • Live log viewer, download, and per-file deletion (with confirmation)
  • Form persistence in localStorage
  • Mobile-responsive UI
  • Runs in a single Docker container

Architecture

  • Backend: Node.js + Express + Socket.IO (server.js)
  • Frontend: React SPA (client/)
  • Engine: imapsync (bundled in the image)
  • Container: Multi-stage Docker build on ubuntu:20.04

Quick start

docker compose build
docker compose up -d

The container exposes the web UI on port 80 by default (see docker-compose.yml). Open http://localhost/ and fill in the source and destination IMAP credentials to start a migration.

Health check:

curl http://localhost/api/health

Development

The React frontend is baked into the Docker image at build time, so any frontend change requires a rebuild:

docker compose down
docker compose build --no-cache
docker compose up -d

To iterate on the client outside Docker:

cd client
npm install
npm run build

Project layout

.
├── server.js           # Node.js backend (Express + Socket.IO)
├── client/             # React frontend
│   ├── public/
│   └── src/
├── Dockerfile          # Multi-stage build
├── docker-compose.yml
├── logs/               # Per-user imapsync log files (created at runtime)
└── tmp/                # Temporary sync files

License

Copyright (C) 2026 Mythfinity Ltd.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

The full license text is in LICENSE.

A note on AGPL §13

Because this project is licensed under the AGPL, if you run a modified version of it as a network service, you must offer the users of that service the Corresponding Source of your modified version.

This project ships with a "Source code" link in the application footer (client/src/App.js) pointing at this repository, which satisfies §13 for unmodified deployments. If you fork and modify this code, please update that link to point at your fork so your users can obtain your corresponding source.

Third-party software

This project bundles and invokes imapsync, which is distributed under its own license — see the imapsync project for details. All other dependencies are listed in package.json and client/package.json and are governed by their respective licenses.

About

Self-hostable web interface for imapsync (email migration tool). Node.js + React + Docker. AGPL-3.0.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors