PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
NAME
petidomo -- Mailing List Manager
VERSION
OSSP Petidomo 4.0b6 (19-Mar-2004)
SYNOPSIS
petidomo --mode=deliver|dump --listname=NAME [--masterconf=FILE]
petidomo --mode=listserv [--listname=NAME] [--masterconf=FILE]
petidomo --mode=approve [--masterconf=FILE]
petidomo [--approved]
DESCRIPTION
Petidomo is a mailing list manager very similar to the popular package
Majordomo. It handles both list un-/subscription and the address
expansion of list postings. The actual delivery of postings is still
performed by an MTA like Sendmail.
Petidomo provides only the most important features of Majordomo, but
should be considered as rather complete. It will handle nearly most of
the task you come across in handling several mailing lists.
COMMAND LINE OPTIONS
The Petidomo program provides the following command line options:
--mode=MODE
The mode parameter is the only mandatory parameter and it will
determine what mode Petidomo runs in: listserv, deliver, approve,
dump.
listserv
In this mode, Petidomo will expect to read an e-mail from
standard input, which contains commands like subscribe, index
or help. These commands will be carried out and notifications
be sent back to the mail's originator if apropriate.
deliver
This mode will cause Petidomo to read the incoming e-mail from
standard input and post it to the mailing list, which's name
has been provided via the listname option.
approve
When running in this mode, Petidomo will read the incoming
mail from standard input and search for any cookies that mail
might contain. If it does, it checks the ack-queue for a mail
that has been deferred until confirmation that matches that
- 1 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
cookie and processes the mail.
dump
In this mode, Petidomo will expect the name of a mailing list
on the command line --- the listname option --- and dump the
list of subscribed addresses on that list to standart output.
--listname=NAME
The name of the mailing list Petidomo should work on.
--masterconf=FILE
Using this parameter you can tell Petidomo to use a different
location for the master config file than the one that has been
compiled in.
--approved
This flag is for internal purposes and should not be specified by
the administrator. It will tell Petidomo that, whatever it is
supposed to do now, is the result of a received confirmation
cookie. This will effectively tell the checks for posting (in
ListType acknowledged and acknowledged-once mode) and
un-/subscription (in SubscriptionType acknowledged mode) that
everything is fine and that the request should be carried out.
CONFIGURATION
Petidomo Global Configuration
The global Petidomo configuration is stored in
@PREFIX@/etc/petidomo/petidomo.conf.
Syntax
keyword parameter
If the parameter contains any blank characters, it has to be quoted,
ie.:
AdminPassword "open sesame"
The following directives are supported:
Hostname string
This entry specifies the fully qualified domain name, Petidomo
should use. This will usually be the FQDN of the machine the
software is running on. This option is mandatory. Petidomo will
abort with an error, if it is unset.
Example: Hostname petidomo.example.org
- 2 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
AdminPassword string
This tag sets the master password, which authenticiates the
administrator of the package. Please chose this password
carefully. Knowledge of the master password will enable you to
access ALL mailing lists running on this system. Passwords are
always case-insensitive. This option is mandatory. Petidomo will
abort with an error, if it is unset.
Example: AdminPassword "open sesame"
MTA string
The MTA tag tells Petidomo which mail transport agent should be
used to deliver outgoing emails. Normally this option has been set
by the install script already, so you don't need to worry about
this anymore.
Example: MTA @PREFIX@/sendmail"
but Petidomo will run fine with other mail transport agents, too.
So far, the system has been tested with the Allman sendmail, SMail
and qmail without any problems. This option is required. Petidomo
will abort with an error, if the master config file doesn't set
it.
MTAOptions string
This tag is a bit tricky and in ninety-nine out of hundred cases
you should simply leave this option undefined as it is rarely
required anyway. This entry sets the options which will be handed
over to the MTA when it is called. You usually won't change this.
Example: MTAOptions "-odq -i -f%s"
This will yield a call "$<$MTA$>$ -odq -i -f$<$envelope$>$". The
`\%s' is replaced with the envelope the mail should be sent under.
Adding options to the execution call of the mail transport agent
can be useful to enable or disable certain features for mailing
lists only, while leaving them on for all other mail. The `-odq'
setting is a fine example. This parameter will tell the Allmann
sendmail to queue all mail, instead of trying to deliver it
immediately.
ListDirectory string
Here you can tell Petidomo the path to the directory where the
mailing list config files reside. The compiled-in default is
@PREFIX@/etc/petidomo. When Petidomo tries to find the
configuration of list, say, "foobar", it will look for any of the
following files in this directory: foobar.conf, foobar.config,
foobar/conf or foobar/config.
- 3 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
AckQueueDirectory string
This tag will tell Petidomo where to store files that need to be
queued for later processing --- for example subscribe requests
that need to be acknowledged by the user before they'll be carried
out. The default location is @PREFIX@/var/petidomo. Please note
that Petidomo will need permission to write to that directory in
order for things to work.
HelpFile string
This tag will tell Petidomo where to find the text file that will
be sent back to a user sending in a help command. The default
location is @PREFIX@/etc/petidomo/petidomo.help.
IndexFile string
Similarly to "HelpFile" this tag will tell Petidomo where to find
the text file that will be sent back to a user requesting the
server's "index". The default location is
@PREFIX@/etc/petidomo/petidomo.index.
ACLFilePre string
ACLFilePost string
This tags tell Petidomo the path to the system-wide ACL files for
pre- and postprocessing. The default location is
@PREFIX@/etc/petidomo/petidomo.acl-[pre|post]. This ACLs will be
run against all incoming mails first before the mail is checked
against the list specific ACLs. Rules from an ACL-Pre file will
be matched against incoming mail before certain processing in
lists with ListType acknowledged and acknowledged-once mode set
will take place. The rules in an ACL-Post file is matched against
the original posting after the approval process.
Petidomo List Configuration
While the master config file sets options which are relevant for the
Petidomo package as a whole, the list config file sets options which
are valid only locally for the mailing list.
The list specific configuration is stored in
@PREFIX@/etc/petidomo/$listname.conf.
Syntax
keyword parameter
If the parameter contains any blank characters, it has to be quoted,
ie.:
AdminPassword "open sesame"
- 4 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
The supported keywords are as follows :
ListType open | closed | moderated | acknowledged | acknowledged-once
This option tells Petidomo who is allowed to post to the mailing
list.
If this option is unset, the default is to run an open list.
open
On this type mailing list, everybody is allowed to post,
whether he's subscribed or not.
closed
In this case only subscribers are allowed to post. That means
that only mails coming from an address found on the list's
address database will go through. All other mails will be
sent back to the person trying to post with the comment that
he should subscribe first.
Please note that a closed list may not do exactly what you
want, because when a person is subscribed to a list as
"example@address.net", but tries to post from a different
account than that one, Petidomo will not let him post. It
tries to recognize this case as far as possible: For example,
it doesn't matter whether you are posting from
"address@host1.address.net" or "address@host2.address.net",
Petidomo will handle that. But if the article comes from
"example@private.account", it will be rejected, even though
the sender might be a valid subscriber. It depends on the
subscribers of the mailing list, whether this is a problem or
not.
acknowledged
acknowledged-once
These types are better ways off keeping spam off your lists.
In this case every time someone tries to post, he will get a
short reply back which contains some cryptographic cookies.
Furthermore the mail will tell him to please concatenate the
cookies and sent it back Petidomo. Once that is accomplished,
Petidomo will let the posting pass.
This means that only people will be able to post, that have a
valid envelope or from address --- something spammers usually
do not. Since the request for confirmation never reaches them,
their postings will not go through. Everybody else can
acknoledge the posting by sending the cookie back and thus get
by that hurdle.
The difference between the acknowledged and acknowledged-once
- 5 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
mode is, that in the latter mode, people have to send that
confirmation back only once, while in the first mode, they
have to send it in every time they're trying to post. Petidomo
will keep a database of addresses that have been confirmed by
that mechanism and these addresses are allowed to post from
now on without having to confirm their posting again. Please
note that this list of addresses is not related to the list of
subscribers!
moderated
Here nobody is allowed to post unless he can provide the
correct posting- or administrator password for the list.
SubscriptionType public | admin | acknowledged
This option specifies who may subscribe to a mailing list.
If this option is unset, the default will allow public
subscription.
public
In this case anybody may subscribe any address to the list.
admin
Only the person knowing the admin password of the mailing list
is allowed to subscribe or unsubscribe addresses. All other
requests that aren't properly authenticated will be forwarded
to the list owner for approval.
acknowledged
Anybody can issue a subscribe command, but the address will
not be added to the list (or removed from the list in case of
an unsubscribe) unless the request has been confirmed.
Petidomo will send a random cookie to the address in question
and ask to send the concatenated cookie back to acknowledge
the request. Once the cookie has been send back, the request
is carried out.
This mode is useful to prevent people from adding random
addresses to the list or to prevent them from removing other
people from the list without their consensus.
AllowMembersCommand yes | no
Petidomo knows a command "members" or "who", which can be sent to
the server, which will reply with the complete list of subscribed
addresses of the specified mailing list. This may be useful for
list administrators, but it can be abused easily by spammers, to
collect addresses where to send their unsolicted commercial e-mail
to.
- 6 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
Furthermore, with certain mailing lists it may be undesirable that
one can see who else is subscribed to that list. That's why this
option has been added. If you set it to no, the members command
will be diabled for this list. This is also the default if the
option is not specified in the config file.
Hostname string
This options tells Petidomo to use this hostname for the mailing
list, instead of the one configured in the master configuration
file. This feature is useful to do virtual hosting. If this entry
is unset, the name configured in the master config file will be
used as hostname for this mailing list.
Example: Hostname petidomo.example.org
Virtual hosting is required if several mailing lists run on the
same server, but they have to look like they would coming from
different machines. For a more detailed explanation look further
down in the administration section.
AdminPassword string
This tag sets the master password, which authenticiates the
administrator of this mailing list. The administrator has special
priviledes, such as deleting other users, overriding access
control restrictions or un-/subscribing users to closed mailing
lists.
Example: AdminPassword "open sesame"
Please note that passwords are always case-insensitive. It is also
worth noting that the master password is always valid as
administrator password for the list, also.
Leave this entry blank, if you don't want to enable remote
administration of the mailing list.
PostingPassword string
This tag sets the posting password. The posting password allows to
post an article to a moderated mailing list, but it does not allow
any administration of the list itself. On lists that are of a
different type than moderated, setting a posting password does
usually not make any sense and you can leave this entry unset.
Example: PostingPassword "open sesame"
ReplyTo [none | address]
This tag controls the "Reply-To:" field, which Petidomo adds to
posted articles before it is delivered to the recipients. Using
this option, you can force Petidomo to insert a "Reply-To:" which
- 7 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
points to a certain address. On a moderated list, for example, you
can set this as follows:
Example: ReplyTo moderator@petidomo.net
to direct all replies to the posting to the moderator again,
regardless of what address is noted in the "From:" line of the
mail.
If you set "none", Petidomo will not add a "Reply-To:" header at
all.
If this option is unset, Petidomo will insert a "Reply-To:" header
that directs replies back to the mailing list, so that subscribers
can conveniently post simply by hitting the "reply" function in
their mail reader.
Archive string
This option tells Petidomo to archive all articles that have been
posted on that mailing list. The parameter for this tag may either
be the name and path of a file or of a directory. The path may
either be absolute "/var/archive/list" or relative "archive". For
relative paths, the directory where the list's config file resides
will be used as starting point. If the Archive tag points to a
file, Petidomo will append every posted article to that file. If
it points to a directory, each posting will be stored as a
separate file in that directory.
If is unset, posted articles will not be archived at all.
IntroductionFile string
This tag specifies the path to the introduction file. Every time
an address is added to the mailing list, Petidomo will send the
contents of this file to the new subscriber. This should be used
to inform the new subscriber about the list's topic, habits etc.
If the file does not exist, no mail is sent out.
If the path specified has no trailing "/", it is interpreted to be
relative to the directory where the list's config file has been
found. The default path is @PREFIX@/etc/petidomo/$listname.intro.
DescriptionFile string
This tag specifies the path to the description file. This file is
supposed to contain a short description of the mailing list's
topic and purpose. It's contents will be sent back if a user
requests the command "help listname".
If the path specified has no trailing "/", it is interpreted to be
relative to the directory where the list's config file has been
- 8 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
found. The default path is @PREFIX@/etc/petidomo/listname.desc.
SignatureFile string
The contents of the file this tag points to will be appended to
every posting on this list. This may be used to add a list-
specific signature.
If the path specified has no trailing "/", it is interpreted to be
relative to the directory where the list's config file has been
found. The default path is @PREFIX@/etc/petidomo/$listname.sig.
AddressFile string
This option specifies the path to the file, which Petidomo uses to
store the list of subscribed addresses. If the path specified has
no trailing "/", it is interpreted to be relative to the directory
where the list's config file has been found. The default path is
@PREFIX@/etc/petidomo/$listname.list.
AcknowledgementFile string
This option specifies the path to the file, which Petidomo uses to
store the list of addresses that have been verified by the
acknowledgement-once mechanism.
If the path specified has no trailing "/", it is interpreted to be
relative to the directory where the list's config file has been
found. The default path is @PREFIX@/etc/petidomo/$listname.ack.
HeaderFile string
The contents of this file specified in this option will be added
to the header of posting on this list. This may be used to add
custom headers like:
Example: X-List-Archive-is-at: http://list-archive.example.org/
Please note that the contents of this file will be added as is!!!
So don't include empty lines in here, as empty lines mark the end
of the mail headers! Generally, please use this feature with care;
most mailing list administrators tend to overestimate the
importance of custom headers on their mailing list.
If the path specified has no trailing "/", it is interpreted to be
relative to the directory where the list's config file has been
found. The default path is @PREFIX@/etc/petidomo/$listname.hdr.
ACLFilePre string
ACLFilePost string
This option specifies the path to the list-specific ACL files for
pre- and postprocessing. This ACLs will be run against all
incoming mails after the mail was checked against the global ACLs.
- 9 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
Rules from an ACL-Pre file will be matched against incoming mail
before certain processing in lists with ListType acknowledged and
acknowledged-once mode set will take place. The rules in an ACL-
Post file is matched against the original posting after the
approval process.
If the path specified has no trailing "/", it is interpreted to be
relative to the directory where the list's config file has been
found. The default path is
@PREFIX@/etc/petidomo/$listname.acl-[pre|post].
PostingFilter string
Here you can specify the path to a program through which every
message deliverd to the list will be passed. For example this
comes in useful, if you would like to bring the message in a
certain format or would like to manipulate the "Subject:" line
before realy posting the article to the list. Keep in mind that
this filter will be applied after all ACL processing has taken
place, thus after an ACL filter action eventually has been
applied.
The path can be given without quotes, but if you want to pass
arguments or want to specify complicated shell expressions, you
will have to use double quotes.
The filter is given the message on stdin and Petidomo expects the
output on stdout of the filter.
Example:
PostingFilter "@PREFIX@/etc/petidomo/filter.sh
listname"
Example:
PostingFilter "/bin/cat | /bin/cat; echo ; echo
Testing""
Example for a filter that expects the listname as parameter and
inserts the string [listname-list] At the beginning of the if it's
not already there:
#! /bin/sh
SUB="[$1-list]"
awk -v "SUB=$SUB" \
'
BEGIN { found=0 }
/^Subject:/ {
if (index($0,SUB)) print $line;
- 10 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
else {
if (found==0) {
s=sprintf( "Subject: %s", SUB)
$1=s
print $0
}
}
found=1
next
}
/.*/ { print }
'
exit 0
Access Control Lists (ACL)
Unfortunately, we live in a world where some people are trying to
abuse services like mailing lists for their entertainment or for
commercial purposes. It is also not uncommon that among thousands of
mailing list subscribers, there is one particular moron who simply
can't behave. That is why access control is a useful feature, even
though it contradicts the idea of a mailing list: To be a media for
communication.
Writing and understanding ACL files is, to be honest, not very easy
and the novice mailing list administrator should better be careful
when using them, because a wrong access control rule might cause more
trouble than it is worth, but the experienced administrator will
certainly appreciate their power. Understanding how ACL files work
will also require you to know a bit about the syntax of an RFC format
e-mail. A good place to start is to take a look at RFC822 and its
sons.
In Petidomo, two places exist to control who is allowed to do what:
The global ACL files and the ACL files that are local to the mailing
list. While the latter are valid only for the list for which they are
configured for, the global ACL files will be parsed for all your
mailing lists. ACL files are only relevant for mailing list postings,
Petidomo does not use them in listserv mode.
The syntax of an ACL file is similar to the C programming language, as
you can see in the following example:
if (envelope matches "mailer-daemon@") then
forward "petidomo-manager";
This expression tells Petidomo to forward all postings to the manager
of the mailing list, if the envelope of the mail matches the regular
expression ``mailer-daemon@''. It will make sure that bounces of
- 11 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
articles will not be posted to the list again, causing an infinite
mail loop.
The syntax of ACL statements is shown here:
IF ( (Condition) [ AND | OR ] (Condition) ............ )
THEN Action ;
Or more Detailed:
IF ( (Source [NOT] MatchCode "Expression") [ AND | OR ]
(Source [NOT] MatchCode "Expression") [ AND | OR ]
([NOT] "Filter Expression) .......... )
THEN Action ;
IF ([NOT] "Filter Expression") [ AND | OR ]
([NOT] "Filter Expression") [ AND | OR ]
(Source [NOT] MatchCode "Expression") .......... )
THEN Action ;
Where:
Source
Specifies the source to match against. This can be one of the
following: envelope | from | subject | header | body
envelope
References the envelope line of the message.
from
References the "From:" line of the message.
subject
References the "Subject" line of the message.
Example:
IF (subejct == "make money fast") THEN
rejectwith "/usr/local/share/petidomo/make-money-fast.txt";
header
References a specific line in the message header. The line to
match is also expressed in the Expression. Is meant to be used
with regular expression matching.
Example:
IF (header matches "^Received:.*from spam.domain") THEN
forward "petidomo-manager";
body
- 12 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
References the body of the message. Is meant to be used with
regular expression matching.
Example:
IF (body matches
THEN
".*[Vv][^a-zA-Z]*[iI][^a-zA-Z]*[aA][^a-zA-Z]*[gG][^a-zA-Z]*[rR][^a-zA-Z]*[aA].*")
rejectwith "/usr/local/share/petidomo/no-viagra.txt";
MatchCode
Tell the ACL how to match. There are two possibilities here: match
/ matches | = | ==
match | matches
Does an extended regular expression match using the Expression
parameter.
= | ==
Does an exact string match using the string given in the
Expression parameter.
"Expression"
Depending on MatchCode used, can be an extended regular expression
or just a plain string. In both cases the match is case
insensitiv and has to be quoted.
"Filter Expression"
This a special feature, as you specify an external program to do
the matching for you. This can be a very useful tool. Dependant on
the return code of the external program the Action part is
executed or not. As in the shell an exit code of 0 means true and
of 1 means false. The path name has to be quoted.
Example: ("/usr/local/bin/very_important.filter") THEN
forward "petidomo-manager";
Action
The Action part specifies what to do after a match occured.
drop
Just drops the message without firther notice to the sender or
list manager.
pass
Posts the message onto the list immediately.
approve
- 13 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
Will flag the message as approved, bypassing all other checks
for approval.
reject
Rejects the message from the list, sending a status message to
the sender.
rejectwith "file"
Rejects the message, sending a status message to the user
including the contents of "file" as the message body. The
parameter has to be quoted.
Example:
IF (header matches "^Received:.*from spam.domain") THEN
rejectwith "@PREFIX@/etc/petidomo/spam.txt";
forward "address"
Forwards the message to the given address. Originator will be
the Mailing List Manager. The original message will be quoted
in the mail body. The address has to be quoted.
redirect "address"
Just resends the message to the given address without changing
any of the headers. The message will still look as if it has
been sent by the original poster. The address has to be
quoted.
filter "script"
This Action is pretty much the same as the posting filter, but
it allows you to re-write the posting depending on who posted
it or other criteria. Please note that this filter is executed
additionally and before a regular posting filter you might
have configured. The filter is given the message on stdin and
Petidomo expects the output on stdout of the filter.
A nice example for what this feature can be used is the
following:
Example:
if (from == "simons@computer.org") then
filter "/@PREFIX@/etc/petidomo/simons.filter";
Administration
Each mailing list has an alias "listname-owner" (see section Sendmail
Configuration), where the mail address of the person who is
responsible for this mailing list should be specified. Per default,
this is the user who is known as "petidomo-manager". But you are free
- 14 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
to direct mail for this accoun to any other person --- or several
persons.
The list owner will receive administrative e-mail from Petidomo in the
following cases:
subscribe | unsubscribe
When a new user subscribes, or a subscriber removes himself from
the list, a carbon copy of the recipt will be sent to the owner.
By looking at these mails, the owner can check whether a subscribe
or unsubscribe command looks bogus. He or she can also keep track
of who is on the list and who is not.
members | who
If a members command is received for a mailing list where this
command has been disabled, this will also be forwarded to the
owner.
These mails are merely for information purposes and do not necessarily
require an action from the admin. There are cases, where the list
owner will receive mails from Petidomo, though, that require some kind
of reaction.
Closed an moderated lists
If you have configured a mailing list to reject postings under certain
circumstances, such as a closed or moderated mailing list, these
rejected articles will be forwarded to you for approval. When you
receive such a rejected article, you can either silently discard it,
contact the author or post it to the mailing list with your approval.
You can approve an article with the AdminPassword for Petidomo, the
AdminPassword of the mailing list in question or the PostingPassword.
Approving requests
To approve requests, you have several ways of specifying the
appropriate password. They are all the same for Petidomo and it is
only a matter of taste, which scheme you use.
When sending a command to Petidomo in listserv mode through the
listname-request or petidomo address, just preface your commands with
a password command, like in the following example:
To: testlist-request@foo.bar
Subject:
password open sesame
- 15 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
subscribe some@one.else
subscribe someone@even.elser
One password command sets your password for all the commands to
follow. If you want to use one mail to send requests for several
mailing lists with different passwords, just give a password command
again:
To: petidomo@foo.bar
Subject:
password open sesame
subscribe user@inter.net testlist1
password let me in
subscribe user@inter.net testlist2
Instead of password, you can also use the commands passwd, or approve,
they are all synonymous.
Caution, the command can only be parsed, if they start at the
beginning of the line and have no junk appended.
Approving postings
If you want to approve a posting for a mailing list, just send the
article to the mailing list and specify your password either in the
header or in the body of the mail.
If you choose to approve the mail in the body, add line with the
command approve to the mail as first line of the body. Petidomo will
strip that line before actually posting the article . You can also use
the synonyms approved, password or passwd instead. Here is an example:
From: simons@computer.org (Peter Simons)
Subject: Cats are the most beautiful animals in the world.
approve let me post
It's not that I wouldn't like animals like dogs, birds
or fishes, but for me, a cat is *the* animal to have.
[...]
The line approve let me post will be stripped by Petidomo and the
article will then be sent out.
If you want to specify the password in the headers, just add an header
of the name Approved: or Approve: to the headers of the mail.
Unfortunately, many mail readers do not allow you to modify the
- 16 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
headers of outgoing mail. That is why the body-approval has been
added. Here is the same example as above now using the headers:
From: simons@computer.org (Peter Simons)
Subject: Cats are the most beautiful animals in the world.
Approve: let me post
It's not that I wouldn't like animals like dogs, birds
or fishes, but for me, a cat is *the* animal to have.
[...]
Please note that you have to add a colon to the keyword to make a
valid RFC mail-header.
Bounces
While maintaining mailing list with a larger number of subscribers, it
happens regularly that subscribed addresses become invalid or are
temporarily not reachable. In this case postings will bounce. You
will then receive a mail from a mail server telling you, that the
delivery of the mail failed.
Often, addresses become unreachable due to a misconfiguration of a
machine, so it is not always necessary to remove that address from the
list immediately, but when an addresses bounces for several days in a
row, it is a good idea to delete that address from the mailing list.
You should do that by sending an unsubscribe command for that address
to the listname-request address of the mailing list.
If you have configured Petidomo to disallow the unsubscription of
addresses not equal to the address the mail is sent from, you will
have to specify your admin password in the mail, to override the
barrier.
Verifying the address list
Petidomo tries its best to make sure that only syntactically correct
addresses are subscribed to mailing lists, and if you stick to the
correct mail interface, there's very little chance, an incorrect
address will make it into the Listname.list file.
Sometimes, it is necessary to edit these files manually, though, or
Petidomo's address validation algorithm fails. Once you have an
incorrect address in your list file, sendmail will abort with an
error, without trying to deliver the mail at all.
To clarify, this does not happen when an address is not reachable,
this happens only when you subscribe something like
- 17 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
hey@this@is@wrong..... Once you suspect that your address list has
been corrupted, there's an easy way to find out, which addresses are
wrong. Simply use sendmail's address verification mode like this:
$ xargs < listname.list sendmail -bv | grep -vi deliverable
hey@this@is@wrong ... Invalid route address
This call will find all incorrect address and notify you. The 'sed'
call will filter out all correct addresses for your convenience.
Mailing list archives
If your are hosting a public mailing list, you might want to offer a
mailing list archive, that is accessible through the WWW and has all
the postings available for immediate access. We were in the midst of
developing a tool that does this for you when we came accross a
brilliant tool named MHonArc. We installed it, tested it, and deleted
all attempts of writing something like that ourselves immediately.
We strongly recommend looking at MHonArc, if you want to offer a WWW
archive of your mailing lists. You can find more information about
MHonArc at the following location:
http://www.oac.uci.edu/indiv/ehood/mhonarc.html
The installation of the tool itself is very easy. Once you have
MHonArc running, just enable the archiving feature in Petidomo and
feed the archives into MHonArc. That's it.
Sendmail configuration
Before you can use Petidomo, you have to configure sendmail so that it
knows about Petidomo. If you are using an MTA other than sendmail, the
configuration might be slightly different.
You will have to create apropriate aliases for Petidomo and its lists.
You do this by adding the folling lines to your aliases file. For the
exact location of this file refer to the documentation on your system.
petidomo-manager: postmaster
petidomo: "| @PREFIX@/bin/petidomo --mode=listserv"
petidomo-approve: "| @PREFIX@/bin/petidomo --mode=approve"
In case you installed the Petidomo binary to some other location, you
will have to change the paths here apropriately of course. You may
also chose that mail for the petidomo-manager should go to some
different address than postmaster, if that suits your needs better.
It's important that somebody actually reads what arrives there.
For every mailing list you want to install on your system, you will
- 18 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
have to add the following lines :
testlist: "| @PREFIX@/bin/petidomo --mode=deliver testlist"
testlist-request: "| @PREFIX@/bin/petidomo --mode=listserv testlist"
testlist-owner: petidomo-manager
owner-testlist: testlist-owner
Having done all this, execute the newaliases(1) utility to rebuild
sendmail's internal database. Your changes will not have any effect
unless you do this.
Virtual Hosting
Virtual hosting is required if you want to host several mailing lists
that have to run under different domain names. After registering
these domains to point to your machine, you will have to configure
Petidomo and your MTA to make use of this feature. As an example for
MTA configuration, the sendmail system is used here.
To configure Petidomo, all you have to do is, set the Hostname
parameter in the lists config file listname.conf to the required name
(see above). You can do this for every list you want to run. If you
do not specify a Hostname in the lists config file, the name
configured in the global config file petidomo.conf will be used.
But to get this feature really running, you will have to make your
local mail agent (MTA) aware of the additional domains it has to
recognize as local.
For the sendmail v8 system, you will have to write these additional
domais to the w class in your sendmail.cf file, or the corresponfing
M4 config. This is done by adding the line:
Cwdomain.name1 domain.name2 ...
This will tell sendmail that these names are to be accepted and
delivered locally rather than to the MX of these entries.
Doing this might not lead to the expected behavior, if you are using
sendmail's masquerading functionality, which isused to hide the
various hostnames and subdomains in your domain. By default, sendmail
not only masquerades the domain names it was configured to with the
MASQUERADE_DOMAIN() command, it will also automatically masquerades
all domain names configured in the w class.
As a result the virtual hosting you configured in Petidomo will be
overwritten. To fix for this behavior you will have to add the
command FEATURE(limited_masquerade) to your M4 file and sendmail won't
touch the names that are stated only in the w class anymore.
- 19 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
USER COMMANDS
In this chapter, we will describe the commands, that are understood in
listserv mode, eg. listname-request@yourhost.dom. This is the
interface for the users of the mailing lists, where they can send
their requests to in order to be subscribed or unsubscribed to or from
a mailing. The text here is mostly identical with the default help
text that is sent to the user whenever he or she issues a command that
is syntactically incorrect.
User commands always have to be sent to the request address of the
mailing list not to the mailing list itself!
Alternatively, commands can always be sent to the address
petidomo@yourhost.dom, but the listname-request@yourhost.dom address
is preferable, since Petidomo will have a default listname for this
address and thus understand a simpler command syntax.
Subscribe
The subscribe command will add the address of the user to a mailing
list. The behavior of the list software on such a request is dependant
on the setting of the list parameter SubscriptionType. Have a look
there for a brief explanation.
The command add is synonymous to subscribe.
When using the listname-request address, only the word subscribe is
required for the request to suceed. If the command is sent to the
petidomo address, the user will have to specify an additional
parameter: The name of the mailing list he or she wants to be added
to, like in the following example:
subscribe politics
If the user wants to add an address that is not equal to the one he is
sending from, the e-mail address will have to be specified as well:
subscribe politics joe@foo.bar
The order in which the e-mail address and the mailing list name are
provided does not matter.
Unsubscribe
The syntax and usage of the unsubscribe command is the same as the
subscribe command. The difference is, that the user's address is
removed from the mailing list rather than added to it.
delete and remove can be used synonymously to unsubscribe.
- 20 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
Index
The index command does not need any parameters. Sending it to the
server will return a list of available mailing lists on this server.
This is useful in case you want to subscribe to a list but can't
remember the exact name anymore.
The commands lists and longindex are synonyms to index.
Help
If the server receives the command b<help>, it will send the help file
back. If b<help> has a parameter, Petidomo will check whether this is
a valid name of an existing mailing list, and if it is, it will return
the description file for this mailing list, rather than the help file.
Members
The members command will return the addresses of all subscribers of
the mailing list, if the administrator chose to allow this command.
When members is sent to the listname-request address, the default list
will be used by Petidomo. Otherwise, the name of the mailing list
which's subscribers should be listed, has to be specified as an option
like in the following example:
members politics
The command who can be used as a synomym to members.
FILES
@PREFIX@/etc/petidomo/petidomo.conf
@PREFIX@/etc/petidomo/petidomo.hdr
@PREFIX@/etc/petidomo/petidomo.help
@PREFIX@/etc/petidomo/petidomo.index
@PREFIX@/etc/petidomo/petidomo.acl-pre
@PREFIX@/etc/petidomo/petidomo.acl-post
@PREFIX@/etc/petidomo/listname.conf
@PREFIX@/etc/petidomo/listname.desc
@PREFIX@/etc/petidomo/listname.intro
@PREFIX@/etc/petidomo/listname.hdr
@PREFIX@/etc/petidomo/listname.sig
@PREFIX@/etc/petidomo/listname.list
@PREFIX@/etc/petidomo/listname.ack
@PREFIX@/etc/petidomo/listname.acl-pre
@PREFIX@/etc/petidomo/listname.acl-post
SEE ALSO
- 21 - Formatted: October 30, 2025
PETIDOMO(1) Petidomo PETIDOMO(1)
Petidomo Petidomo
4.0b6 (19-Mar-2004)
Allman Sendmail
sendmail(8)
Postfix
bounce(8), cleanup(8), defer(8), error(8), flush(8), lmtp(8),
local(8), master(8), pickup(8), pipe(8), qmgr(8), showq(8),
smtp(8), smtpd(8), spawn(8), trivial-rewrite(8).
HISTORY
AUTHOR
Peter Simons <simons@computer.org>
- 22 - Formatted: October 30, 2025