mirror of
https://blitiri.com.ar/repos/chasquid
synced 2026-10-28 15:02:28 +00:00
e417d67f7c
In commit 3f9d0c0762, we added a new possible private file. If the file exists but there's an error reading it (common for permission issues), currently we just move on to the next file, and if it doesn't exist we may give up with that error. That can "hide" the access problems making them harder to debug. To help with those kinds of errors, this patch updates the logic to return an error if a private key exists but is inaccessible. It also adds an unit test for this function to cover the different scenarios, and updates the docs to match.
156 lines
4.7 KiB
Groff
156 lines
4.7 KiB
Groff
.\" -*- mode: troff; coding: utf-8 -*-
|
|
.\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
|
|
.\"
|
|
.\" Standard preamble:
|
|
.\" ========================================================================
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
|
.if t .sp .5v
|
|
.if n .sp
|
|
..
|
|
.de Vb \" Begin verbatim text
|
|
.ft CW
|
|
.nf
|
|
.ne \\$1
|
|
..
|
|
.de Ve \" End verbatim text
|
|
.ft R
|
|
.fi
|
|
..
|
|
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
|
|
.ie n \{\
|
|
. ds C` ""
|
|
. ds C' ""
|
|
'br\}
|
|
.el\{\
|
|
. ds C`
|
|
. ds C'
|
|
'br\}
|
|
.\"
|
|
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
|
.ie \n(.g .ds Aq \(aq
|
|
.el .ds Aq '
|
|
.\"
|
|
.\" If the F register is >0, we'll generate index entries on stderr for
|
|
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
|
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
|
.\" output yourself in some meaningful fashion.
|
|
.\"
|
|
.\" Avoid warning from groff about undefined register 'F'.
|
|
.de IX
|
|
..
|
|
.nr rF 0
|
|
.if \n(.g .if rF .nr rF 1
|
|
.if (\n(rF:(\n(.g==0)) \{\
|
|
. if \nF \{\
|
|
. de IX
|
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
|
..
|
|
. if !\nF==2 \{\
|
|
. nr % 0
|
|
. nr F 2
|
|
. \}
|
|
. \}
|
|
.\}
|
|
.rr rF
|
|
.\"
|
|
.\" Required to disable full justification in groff 1.23.0.
|
|
.if n .ds AD l
|
|
.\" ========================================================================
|
|
.\"
|
|
.IX Title "chasquid 1"
|
|
.TH chasquid 1 2026-09-27 "" ""
|
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
|
.\" way too many mistakes in technical documents.
|
|
.if n .ad l
|
|
.nh
|
|
.SH NAME
|
|
chasquid \- SMTP (email) server
|
|
.SH SYNOPSIS
|
|
.IX Header "SYNOPSIS"
|
|
\&\fBchasquid\fR [\fIoptions\fR...]
|
|
.SH DESCRIPTION
|
|
.IX Header "DESCRIPTION"
|
|
chasquid is an SMTP (email) server with a focus on simplicity, security, and
|
|
ease of operation.
|
|
.PP
|
|
It\*(Aqs written in Go, and distributed under the Apache license 2.0.
|
|
.SH OPTIONS
|
|
.IX Header "OPTIONS"
|
|
.IP "\fB\-config_dir\fR \fIdir\fR" 8
|
|
.IX Item "-config_dir dir"
|
|
configuration directory (default \fI/etc/chasquid\fR)
|
|
.IP "\fB\-config_overrides\fR \fIconfig\fR" 8
|
|
.IX Item "-config_overrides config"
|
|
configuration values (in text protobuf format) to override the on\-disk
|
|
configuration with. This should only be needed in very specific cases for
|
|
deployments where editing the configuration file is not feasible.
|
|
.IP \fB\-alsologtostderr\fR 8
|
|
.IX Item "-alsologtostderr"
|
|
also log to stderr, in addition to the file
|
|
.IP "\fB\-logfile\fR \fIfile\fR" 8
|
|
.IX Item "-logfile file"
|
|
file to log to (enables logtime)
|
|
.IP \fB\-logtime\fR 8
|
|
.IX Item "-logtime"
|
|
include the time when writing the log to stderr
|
|
.IP "\fB\-logtosyslog\fR \fItag\fR" 8
|
|
.IX Item "-logtosyslog tag"
|
|
log to syslog, with the given tag
|
|
.IP "\fB\-v\fR \fIlevel\fR" 8
|
|
.IX Item "-v level"
|
|
verbosity level (1 = debug)
|
|
.IP \fB\-version\fR 8
|
|
.IX Item "-version"
|
|
show version and exit
|
|
.SH FILES
|
|
.IX Header "FILES"
|
|
The daemon\*(Aqs configuration is by default in \fI/etc/chasquid/\fR, and can be
|
|
changed with the \fI\-config_dir\fR flag.
|
|
.PP
|
|
Inside that directory, the daemon expects the following structure:
|
|
.IP \fIchasquid.conf\fR 8
|
|
.IX Item "chasquid.conf"
|
|
Main config file, see \fBchasquid.conf\fR\|(5).
|
|
.IP \fIdomains/\fR 8
|
|
.IX Item "domains/"
|
|
Per\-domain configuration.
|
|
.IP \fIdomains/example.com/\fR 8
|
|
.IX Item "domains/example.com/"
|
|
Domain\-specific configuration. Can be empty.
|
|
.IP \fIdomains/example.com/users\fR 8
|
|
.IX Item "domains/example.com/users"
|
|
User and password database for this domain.
|
|
.IP \fIdomains/example.com/aliases\fR 8
|
|
.IX Item "domains/example.com/aliases"
|
|
Aliases for the domain.
|
|
.IP \fIcerts/\fR 8
|
|
.IX Item "certs/"
|
|
Certificates to use, one directory per pair.
|
|
.IP \fIcerts/mx.example.com/\fR 8
|
|
.IX Item "certs/mx.example.com/"
|
|
Certificates for this domain.
|
|
.IP \fIcerts/mx.example.com/fullchain.pem\fR 8
|
|
.IX Item "certs/mx.example.com/fullchain.pem"
|
|
Certificate (full chain).
|
|
.IP \fIcerts/mx.example.com/privkey.pem\fR 8
|
|
.IX Item "certs/mx.example.com/privkey.pem"
|
|
Private key (can also be named \fIkey.pem\fR).
|
|
.PP
|
|
Note the \fIcerts/\fR directory layout matches the one from certbot (client for
|
|
Let\*(Aqs Encrypt CA), so you can just symlink \fIcerts/\fR to
|
|
\&\fI/etc/letsencrypt/live\fR.
|
|
The layout from the NixOS ACME module (\fI/var/lib/acme\fR) is also supported.
|
|
.PP
|
|
Make sure the user you use to run chasquid under ("mail" in the example
|
|
config) can access the certificates and private keys.
|
|
.SH CONTACT
|
|
.IX Header "CONTACT"
|
|
Main website <https://blitiri.com.ar/p/chasquid>.
|
|
.PP
|
|
If you have any questions, comments or patches please send them to the mailing
|
|
list, \f(CW\*(C`chasquid@googlegroups.com\*(C'\fR. To subscribe, send an email to
|
|
\&\f(CW\*(C`chasquid+subscribe@googlegroups.com\*(C'\fR.
|
|
.SH "SEE ALSO"
|
|
.IX Header "SEE ALSO"
|
|
\&\fBchasquid\-util\fR\|(1), \fBchasquid.conf\fR\|(5)
|