MCPcopy Index your code
hub / github.com/albertito/chasquid

github.com/albertito/chasquid @v1.18.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.18.0 ↗ · + Follow
1,061 symbols 4,337 edges 108 files 325 documented · 31%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

chasquid

chasquid is an SMTP (email) server with a focus on simplicity, security, and ease of operation.

It is designed mainly for individuals and small groups.

It's written in Go, and distributed under the Apache license 2.0.

Go tests Go Report Card Coverage
Docs OFTC IRC

Features

  • Easy
    • Easy to configure.
    • Hard to mis-configure in ways that are harmful or insecure (e.g. no open relay, or clear-text authentication).
    • Monitoring HTTP server, with exported variables and tracing to help debugging.
    • Integrated with Debian, Ubuntu, Arch, and Alpine.
    • Supports using Dovecot for authentication.
  • Useful
    • Multiple/virtual domains, with per-domain users and aliases.
    • Suffix dropping (user+something@domainuser@domain).
    • Hooks for integration with greylisting, anti-virus, and anti-spam.
    • International usernames (SMTPUTF8) and domain names (IDNA).
  • Secure
    • Tracking of per-domain TLS support, prevents connection downgrading.
    • Multiple TLS certificates.
    • Easy integration with Let's Encrypt.
    • SPF and MTA-STS checking.
    • DKIM support (signing and verification).

Documentation

The how-to guide and the installation guide are the best starting points on how to install, configure and run chasquid.

You will find all documentation here.

Contact

If you have any questions, comments or patches, please send them to the mailing list, chasquid@googlegroups.com.
To subscribe, send an email to chasquid+subscribe@googlegroups.com.

Security issues can be reported privately to albertito@blitiri.com.ar.

Bug reports and pull requests on GitHub are also welcome.

You can also reach out via IRC, #chasquid on OFTC.

Extension points exported contracts — how you extend this code

Backend (Interface)
Backend is the common interface for all authentication backends. [6 implementers]
internal/auth/auth.go
Courier (Interface)
Courier delivers mail to a single recipient. It is implemented by different couriers, for both local and remote recipien [4 …
internal/courier/courier.go
Trace (Interface)
Trace represents a single request trace. [1 implementers]
internal/nettrace/trace.go
FileOp (FuncType)
FileOp represents an operation on a file (passed by its name).
internal/safeio/safeio.go
Handler (FuncType)
Handler is the type of RPC request handlers.
internal/localrpc/localrpc.go
TraceFunc (FuncType)
(no doc)
internal/dkim/context.go
NoErrorBackend (Interface)
NoErrorBackend is the interface for authentication backends that don't need to emit errors. This allows backends to avo [6 …
internal/auth/auth.go

Core symbols most depended-on inside this repo

Errorf
called by 559
internal/nettrace/trace.go
Printf
called by 102
internal/nettrace/trace.go
Add
called by 99
internal/set/set.go
Debugf
called by 79
internal/trace/trace.go
Finish
called by 78
internal/nettrace/trace.go
Close
called by 73
internal/safeio/safeio.go
String
called by 51
internal/dkim/dns.go
Error
called by 48
internal/trace/trace.go

Shape

Function 572
Method 383
Struct 77
TypeAlias 17
FuncType 6
Interface 6

Languages

Go100%
Python1%

Modules by API surface

internal/userdb/userdb.pb.go54 symbols
internal/queue/queue.pb.go50 symbols
internal/nettrace/trace.go49 symbols
internal/smtpsrv/server_test.go38 symbols
internal/smtpsrv/conn.go36 symbols
internal/config/config.pb.go28 symbols
internal/aliases/aliases_test.go28 symbols
internal/aliases/aliases.go25 symbols
internal/queue/queue.go22 symbols
internal/sts/sts.go21 symbols
internal/smtpsrv/server.go20 symbols
internal/maillog/maillog.go20 symbols

For agents

$ claude mcp add chasquid \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page