Penguin
Diff: HowToOfflineMailing
EditPageHistoryDiffInfoLikePages

Differences between version 3 and revision by previous author of HowToOfflineMailing.

Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History

Newer page: version 3 Last edited on Friday, October 29, 2004 10:11:33 am by StuartYeates Revert
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:12 am by perry Revert
@@ -1,1646 +1 @@
-  
-  
-  
-Linux off-line mailing method (offline mailaddr with 1 account)  
-  
-  
-  
-----  
-  
-!!!Linux off-line mailing method (offline mailaddr with 1 account)  
-  
-!!Gunther Voet,  
-freaker@tuc.ml.org - Belgium (!CompuMed/TuCSRV)v1.3.3, 4 June 1998  
-  
-  
-----  
-''Use your linux mailing system offline, receive mail for multiple users  
-with only one email address, and without being 24-24 online on the net.  
-If you are unable to pay a direct line to stay online for 24-24 and still  
-want your users to receive mail on your linux box; as well not pay for a  
-multi-drop box at your isp, you can use this system using only one email  
-address to divide to your users email addresses. It is as well 24-24  
-reachable since the server where your account resists will receive the  
-mail.  
-This howto is Copyright (c)1997-98 by Gunther Voet.''  
-----  
-  
-  
-  
-  
-!!1. Notes by the author (preface).  
-  
-  
-*1.1 Legal stuff  
-  
-*1.2 Copyrights  
-  
-*1.3 Feedback  
-  
-*1.4 Distribution  
-  
-*1.5 Changes  
-  
-*1.6 What am i using ?  
-  
-*1.7 Thanks go out to ...  
-  
-  
-  
-  
-  
-!!2. Preliminaries  
-  
-  
-*2.1 Preface & Description  
-  
-*2.2 Points of interest ...  
-  
-*2.3 Things you should know  
-  
-*2.4 there are 2 different ways ...  
-  
-  
-  
-  
-  
-!!3. Requirements  
-  
-  
-*3.1 A linux machine  
-  
-*3.2 A extra account at your linux machine  
-  
-*3.3 Fetchmail  
-  
-*3.4 Procmail  
-  
-*3.5 A mail account  
-  
-  
-  
-  
-  
-!!4. I got it all, what now ?  
-  
-  
-*4.1 Creating a .fetchmailrc file  
-  
-*4.2 Creating a .procmailrc file  
-  
-*4.3 "nosuchuserfile"  
-  
-*4.4 "crontab files".  
-  
-*4.5 "At the admins site".  
-  
-  
-  
-  
-  
-!!5. Automation  
-  
-  
-*5.1 The "skeleton".  
-  
-*5.2 addmail script  
-  
-  
-  
-  
-  
-!!6. Help! (sigh)  
-  
-  
-*6.1 The automation script just doesn't work:  
-  
-*6.2 What do you mean by "anonymous mailserver"?  
-  
-*6.3 My cat died  
-  
-*6.4 My dog died  
-  
-*6.5 Linux?  
-  
-*6.6 Can you help me with finding a mail account?  
-  
-*6.7 Why is the "maybe later i'll make some addition ..." removed ?  
-  
-*6.8 How do i get a "domain" ?  
-  
-*6.9 Why are you so f*cking lame using this?  
-  
-*6.10 Nosuchuserfile?  
-  
-*6.11 Can my users write/send mail too?  
-  
-*6.12 Does every user need a shell account at my server?  
-  
-*6.13 skeletion?  
-  
-*6.14 Addmail?  
-  
-*6.15 Why are you so cruel?  
-  
-*6.16 Didn't you get a complaint of excessive language ?  
-  
-*6.17 Why is this howto different than most others?  
-  
-*6.18 locally my domain works, but remote it seems not to receive  
-  
-*6.19 My dog died  
-  
-  
-  
-  
-  
-!!7. The End  
-----  
-  
-!!1. Notes by the author (preface).  
-  
-  
-In this chapter i'm just going to put myself safe for any damages and  
-flames - since even *I* could be wrong ... If you got any questions or  
-suggestions to add to this faq, even if you find any faults - there is a  
-feedback section in it ...  
-  
-  
-Some "need to know" point is, all filenames & files/types are indicated  
-with the line:  
-  
-  
-  
-  
-(*** < file > *** text ***) .procmailrc  
-  
-  
-  
-This means, this is a file, called ".procmailrc" containing text. The text  
-variable can also be code. It shows you what name of file to use. Without  
-a path means it can be variable/choosen by you (in the most cases this  
-files resists in the homedirectory of the mail"user" like /home/mailer).  
-  
-  
-  
-  
-!!1.1 Legal stuff  
-  
-  
-  
-Neither the author nor the distributors of this HOWTO are in any way  
-responsible for physical, financial, moral damage incurred by following  
-the suggestions and examples of this text. The information in this document  
-contains the best of my knowledge and experience, but i could still make  
-any mistakes as well in the information as in the examples. Any trademarks  
-are property of their respective holders (i ain't using any commercial  
-thingy's here - but well - IF i'm going to add some text, i don't need to  
-change this disclaimer). If your cat dies 'coz this document was too  
-heavy - i am not responsible as well ...  
-  
-  
-  
-  
-!! 1.2 Copyrights  
-  
-  
-  
-This document and contents are Copyright (c)1997-98 by Gunther Voet.  
-Unauthorized (re)production in any form is explicitly allowed and even  
-strongly encouraged as long you don't change the contents of it without  
-contacting the author (Gunther Voet). If you quote the document as whole  
-or a part of it, there needs to be a Copyright "hint" or link to the  
-derived work. "The HOWTO documents are copyrighted by their respective  
-authors". The "HOWTO copyright" will discuss what can be done and what  
-cannot be done with this document. If it is used in a commercial way,  
-the author should been noticed for such distributions. Exceptions on this  
-copyright may be granted under certain conditions with a written letter or  
-e-mail to the author. For more info about the standard HOWTO disclaimer,  
-please contact linux-howto@sunsite.unc.edu.  
-  
-  
-*PLEASE* *IF* you are going to make a system based on this HOWTO, then  
-PLEASE give me the copyright :) heh ... - i am not that cruel :)). I mean  
-by a system "a package" - NOT the mailsystem itself - altough it is some  
-appreciative thingy i would be included :)) i can always use one email  
-address more for more flaming :)) (just kiddin').  
-  
-  
-  
-  
-  
-  
-  
-!!1.3 Feedback  
-  
-  
-  
-Well, i expect from you and the users who read this HOWTO, they will  
-make this HOWTO useful. If you got any suggestions, corrections, comments  
-(except flame-mail :)) - please send them to me at freaker@freestamp.com or  
-freaker@tuc.ml.org  
-and i will make the corrections, comments or  
-suggestions happen in the next revision. If you publish this document on  
-a commercial way, a complimentary copy would be appreciated - you can mail  
-me for my postal address. For flames - you could send them to me, but they  
-will end at /dev/null ... so - don't even mind to waste bandwidth for it !.  
-Since i can exclude some users to receive mail from (explained in this  
-document) (evil grin). My alias (name) is freaker btw :)). You can always  
-try "freaker@freestamp.com". (note the changed address !!)  
-  
-  
-  
-  
-!!1.4 Distribution  
-  
-  
-  
-The latest revision of this document can been get from:  
-  
-  
-  
-http://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Offline-Mailing  
-  
--and-  
-  
-  
-  
-http://tuc.ml.org/om/  
-  
-(also checkout  
-http://tuc.ml.org)  
-  
-  
-tuc.ml.org could be down at the time of current writing!  
-  
-  
-  
-  
-!!1.5 Changes  
-  
-  
-  
-  
-  
-v1..0 - Preliminary release, internal testing, we tried it before  
-we gave it out to you :) .. since - it GOT to be usefull  
-and needs to work? rite ? :)  
-v1.1.0 - Fixed a lot of errors in the texts, put chapters in it,  
-- fixed some small errors and typo's ...  
-v1.2.0 - fixed grammatical errors.  
-- added a "what-are-we-using" chapter.  
-- added Sunsite address.  
-v1.3.0 - Added "virtual mail support" for admins  
-- New site and email addresses  
-- Thanks go to ...  
-v1.3.1 - Converted to SGML and fixed some minor details.  
-v1.3.2 - Major errors corrected (filenames .fetchmailrc to  
-.procmailrc) etc... (thx to Tetsu Isaji)  
-- Added support for the "new" sendmail, v8.8.+  
-- Fixed some minor errors  
-- Upgraded my system YAY!  
-- Japanese version will come out soon, location  
-will be mentioned when known ... (thx to Tetsu Isaji)  
-v1.3.3 - Added CC support, changed email addr to freaker@freestamp.com  
-  
-  
-  
-  
-  
-!!1.6 What am i using ?  
-  
-  
-  
-I'm using Linux 2..30, Pentium-166, ATI pci-mach64 card, Accelerated-X  
-(Metro) and a connection to my isp (currently ibmnet) via ppp using a ZyXEL  
-28k8 modem, and occasionally a Bausch 28k8.  
-  
-  
-Now i upgraded to Linux 2..33, installed a USRobotics modem, it still  
-works as it should work :) (everybody should upgrade their linux versions  
-as soon there comes out a patch :) believe me :) you could spare a lot of  
-time & seeking for errors when doing this one :)  
-  
-  
-  
-  
-!!1.7 Thanks go out to ...  
-  
-  
-  
-  
-  
-  
-*Fred, durban.hebel.net (for allowing the pages & bot)  
-*  
-  
-*Lifesaver, parkside.net (for allowing the new pages, helping with this  
-faq for mailing, since, it is all working overthere and here ... make  
-some visit to his cyber-cafe ... heard they got great coffee :))  
-*  
-  
-*The server admins at lodus.net to continue this project.  
-*  
-  
-*Now i'll need a new server since lodus.net has been sold :(  
-*  
-  
-  
-  
-  
-----  
-  
-!!2. Preliminaries  
-  
-  
-Well, how does this system works ? what can you do with it ? what is it  
-anyway ? and ... am i used to read it ? ... to all those questions - there  
-is an answer ...  
-  
-  
-  
-  
-  
-  
-  
-!!2.1 Preface & Description  
-  
-  
-  
-This HOWTO is dedicated to all the off-line linux users/servers ...  
-You got a group, or organization, and you want all your members to have  
-a contact (email) address, without paying for the 24/24 direct line or for  
-the email accounts ... Or you got a internal network - with a masq'd server  
-and you want to give all the users using it a email address, you could use  
-this way to do it. I personally am using it to give my users & members of  
-a demogroup all a e-mail account without being 24/24 online; since it is a  
-non-commercial demogroup - and we don't got THAT much money to pay a direct  
-line with instant email access - and different ip's. Everybody got a email  
-address, even when they don't got internet access. The ones with internet  
-access can receive their mail on their personal email address - viavia the  
-system described below. Your users can still send mail as they used to do,  
-since - your system will hold the mail queue from the users. The only thing  
-what should be changed for the users - is that they add their "email address"  
-wether (described below) it is the method with the subject line, or with the  
-header "to" ...  
-  
-  
-  
-  
-  
-  
-  
-!!2.2 Points of interest ...  
-  
-  
-  
-  
-  
-  
-*A organization with members, for all a email address, so they can be  
-contacted when neccesary.  
-  
-*  
-  
-*A anonymous mailservice - they can't read your "mail setup file" - so they  
-don't know where the mail is forwarded/rerouted to.  
-  
-*  
-  
-*A group who doesn't got enuf money (don't laugh), or is free, and don't  
-WANT to spend money for it (eheh) - and still wants to provide the members  
-a email address.  
-  
-*  
-  
-*A masq'd network - with a server connected to the internet, where the users  
-using the masq'd network need to have a email account  
-  
-*  
-  
-*You want to put some documents "autoreplied" - like i do with my  
-HOWTO, statistics, or documents ... like "info@yourmail.dom" or  
-"document1@yourmail.dom".  
-  
-*  
-  
-*You only need one account at the "main" server to fetch from, for the  
-+200 email accounts you can create at your server ...  
-  
-*  
-  
-*I used the "B" method with +- 300 email accounts - with a public  
-server; 80486DX4-100 - and was processed in 1 minute.  
-*  
-  
-  
-  
-  
-  
-!!2.3 Things you should know  
-  
-  
-  
-  
-  
-  
-*Not every (free) mailservice is happy when you are going to distribute  
-mail to other users, or putting up an anonymous mail server, so, please  
-try to contact your mailserver administrator before "just doing it".  
-  
-*  
-  
-*It is slower than a direct 24/24 connection, since your server will need  
-to get online before it will process the mail.  
-  
-*  
-  
-*It needs a administrative force to administrate the "mailrouting" and to  
-add the user ... you will need work with it ! - it is not that automatic.  
-(well - i made it "semi-automatic" with my server :) you could try it as  
-well).  
-  
-*  
-  
-*Bandwidth and space is needed when you got many users - on the mailserver  
-you are working on ... and sure - when they send files - you need to have  
-enough space on it !.  
-  
-*  
-  
-*All mail will be transferred into "one step" - so - the last mail received  
-on your server will be last sent to the recipient. "first in - first out".  
-  
-*  
-  
-*In the first method (to:) there is no prob with the usernames - but in the  
-second "cheaper" method - users can't put in a subject line, since that  
-one will be used to send the mail to the recipient. Many users forget to  
-use the "subject" ... - or they will need to know it clearly.  
-  
-*  
-  
-*If you poll enough for your mail, (for example 4 times a day) - the mail  
-will be sure be delivered to as from a recipient the least every 6hrs. So  
-the processing will go a little smoother.  
-  
-*  
-  
-*you CAN use it as a "online" mail server as well :) since it will poll  
-for it's mail for every XX minutes. but - when you are online - why using  
-another server ? and not asking your own domain for your own server ?  
-(dough).  
-*  
-  
-  
-  
-  
-  
-!!2.4 there are 2 different ways ...  
-  
-  
-  
-  
-  
-  
-# method 'A' - now called "(m(A))".  
-The "mailsystem" will look to the header, and will see to the "to:" line.  
-This is the best way, since it are "real email addresses". You will need  
-another account on some server *AND* you need a DNS (MX) entry (your own  
-domain for instance). If the system administrator wants to help you with  
-that, then there will be no problem !. The system administrator will need  
-to reroute ALL mail sent to your (MX) maildomain -> to your account !.  
-This will take some time for him to do it :) so be really nice to him :))  
-Thanks to my system administrator (Fred) i got my maildomain and the user-  
-services of my "free" demogroup. It can be a DNS entry costs something,  
-what you will need to consider to take it or not.  
-  
-#  
-  
-#method 'B' - now called "(m(B))".  
-The "mailsystem" looks to the subject line, and will forward to the user  
-indicated into the subject line. If the user is not found, it will bounce  
-a mail back. This will need a pop server with only one useraccount, and  
-don't need your own DNS or you don't need to be nice to your system-  
-administrator who arranges you the mail address :). You can use a public  
-mailserver, as well your own mailserver or a private one. You can even  
-sacrifice your own email address for it :). I used this approach as first  
-what worked for me for over a year now ... I know this is sloppy, but, i  
-ain't telling you need to use this way, so don't shoot ME - since i'm only  
-offering you some solutions to your mail problems :) - you could use  
-method A what isn't that sloppy !  
-#  
-  
-  
-  
-  
-----  
-  
-!!3. Requirements  
-  
-  
-Well, you need (of'course) a Linux machine, what can be connected to the  
-internet - So! (i am smart - i am smart :)) - you probably got a modem, right?  
-a phoneline - or any way to connect yourself with the server you are running.  
-You will also need some software like Fetchmail, Procmail, an extra account,  
-and your email account or DNS with email account.  
-  
-  
-  
-  
-  
-  
-  
-!!3.1 A linux machine  
-  
-  
-  
-This can be ANYthing ... even a 8086 ... - but preferable - since there will  
-be some load on it - minimally a 80386 :). as faster the machine - as faster  
-the software will run (rite eh)? :).  
-  
-  
-  
-  
-!!3.2 A extra account at your linux machine  
-  
-  
-  
-You need to create a extra account on your Linux machine. I am using as  
-example (in this HOWTO) "mailservice". This can be as well "mailserver"  
-or "mailtousers" - as long it is some name what can be recognized by you!.  
-  
-  
-! It doesn't need to have ANY root privileges !  
-  
-  
-This mailaccount will forward all mail to the users on your system, or to  
-external users (not on your system :)). Just create it as an ordinary user.  
-You will need to test things under this account, and, the mail  
-"administrator" can use this account to administrate the mail account without  
-being root even .. so - pretty safe !.  
-  
-  
-  
-  
-!!3.3 Fetchmail  
-  
-  
-  
-I am using v1.9 patch level 9 ... i found it at sunsite.unc.edu, and, i  
-am using only this mail-fetcher in my example - if you want to use another  
-one, you are on your own ! since i am happy with it :). For extended features  
-you should read the man of Fetchmail :). This can be installed as root - as  
-well for the user itself ... - best is to install it as root :) since i know  
-it will work for sure then :)))  
-  
-  
-  
-  
-!!3.4 Procmail  
-  
-  
-  
-I am using v3.10 - found it again at sunsite.unc.edu, and - i like this as  
-the best mda (mail delivery agent) around ... It delivers nicely - and it  
-is better than using it by the "original" system mda - since it will deliver  
-user-per-user ! ... The same as above - it can be installed as root, or as  
-user - and :) best is to install it as root - since i know it will work for  
-sure then (again!) :)... how repetetive ...  
-  
-  
-  
-  
-!!3.5 A mail account  
-  
-  
-  
-You always need to have a mail account - where you can "poll" your mail from.  
-The server needs to be a POP server - where you can poll from when you want,  
-and where users can send their mail 24/24 to. It can be a free-mail service,  
-as well commercial - even your mailaccount is sufficient enough. In the  
-"subject" method (m(B)) - you don't need something more - in method A - with  
-the "to" fields - you NEED more - as written below !  
-  
-  
-  
-  
-!A DNS record (MX)  
-  
-  
-Needed to run your own "domain" - email domain ... it is needed since the  
-administrator of the server can't use it's own domain for your users - since  
-there are users who need to be contacted on his server as well - what could  
-interfere with your users. And your mailheader must be filtered on that  
-domain. So - an apart domain - pointing to HIS server. This can be an  
-additional cost - or you can ask your system administrator to add a "non-  
-authorative address" - pointing to his server ... - however - it needs to be  
-another domain than he is using !  
-  
-  
-  
-  
-!A "forward" to your account-account :)  
-  
-  
-Well, the system administrator needs to forward *ALL* mail to your domain  
-to YOUR account ... - it is easy for him when he knows how to do it :) ..  
-else he will need to read the sendmail manual :)) (or qmail - whatever).  
-You will poll for your mail at your account and voila ! filtering on YOUR  
-own email domain.  
-  
-  
-  
-----  
-  
-!!4. I got it all, what now ?  
-  
-  
-Now you created the extra account, you got the mail address - and/or the DNS  
-entry & forwarding to your account ... As well installed Procmail & Fetchmail  
-so we can rock the place ! :) .. here we go !  
-  
-  
-#You need to create a .procmailrc file, what will contain the "delivery"  
-info to your users.  
-#  
-  
-#You need to create a "nosuchuserfile" - so the writer knows his mail isn't  
-delivered well.  
-#  
-  
-#For best work :) you could use crontab to check for mail. This is a easy  
-way to check your mail every XX minutes when on the internet.  
-#  
-  
-  
-  
-  
-  
-!!4.1 Creating a .fetchmailrc file  
-  
-  
-  
-You will need to create a .fetchmailrc file, what will contain the information  
-(username & password, as well the Mail Delivery Agent (mda) to proces the mail  
-to). Here is some example file ...  
-  
-  
-  
-  
-(*** < file > *** text ***) .fetchmailrc  
-  
-  
-----  
-  
-server my.mail.server.com  
-proto pop3  
-user myaccountthere  
-pass deepestsecrets  
-flush  
-mda /usr/bin/procmail  
-  
-----  
-  
-  
-  
-This file will be used to fetch your mail. Please test it by using the  
-fetchmail program "fetchmail -vv" - and see your mail is being transferred  
-right ... There will be some errors - since the procmail control file hasn't  
-been created yet. You can wait by testing AFTER making the procmailrc file,  
-but - i'll warn ya - IF there is something fault :) it CAN be this file :)  
-It needs to be owned by the user account itself - in my case "mailservice"  
-and needs to be "user readable" but NOT group/world readable - since it  
-contains the "main password" :)). (chmod 600 .fetchmailrc will do).  
-  
-  
-  
-  
-!!4.2 Creating a .procmailrc file  
-  
-  
-  
-This control file will forward all mail to the users in it. There are 2 ways  
-as described before - the "to:" (header) way - and the "subject" (sloppy) way.  
-The file will contain the usernames to transport to. All the "#" are comments  
-and are absolutely not needed when not wanted - it's only so you know what i  
-am doing ... - you can as well best chmod it 600 - so the rest of the world  
-or group doesn't need those private addresses eh :) ... It needs also to be  
-owned by the user (like "mailservice") :)). The "nosuchuserfile" is a  
-"bounce" to the writer - if the user isn't found (so mail not delivered) in  
-the procmailrc file ... - so the writer knows the mail isn't delivered well.  
-  
-  
-  
-  
-!For "header (to:)" transportation  
-  
-  
-  
-  
-(*** < file > *** text ***) .procmailrc  
-  
-  
-----  
-  
-# this line is for debugging purposes only ! it should be removed for  
-# ethical purposes - since you can read all mail passed trough your mail-  
-# server ... - all mail will be copied to the file "passtrough" before  
-# going to the users ... herein you can look what went wrong ...  
-:0 c  
-passtrough  
-# the mail with header "to: freaker@mydom.com" will be forwarded directly  
-# to me, the other mail will pass this option ...  
-:  
-* ^To:.*freaker@mydom.com  
-! freaker  
-# the mail to root@mydom.com will be forwarded to root ... as well postmaster!  
-:  
-* ^To:.*root@mydom.com  
-! root  
-:  
-* ^To:.*postmaster@mydom.com  
-! postmaster  
-# the mail to barbara@mydom.com will be forwarded to barbara AND will be  
-# forwarded to her private email address !  
-:0 c  
-* ^To:.*barbara@mydom.com  
-! barbara@her.private.one  
-:  
-* ^To:.*barbara@mydom.com  
-! barbara  
-# the mail to johnny@mydom.com and johnny@hisdom.com will be forwarded to johnny  
-:  
-* (^To:.*johnny@mydom.com)|(^To:.*johnny@hisdom.com)  
-! freaker  
-# the mail to hans@mydom.com and all carbon copys will be forwarded to hans  
-:  
-* (^To:.*hans@mydom.com)|(^CC:.*hans@mydom.com)  
-! hans  
-# this lines will BOUNCE the mail to the sender - when it is not delivered to  
-# one of above users ... it will send the file "nosuchuser" into the mail  
-# body as reply ... be aware ! you need to make such file ! - mine contains  
-# "well, the user you wanted to reach does not exist on this server, please  
-# try again, it could be the user is not present anymore".  
-#  
-:  
-|(/usr/bin/formail -r -k \  
--A"X-loop: mailservice@mydomain.dom "| \  
-/usr/bin/gawk '{print }\  
-/^/ && !HEADER \  
-{ system("/bin/cat nosuchuser"); \  
-print"--" ;\  
-HEADER=1 }' ) |\  
-/usr/bin/sendmail -t  
-exit  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!For "subject: touser" transportation  
-  
-  
-  
-  
-(*** < file > *** text ***) .procmailrc  
-  
-  
-----  
-  
-# this line is for debugging purposes only ! it should be removed for  
-# ethical purposes - since you can read all mail passed trough your mail-  
-# server ... - all mail will be copied to the file "passtrough" before  
-# going to the users ... herein you can look what went wrong ...  
-:0 c  
-passtrough  
-# the mail with header "to: freaker@ibm.net" will be forwarded directly  
-# to me, the other mail will pass this option ... When you got a "dedicated"  
-# email address to receive your "mailservice thingy's" on - you don't need  
-# to use this line :)  
-:  
-* ^To:.*freaker@ibm.net  
-! freaker  
-# all mail with as subject "root" will be forwarded to root !  
-:  
-* ^Subject:.root  
-! root  
-# all mail to "subject: barbara" will be forwarded to barbara ...  
-:  
-* ^Subject:.barbara  
-! barbara  
-# all mail to "subject: paul" will be forwarded to his external email addr.  
-:  
-* ^Subject:.paul  
-! paul@his.personal.emailaddress  
-# all mail to "subject: john" will be forwarded to his account at your server  
-# and a copy will go to his private email address ...  
-:0 c  
-* ^Subject:.john  
-! john@his.personal.emailaddress  
-:  
-* ^Subject:.john  
-! john  
-# All the mail from ibm, with their updates and information, will go to  
-# freaker, as he is the one who will administrate the mailservice, and  
-# as ibm doesn't want to get the bounce putten below !! ... this is  
-# neccesary if your mail provider sends "newsletters" etc...  
-:  
-* ^From:.*newsletter@ibm.net  
-! freaker  
-# All messages from the daemon should been thrown away, or in my case, will  
-# be saved to a file ... (use /dev/null to throw to endless pits of The Abyss)  
-:  
-* ^FROM_DAEMON  
-throwaway  
-# this lines will BOUNCE the mail to the sender - when it is not delivered to  
-# one of above users ... it will send the file "nosuchuser" into the mail  
-# body as reply ... be aware ! you need to make such file ! - mine contains  
-# some text like "user not found in subject line, please use "Subject: user"  
-# to write a mail to the user, like example "subject: freaker" would send a  
-# mail to freaker." The file can be long, but also small :) ... the  
-# "mailservice@mydomain.dom" will prevent to loop between your server and  
-# the other server - it needs to have the EXACT email address used !.  
-# Else you could create an endless loop with a server what sends mail  
-# to "your email address" with as subject something like "don't spend 500$  
-# at your ..." etc...  
-:  
-|(/usr/bin/formail -r -k \  
--A"X-loop: mailservice@mydomain.dom "| \  
-/usr/bin/gawk '{print }\  
-/^/ && !HEADER \  
-{ system("/bin/cat nosuchuser"); \  
-print"--" ;\  
-HEADER=1 }' ) |\  
-/usr/bin/sendmail -t  
-exit  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!!4.3 "nosuchuserfile"  
-  
-  
-  
-  
-  
-(*** < file > *** text ***) nosuchuser  
-  
-  
-----  
-  
-The user you wanted to contact is not present at this system.  
-Please use the subject line as recipient - example "subject: freaker" would  
-send mail to freaker on this system.  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!!4.4 "crontab files".  
-  
-  
-  
-If you don't know how crontab works :) better read the manual :) ...  
-You need to create a "checkmail" file - what will see if the link is up,  
-as well the cronfile itself ... - i am using a ppp link :) so - this is an  
-example how to look when the ppp link is up - and to poll every 10 minutes  
-using cron. Looks sloppy - but isn't !.  
-  
-  
-  
-  
-  
-  
-  
-!checkformail  
-  
-  
-the .checkformail file will be called (needs to be executable as well) - and  
-will look if the ppp link is up. If it is up - then it will fetch for mail.  
-Crontab will use this file when you are using the below cronentry ...  
-  
-  
-  
-  
-(*** < file > *** code ***) .checkformail  
-  
-  
-----  
-  
-#!/bin/sh  
-#  
-cd /home/mailservice  
-if [[ -f /var/run/ppp0.pid ]; then  
-/usr/local/bin/fetchmail -s > /dev/null 2>&1  
-fi  
-  
-----  
-  
-  
-  
-  
-  
-!crontab  
-  
-  
-This cronentry file needs to been loaded into crontab, and will call the .checkformail - every 10 minutes. It won't write any mail or give any info  
-to the console - since i'm redirecting everything to null.  
-  
-  
-  
-  
-(*** < file > *** text ***) cronentry  
-  
-  
-----  
-  
-,10,20,30,40,50 * * * * /home/mailservice/.checkformail 1> /dev/null 2> /dev/null  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!!4.5 "At the admins site".  
-  
-  
-  
-Well, this should be done when using the "A method" ... at the admin's site,  
-so the email goes all from a complete domain, to one username. It is pretty  
-simple, and once you've done it - it works like hell. this is NOT neccesary  
-if your system administrator (the uplink) got another method, and is NOT  
-neccesary at YOUR side !!!!  
-  
-  
-When using a newer version of sendmail, the "old sendmail" trick probably  
-won't work, so please refer to the "new sendmail" topics to let your  
-mailrouting work.  
-  
-  
-  
-  
-!(old sendmail) add some lines to sendmail.cf  
-  
-  
-add the following lines to your /etc/sendmail.cf file, so the domains file  
-will be read. please be noted that the "ruleset 98" is added as underhere,  
-since - once you got errors :) it's a hell to find 'm out ! (and i can know  
-it :) DuH).  
-  
-  
-  
-  
-(*** < file > *** add ***) /etc/sendmail.cf  
-  
-  
-----  
-  
-# Database of handled domains  
-Kmaildomains btree /etc/maildomains.db  
-# Add these lines *IN* Ruleset 98 ! (under Ruleset 98).  
-R$+ < @ $+ . > $: $1 < @ $2 > .  
-R$+ < @ $+ > $* $: $(maildomains $1@$2 $: $1 < @ $2 > $3 $)  
-R$+ < @ $+ > $* $: $(maildomains $2 $: $1 < # $2 > $3 $)  
-R$+ < @ $* > . $: $1 < @ $2 . >  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!(new sendmail) Adding some lines to sendmail.cf  
-  
-  
-With the newer sendmail releases (tested with sendmail v8.8.7, 8.8.8).  
-Ignore method A, and add the next lines ...  
-  
-  
-  
-  
-(*** < file > *** add ***) /etc/sendmail.cf  
-  
-  
-----  
-  
-# Database of handled domains  
-Fw/etc/sendmail.cw  
-Kvirtuser btree /etc/maildomains.db  
-*OR*  
-Fw/yourhomedir/sendmail.cw  
-Kvirtuser btree /yourhomedir/maildomains.db  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!(new sendmail)editing the /etc/sendmail.cw (or /yourdir/sendmail.cw) file  
-  
-  
-If you are using another "location" for the sendmail.cw file, then please  
-replace the "/etc/sendmail.cw" to "/yourhomedirectory/sendmail.cw". The  
-pro points of putting this sendmail.cw file into your homedirectory is  
-that you don't need root to change the domains to receive on. tough - this  
-can give security risks if not used properly !  
-  
-  
-This file can already exist, or needs to be created, if it already exists  
-be sure you don't overwrite the older data - or i need to refer you to my  
-fine disclaimer :)  
-  
-  
-First create a /etc/sendmail.cw file, what will be used to "send" a domain  
-to a specific user ... here is an example ... (as you already knew, the name  
-"mailservice" can be anything you want - it can even be your loginname (like  
-mine is freaker).  
-  
-  
-  
-  
-(*** < file > *** text ***) /etc/sendmail.cw  
-  
-  
-----  
-  
-mydomain.dom mailservice  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!creating a /etc/maildomains file  
-  
-  
-First create a /etc/maildomains file, what will be used to "send" a domain  
-to a specific user ... here is an example ... (as you already knew, the name  
-"mailservice" can be anything you want - it can even be your loginname (like  
-mine is freaker). (you could have this /etc/maildomains in  
-/yourhomedir/maildomains as mentioned before, just change the paths :)  
-  
-  
-With the OLDER sendmail versions:  
-  
-  
-  
-  
-(*** < file > *** text ***) /etc/maildomains  
-  
-  
-----  
-  
-mydomain.dom mailservice  
-  
-----  
-  
-  
-  
-With the NEWER sendmail versions:  
-  
-  
-  
-  
-(*** < file > *** text ***) /etc/maildomains  
-  
-  
-----  
-  
-@mydomain.dom mailservice  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!let it work !  
-  
-  
-With the old & new sendmail versionsyou need to generate the btree  
-(database) files, you'll need to do the following:  
-  
-  
-  
-  
-cd /etc (or /yourhomedir)  
-makemap btree maildomains < maildomains  
-  
-  
-  
-after that, kill the sendmail daemon, and restart it. it should now WORK!  
-good luck :)  
-  
-  
-  
-----  
-  
-!!5. Automation  
-  
-  
-Well, now, everything above works ... (if it doesn't work - don't even think  
-about automation before it WILL work ... - now - we need some script so it  
-isn't a pain in the ass for the "mailadministrator" or the root user to add  
-users to the procmailrc file ... The below example will be for "more  
-experienced users" - since some things NEED to be changed as well ... - it  
-is an example with the "B method - Subject lines". It can be easily adapted  
-to the "A method". Since the "B method" will be more used (cheaper) than the  
-"A" method - i decided to use the "B method" ... Am i sounding repetitive or  
-not ? .. well - i meant to write it in this way :)) to bug you :)))..  
-  
-  
-  
-  
-!!5.1 The "skeleton".  
-  
-  
-  
-Since the footer needs to be as footer (everything below won't be processed  
-since we are bouncing there); there needs to be a header and a footer file.  
-  
-  
-  
-  
-  
-  
-  
-!the ".procmailrc-header" file  
-  
-  
-This file will now be the "header & user" file .. since here will users been  
-added and removed - it will be a important file ... - best take a backup from  
-it each time you add a user ... - there COULD be something wrong sometime ..  
-A system can fail ...  
-  
-  
-  
-  
-(*** < file > *** text ***) .procmailrc-header  
-  
-  
-----  
-  
-:0 c  
-passtrough  
-:  
-* ^To:.*freaker@ibm.net  
-! freaker  
-:  
-* ^Subject:.root  
-! root  
-:  
-* ^Subject:.barbara  
-! barbara  
-:  
-* ^Subject:.paul  
-! paul@his.personal.emailaddress  
-:0 c  
-* ^Subject:.john  
-! john@his.personal.emailaddress  
-:  
-* ^Subject:.john  
-! john  
-:  
-* ^From:.*newsletter@ibm.net  
-! freaker  
-:  
-* ^FROM_DAEMON  
-throwaway  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!the .procmailrc-footer file ..  
-  
-  
-As mentioned above, this file needs to be as footer - since all data BELOW  
-it won't be used to deliver - this footer contains the "bounce" code to  
-bounce the users not found *ABOVE* this footer !. it is the ABSOLUTE end of  
-the file !  
-  
-  
-  
-  
-(*** < file > *** text ***) .procmailrc-footer  
-  
-  
-----  
-  
-:  
-|(/usr/bin/formail -r -k \  
--A"X-loop: mailservice@mydomain.dom "| \  
-/usr/bin/gawk '{print }\  
-/^/ && !HEADER \  
-{ system("/bin/cat nosuchuser"); \  
-print"--" ;\  
-HEADER=1 }' ) |\  
-/usr/bin/sendmail -t  
-exit  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-!!5.2 addmail script  
-  
-  
-  
-This script will add a user to the header file, attach the header & footer  
-to eachother - so it will be a complete .procmailrc file. the "#" (comments)  
-are not really needed - and are for your info :).  
-  
-  
-  
-  
-(*** < file > *** code ***) addmail (* chmod 500 *)  
-  
-  
-----  
-  
-#/bin/sh  
-#  
-# Copyright (c)1997 by Gunther Voet. rev 1..1  
-# please leave the Copyright in it when it is distributed with any  
-# system using this thingy ...  
-echo ""  
-echo "Addmail v1..1 by Gunther Voet, Freaker / TuC'97-98 (21/04/97)"  
-echo ""  
-if [[ $1 ]; then  
-if [[ $2 ]; then  
-# make a backup file !  
-cp /home/mailserv/.procmailrc-header /home/mailserv/.procmailrc-backup  
-# APPEND (>>) the information to the header file ...  
-echo ":" >> /home/mailserv/.procmailrc-header  
-echo "* ^Subject:.$1" >> /home/mailserv/.procmailrc-header  
-echo "! $2" >> /home/mailserv/.procmailrc-header  
-echo "" >> /home/mailserv/.procmailrc-header  
-# copy the header file to .procmailrc - and append the footer file to it !  
-cat /home/mailserv/.procmailrc-header > /home/mailserv/.procmailrc  
-cat /home/mailserv/.procmailrc-footer >> /home/mailserv/.procmailrc  
-# make sure it is owned by "mailserv" and the read/write priveleges are ONLY  
-# for the user "mailserv" itself ...  
-chown mailserv /home/mailserv/.procmailrc  
-chgrp users /home/mailserv/.procmailrc  
-chmod 600 /home/mailserv/.procmailrc  
-else  
-echo "No DESTINATION mail address has been given ..."  
-fi  
-else  
-echo "usage:"  
-echo ""  
-echo "syntax: addmail from_user to_user(domain)"  
-echo ""  
-echo "example: addmail freaker freaker@myemail.dom"  
-echo ""  
-fi  
-  
-----  
-  
-  
-  
-Now, this script will append the information of the user, as well the email  
-address to the header file, it will copy it to the .procmailrc file, and will  
-add the footer to it, so you got a complete .procmailrc to process the mail.  
-If you want to delete a user- just edit the .procmailrc-header file, and  
-at the next user added it will be deleted at the .procmailrc. To do a instant  
-delete, just delete the user from both the files .procmailrc & .procmailrc-  
-header.  
-  
-  
-I guess you are smart enough to write a script that'll automatically add  
-your users when using both methods - when doing a "adduser" at your box.  
-  
-  
-  
-----  
-  
-!!6. Help! (sigh)  
-  
-  
-Well, you need help - isn't :) ... hmm .. i could be sarcastic and just say  
-"you could better do it again, 'coz it looks a messy enuf" - or .. i could  
-help ... - I wrote down some common problems - IF you got any problem NOT  
-listed in this HOWTO (section) - then mail me - and i'll put it in this howto  
-even with your name/email addr in it :). **BEFORE** mailing to me - please  
-look if you didn't forgot anything - and IF you want some help from me - send  
-me the MOST DETAILED information - included the scripts & things you needed.  
-i DON'T need any binaries - since i won't run them.  
-  
-  
-  
-  
-!!6.1 The automation script just doesn't work:  
-  
-  
-  
-  
-  
-  
-*is it executable ?  
-*  
-  
-*is your (default shell) located at /bin/sh ?  
-*  
-  
-  
-!!6.2 What do you mean by "anonymous mailserver"?  
-  
-  
-  
-  
-  
-  
-*Well, you could make accounts like "anon0001@yourdom.dom" - and forward  
-it to another email address ... nobody needs to read the .procmailrc  
-file, so YOU ONLY know the address !.  
-*  
-  
-  
-!!6.3 My cat died  
-  
-  
-  
-  
-  
-  
-*Well, next time don't print this HOWTO out on 200 gram papers, since it  
-are 10 pages it would be 2KG for the cat - it is JUST TOO HEAVY !  
-*  
-  
-  
-!!6.4 My dog died  
-  
-  
-  
-  
-  
-  
-*hmm - can't do anything about that one - why askin' me ? ...  
-Just bury it ....  
-*  
-  
-  
-!!6.5 Linux?  
-  
-  
-  
-  
-  
-  
-*A free-unix - posix compatible - made by Linus Torvalds ... Why are you  
-reading this if you even don't know what Linux is ?  
-*  
-  
-  
-!!6.6 Can you help me with finding a mail account?  
-  
-  
-  
-  
-  
-  
-*No! - this is a howto for YOUR side, i don't care about the side of  
-your isp, nor how to get your email address.  
-*  
-  
-  
-!!6.7 Why is the "maybe later i'll make some addition ..." removed ?  
-  
-  
-  
-  
-  
-  
-*Read point 5.5 very carefully :) and you'll see why .. it's 'coz i  
-needed to add it on general request :)  
-*  
-  
-  
-  
-  
-  
-!!6.8 How do i get a "domain" ?  
-  
-  
-  
-  
-  
-  
-*Ask your local ISP/provider - he will help you with it. It could take  
-days/ even weeks when asking to the Internic - your provider can help.  
-*  
-  
-  
-!!6.9 Why are you so f*cking lame using this?  
-  
-  
-  
-  
-  
-  
-*coz i don't want to spend money - and - 'coz i feel like being f*cking  
-lame USING it - i *AM* using it - so why bother?  
-*  
-  
-  
-!!6.10 Nosuchuserfile?  
-  
-  
-  
-  
-  
-  
-*You can put in it what you want - as long you put some "needed" info so  
-the original writer knows what happened with his "never delivered" mail.  
-*  
-  
-  
-!!6.11 Can my users write/send mail too?  
-  
-  
-  
-  
-  
-  
-*This has nothing to do with the system i explained to you, read the  
-sendmail manual ... - this is to RECEIVE mail - to be "always available  
-at an email address".  
-*  
-  
-  
-!!6.12 Does every user need a shell account at my server?  
-  
-  
-  
-  
-  
-  
-*Nope .. - but - it will be really hard for users not having internet  
-access :) ... You could have a masq'd network - and use a computer  
-connected to it - so the users can get their mail that way, or you can  
-generate a link between a bulletin board and his mail, you could even  
-forward it to a fidonet gate :) ... reasons enough not to give a shell!.  
-*  
-  
-  
-!!6.13 skeletion?  
-  
-  
-  
-  
-  
-  
-*i know it is a typo - but - i like this word better.  
-*  
-  
-  
-!!6.14 Addmail?  
-  
-  
-  
-  
-  
-  
-*No questions - for automation - you better be sure about what you are  
-going to do ... since - it COULD be a trojan ya know :))) (it isn't but  
-what means you need to know what scripting is before asking questions)  
-It IS easy enough to interprete - that's even why i put the comments  
-with it. *IF* you are going to distribute this script - leave my  
-Copyright in it please ! thanks :).  
-*  
-  
-  
-!!6.15 Why are you so cruel?  
-  
-  
-  
-  
-  
-  
-*I am not cruel :) i am nice :) i am the nicest guy of the world, of the  
-universe ! NOW SCRAM! (i just want to be complete in my HOWTO, and not  
-TOO much "drifting away" from my original point in the doc - so :) that's  
-all).  
-*  
-  
-  
-!!6.16 Didn't you get a complaint of excessive language ?  
-  
-  
-  
-  
-  
-  
-*Not yet, but, could be i'm filtering everything containing 'excessive'  
-and language :) i don't know :))  
-*  
-  
-  
-!!6.17 Why is this howto different than most others?  
-  
-  
-  
-  
-  
-  
-*coz sometimes reading plain howto's CAN be boring ... i wanted to  
-add something next to it ...  
-*  
-  
-  
-!!6.18 locally my domain works, but remote it seems not to receive  
-  
-  
-  
-  
-  
-  
-*Check out your "sendmail.cw" file, since the domains NEED to be  
-added in it !  
-*  
-  
-  
-!!6.19 My dog died  
-  
-  
-  
-  
-  
-  
-*the rulesets don't work, i can't receive any mail, or sendmail dies  
-Refer to the new section "new sendmail" - and disregard the old  
-sendmail tricks. The newer sendmail should be easier to use with  
-virtual domains.  
-*  
-  
-  
-  
-  
-----  
-  
-!!7. The End  
-  
-  
-This sounds like the end ... If you find any unwanted bugs (or features :)),  
-then leave some feedback ... any comments & suggestions -> mail them :).  
-if you are still bored after reading this, please go to:  
-http://tuc.ml.org/ hehehe.  
-  
-  
-My thanks go out to:  
-  
-  
-Hannes van de Vel: for supporting me (hum)  
-Tetsu Isaji: the japanese offline-mailing & notifying me about errors :)  
-Greg Hankins: for notifying me about some errors in the sgml version.  
-Linus torvalds: of'course ... without his help this howto wouldn't be here!  
-  
-  
-  
-----  
+Describe [HowToOfflineMailing ] here.