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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024 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: December 26, 2024