diff --git a/docs/man/chasquid-util.1 b/docs/man/chasquid-util.1 new file mode 100644 index 0000000..47e002a --- /dev/null +++ b/docs/man/chasquid-util.1 @@ -0,0 +1,180 @@ +.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) +.\" +.\" 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 +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. 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 +.. +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "chasquid-util 1" +.TH chasquid-util 1 "2018-04-03" "" "" +.\" 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\-util \- chasquid management tool +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBchasquid-util\fR [\fIoptions\fR] user-add \fIuser@domain\fR [\-\-password=\fIpassword\fR] +.PP +\&\fBchasquid-util\fR [\fIoptions\fR] user-remove \fIuser@domain\fR +.PP +\&\fBchasquid-util\fR [\fIoptions\fR] authenticate \fIuser@domain\fR [\-\-password=\fIpassword\fR] +.PP +\&\fBchasquid-util\fR [\fIoptions\fR] check-userdb \fIdomain\fR +.PP +\&\fBchasquid-util\fR [\fIoptions\fR] aliases-resolve \fIaddr\fR +.PP +\&\fBchasquid-util\fR [\fIoptions\fR] print-config +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +chasquid-util is a command-line utility for \fIchasquid\fR\|(1) operations. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fBuser-add\fR \fIuser@domain\fR [\-\-password=\fIpassword\fR]" 8 +.IX Item "user-add user@domain [--password=password]" +Add a new user to the domain. +.IP "\fBuser-remove\fR \fIuser@domain\fR" 8 +.IX Item "user-remove user@domain" +Remove the user from the domain. +.IP "\fBauthenticate\fR \fIuser@domain\fR [\-\-password=\fIpassword\fR]" 8 +.IX Item "authenticate user@domain [--password=password]" +Check the user's password. +.IP "\fBcheck-userdb\fR \fIdomain\fR" 8 +.IX Item "check-userdb domain" +Check the integrity of the domain's users database. +.IP "\fBaliases-resolve\fR \fIaddr\fR" 8 +.IX Item "aliases-resolve addr" +Resolve the given address. +.IP "\fBprint-config\fR" 8 +.IX Item "print-config" +Parse and print the configuration in a human-readable way. +.IP "\fB\-C\fR or \fB\-\-configdir=" 8 +.IX Item "-C or --configdir=" +Configuration directory. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIchasquid\fR\|(1) diff --git a/docs/man/chasquid-util.1.pod b/docs/man/chasquid-util.1.pod new file mode 100644 index 0000000..6825a1d --- /dev/null +++ b/docs/man/chasquid-util.1.pod @@ -0,0 +1,61 @@ +=head1 NAME + +chasquid-util - chasquid management tool + + +=head1 SYNOPSIS + +B [I] user-add I [--password=I] + +B [I] user-remove I + +B [I] authenticate I [--password=I] + +B [I] check-userdb I + +B [I] aliases-resolve I + +B [I] print-config + + +=head1 DESCRIPTION + +chasquid-util is a command-line utility for chasquid(1) operations. + +=head1 OPTIONS + +=over 8 + +=item B I [--password=I] + +Add a new user to the domain. + +=item B I + +Remove the user from the domain. + +=item B I [--password=I] + +Check the user's password. + +=item B I + +Check the integrity of the domain's users database. + +=item B I + +Resolve the given address. + +=item B + +Parse and print the configuration in a human-readable way. + +=item B<-C> or B<--configdir=> + +Configuration directory. + +=back + +=head1 SEE ALSO + +chasquid(1) diff --git a/docs/man/chasquid.1 b/docs/man/chasquid.1 new file mode 100644 index 0000000..b213d7d --- /dev/null +++ b/docs/man/chasquid.1 @@ -0,0 +1,222 @@ +.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) +.\" +.\" 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 +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. 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 +.. +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "chasquid 1" +.TH chasquid 1 "2018-04-02" "" "" +.\" 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 \s-1SMTP\s0 (email) server. +.PP +It aims to be easy to configure and maintain for a small mail server, at the +expense of flexibility and functionality. +.PP +It's 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\-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's 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 \fIchasquid.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. +.PP +Note the \fIcerts/\fR directory layout matches the one from \fIcertbot\fR\|(1) (client for +Let's Encrypt \s-1CA\s0), so you can just symlink \fIcerts/\fR to +\&\fI/etc/letsencrypt/live\fR. +.PP +Make sure the user you use to run chasquid under (\*(L"mail\*(R" in the example +config) can access the certificates and private keys. +.SH "CONTACT" +.IX Header "CONTACT" +Main website . +.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" +\&\fIchasquid\-util\fR\|(1), \fIchasquid.conf\fR\|(5) diff --git a/docs/man/chasquid.1.pod b/docs/man/chasquid.1.pod new file mode 100644 index 0000000..ee9909e --- /dev/null +++ b/docs/man/chasquid.1.pod @@ -0,0 +1,120 @@ +=head1 NAME + +chasquid - SMTP (email) server + +=head1 SYNOPSIS + +B [I...] + +=head1 DESCRIPTION + +chasquid is an SMTP (email) server. + +It aims to be easy to configure and maintain for a small mail server, at the +expense of flexibility and functionality. + +It's written in Go, and distributed under the Apache license 2.0. + + +=head1 OPTIONS + +=over 8 + +=item B<-config_dir> I + +configuration directory (default F) + +=item B<-alsologtostderr> + +also log to stderr, in addition to the file + +=item B<-logfile> I + +file to log to (enables logtime) + +=item B<-logtime> + +include the time when writing the log to stderr + +=item B<-logtosyslog> I + +log to syslog, with the given tag + +=item B<-v> I + +verbosity level (1 = debug) + +=item B<-version> + +show version and exit + +=back + + +=head1 FILES + +The daemon's configuration is by default in F, and can be +changed with the I<-config_dir> flag. + +Inside that directory, the daemon expects the following structure: + +=over 8 + +=item F + +Main config file, see chasquid.conf(5). + +=item F + +Per-domain configuration. + +=item F + +Domain-specific configuration. Can be empty. + +=item F + +User and password database for this domain. + +=item F + +Aliases for the domain. + +=item F + +Certificates to use, one directory per pair. + +=item F + +Certificates for this domain. + +=item F + +Certificate (full chain). + +=item F + +Private key. + +=back + +Note the F directory layout matches the one from certbot(1) (client for +Let's Encrypt CA), so you can just symlink F to +F. + +Make sure the user you use to run chasquid under ("mail" in the example +config) can access the certificates and private keys. + + +=head1 CONTACT + +L
. + +If you have any questions, comments or patches please send them to the mailing +list, C. To subscribe, send an email to +C. + + +=head1 SEE ALSO + +chasquid-util(1), chasquid.conf(5) diff --git a/docs/man/chasquid.conf.5 b/docs/man/chasquid.conf.5 new file mode 100644 index 0000000..b8176dc --- /dev/null +++ b/docs/man/chasquid.conf.5 @@ -0,0 +1,219 @@ +.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) +.\" +.\" 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 +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. 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 +.. +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "chasquid.conf 5" +.TH chasquid.conf 5 "2018-04-03" "" "" +.\" 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.conf(5) \-\- chasquid configuration file +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fIchasquid.conf\fR\|(5) is \fIchasquid\fR\|(1)'s main configuration file. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The file is in protocol buffers' text format. +.PP +Comments start with \f(CW\*(C`#\*(C'\fR. Empty lines are allowed. Values are of the form +\&\f(CW\*(C`key: value\*(C'\fR. Values can be strings (quoted), integers, or booleans (\f(CW\*(C`true\*(C'\fR or +\&\f(CW\*(C`false\*(C'\fR). +.PP +Some values might be repeated, for example the listening addresses. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fBhostname\fR (string):" 8 +.IX Item "hostname (string):" +Default hostname to use when saying hello. This is used to say hello to +clients, for aesthetic purposes. Default: the system's hostname. +.IP "\fBmax_data_size_mb\fR (int):" 8 +.IX Item "max_data_size_mb (int):" +Maximum email size, in megabytes. Default: 50. +.IP "\fBsmtp_address\fR (repeated string):" 8 +.IX Item "smtp_address (repeated string):" +Addresses to listen on for \s-1SMTP.\s0 Default: \*(L"systemd\*(R", which means systemd +passes sockets to us. systemd sockets must be named with +\&\fBFileDescriptorName=smtp\fR. +.IP "\fBsubmission_address\fR (repeated string):" 8 +.IX Item "submission_address (repeated string):" +Addresses to listen on for submission. Default: \*(L"systemd\*(R", which means +systemd passes sockets to us. systemd sockets must be named with +\&\fBFileDescriptorName=submission\fR. +.IP "\fBmonitoring_address\fR (string):" 8 +.IX Item "monitoring_address (string):" +Address for the monitoring \s-1HTTP\s0 server. Do \s-1NOT\s0 expose this to the public +internet. Default: no monitoring server. +.IP "\fBmail_delivery_agent_bin\fR (string):" 8 +.IX Item "mail_delivery_agent_bin (string):" +Mail delivery agent (\s-1MDA,\s0 also known as \s-1LDA\s0) to use. This should point +to the binary to use to deliver email to local users. The content of the +email will be passed via stdin. If it exits unsuccessfully, we assume +the mail was not delivered. Default: \fImaildrop\fR. +.IP "\fBmail_delivery_agent_args\fR (repeated string):" 8 +.IX Item "mail_delivery_agent_args (repeated string):" +Command line arguments for the mail delivery agent. One per argument. +Some replacements will be done. +.Sp +On an email sent from marsnik@mars to venera@venus: +.Sp +.Vb 6 +\& %from% \-> from address (marsnik@mars) +\& %from_user% \-> from user (marsnik) +\& %from_domain% \-> from domain (mars) +\& %to% \-> to address (venera@venus) +\& %to_user% \-> to user (venera) +\& %to_domain% \-> to domain (venus) +.Ve +.Sp +Default: \f(CW"\-f", "%from%", "\-d", "%to_user%"\fR (adequate for procmail and +maildrop). +.IP "\fBdata_dir\fR (string):" 8 +.IX Item "data_dir (string):" +Directory where we store our persistent data. Default: +\&\fI/var/lib/chasquid\fR. +.IP "\fBsuffix_separators\fR (string):" 8 +.IX Item "suffix_separators (string):" +Suffix separator, to perform suffix removal of local users. For +example, if you set this to \f(CW\*(C`\-+\*(C'\fR, email to local user \f(CW\*(C`user\-blah\*(C'\fR and +\&\f(CW\*(C`user+blah\*(C'\fR will be delivered to \f(CW\*(C`user\*(C'\fR. Including \f(CW\*(C`+\*(C'\fR is strongly +encouraged, as it is assumed for email forwarding. Default: \f(CW\*(C`+\*(C'\fR. +.IP "\fBdrop_characters\fR (string):" 8 +.IX Item "drop_characters (string):" +Characters to drop from the user part on local emails. For example, if +you set this to \f(CW\*(C`._\*(C'\fR, email to local user \f(CW\*(C`u.se_r\*(C'\fR will be delivered to +\&\f(CW\*(C`user\*(C'\fR. Default: \f(CW\*(C`.\*(C'\fR. +.IP "\fBmail_log_path\fR (string):" 8 +.IX Item "mail_log_path (string):" +Path where to write the mail log to. If \f(CW\*(C`\*(C'\fR, log using the +syslog (at \f(CW\*(C`MAIL|INFO\*(C'\fR priority). Default: \f(CW\*(C`\*(C'\fR. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIchasquid\fR\|(1) diff --git a/docs/man/chasquid.conf.5.pod b/docs/man/chasquid.conf.5.pod new file mode 100644 index 0000000..c2a2b16 --- /dev/null +++ b/docs/man/chasquid.conf.5.pod @@ -0,0 +1,102 @@ +=head1 NAME + +chasquid.conf(5) -- chasquid configuration file + +=head1 SYNOPSIS + +chasquid.conf(5) is chasquid(1)'s main configuration file. + + +=head1 DESCRIPTION + +The file is in protocol buffers' text format. + +Comments start with C<#>. Empty lines are allowed. Values are of the form +C. Values can be strings (quoted), integers, or booleans (C or +C). + +Some values might be repeated, for example the listening addresses. + + +=head1 OPTIONS + +=over 8 + +=item B (string): + +Default hostname to use when saying hello. This is used to say hello to +clients, for aesthetic purposes. Default: the system's hostname. + +=item B (int): + +Maximum email size, in megabytes. Default: 50. + +=item B (repeated string): + +Addresses to listen on for SMTP. Default: "systemd", which means systemd +passes sockets to us. systemd sockets must be named with +B. + +=item B (repeated string): + +Addresses to listen on for submission. Default: "systemd", which means +systemd passes sockets to us. systemd sockets must be named with +B. + +=item B (string): + +Address for the monitoring HTTP server. Do NOT expose this to the public +internet. Default: no monitoring server. + +=item B (string): + +Mail delivery agent (MDA, also known as LDA) to use. This should point +to the binary to use to deliver email to local users. The content of the +email will be passed via stdin. If it exits unsuccessfully, we assume +the mail was not delivered. Default: F. + +=item B (repeated string): + +Command line arguments for the mail delivery agent. One per argument. +Some replacements will be done. + +On an email sent from marsnik@mars to venera@venus: + + %from% -> from address (marsnik@mars) + %from_user% -> from user (marsnik) + %from_domain% -> from domain (mars) + %to% -> to address (venera@venus) + %to_user% -> to user (venera) + %to_domain% -> to domain (venus) + +Default: C<"-f", "%from%", "-d", "%to_user%"> (adequate for procmail and +maildrop). + +=item B (string): + +Directory where we store our persistent data. Default: +F. + +=item B (string): + +Suffix separator, to perform suffix removal of local users. For +example, if you set this to C<-+>, email to local user C and +C will be delivered to C. Including C<+> is strongly +encouraged, as it is assumed for email forwarding. Default: C<+>. + +=item B (string): + +Characters to drop from the user part on local emails. For example, if +you set this to C<._>, email to local user C will be delivered to +C. Default: C<.>. + +=item B (string): + +Path where to write the mail log to. If C<< >>, log using the +syslog (at C priority). Default: C<< >>. + +=back + +=head1 SEE ALSO + +chasquid(1) diff --git a/docs/man/generate.sh b/docs/man/generate.sh new file mode 100755 index 0000000..f14ebf6 --- /dev/null +++ b/docs/man/generate.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Convert pod files to manual pages, using pod2man. +# +# Assumes files are named like: +# .
.pod + +set -e + +for IN in *.pod; do + OUT=$( basename $IN .pod ) + SECTION=${OUT##*.} + NAME=${OUT%.*} + + podchecker $IN + pod2man --section=$SECTION --name=$NAME \ + --release "" --center "" \ + $IN $OUT +done diff --git a/docs/man/mda-lmtp.1 b/docs/man/mda-lmtp.1 new file mode 100644 index 0000000..3227da7 --- /dev/null +++ b/docs/man/mda-lmtp.1 @@ -0,0 +1,186 @@ +.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) +.\" +.\" 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 +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. 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 +.. +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "mda-lmtp 1" +.TH mda-lmtp 1 "2018-04-02" "" "" +.\" 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" +mda\-lmtp \- MDA that uses LMTP to do the mail delivery +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +mda-lmtp +[\fB\-addr_network\fR \fInet\fR] +\&\fB\-addr\fR \fIaddr\fR +\&\fB\-d\fR \fIrecipient\fR +\&\fB\-f\fR \fIfrom\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +mda-lmtp is a very basic \s-1MDA\s0 that uses \s-1LMTP\s0 to do the mail delivery. +.PP +It takes command line arguments similar to maildrop or procmail, reads an +email via standard input, and sends it over the given \s-1LMTP\s0 server. Supports +connecting to \s-1LMTP\s0 servers over \s-1UNIX\s0 sockets and \s-1TCP.\s0 +.PP +It can be used when your mail server does not support \s-1LMTP\s0 directly. +.SH "EXAMPLE" +.IX Header "EXAMPLE" +\&\fBmda-lmtp\fR \fI\-\-addr=localhost:1234\fR \fI\-f juan@casa\fR \fI\-d jose\fR < email +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-addr\fR \fIaddress\fR" 8 +.IX Item "-addr address" +\&\s-1LMTP\s0 server address to connect to. +.IP "\fB\-addr_network\fR \fInetwork\fR" 8 +.IX Item "-addr_network network" +Network of the \s-1LMTP\s0 address (e.g. \fIunix\fR or \fItcp\fR). If not present, it will +be autodetected from the address itself. +.IP "\fB\-d\fR \fIrecipient\fR" 8 +.IX Item "-d recipient" +Recipient. +.IP "\fB\-f\fR \fIfrom\fR" 8 +.IX Item "-f from" +Whom the message is from. +.SH "RETURN VALUES" +.IX Header "RETURN VALUES" +.IP "\fB0\fR" 8 +.IX Item "0" +success +.IP "\fB75\fR" 8 +.IX Item "75" +temporary failure +.IP "\fIother\fR" 8 +.IX Item "other" +permanent failures (usually indicate misconfiguration) +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIchasquid\fR\|(1) diff --git a/docs/man/mda-lmtp.1.pod b/docs/man/mda-lmtp.1.pod new file mode 100644 index 0000000..308306d --- /dev/null +++ b/docs/man/mda-lmtp.1.pod @@ -0,0 +1,73 @@ + +=head1 NAME + +mda-lmtp - MDA that uses LMTP to do the mail delivery + +=head1 SYNOPSIS + +mda-lmtp +[B<-addr_network> I] +B<-addr> I +B<-d> I +B<-f> I + +=head1 DESCRIPTION + +mda-lmtp is a very basic MDA that uses LMTP to do the mail delivery. + +It takes command line arguments similar to maildrop or procmail, reads an +email via standard input, and sends it over the given LMTP server. Supports +connecting to LMTP servers over UNIX sockets and TCP. + +It can be used when your mail server does not support LMTP directly. + +=head1 EXAMPLE + +B I<--addr=localhost:1234> I<-f juan@casa> I<-d jose> < email + + +=head1 OPTIONS + +=over 8 + +=item B<-addr> I
+ +LMTP server address to connect to. + +=item B<-addr_network> I + +Network of the LMTP address (e.g. I or I). If not present, it will +be autodetected from the address itself. + +=item B<-d> I + +Recipient. + +=item B<-f> I + +Whom the message is from. + +=back + + +=head1 RETURN VALUES + +=over 8 + +=item B<0> + +success + +=item B<75> + +temporary failure + +=item I + +permanent failures (usually indicate misconfiguration) + +=back + +=head1 SEE ALSO + +chasquid(1) diff --git a/docs/man/smtp-check.1 b/docs/man/smtp-check.1 new file mode 100644 index 0000000..a5e6cef --- /dev/null +++ b/docs/man/smtp-check.1 @@ -0,0 +1,156 @@ +.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) +.\" +.\" 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 +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. 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 +.. +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "smtp-check 1" +.TH smtp-check 1 "2018-04-03" "" "" +.\" 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" +smtp\-check \- SMTP setup checker +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBsmtp-check\fR [\-port \fIport\fR] [\-skip_tls_check] \fIdomain\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +smtp-check is a command-line too for checking \s-1SMTP\s0 setups (\s-1DNS\s0 records, \s-1TLS\s0 +certificates, \s-1SPF,\s0 etc.). +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-port\fR \fIport\fR:" 8 +.IX Item "-port port:" +Port to use for connecting to the \s-1MX\s0 servers. +.IP "\fB\-skip_tls_check\fR:" 8 +.IX Item "-skip_tls_check:" +Skip \s-1TLS\s0 check (useful if connections are blocked). +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIchasquid\fR\|(1) diff --git a/docs/man/smtp-check.1.pod b/docs/man/smtp-check.1.pod new file mode 100644 index 0000000..a35eaec --- /dev/null +++ b/docs/man/smtp-check.1.pod @@ -0,0 +1,31 @@ +=head1 NAME + +smtp-check - SMTP setup checker + +=head1 SYNOPSIS + +B [-port I] [-skip_tls_check] I + +=head1 DESCRIPTION + +smtp-check is a command-line too for checking SMTP setups (DNS records, TLS +certificates, SPF, etc.). + +=head1 OPTIONS + +=over 8 + +=item B<-port> I: + +Port to use for connecting to the MX servers. + +=item B<-skip_tls_check>: + +Skip TLS check (useful if connections are blocked). + +=back + +=head1 SEE ALSO + +chasquid(1) +