All Projects → skx → webmail

skx / webmail

Licence: GPL-2.0 license
A golang webmail server.

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to webmail

squirrelmail
🌰️🐿️ SquirrelMail GitHub Repository (PHP 7-OK!)
Stars: ✭ 42 (-8.7%)
Mutual labels:  webmail, imap-client
Mail-Toaster-6
Mail Toaster 6
Stars: ✭ 40 (-13.04%)
Mutual labels:  webmail
Cypht
Cypht: Lightweight Open Source webmail written in PHP and JavaScript
Stars: ✭ 628 (+1265.22%)
Mutual labels:  webmail
Ad Hoc Email Server
An ad-hoc disposable temporary mail server. Create and use ad hoc disposable mailboxes for testing or any other purpose.
Stars: ✭ 201 (+336.96%)
Mutual labels:  webmail
Mailur
Lightweight webmail inspired by Gmail
Stars: ✭ 740 (+1508.7%)
Mutual labels:  webmail
Mailu
Insular email distribution - mail server as Docker images
Stars: ✭ 3,151 (+6750%)
Mutual labels:  webmail
Neutron
Self-hosted server for the ProtonMail client
Stars: ✭ 452 (+882.61%)
Mutual labels:  webmail
webmail-pro-8
Webmail front-end for existing mail server, with personal calendar, contacts, and mobile sync.
Stars: ✭ 23 (-50%)
Mutual labels:  webmail
imap-proto
IMAP protocol parser and datastructures in Rust
Stars: ✭ 12 (-73.91%)
Mutual labels:  imap-client
Isotope Mail
Isotope Mail Client
Stars: ✭ 147 (+219.57%)
Mutual labels:  webmail
Magma
The magma server daemon, is an encrypted email system with support for SMTP, POP, IMAP, HTTP and MOLTEN,. Additional support for DMTP and DMAP is currently in active development.
Stars: ✭ 1,740 (+3682.61%)
Mutual labels:  webmail
Sephia Five
A secure and PGP enabled webmail module for Phosphorus Five
Stars: ✭ 21 (-54.35%)
Mutual labels:  webmail
enough mail
IMAP, POP3 and SMTP clients for Dart developers. Contains both low level as well as a high level API.
Stars: ✭ 78 (+69.57%)
Mutual labels:  imap-client
Inbucket
Disposable webmail server (similar to Mailinator) with built in SMTP, POP3, RESTful servers; no DB required.
Stars: ✭ 685 (+1389.13%)
Mutual labels:  webmail
imap client
IMAP (version 4rev1) implementation for dart
Stars: ✭ 20 (-56.52%)
Mutual labels:  imap-client
Mail
💌 Mail app for Nextcloud
Stars: ✭ 528 (+1047.83%)
Mutual labels:  webmail
Webmail Lite 8
Open-source webmail script for existing IMAP server
Stars: ✭ 208 (+352.17%)
Mutual labels:  webmail
dawebmail
Application for Zimbra Email Service
Stars: ✭ 24 (-47.83%)
Mutual labels:  webmail
mail-plus
邮件收取工具包,支持pop,imap,exchange协议的邮箱以及企业邮箱
Stars: ✭ 31 (-32.61%)
Mutual labels:  imap-client
Egroupware
Web based groupware server written in PHP, forum at https://help.egroupware.org/
Stars: ✭ 128 (+178.26%)
Mutual labels:  webmail

Go Report Card license Release

Webmail

This repository contains a simple webmail implementation for golang:

  • You can connect to a remote IMAP server and perform basic operations
    • Retrieve the list of remote folders.
    • Open a folder and see the appropriate messages.
      • Unread messages will be displayed in bold.
      • Messages which have been replied to will be shown with an icon.
      • Messages with attachments will display a "paperclip" next to them.
      • You can page back/forward by 50 messages.
    • For any message in the folder list you can retrieve it
      • Which will also mark the message as being read.
      • The message will be displayed as (filtered) HTML, Plain text, and RAW as applicable.
      • Attachments will be displayed and may be downloaded.

This application has been tested against three remote IMAP hosts:

  • GMail
  • GMX
  • My mailserver, running dovecot.

All perform well, though in all honesty my own server performs the worst because I have ~1000 mailboxes. So just getting the folder list takes some time I'd rather avoid.

Screenshots

There are a collection of screenshots here:

Installation

To install this run:

 ~ $ go get -u github.com/skx/webmail
 ~ $ go install github.com/skx/webmail

Usage

Build the application and start it:

 ~$ webmail

Now point your favourite browser at http://localhost:8080/ and fill in the appropriate details. For example if you wished to test against Google-mail you'd enter the following values:

Value Setting
Host imaps://imap.gmail.com/
Username [email protected]
Password s3cr1t

NOTE: If you want to us IMAP (143) use imap:// as a prefix, if you want IMAPS (993) use imaps://. To avoid issues I'm NOT validating the SSL certificate. This is intentional. Sorry.

Limitations

The main limitation is that this is a naive webmail client, which means that every time you carry out an option the flow goes:

  • Your browser sends a request to this server.
  • The server opens a new connection to the remote IMAP server:
    • The appropriate command(s) are executed.
    • The IMAP server connection is closed.
  • The server sends the response to your client.

This means that things are slower than they would be if there were a dedicated proxy maintaining a persistent connection to the IMAP server.

Missing Features

You cannot:

  • Delete a message.
  • Reply to a message.
  • Forward a message.
  • Compose a fresh message.

Some of those would be simple to add, others more complex.

Hacking

The generated HTML views are stored inside the compiled binary to ease deployment. If you wish to tweak the look & feel by editing them then you're more then welcome.

The raw HTML-templates are located beneath data/, and you can edit them then rebuild the compiled versions via the implant tool.

If you don't already have implant installed fetch it like so:

 go get -u  github.com/skx/implant/
 go install github.com/skx/implant/

Now regenerate the compiled version(s) of the templates and rebuild the binary to make your changes:

go generate
go build

Thanks

This project wouldn't have been possible without the use of some excellent libraries:

Steve

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].