From 51daaee540a572bd180cf28917dc641c560151bf Mon Sep 17 00:00:00 2001 From: Baptiste Daroussin Date: Mon, 6 May 2024 11:26:12 +0200 Subject: [PATCH] README.*: convert all to READMEs to markdown --- README.footers => README.footers.md | 14 ++-- README.listtexts => README.listtexts.md | 0 README.postfix => README.postfix.md | 20 +++--- README.qmail | 64 ----------------- README.qmail.md | 63 ++++++++++++++++ README.security => README.security.md | 0 README.sendmail | 96 ------------------------- README.sendmail.md | 95 ++++++++++++++++++++++++ TUNABLES => TUNABLES.md | 0 9 files changed, 173 insertions(+), 179 deletions(-) rename README.footers => README.footers.md (90%) rename README.listtexts => README.listtexts.md (100%) rename README.postfix => README.postfix.md (92%) delete mode 100644 README.qmail create mode 100644 README.qmail.md rename README.security => README.security.md (100%) delete mode 100644 README.sendmail create mode 100644 README.sendmail.md rename TUNABLES => TUNABLES.md (100%) diff --git a/README.footers b/README.footers.md similarity index 90% rename from README.footers rename to README.footers.md index d84bfffc..c3a3ef1d 100644 --- a/README.footers +++ b/README.footers.md @@ -1,7 +1,6 @@ README.footers -Footers in Mlmmj -================ +# Footers in Mlmmj Mlmmj's built-in footer support is very rudimentary. It will work for plain text emails, and that's about it. It doesn't understand HTML or MIME or @@ -18,27 +17,24 @@ of people over the years quite satisfactorily, so this is not a high priority. Here are some pre-processors you can use. -alterMIME ---------- +## alterMIME The mlmmj-amime-receive script is designed to work with a program called alterMIME. The script itself (in amime-receive in the contrib directory) contains links to that software, and instructions. -Foot Filter ------------ +## Foot Filter alterMIME didn't allow me to reach my particular goals, so I wrote an alternative called Foot Filter. It is a single source-file C program; the code -and a very simple Makefile can be found in foot_filter in the contrib +and a very simple Makefile can be found in foot\_filter in the contrib directory, along with an altered version of mlmmj-amime-receive, called mlmmj-recieve-ff. Foot Filter will output documentation if you run it without arguments, and again, instructions for the script that handles the piping are found within it. -Py-MIME -------- +## Py-MIME A third option is Py-MIME. It was developed for use at The Document Foundation (LibreOffice) and is included in pymime in the contrib directory. diff --git a/README.listtexts b/README.listtexts.md similarity index 100% rename from README.listtexts rename to README.listtexts.md diff --git a/README.postfix b/README.postfix.md similarity index 92% rename from README.postfix rename to README.postfix.md index c0e8dbd5..cd44cb25 100644 --- a/README.postfix +++ b/README.postfix.md @@ -50,9 +50,9 @@ Postfix virtual domains (so you can host multiple domains on the same server). # A map to forward mail to a dummy domain virtual_alias_maps = hash:/var/spool/mlmmj/virtual - # Allow virtual alias maps to specify only the user part of the address - # and have the +extension part preserved when forwarding, so that - # list-name+subscribe, list-name+confsub012345678, etc. will all work + # Allow virtual alias maps to specify only the user part of the address + # and have the +extension part preserved when forwarding, so that + # list-name+subscribe, list-name+confsub012345678, etc. will all work propagate_unmatched_extensions = virtual # A map to forward mail for the dummy domain to the Mlmmj transport @@ -78,14 +78,14 @@ Postfix virtual domains (so you can host multiple domains on the same server). 6) (For each list) Add entries to the Postfix tables to accept mail for the list and forward it to the Mlmmj transport: - /var/spool/mlmmj/virtual: - list-name@domain.tld domain.tld--list-name@localhost.mlmmj + /var/spool/mlmmj/virtual: + list-name@domain.tld domain.tld--list-name@localhost.mlmmj - /var/spool/mlmmj/transport: - # for a flat structure - domain.tld--list-name@localhost.mlmmj mlmmj:list-dir - # for a hierarchical structure - domain.tld--list-name@localhost.mlmmj mlmmj:domain.tld/list-name + /var/spool/mlmmj/transport: + # for a flat structure + domain.tld--list-name@localhost.mlmmj mlmmj:list-dir + # for a hierarchical structure + domain.tld--list-name@localhost.mlmmj mlmmj:domain.tld/list-name Note that we have used a dummy domain 'localhost.mlmmj' to connect the virtual alias with the Mlmmj transport. This could be anything as long as diff --git a/README.qmail b/README.qmail deleted file mode 100644 index 1ab0fa19..00000000 --- a/README.qmail +++ /dev/null @@ -1,64 +0,0 @@ -|------------------------------------------------------------------------------| -| Using mlmmj with qmail (and vpopmail) | -|------------------------------------------------------------------------------| -|--------------- Fabio Busatto --------------| -|------------------------------------------------------------------------------| - -This mini-HOWTO is a step-by-step guide for using mlmmj with qmail MTA -(http://www.qmail.org/), and it has been successfully tested also with vpopmail -virtual domains (http://www.inter7.com/vpopmail/). - -Prerequisites: -- qmail (and vpopmail) correctly installed -- mlmmj correctly installed - -Conventions: -- ${BINDIR}: directory with mlmmj binary files (/usr/local/bin/) -- ${LISTDIR}: directory with list configuration files - (/var/spool/mlmmj/listname) -- ${DQFILE}: dot-qmail file (see below) - -Configuration: -- the first thing you've to do is to create the list, using the - mlmmj-make-ml script (follow the classic procedure to do this step) -- enter the control directory for the list (${LISTDIR}/control/), and execute - the following command: - # cd ${LISTDIR}/control/; echo '-' > delimiter -- chown and chmod the file according to the mlmmj configuration -- create dot-qmail files for the list to handle direct requests and extensions: - # echo -e "|${BINDIR}/mlmmj-receive -L ${LISTDIR}" > ${DQFILE} -- chown and chmod the files according to the qmail (and vpopmail) configuration - -WARNING: REMEMBER that the delimiter is -, so do not use + when composing mail -addresses for extensions!!! - -WARNING: DO NOT USE 'preline' command in dot-qmail files, it will result in -mlmmj to not work properly!!! - -|------------------------------------------------------------------------------| - -Example: - -- Configuring mlmmj to handle ml@programmazione.it mailing list using qmail as - MTA and vpopmail for virtual domain support: - -# mlmmj-make-ml -c vpopmail:vchkpw -L ml -Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change -The Domain for the List? [] : programmazione.it -The emailaddress of the list owner? [postmaster] : postmaster@programmazione.it -The path to texts for the list? [/usr/local/share/mlmmj/text.skel] : -chown -R vpopmail:vchkpw /var/spool/mlmmj/ml? [y/n]: y - -# cd /var/spool/mlmmj/ml/control/ -# echo '-' > delimiter -# chown vpopmail:vchkpw delimiter -# cd /home/vpopmail/domains/programmazione.it/ -# echo -e "|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/ml/" > .qmail-ml -# cp -a .qmail-ml .qmail-ml-default -# cat *-default -# chown vpopmail:vchkpw .qmail-ml .qmail-ml-default -# chmod 600 .qmail-ml .qmail-ml-default - -|------------------------------------------------------------------------------| -|--------------- Fabio Busatto --------------| -|------------------------------------------------------------------------------| diff --git a/README.qmail.md b/README.qmail.md new file mode 100644 index 00000000..e65a48fb --- /dev/null +++ b/README.qmail.md @@ -0,0 +1,63 @@ +This mini-HOWTO is a step-by-step guide for using mlmmj with qmail MTA +(http://www.qmail.org/), and it has been successfully tested also with vpopmail +virtual domains (http://www.inter7.com/vpopmail/). + +Prerequisites: +- qmail (and vpopmail) correctly installed +- mlmmj correctly installed + +Conventions: +- ${BINDIR}: directory with mlmmj binary files (/usr/local/bin/) +- ${LISTDIR}: directory with list configuration files + (/var/spool/mlmmj/listname) +- ${DQFILE}: dot-qmail file (see below) + +Configuration: +- the first thing you've to do is to create the list, using the + mlmmj-make-ml script (follow the classic procedure to do this step) +- enter the control directory for the list (${LISTDIR}/control/), and execute + the following command: + + # cd ${LISTDIR}/control/; echo '-' > delimiter + +- chown and chmod the file according to the mlmmj configuration +- create dot-qmail files for the list to handle direct requests and extensions: + + # echo -e "|${BINDIR}/mlmmj-receive -L ${LISTDIR}" > ${DQFILE} + +- chown and chmod the files according to the qmail (and vpopmail) configuration + +WARNING: REMEMBER that the delimiter is -, so do not use + when composing mail +addresses for extensions!!! + +WARNING: DO NOT USE 'preline' command in dot-qmail files, it will result in +mlmmj to not work properly!!! + +---- + +Example: + +- Configuring mlmmj to handle ml@programmazione.it mailing list using qmail as + MTA and vpopmail for virtual domain support: + + # mlmmj-make-ml -c vpopmail:vchkpw -L ml + + Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change + The Domain for the List? [] : programmazione.it + The emailaddress of the list owner? [postmaster] : postmaster@programmazione.it + The path to texts for the list? [/usr/local/share/mlmmj/text.skel] : + chown -R vpopmail:vchkpw /var/spool/mlmmj/ml? [y/n]: y + + # cd /var/spool/mlmmj/ml/control/ + # echo '-' > delimiter + # chown vpopmail:vchkpw delimiter + # cd /home/vpopmail/domains/programmazione.it/ + # echo -e "|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/ml/" > .qmail-ml + # cp -a .qmail-ml .qmail-ml-default + # cat *-default + # chown vpopmail:vchkpw .qmail-ml .qmail-ml-default + # chmod 600 .qmail-ml .qmail-ml-default + + +---- +Fabio Busatto diff --git a/README.security b/README.security.md similarity index 100% rename from README.security rename to README.security.md diff --git a/README.sendmail b/README.sendmail deleted file mode 100644 index 19204d10..00000000 --- a/README.sendmail +++ /dev/null @@ -1,96 +0,0 @@ -Using sendmail + VERP - --------------------------------------------------------------------------------- - -The following configuration enables VERP (http://cr.yp.to/proto/verp.txt) which -is useful for mailing list managers that are able to take advantage of that -feature. - -This configuration is currently used for using the mlmmj manager -(http://mlmmj.mmj.dk) with VERP enabled + sendmail. - -The hack consists in hooking VERP rewriting in a replacement ruleset for the -existing EnvFromSMTP one (called VerpEnvFromSMTP). This is going to work *only* -if we are splitting messages with multiple recipients in separate queue files -since the macro we are using for the rewriting ($u) is not set when multiple -rcpt are present. - -The first step consists in forcing envelope splitting, this is done using the -QUEUE_GROUP feature, here we are definining r=1 (max 1 rcpt per message) for the -default queue group: - - -QUEUE_GROUP(`mqueue', `P=/var/spool/mqueue, F=f, I=1m, R=2, r=1') - - -Since we are going to split a lot it's advisable to use the FAST_SPLIT option, -additionally we need to enforce return-path inclusion in the local mailer: - - -define(`confFAST_SPLIT', `100')dnl -define(`LOCAL_SHELL_FLAGS', `eu9P')dnl - - -Then we define a regex map for matching the addresses that we are going to -rewrite, in our example we'll rewrite addresses like - - - -with - - - -where user@foo.net is the recipient address of the message. So we need to apply -our verp ruleset *only* to those addresses. Additionally we are also adding the -Delivered-To header: - - -LOCAL_CONFIG -Kmatch_verp regex -m -a@VERP (listname\+bounces\-[0-9]+<@domain\.net\.?>) -H?l?Delivered-To: $u - - -Here's the ruleset, the first half of the ruleset is the existing EnvFromSMTP -ruleset present in default sendmail.cf, the seconf half is the VERP stuff: - - -SVerpEnvFromSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R$* :; <@> $@ list:; special case -R$* $: $>MasqSMTP $1 qualify unqual'ed names -R$+ $: $>MasqEnv $1 do masquerading - -R $* $: $(match_verp $1 $) match the address -R $* + $* < @ $* . > $* @VERP $: $1 + $2 - $&u < @ $3 . > $4 VERP rewrite it using $u macro and add VERP string for failsafe -R $* - < @ $* . > $* VERP $: $1 < @ $2 . > $3 if $u wasn't defined rewrite the address back -R $* - < $+ @ $+ > < @ $* . > $* VERP $: $(dequote $1 "-" $2 "=" $3 $) < @ $4 . > $5 replace the "@" in rcpt address with "=" -R $* - $+ @ $+ < @ $* . > $* VERP $: $(dequote $1 "-" $2 "=" $3 $) < @ $4 . > $5 replace the "@" in rcpt address with "=" - - -Finally we need to rewrite the mailer definition for the used mailer (typically -esmtp) specifying VerpEnvFromSMTP as the sender rewrite ruleset: - - -MAILER_DEFINITIONS -Mesmtp, P=[IPC], F=mDFMuXa, S=VerpEnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, - T=DNS/RFC822/SMTP, - A=TCP $h - - - -NOTE: for mailing list servers it's also a good idea keeping existing -Delivered-To headers, sendmail needs the following patch for doing this - ---- sendmail/conf.c.orig 2004-07-14 21:54:23.000000000 +0000 -+++ sendmail/conf.c 2004-12-06 15:22:05.000000000 +0000 -@@ -117,6 +117,7 @@ - { "content-length", H_ACHECK, NULL }, - { "subject", H_ENCODABLE, NULL }, - { "x-authentication-warning", H_FORCE, NULL }, -+ { "delivered-to", H_FORCE, NULL }, - - { NULL, 0, NULL } - }; - - -Andrea Barisani diff --git a/README.sendmail.md b/README.sendmail.md new file mode 100644 index 00000000..075caceb --- /dev/null +++ b/README.sendmail.md @@ -0,0 +1,95 @@ +Using sendmail + VERP +===================== + +The following configuration enables VERP (http://cr.yp.to/proto/verp.txt) which +is useful for mailing list managers that are able to take advantage of that +feature. + +This configuration is currently used for using the mlmmj manager +(http://mlmmj.mmj.dk) with VERP enabled + sendmail. + +The hack consists in hooking VERP rewriting in a replacement ruleset for the +existing EnvFromSMTP one (called VerpEnvFromSMTP). This is going to work *only* +if we are splitting messages with multiple recipients in separate queue files +since the macro we are using for the rewriting ($u) is not set when multiple +rcpt are present. + +The first step consists in forcing envelope splitting, this is done using the +QUEUE\_GROUP feature, here we are definining r=1 (max 1 rcpt per message) for the +default queue group: + + + QUEUE_GROUP(`mqueue', `P=/var/spool/mqueue, F=f, I=1m, R=2, r=1') + + +Since we are going to split a lot it's advisable to use the FAST\_SPLIT option, +additionally we need to enforce return-path inclusion in the local mailer: + + + define(`confFAST_SPLIT', `100')dnl + define(`LOCAL_SHELL_FLAGS', `eu9P')dnl + + +Then we define a regex map for matching the addresses that we are going to +rewrite, in our example we'll rewrite addresses like + + + +with + + + +where user@foo.net is the recipient address of the message. So we need to apply +our verp ruleset *only* to those addresses. Additionally we are also adding the +Delivered-To header: + + + LOCAL_CONFIG + Kmatch_verp regex -m -a@VERP (listname\+bounces\-[0-9]+<@domain\.net\.?>) + H?l?Delivered-To: $u + + +Here's the ruleset, the first half of the ruleset is the existing EnvFromSMTP +ruleset present in default sendmail.cf, the seconf half is the VERP stuff: + + + SVerpEnvFromSMTP + R$+ $: $>PseudoToReal $1 sender/recipient common + R$* :; <@> $@ list:; special case + R$* $: $>MasqSMTP $1 qualify unqual'ed names + R$+ $: $>MasqEnv $1 do masquerading + + R $* $: $(match_verp $1 $) match the address + R $* + $* < @ $* . > $* @VERP $: $1 + $2 - $&u < @ $3 . > $4 VERP rewrite it using $u macro and add VERP string for failsafe + R $* - < @ $* . > $* VERP $: $1 < @ $2 . > $3 if $u wasn't defined rewrite the address back + R $* - < $+ @ $+ > < @ $* . > $* VERP $: $(dequote $1 "-" $2 "=" $3 $) < @ $4 . > $5 replace the "@" in rcpt address with "=" + R $* - $+ @ $+ < @ $* . > $* VERP $: $(dequote $1 "-" $2 "=" $3 $) < @ $4 . > $5 replace the "@" in rcpt address with "=" + + +Finally we need to rewrite the mailer definition for the used mailer (typically +esmtp) specifying VerpEnvFromSMTP as the sender rewrite ruleset: + + + MAILER_DEFINITIONS + Mesmtp, P=[IPC], F=mDFMuXa, S=VerpEnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h + + + +NOTE: for mailing list servers it's also a good idea keeping existing +Delivered-To headers, sendmail needs the following patch for doing this + + --- sendmail/conf.c.orig 2004-07-14 21:54:23.000000000 +0000 + +++ sendmail/conf.c 2004-12-06 15:22:05.000000000 +0000 + @@ -117,6 +117,7 @@ + { "content-length", H_ACHECK, NULL }, + { "subject", H_ENCODABLE, NULL }, + { "x-authentication-warning", H_FORCE, NULL }, + + { "delivered-to", H_FORCE, NULL }, + + { NULL, 0, NULL } + }; + + +Andrea Barisani diff --git a/TUNABLES b/TUNABLES.md similarity index 100% rename from TUNABLES rename to TUNABLES.md -- 2.47.2