Appendix A: Dealing With Bounced Messages Appendix B: Approval Appendix C: Moderation Appendix D: Restricting Posting Appendix E: Regular Expressions
Majordomo may bounce certain messages that people attempt to post to your mailing list. These messages may be bounced because they appear to be administrative requests (i.e., someone mailed a request to subscribe or unsubscribe to the posting address rather than to Majordomo), because they are too long, because they match strings that you or the list server owner has defined as being "taboo", or for any of a number of other reasons, many of which may seem annoying but have been decided upon as being useful in stopping unwanted messages from making it onto your list. (These are often configurable, so if you find a check to be too restrictive you can generally turn it off.) Note also that the bounces mentioned here are not the same as the errors that will be returned by various mail servers when addresses or hosts are unreachable. Those are generally referred to as bounces, also; sorry for the confusion.
Majordomo will forward these messages to you in another message whose subject line begins with the word "BOUNCE"; the subject line will also indicate the name of the list the message was bounced from (in case you manage more than one list) and the reason the message was bounced.
If you decide that the message is OK and should not have been bounced, then you can cause Majordomo to post it anyway by sending the message back to the posting address (NOT to the Majordomo address) with a special "Approved: password" header. There are two ways to do this; the method you use depends on your having access to and the ability to run the approve script mentioned in the previous section. If you can run approve it is recommended that you do so, as this method is much less prone to errors and will reduce the time you spend moderating your list. See also Appendix B.
If you cannot run the approve script, you can manually approve the message. To do so, follow the following directions _exactly_:
From: majordomo@list.server \
To: your-list-approval@list.server | Don't want these headers
Subject: BOUNCE: taboo_header found /
Basically you want everything after (and not including) the first blank line.
2) Edit the file to insert a line that says "Approved: password" (where
"password" is the password for your list) at the top, before the original message, with absolutely no intervening space. In this example the list password is "tigermilk".
Approved: tigermilk
From list-member@her.site date
Received: some long routing info
From: list-member@her.site
To: your-list@list.server
Subject: Just a message
Hello...
3) Send this edited file back to the posting address for your list (NOT
to Majordomo). You should make sure that your mailer doesn't try to do anything like include your prepared mail as an attachment, encode it somehow, indent every line, or add anything extra to the beginning or end of the message. There are mailers that will do pretty horrible things to messages before they are sent; you should take care that you aren't using one or, if you are, you have it configured to pass your text on unadulterated.
This time around, Majordomo will notice the "Approved:" line and check it against your list password. If it matches, Majordomo will strip off the header of your message and the "Approved:" line (leaving just the original message), and send the original message on through.
Even your own messages bay be bounced to you for approval. To send out your own message without server checks (perhaps you know it contains something the list server will complain about) you can pre-approve the message one of the two following ways:
If you're using a mailer that can add additional headers, add one like the following:
Approved: tigermilk
It's precise location within the headers is not important.
If your mailer does not allow you to add additional headers, you can add the line:
Approved: tigermilk
as the first line of the message, followed by a blank line (which is required for your message to be sent properly) followed by the text of your message. The Approved: line and one following blank line will be deleted and the message will be passed without being checked. The blank line is important because it is used to differentiate between a pre-approval and the approval of a bounced message, outlined above.
When Majordomo requests your approval for something, it sends you a message that includes a template of the approval message; if you concur, you simply need to replace "listpassword" in the template with your list password, and send the template line back to Majordomo.
The requests for approval that Majordomo generates all start with "APPROVE" in the "Subject:" line.
You aren't limited to approving only things to Majordomo requests approval for. You can approve any "subscribe" or "unsubscribe" request, regardless of whether Majordomo has requested this approval, with an "approve" command. Thus, you can subscribe or unsubscribe people from your list without them having to send anything to Majordomo; just send an appropriate "approve listpassword subscribe listname email@address" or "approve listpassword unsubscribe listname email@address" command off to Majordomo.
If you use a mailer which is capable of sending a message to an external program, can run perl and can run sendmail or a program capable of behaving like it for the purposes of sending mail, then all you have to do is send the entire approval message (including all of the headers, which are very important and which are automatically removed by some mailers unless configured to do otherwise) to the approve script. Approve looks for a file called ".majordomo" in your home directory to find the approval password for your list. The format of this file is given in the following excerpt from the approve manual page:
approve assumes that the approve password for each list is the same as the approval password used by resend, and that this password is stored in a file called .majordomo in the user's home directory. The file has the following format:
this-list passwd1 majordomo@This.co.uk other-list passwd2 majordomo@Other.com
The first column specifies the name of the mailing list, the second column specifies the list-owner's password for the given list, and the third column specifies the e-mail address of the associated Majordomo server. It is assumed that the value in the third column is an Internet-style "something@somewhere" address, and that postings for "List" should be sent to "List@somewhere". Since this file only needs to be read by the user, it should be mode 600 to protect the passwords.
If you have the necessary environment for running the approve script, contact the Majordomo owner at the site that serves your list and request it.
If your list is moderated, (the moderate parameter in the config file is yes) then messages without an "Approved:" line are bounced, just as described above. To cause them to be posted to the list, you add a valid "Approved:" line and send them back, just as described above.
Again, the "approve" program automates all this if you wish to use it. You can also use the above pre-approval method to send your own messages without them being bounced back to you.
If you have any questions about all of this, send them to missprint@missprint.org.
An easier alternative to moderation is to restrict who can post to the list, which can be done with the restrict_post configuration variable. The variable requires a file listing the people who can post.
The most common case is to limit posting to people who are subscribed to the list. This keeps out advertisements and other junk mail sent by non-subscribers. Since majordomo already has a file of subscribers, you don't need to create and maintain a file, so it's easy to set.
Change the restrict_post line to this, where <listname> is the name of your list:
restrict_post = <listname>
In fact you'll probably want:
restrict_post = <listname>:<listname-digest>
to allow all your subscribers to post.
If you want to restrict posting to any other set of people, you'll need to ask me for help. Unfortunately there's no way to tell majordomo about keeping another file of people who are allowed to post, so a file would have to be set in place "by hand". Some future release of majordomo may provide a way to do this automatically.
For some of the configuration options, a rudimentary knowledge of perl style regular expressions will help you run Majordomo through its tricks. A regular expression is a concise way of expressing a pattern in a series of characters. The full power of regular expressions can make some difficult tasks quite easy, but we will only brush the surface here.
The character / is used to mark the beginning and end of a regular expression. Letters and numbers stand for themselves. Many of the other characters are symbolic. Some commonly used ones are:
\@ the `@' found in nearly all addresses; it must be preceeded by a
backslash in later versions of perl to avoid errors . (period) any character
Example 1.
/cs\.umb\.edu/
Notice the periods are preceded by a backslash to make them be literally periods. This matches any string containing cs.umb.edu/ such as:
cs.umb.edu/
foo.cs.umb.edu/
user@foo.cs.umb.edu
users%foo.cs.umb.edu@greatcircle.com
Example 2.
/rouilj\@.*cs\.umb\.edu/
The `@' has special meaning to later versions of perl and must be prefixed with a backslash to avoid errors. The string ".*" means "any character, zero or more times". So this matches:
rouilj@cs.umb.edu
rouilj@terminus.cs.umb.edu
arouilj@terminus.cs.umb.edu@greatcircle.com
but it doesn't match
rouilj@umb.edu
brent@cs.umb.edu
Example 3.
/^rouilj\@.*cs\.umb\.edu
This is similar to Example 2, and matches the same first two strings:
rouilj@cs.umb.edu
rouilj@terminus.cs.umb.edu
but it doesn't match
arouilj@terminus.cs.umb.edu@greatcircle.com
because the regular expression says the string has to begin with letter "r" and end with letter "u", by using the ^ and $ symbols, and neither of those is true for arouilj@terminus.cs.umb.edu@greatcircle.com.
Example 4.
/.*/
This is the regular expression that matches anything.
Example 5.
/.\*rouilj/
Here the * is preceded by a \, so it refers literally to an asterisk character and not the symbolic meaning "zero or more times". The . still has its symbolic meaning of "any one character", so it would match for example
a*rouilj
s*rouilj
It would not match this because the . by itself implies one character:
*rouilj
Normally all matches are case sensitive; you can make any match case insensitive by appending an `i' to the end of the expression.
Ecample 6.
/aol\.com/i
This would match aol.com, AOL.com, AoL.cOm, etc. Removing the `i':
/aol\.com/
would match aol.com but not AOL.com or any other capitalization.
To be on the safe side put a \ in front of any characters in the regular expressions that are not numbers or letters. In order to put a / into the regular expression, the same rule holds: precede it with a \. Thus, with \ in front of the / and = characters, this
/\/CO\=US/
matches /CO=US and may be a useful regular expression to those of you who need to deal with X.400 addresses that contain / characters.
You can get an up-to-date version of this guide from the missprint.org site at:
Further sources of information for list owners:
Reference guide for list owners:
Extra enhancements to Majordomo available at missprint.org:
[text versions of
the list owners reference,
the quickstart,
the enhancements and
appendix for printing when available]
[new: list owner's web interface]
missdirected? | back to missprint help |