How to Bounce Lowercase-Only E-Mail Messages on the Columbia University Mail System (obsolete since 2006)

What this can and cannot do | Serious warning | Step 1: Access the server | Step 2: Explanatory message | Step 3: Create a mail filter file | Step 4: Test it | Learn more



As of 2006, this page is mostly obsolete because Columbia no longer uses the procmail system described here. But the procedures described here may perhaps still be useful with mail servers outside Columbia.



What this method can and cannot do

If you follow the procedures described on this page, any e-mail message written to you entirely in lowercase letters will be returned to its sender ("bounced") together with an appended message explaining why the message has been returned. You will not see the message at all until its original sender resends it with at least one uppercase letter. You can choose to bounce all-lowercase e-mail messages that are sent from Columbia University addresses only, or only from any other specific address, or from all addresses; and you can specify that messages from certain senders (e.g., your dissertation advisor, your department chair, your nine-year-old cousin) will not be bounced under any circumstances.

This method will bounce only plain-text messages, not messages sent by e-mail programs that let the writer specify fonts, colors, or other formatting. And it will bounce only messages that have no upper-case letters at all. Unfortunately, it is not subtle enough to bounce a message written entirely in lowercase except for the abbreviation "Ph.D."

Before you even think about employing this method, read the extremely serious warning in the following paragraphs.



An extremely serious warning

Read this paragraph three times, preferably aloud, before you proceed. If you make a mistake while attempting to follow the instructions on this page, you may cause all your incoming e-mail to be misdirected in such a way that you will never find it again. It is even possible that your incoming mail may be discarded entirely, and that not even the most persistent and knowledgeable expert will be able to recover it. I am not exaggerating. Think very carefully before you proceed. I will not help you to recover from your mistakes, and even if I were willing to help you (and I am not), neither I nor anyone else may be able to do anything at all that will let you recover from those mistakes. The unix-based operating system used on the Columbia University server is designed for knowledgeable users, and does not offer even the rudimentary recovery tools available on Windows systems. When a file is deleted from a unix system, all the king's programmers and all the king's tech-support personnel can never get it back again.

If you understand the preceding paragraph, and you still want to proceed, read this paragraph slowly and carefully. The method on this page requires you to create two text files on the Columbia server by logging into the Columbia system and using unix commands. If you try to be clever and save time by creating the two files in standard Windows or Macintosh software, all your mail may be shunted into a file on the Columbia server where only a very patient expert will be able to find it again. And you will have to find an expert who is willing to recover it for you. Again, I am not exaggerating.

If, and only if, you are moderately expert in the unix-based operating system used on the Columbia servers, and if you already know everything there is to know about the difference between the ways in which Windows-based programs and unix-based programs create line endings in text files, and, in addition, you are an experienced user of editing software that is specifically designed to create text files in unix format, or you know how to configure your ftp software to convert Windows text files into unix text files, or you know by heart how to use the unix command  tr -d '\r' together with redirection symbols, then, and only then, should you try to create these two files using Windows software. You have been warned.

Note to experienced unix users: The dos-to-unix conversion command is:

 tr -d '\r' < dosfilename > unixfilename



Step 1: Access the Columbia server

The most reliable way to create the e-mail blocker is to create and manipulate files on the disk space that Columbia created for you when you opened your e-mail account. You will need to obtain and use telnet or ssh software (unless you are expert enough to use the software provided on Windows and Macintosh OS X systems). Download and install the appropriate telnet or ssh program for your computer from the internet software page on Columbia's web site. Study the instructions available on the same page from which you can download the appropriate program. Start up your telnet or ssh program and log into the Columbia web server as instructed.



Step 2: Create the explanatory message

In following these instructions, remember: If you type the wrong commands, you can lose files forever. There is no "undelete" or "undo" in unix. In case you did not understand it the first time: There is no "undelete" or "undo" in unix.

Unless you are expert enough to have created a shell profile on your account, you will see a dollar-sign prompt when you log into the Columbia server. You will now use the pico text-editor program to create two files, the first of which contains the text that will be appended to bounced messages. At the dollar-sign prompt, type:

pico noupper.txt

and press Enter. (In the remaining instructions, I will write "enter such-and-such" in place of "type such-and-such and press Enter" but the meaning is the same. Make sure you understand this before proceeding.)

In the pico window that appears, type something like the following, complete with the lines of dashes at the beginning and end, and with line breaks as shown. If you know how to do so, you may of course use Windows or Mac OS shortcuts to copy the text below and then use the paste command in your telnet or ssh software to transfer the text (in TeraTerm Pro, choose Edit/Paste, not Edit/Paste<CR>).

This is an automated reply from the mail-processing program
at Columbia University.

Your message has not been delivered because it seems to
contain only lowercase letters. This mailbox has been
programmed by its owner to return such messages to the

Please resend your message after rewriting it with standard
spelling and punctuation. If you send your rewritten
message as a reply to this one, please change the subject
line to indicate the actual subject of your message.

Thank you from the procmail program at Columbia University.

You may modify this text to say whatever you want it to say. When the text looks right to you, press Ctrl-O; pico will prompt you with File name to write: noupper.txt and you should press Enter to accept the filename. Press Ctrl-X to exit pico. You should be returned to the dollar-sign prompt.



Step 3: Create the file that filters your mail

Now you will create the text file that tells the Columbia server's mail-processing program (procmail) what to do with mail that contains no uppercase letters. At the dollar-sign prompt, enter

pico .procmailrc

