mirror of
https://github.com/stalwartlabs/mail-server.git
synced 2025-10-09 12:05:49 +08:00
Updated README
This commit is contained in:
parent
4eca415e7b
commit
d3e5565253
2 changed files with 11 additions and 4 deletions
10
README.md
10
README.md
|
@ -57,9 +57,8 @@ Key features:
|
||||||
- Sender **reputation** monitoring by IP address, ASN, domain and email address.
|
- Sender **reputation** monitoring by IP address, ASN, domain and email address.
|
||||||
- **Greylisting** to temporarily defer unknown senders.
|
- **Greylisting** to temporarily defer unknown senders.
|
||||||
- **Spam traps** to set up decoy email addresses that catch and analyze spam.
|
- **Spam traps** to set up decoy email addresses that catch and analyze spam.
|
||||||
- **Flexible and scalable**:
|
- **Flexible**:
|
||||||
- Pluggable storage backends with **RocksDB**, **FoundationDB**, **PostgreSQL**, **mySQL**, **SQLite**, **S3-Compatible**, **Azure**, **Redis** and **ElasticSearch** support.
|
- Pluggable storage backends with **RocksDB**, **FoundationDB**, **PostgreSQL**, **mySQL**, **SQLite**, **S3-Compatible**, **Azure**, **Redis** and **ElasticSearch** support.
|
||||||
- **Clustering** support with node autodiscovery and partition-tolerant failure detection.
|
|
||||||
- Full-text search available in 17 languages.
|
- Full-text search available in 17 languages.
|
||||||
- Sieve scripting language with support for all [registered extensions](https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml).
|
- Sieve scripting language with support for all [registered extensions](https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml).
|
||||||
- Email aliases, mailing lists, subaddressing and catch-all addresses support.
|
- Email aliases, mailing lists, subaddressing and catch-all addresses support.
|
||||||
|
@ -73,6 +72,13 @@ Key features:
|
||||||
- Rate limiting.
|
- Rate limiting.
|
||||||
- Security audited (read the [report](https://stalw.art/blog/security-audit)).
|
- Security audited (read the [report](https://stalw.art/blog/security-audit)).
|
||||||
- Memory safe (thanks to Rust).
|
- Memory safe (thanks to Rust).
|
||||||
|
- **Scalable and fault-tolerant**:
|
||||||
|
- Designed to handle growth seamlessly, from small setups to large-scale deployments.
|
||||||
|
- Built with **fault tolerance** and **high availability** in mind, recovers from hardware or software failures with minimal operational impact.
|
||||||
|
- Partition-tolerant **failure detection**, ensuring continuous operation even during network partitions or node failures.
|
||||||
|
- **Coordinator-free** architecture with automatic node discovery eliminates central bottlenecks and single points of failure.
|
||||||
|
- **Kubernetes** support for automated scaling and efficient container orchestration.
|
||||||
|
- Read replicas, sharded blob storage and in-memory data stores for high performance and low latency.
|
||||||
- **Authentication and Authorization**:
|
- **Authentication and Authorization**:
|
||||||
- **OpenID Connect** authentication.
|
- **OpenID Connect** authentication.
|
||||||
- OAuth 2.0 authorization with [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows.
|
- OAuth 2.0 authorization with [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows.
|
||||||
|
|
|
@ -13,7 +13,8 @@ use smtp::core::Session;
|
||||||
use utils::config::Config;
|
use utils::config::Config;
|
||||||
|
|
||||||
use crate::smtp::{
|
use crate::smtp::{
|
||||||
session::{TestSession, VerifyResponse}, DnsCache, TestSMTP
|
session::{TestSession, VerifyResponse},
|
||||||
|
DnsCache, TestSMTP,
|
||||||
};
|
};
|
||||||
|
|
||||||
const CONFIG: &str = r#"
|
const CONFIG: &str = r#"
|
||||||
|
@ -28,7 +29,7 @@ mt-priority = [{if = "remote_ip = '10.0.0.1'", then = 'nsep'},
|
||||||
{else = false}]
|
{else = false}]
|
||||||
|
|
||||||
[session.ehlo]
|
[session.ehlo]
|
||||||
reject-non-fqdn = true
|
reject-non-fqdn = "starts_with(remote_ip, '10.0.0.')"
|
||||||
|
|
||||||
[auth.spf.verify]
|
[auth.spf.verify]
|
||||||
ehlo = [{if = "remote_ip = '10.0.0.2'", then = 'strict'},
|
ehlo = [{if = "remote_ip = '10.0.0.2'", then = 'strict'},
|
||||||
|
|
Loading…
Add table
Reference in a new issue