Code Monkey home page Code Monkey logo

imap-server's Introduction

⚠️ Repository Archived ⚠️

This repository has been archived and is no longer maintained.

Development for the IMAP server has been moved to the Stalwart Mail Server repository, where ongoing updates and improvements will take place.

Thank you for your interest and contributions!


Stalwart IMAP is an open-source Internet Message Access Protocol server designed to be secure, fast, robust and scalable.

Key features:

  • IMAP4 and ManageSieve server:
  • Multiple IMAP extensions supported:
  • JMAP support:
  • Flexible and scalable:
    • Pluggable storage backends with RocksDB, FoundationDB, PostgreSQL, mySQL, SQLite, S3-Compatible, Redis and ElasticSearch support.
    • Internal, LDAP and SQL database authentication.
    • Full-text search available in 17 languages.
    • Disk quotas.
    • Sieve scripting language with support for all registered extensions.
    • Email aliases, mailing lists, subaddressing and catch-all addresses support.
    • Integration with OpenTelemetry to enable monitoring, tracing, and performance analysis.
  • Secure and robust:
    • Encryption at rest with S/MIME or OpenPGP.
    • Built-in Spam and Phishing filter.
    • OAuth 2.0 authorization code and device authorization flows.
    • Access Control Lists (ACLs).
    • Rate limiting.
    • Memory safe (thanks to Rust).

Get Started

Install Stalwart IMAP Server on your server by following the instructions for your platform:

All documentation is available at stalw.art/docs/get-started.

Note If you need a more comprehensive solution that includes an SMTP server, you should consider installing the Stalwart Mail Server instead.

Support

If you are having problems running Stalwart IMAP, you found a bug or just have a question, do not hesitate to reach us on Github Discussions, Reddit or Discord. Additionally you may become a sponsor to obtain priority support from Stalwart Labs Ltd.

Funding

Part of the development of this project was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594.

If you find the project useful you can help by becoming a sponsor. Thank you!

License

Licensed 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. See LICENSE for more details.

You can be released from the requirements of the AGPLv3 license by purchasing a commercial license. Please contact [email protected] for more details.

Copyright

Copyright (C) 2023, Stalwart Labs Ltd.

imap-server's People

Contributors

mdecimus avatar

Stargazers

Masanori Ogino avatar William Gill avatar Nico Miebach avatar  avatar Bhavesh avatar Nate avatar Omar Jatoi avatar  avatar sidney curron avatar David le Blanc avatar Claus Mandal avatar  avatar Mohsen Nasiri avatar Geoffrey avatar Jackson Sabey avatar Toil avatar Kemal Beyaz avatar Sotirios Roussis avatar  avatar Astor Palmeira avatar Vladislav Sorokin avatar  avatar David.Gao avatar ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) avatar  avatar Md. Sumon Islam avatar Dimitrij Pinneker avatar Sebastian Schlatow avatar GSchenck avatar Denis Denisov avatar  avatar  avatar Ellie Schieder avatar Vasilii Saiganov avatar Ian Nelson avatar Víctor Martínez avatar  avatar  avatar rusty kay avatar Federico Damián Schonborn avatar  avatar ELI JOSEPH BRADLEY avatar Alam avatar  avatar rollniak avatar  avatar Yt avatar Juse Less avatar jon ⚝ avatar Angelo avatar  avatar Justin Goldberg avatar Zhao Xiaohong avatar Andrey Tkachenko avatar Falk Pauser avatar Leander Janssen avatar maxim avatar Hukadan avatar MOZGIII avatar Carsten Abele avatar  avatar  avatar MITHIL MAJUMDER avatar houseme avatar Samir Djelal avatar Luke Frisken avatar Nιƈσ 🐉🔥 avatar KITAITI Makoto avatar darksaid98 avatar Paul Hey avatar Scott Fleener avatar Jasper Siepkes avatar Alan Grosskurth avatar  avatar Benjamin avatar l avatar Nick Ufer avatar  avatar WinPlay02 avatar  avatar Nigel Baillie avatar Georges Toth avatar  avatar Dorian Zedler avatar Ivan Krivosheev avatar Andrew Hlynskyi avatar Domi avatar Nathan Howell avatar Jack Merrill avatar CIH avatar Leo Unglaub avatar  avatar Marcelektro avatar Miaxos avatar null data avatar Jordan Arentsen avatar Ryan Faulhaber avatar Suraj avatar Seo Sanghyeon avatar le Duc Banal avatar

Watchers

Neustradamus avatar Jason Heiss avatar James Cloos avatar Fabio Tielen avatar  avatar  avatar  avatar Fabian avatar Ian Nelson avatar

imap-server's Issues

Syncing with JMAP?

Is there a way to sync this with JMAP? I'd like to use both IMAP/JMAP for compatibility reasons and it'd be a pretty useful feature.

