1243 lines
42 KiB
Plaintext
1243 lines
42 KiB
Plaintext
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.''
|
||
______________________________________________________________________
|
||
|
||
Table of Contents
|
||
|
||
|
||
|
||
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
|
||
3.5.1 A DNS record (MX)
|
||
3.5.2 A "forward" to your account-account :)
|
||
|
||
4. I got it all, what now ?
|
||
|
||
4.1 Creating a .fetchmailrc file
|
||
4.2 Creating a .procmailrc file
|
||
4.2.1 For "header (to:)" transportation
|
||
4.2.2 For "subject: touser" transportation
|
||
4.3 "nosuchuserfile"
|
||
4.4 "crontab files".
|
||
4.4.1 checkformail
|
||
4.4.2 crontab
|
||
4.5 "At the admins site".
|
||
4.5.1 (old sendmail) add some lines to sendmail.cf
|
||
4.5.2 (new sendmail) Adding some lines to sendmail.cf
|
||
4.5.3 (new sendmail)editing the /etc/sendmail.cw (or /yourdir/sendmail.cw) file
|
||
4.5.4 creating a /etc/maildomains file
|
||
4.5.5 let it work !
|
||
|
||
5. Automation
|
||
|
||
5.1 The "skeleton".
|
||
5.1.1 the ".procmailrc-header" file
|
||
5.1.2 the .procmailrc-footer file ..
|
||
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.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.0+
|
||
- 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.0.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.0.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 ...
|
||
|
||
|
||
<20> Fred, durban.hebel.net (for allowing the pages & bot)
|
||
|
||
<20> 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 :))
|
||
|
||
<20> The server admins at lodus.net to continue this project.
|
||
|
||
<20> 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 ...
|
||
|
||
|
||
<20> A organization with members, for all a email address, so they can
|
||
be contacted when neccesary.
|
||
|
||
<20> A anonymous mailservice - they can't read your "mail setup file" -
|
||
so they don't know where the mail is forwarded/rerouted to.
|
||
|
||
<20> 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.
|
||
|
||
<20> 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
|
||
|
||
<20> You want to put some documents "autoreplied" - like i do with my
|
||
HOWTO, statistics, or documents ... like "info@yourmail.dom" or
|
||
"document1@yourmail.dom".
|
||
|
||
|
||
<20> You only need one account at the "main" server to fetch from, for
|
||
the +200 email accounts you can create at your server ...
|
||
|
||
<20> 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
|
||
|
||
|
||
<20> 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".
|
||
|
||
<20> It is slower than a direct 24/24 connection, since your server will
|
||
need to get online before it will process the mail.
|
||
|
||
<20> 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).
|
||
|
||
<20> 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 !.
|
||
|
||
<20> 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".
|
||
|
||
<20> 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.
|
||
|
||
<20> 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.
|
||
|
||
<20> 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 ...
|
||
|
||
|
||
1. 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.
|
||
|
||
2. 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 !
|
||
|
||
|
||
3.5.1. 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 !
|
||
|
||
|
||
3.5.2. 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 !
|
||
|
||
1. You need to create a .procmailrc file, what will contain the
|
||
"delivery" info to your users.
|
||
|
||
2. You need to create a "nosuchuserfile" - so the writer knows his
|
||
mail isn't delivered well.
|
||
|
||
3. 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.
|
||
|
||
|
||
4.2.1. 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 ...
|
||
:0
|
||
* ^To:.*freaker@mydom.com
|
||
! freaker
|
||
|
||
# the mail to root@mydom.com will be forwarded to root ... as well postmaster!
|
||
:0
|
||
* ^To:.*root@mydom.com
|
||
! root
|
||
|
||
:0
|
||
* ^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
|
||
|
||
:0
|
||
* ^To:.*barbara@mydom.com
|
||
! barbara
|
||
|
||
# the mail to johnny@mydom.com and johnny@hisdom.com will be forwarded to johnny
|
||
|
||
:0
|
||
* (^To:.*johnny@mydom.com)|(^To:.*johnny@hisdom.com)
|
||
! freaker
|
||
|
||
# the mail to hans@mydom.com and all carbon copys will be forwarded to hans
|
||
|
||
:0
|
||
* (^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".
|
||
#
|
||
:0
|
||
|(/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.2.2. 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 :)
|
||
:0
|
||
* ^To:.*freaker@ibm.net
|
||
! freaker
|
||
|
||
# all mail with as subject "root" will be forwarded to root !
|
||
:0
|
||
* ^Subject:.root
|
||
! root
|
||
|
||
# all mail to "subject: barbara" will be forwarded to barbara ...
|
||
:0
|
||
* ^Subject:.barbara
|
||
! barbara
|
||
|
||
# all mail to "subject: paul" will be forwarded to his external email addr.
|
||
:0
|
||
* ^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
|
||
|
||
:0
|
||
* ^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...
|
||
:0
|
||
* ^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)
|
||
:0
|
||
* ^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...
|
||
:0
|
||
|(/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 !.
|
||
|
||
|
||
|
||
4.4.1. 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
|
||
______________________________________________________________________
|
||
|
||
|
||
|
||
4.4.2. 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
|
||
|
||
|
||
|
||
______________________________________________________________________
|
||
0,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.
|
||
|
||
|
||
4.5.1. (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 . >
|
||
______________________________________________________________________
|
||
|
||
|
||
|
||
4.5.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
|
||
______________________________________________________________________
|
||
|
||
|
||
|
||
4.5.3. (new sendmail)editing the /etc/sendmail.cw (or /yourdir/send<6E>
|
||
mail.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
|
||
______________________________________________________________________
|
||
|
||
|
||
|
||
4.5.4. 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
|
||
______________________________________________________________________
|
||
|
||
|
||
|
||
4.5.5. 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.
|
||
|
||
|
||
|
||
5.1.1. 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
|
||
|
||
:0
|
||
* ^To:.*freaker@ibm.net
|
||
! freaker
|
||
|
||
:0
|
||
* ^Subject:.root
|
||
! root
|
||
|
||
:0
|
||
* ^Subject:.barbara
|
||
! barbara
|
||
|
||
:0
|
||
* ^Subject:.paul
|
||
! paul@his.personal.emailaddress
|
||
|
||
:0 c
|
||
* ^Subject:.john
|
||
! john@his.personal.emailaddress
|
||
|
||
:0
|
||
* ^Subject:.john
|
||
! john
|
||
|
||
:0
|
||
* ^From:.*newsletter@ibm.net
|
||
! freaker
|
||
|
||
:0
|
||
* ^FROM_DAEMON
|
||
throwaway
|
||
______________________________________________________________________
|
||
|
||
|
||
|
||
5.1.2. 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
|
||
|
||
|
||
|
||
______________________________________________________________________
|
||
|
||
:0
|
||
|(/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.0.1
|
||
# please leave the Copyright in it when it is distributed with any
|
||
# system using this thingy ...
|
||
|
||
echo ""
|
||
echo "Addmail v1.0.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 ":0" >> /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:
|
||
|
||
|
||
<20> is it executable ?
|
||
|
||
<20> is your (default shell) located at /bin/sh ?
|
||
|
||
6.2. What do you mean by "anonymous mailserver"?
|
||
|
||
|
||
<20> 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
|
||
|
||
|
||
<20> 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
|
||
|
||
|
||
<20> hmm - can't do anything about that one - why askin' me ? ... Just
|
||
bury it ....
|
||
|
||
6.5. Linux?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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 ?
|
||
|
||
|
||
<20> 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" ?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> i know it is a typo - but - i like this word better.
|
||
|
||
6.14. Addmail?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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 ?
|
||
|
||
|
||
<20> 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?
|
||
|
||
|
||
<20> 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
|
||
|
||
|
||
<20> Check out your "sendmail.cw" file, since the domains NEED to be
|
||
added in it !
|
||
|
||
6.19. My dog died
|
||
|
||
|
||
<20> 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!
|
||
|
||
|
||
|