Code Monkey home page Code Monkey logo

cmail's Introduction

Welcome to cmail!

cmail aims to provide all functionality needed for internet mail processing (aka, a mail server), while reducing the traditional complexities involved in configuration, adaptation and administration.

Detailed information is best found on our website at http://cmail.rocks/

Modules

The cmail system is split into multiple modules, each providing a distinct service.

  • cmail-smtpd: Mail Submission Agent, accepts incoming mail
  • cmail-dispatchd: Mail Transfer Agent, delivers outgoing mail
  • cmail-imapd: IMAP server, provides access to local mailboxes
  • cmail-popd: POP3 server, provides access to local mailboxes
  • cmail-webadmin: Web-based administration panel

Setup

Please visit the setup guide on cmail.rocks for information on how to install cmail in a productive environment or check SETUP.txt for information on a development setup.

cmail's People

Contributors

anotherwon avatar cbdevnet avatar jduepmeier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cmail's Issues

Create IMAP protocol tests

Creating these is slightly more advanced than creating tests against already implemented protocols, as they should first be validated against another IMAP implementation before being able to use them as implementation reference for cmail-imapd.

Check database schema version

MSA should check the database schema version. When in logmode there is now error when database version is not the same (but you can get prepare statement compile errors). Prepared statement compile errors should also been reported in stderr when logfile is enabled.

Custom reject message

Have the parameter to a 'reject' router be the message printed in the RCPT TO response.

Allow privacy-enhanced version of Received-Header

The Received-header prepended to every Mail processed by the system contains potentially sensitive information (mostly the remote addresss). This might optionally be filtered on authenticated connections.

Status output files

Configurable via the config files, for feeding data into monitoring tools like munin

Factor out user database connections

User databases are currently attached with the SQLite ATTACH DATABASE facility.
This has some side effects such as locking all attached databases when entering an exclusive transaction on the master database as well as introducing limits on the number of user databases attached.

The way to solve this would be to have SQLite connection handles per database, which should be doable because we currently do not use cross-database queries.

popd bulk deletion

Deleting lots (1k+) of mail via the POP DELE command takes a lot of time after issuing QUIT (due to repeated filesystem hits), possibly timing out client connections/disabling new connections/disrupting active sessions/enabling DoS attacks.

Marking mails for deletion in the database and bulk-deleting them with one statement should fix this.

Create control-connection mechanism

Most useful would probably be domain sockets.

This functionality would be useful for

  • Controlling daemon functionality (starting interval runs, etc)
  • Getting telemetry data (for munin, etc)

Support reading dhparams from file

In order to minimize startup time, introduce a new parameter to the bind config statement specifying a file to read the dhparameters from.

Create more tests for POP3/SMTP servers

Start by reading the RFCs and/or the lcov results and design new tests against functionality that could use more coverage.

Reference points:

  • Test directory TODO files
  • Already implemented tests
  • RFCs
  • lcov Coverage Reports

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.