Folders return same UIDValidity

Some IMAP clients rely on a different UIDValidity value per folder to work. This value is often combined with the message index to create a unique message id per mailbox. When returning the same UIDValidity the logic breaks.

Current behavior:
The IMAP server creates the same UIDValidity for all folders.

Desired behavior:
The IMAP server creates a different a UIDValidity per folder.

[bug]: K-9 mail is always showing an empty inbox, other folders work

What happened?

As the title says. The problem is not new, it happened in 4.2 already.

How can we reproduce the problem?

I can reproduce the problem by doing the following steps:

  • open K-9 mail downloaded from f-droid
  • add account from a stalwart server
  • open inbox folder or unified inbox (feature of k-9), both are empty

Version

v0.5.x

What database are you using?

PostgreSQL

What blob storage are you using?

S3-compatible

Where is your directory located?

SQL

What operating system are you using?

Docker

Relevant log output

Log output when pulling down in Inbox (fetching new mail)

2024-01-02T22:51:06.968349Z TRACE imap::core::client: event="read" data="4 NOOP\r\n" size=8
2024-01-02T22:51:06.968982Z TRACE imap::core::writer: event="write" data="4 OK NOOP completed\r\n" size=21
2024-01-02T22:51:06.986481Z TRACE imap::core::client: event="read" data="5 EXAMINE \"INBOX\"\r\n" size=19
2024-01-02T22:51:06.989118Z TRACE imap::core::writer: event="write" data="* OK [CLOSED] Closed previous mailbox\r\n* 8 EXISTS\r\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)\r\n* 0 RECENT\r\n* OK [PERMANENTFLAGS (\\Deleted \\Seen \\Answered \\Flagged \\Draft \\*)] All allowed\r\n* OK [UIDVALIDITY 223336917] UIDs valid\r\n* OK [UIDNEXT 25] Next predicted UID\r\n* OK [MAILBOXID (a)] Unique Mailbox ID\r\n5 OK [READ-ONLY] EXAMINE completed\r\n" size=351
2024-01-02T22:51:07.008698Z TRACE imap::core::client: event="read" data="6 UID SEARCH 1:8 NOT DELETED\r\n" size=30
2024-01-02T22:51:07.009167Z TRACE imap::core::writer: event="write" data="* SEARCH\r\n6 OK UID SEARCH completed\r\n" size=37

Code of Conduct

  • I agree to follow this project's Code of Conduct

[HELP] How to configure with SASL

I tried stalward-jmap and stalward-imap server, these are great, thanks for your work!
But I have a few difficulities.
IMAP server works without problem. I can receive inbound mails and read them.
Next I'd like to configure Postfix server with SASL using saslauthd for sending a outbound mail.
I tried saslauthd -a rimap -O localhost, but authentications alwasy fail.
Could you advice me how to configure Postfix with SASL using Stalwart-Imap server?

[enhancement]: Document how RFC6154 special-use mailboxes are created

Which feature or improvement would you like to request?

IMAP supports marking certain mailboxes as special use such as for SPAM, Sent, Drafts and Trash usage. An example from Dovecot is available here which might make a bit more sense. Not only do these special mailboxes automatically get created on first logon for the Dovecot case, they are appropriately annotated so a client supporting special use mailboxes will know what they are used for.

Currently Stalwart does support RFC6154, but I didn't see any documentation noting:

  • If these mailboxes are automatically created
  • How to create them which might simply be noting that your client needs to send the right data along

If special use mailboxes are not being automatically created I will raise another feature request to add support for it similar to the Dovecot example. It does make a new user setup quite easy.

Is your feature request related to a problem?

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Allow to listen unencrypted to TLS port and behave as if the transport was encrypted

In order to manage encryption at a reverse-proxy layer, it would be nice to allow the tls port to listen unencrypted but behaves as if it was encrypted and provide PLAIN login... This would need to be set up specially and a specific bind address might be useful to have port 143 listen to 0.0.0.0 and tls encrypted only to 127.0.0.1

This is not strictly required, a self signed certificate could be set up with the reverse proxy ignoring the backend certificate.

[bug]: Opening different folders quickly in thunderbird results in "Login to server xxx with username failed"

What happened?

As the title says. The problem is not new, it happened in 4.2 already.

How can we reproduce the problem?

I can reproduce the problem by doing the following steps:

  • open thunderbird
  • create ~5 folders
  • switch between them

Version

v0.5.x

What database are you using?

PostgreSQL

What blob storage are you using?

S3-compatible

Where is your directory located?

SQL

What operating system are you using?

Docker

Relevant log output

There is no mention of a failed log-in in the logs, only SQL lookups of the user.

There is a single suspicious looking SMTP line in the logs from around when it happens, may be unrelated:
* BYE Server shutting down.

Code of Conduct

  • I agree to follow this project's Code of Conduct

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.