Note very, very carefully the spelling of this string of text. It consists of pico then a space then a period followed immediately (without any spaces) by the letters procmailrc after which you must press Enter. Be absolutely certain that the period (dot) is included, and that it is in the right place.

Now, in the pico window, type the typewriter-style text below, exactly as it appears here (except that you must in two places replace the string with your actual e-mail address, which looks something like although with different initials and numbers). If you want to allow all-lowercase mail to reach you from a specific address, replace the string that begins "SomeoneWhoseMail..." with the address you have in mind. However, you should probably include the line even if you do not want to exempt anyone's mail, so that you can modify the line later if your bounce message angers someone whom you do not want to anger.

(You should probably copy the typewriter-style text below into a word-processor and print it out in a large font, so that you can study it to make sure you know where and where not to include spaces, asterisks, and other characters.)

Note the following details: The lines that begin with a colon read either colon-zero or colon-zero-space-B-D. It is extremely important that you get this right. The circumflex character is typed by entering Shift-6 on a US English keyboard layout. Notice that there is no space between -A and the quotation mark that follows it, and no space between -i and the quotation mark that follows it. Be very careful to notice that two of the lines contain only an opening curly brace, but that the sixth line from the bottom begins with a vertical stroke followed by a space and then an open parenthesis (not a curly brace). Also note that the last two lines each contain only a closing curly brace, but that the third line from the bottom begins with a closing parenthesis followed by a space, then a vertical stroke, then a space, then a string that begins with a dollar sign. Do not type a parenthesis where a curly brace is called for, or the reverse. Remember the consequences of a mistake.

Be very careful to place the spaces where they belong. Be extremely careful to include the exclamation points in the right place. If you omit any of the spaces or exclamation points, the whole procedure will not work, and you may never see your incoming mail again!

Here, at last, are the lines that you must type into pico (with the changes noted above). Follow the line breaks exactly, and notice the blank line after the fifth line:


* ^FROM:.*
* !^X-Loop:
* !^FROM:.*
:0 BD
* ! http
* ! www
:0 BD
* ![A-Z]
* [a-z]
| (formail -rk -A"X-Loop:" \
-i"Subject: Your message was not delivered; see explanation at end"; \
cat $HOME/noupper.txt \
) | $SENDMAIL -t -oi

As written, this bounces all-lowercase e-mail messages that were sent from Columbia University addresses only. If you want to bounce all-lowercase e-mail messages sent from any address, anywhere, omit the line that reads * ^From:.* (and do not leave a blank line in its place; close up the break); or, if you want to bounce all-lowercase e-mail messages sent only from one specific address, modify that line to read something like this (be extremely careful to place all the periods and asterisks in the right places):

 * ^FROM:.*

If you want to block all-lowercase e-mail messages from two or more specific addresses or sites, follow this example:

 * ^FROM:.*|^FROM:.*|^FROM:.*

Notice that the initial asterisk is followed by a space, but that there are no other spaces anywhere in the line, and that the multiple items are separated from each other by a single vertical line. If you add a fourth address or additional addresses, make sure to separate each from the preceding item with a vertical line, and place all the items on a single line (pico will break the long line to fit the screen, but will not insert a line break unless you press Enter). Be exceptionally careful if you attempt this. Don't even think about trying it until you are more experienced with text-editing under unix.

However, if you want to exempt more than one address from being bounced, you must use a completely different method: create additional lines in the same format as the first of the two lines immediately below, following the model shown here:

* !^FROM:.*
* !^FROM:.*

When the text is absolutely perfect, press Ctrl-O; pico will prompt you with File name to write: .procmailrc and you should press Enter to accept the filename. Press Ctrl-X to exit pico. You should be returned to the dollar-sign prompt. You may want to leave the telnet or ssh software running until you are certain that everything is working correctly (that is, after completing step 4, below). When you are satisfied that all is well, enter logout at the dollar-sign prompt and close your telnet or ssh program.

A few notes: the lines that begin asterisk-space-exclamation-space followed by http and www are designed to let messages through the blocker if they include web addresses. I sometimes send web addresses to myself and do not want them bounced when I do.

Note that this filter will create a file called maillog that contains a brief record of all your incoming messages. To view this file if you are curious, use your telnet or ssh software to access the server and enter pico maillog to open it in the same pico editor that you used earlier. To avoid cluttering your disk space, you should occasionally delete the file by entering the command rm maillog at the dollar-sign prompt.



Step 4: Test the bouncer

Now, using either pine or any other e-mail program that send plain text, send yourself a message that includes no upper-case letters. In a few moments, it should be bounced back to you with an explanatory message. If the message is not bounced, then try again with another mail program. If the message continues to reach you without being bounced, return to step 3 and check your typing very carefully. If your message neither bounces nor reaches you within two minutes after you send it, then something is seriously wrong. Do not attempt to make minor repairs. Use your telnet or ssh software to delete your mail filter file by entering this command at the dollar-sign prompt:

rm .procmailrc

That is: the letters r and m, followed by a space, followed by a period (dot), immediately followed (no space) by procmailrc. This command deletes the filter file, and your mail will once again be back to normal. If you regain your courage, you may return to step 3 and try again to create a working filter. But perhaps you will be wise enough not to try this until you know more about unix.



Learn more about mail processing

If you want to understand what all this is about, start from Columbia's introductory page about the procmail program (archived version of dead link) More extensive explanations are easily available on the Internet. I do not know of any other lowercase e-mail blocker, however, and the faults of this one are entirely my own.



Edward Mendelson