aboutsummaryrefslogtreecommitdiff

olden-mail

olden-mail is an IMAP & SMTP proxy that allows you to connect to SSL enabled mail servers using insecure plaintext connections.

This is of course very insecure, but it's intended to allow vintage computers that don't have SSL capability or ther right ciphers to still be used for e-mail.

Installation

Pre-built binaries and packages

Binaries are available for macos and linux, for both aarch64 and x86_64 from https://build.r.bdr.sh/olden-mail, including .deb and .rpm packages.

Homebrew

You can also install this on macos via homebrew.

% brew tap rbdr/apps git@git.sr.ht:~rbdr/homebrew-apps
% brew install rbdr/apps/olden-mail

From source

You can run make for a debug build, or make -e profile=release for a release build.

Usage

The proxy requires you to set environment variables, but otherwise takes no options.

  • LOCAL_IMAP_PORT u16, the port in which the server will listen for IMAP clients. Defaults to 143.
  • LOCAL_IMAP_BIND_ADDRESS String, the address on which to listen for IMAP clients. Defaults to 0.0.0.0.
  • REMOTE_IMAP_PORT u16, the port to which the server will forward the IMAP messages. Defaults to 993.
  • REMOTE_IMAP_HOST String, the host to which the server will forward the IMAP messages. Required.

  • LOCAL_SMTP_PORT u16, the port in which the server will listen for SMTP clients. Defaults to 25.

  • LOCAL_SMTP_BIND_ADDRESS String, the address on which to listen for SMTP clients. Defaults to 0.0.0.0.
  • REMOTE_SMTP_PORT u16, the port to which the server will forward the SMTP messages. Defaults to 465.
  • REMOTE_SMTP_HOST String, the host to which the server will forward the SMTP messages. Required.

This means the minimum invocation is this (Shown here with inline environment variables)

% REMOTE_IMAP_HOST=imap.coolmailsite.example REMOTE_SMTP_HOST=smtp.coolmailsite.example olden-mail

Middleware

In order to work with some older clients, middleware allow transformation of messages. The current middleware are:

  • FindMailboxesCompatibility - Transforms IMAPv3 FIND MAILBOX commands to IMAPv4 LIST commands.

Debugging

You can control how much it prints by setting RUST_LOG. Setting it to debug will output the whole protocol stream. The default level is info.

Messages coming from the client are prefixed with >>>, and messages coming from the server with <<<. If a middleware modified a command, you'll see the message that was actually sent prefixed with ###.