home *** CD-ROM | disk | FTP | other *** search
-
- Sendmail + UUCP HOWTO
-
-
- Author: Jamal Hadi Salim (jamal@glcom.com or hadi@cyberus.ca)
-
-
-
- History:
-
- Initial edition July/96: works only with non-bind edition of
- sendmail
-
- Oct 01 /96: works with the redhat supplied binary
-
- Oct 07 /96: added/modified a tip on how to compile non-bind sendmail
-
- Oct 25 /96: added/modified a tip on how to keep sendmail
- getHostbyAddr() happy via a dummy /etc/hosts entry
-
- Mar 15 /97: I am amazed at the response/feedback i am receiving so i
- decided to refine this further. Fixed some small errors; added diagram
- + references.
-
- Oct 25/97: Htmlise+ add blurb on DNS capable machines
- ______________________________________________________________________
-
- After finally settling down and properly reading TFM (the Bat Book, to
- be precise) i have solved the Caramilk secret! The steps below have
- been tested with the binary supplied by RedHat. Perhaps i should send
- this tip to the maintainer of the Sendmail FAQ too since there is
- absolutely no mention of UUCP interworking with sendmail there.
-
- What this Document tries to show you
-
- How to setup a single machine, reffered to as me.com in the example,
- with no direct access to the internet to route mail for you via
- sendmail and UUCP to a 'smarter host' eg your ISP.
- Optionally you can configure this machine to feed other machines i.e
- you are their 'smart' host or gateway.
-
- What this Document does not tell you
-
- I have been receiving incredible number of questions regarding topics
- which are beyond the focus of this HOWTO. The purpose of this document
- is not to describe them so please try not send me any questions on the
- following:
-
-
- a) How to setup UUCP.
-
- Refer to many fine references on this, including:
-
- UUCP HOWTO (Vince Skahan, )
-
- Using and managing UUCP (Ed Ravin et al -- publisher O'reilly) which
- i think is the best authority on UUCP
-
- Linux Network Administrator Guide (Olaf Kirch)
-
-
- b) how to setup DNS.
-
- Refer to the many fine references on this, including:
-
- Caching named mini howto (Nicolai Langfeldt)
-
- The bat book (Sendmail;Costalles, Allman, Rickert;publisher
- O'reilly)
-
- DNS and BIND (Publisher O'reilly)
-
- TCP/IP Network Administration (Hunt, Craig;Publisher O'reilly)
-
- Linux Network Administrator Guide (Olaf Kirch)
-
- sendmail Theory and Practice (Avolio and Vixie; publisher Digital
- press)
-
-
- c) how to setup databases (other than the mailertable) to work with sendmail.
-
- Refer to the many fine references on this, including:
-
- The bat book (Sendmail;Costalles, Allman, Rickert -- publisher
- O'reilly)
-
- TCP/IP administration (Publisher O'reilly)
-
- Sendmail Theory and Practice (Avolio and Vixie; publisher Digital
- press)
-
- Docs bundled with sendmail d) how to write or modify rulesets or
- mailers.
-
- All the above references in c)
-
- You can also find help on the following newsgroups:
- [1]comp.mail.sendmail
- [2]comp.mail.uucp
- [3]comp.os.linux.networking
- IRC channels
- #linux, #unix
- ______________________________________________________________________
-
- THE SETUP
-
- This is for a system, hypothecally named me.com, whose mail is sent
- out only via UUCP. mysmarthost is the ISPs hostname as set up in the
- uucp sys file and me.com is the hostname we use or are known by in the
- MX records on the internet.
- mysmarthost hooks to the internet. We really dont care how it does it,
- we just know it knows how to get us there.
- me.com, whose setup we describe in the example, feeds sites down.com
- and system1.org and their subnodes. me.com connects to down.com via
- TCP/IP and connects to system1.org via raw UUCP using a phone line.
- The setup description is shown below:
-
- ------------------------
- | |
- | Internet |
- | |
- -----------------------
- |
- | PPP/dedicated line running TCP-IP
- |
- -------------
- | |
- |mysmarthost | Authoritative name server for
- | | *.me.com, *.down.com, *.system1.org
- | |
- --------------
- |
- | UUCP via a phone line receive for
- | system1.org, *.system1.org,*.down.com, down.com
- | as well as me.com and *.me.com
- ------------
- | * ***** * |
- ------------ | * me.com * | ------
- | * * | |
- | | * ***** * | |
- | ------------ |
- |UUCP via phone line | uucp via TCP/IP
- | |
- ----------- -----------
- | | | |
- |system1.org| | down.com |-------
- | | | | |
- ---------- ------------ |
- | |
- | |
- | | LAN: smtp to nodes
- | UUCP phone line
- | |
- ----------- -------------
- | | | |
- |system1's| | down's |
- |subnodes | | LAN |
- | | ------------
- ----------
-
- pre-requisites
-
- 1) If you are already running DNS or have a pointer to a DNS server
- (in your /etc/resolv.conf) and are on a live connection to the net
- then skip this part. You are safe. You dont have to do any 'smart'
- thing skip to 2)
- If you are on a machine using uucp for mail then you dont really need
- to compile bind/resolv into sendmail;
-
- How to survive name canonicalization on a stand-alone machine with no DNS
-
- PART I
- If you get a pre-compiled sendmail with BIND in it you can still live
- with it (As is the case with Redhat supplied sendmail).
-
- a) Refer to my solution for this based on the m4 file described (my
- favorite). Try to use this option unless you really insist on b) or c)
- below OR
-
- b)If you talk to me i could supply you with a non-BIND compiled
- version (8.8.5). Perhaps RedHat should consider supplying two sendmail
- binaries (like slakware) One with BIND and the other with no BIND. OR
-
- c) The quickest solution to get sendmail with no bind is to edit
- src/conf.h lines below to read as i have shown:
-
- # ifndef NAMED_BIND conf.h:# define NAMED_BIND 0 /* use Berkeley
- Internet Domain Server */
-
- PART II:
- Sendmail would however normally insist on doing name look ups to
- resolve the host part using gethostbyaddr() for each email it sends
- (even if you tell it not to canonify names).
-
- a) use an RFC1597 IP address (10.0.0.0-10.255.255.255,
- 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255)
- Edit /etc/hosts and add the following as a sample for the host myhost
- 10.0.0.1 myhost.me.com myhost or
- b) If you use NIS (and NIS is compiled into sendmail as seems to be
- the case in Redhat. ) make sure the /etc/nsswitch.conf file contains:
- hosts: files dns and in /etc/hosts and add the following as a sample
- for the host myhost [again using RFC1597 IP addressing scheme]
- 10.0.0.1 myhost.me.com myhost
-
- NOTE: ---- In both a) and b) above it is critical that you list the
- long (fully qualified) in the /etc/hosts file used. i.e the line
- should read 10.0.0.1 myhost.me.com myhost and NOT 10.0.0.1 myhost you
- will also need to define the sendmail $w macro to hold myhost.me.com
- add the Following line to your /etc/sendmail.cf after it is generated
- Djmyhost.me.com (or you can use MASQUAREADE_AS(myhost.me.com) in the
- .mc below)
-
- NOTE!!!!! myhost as a domain name is given as an example; you dont
- have to use it as is. Pick your own hostname if you dont have one
- already.
- ______________________________________________________________________
-
- 2) Ensure that you have makemap and it is capable of supporting hash
- and or the more common dbm format or even btree format (The Redhat
- version does not support dbm). Makemap is normaly distributed with
- sendmail.
-
-
- SETUP (the mc file)
-
- I) create your .mc file using your favorite editor; i'll call this
- file my.mc
-
- a) No DNS -- standalone
- ______________________________________________________________________
-
- include(`../m4/cf.m4')
- VERSIONID(`me.com's setup with uucp created by xxxx --no dns ')
- dnl OSTYPE(linux)
- FEATURE(nodns)dnl
- FEATURE(nocanonify)dnl
- FEATURE(always_add_domain)dnl
- FEATURE(mailertable, hash /etc/mailertable)dnl
- MAILER(local)dnl
- MAILER(smtp)dnl
- MAILER(uucp)
- define(`SMART_HOST', uucp-dom:mysmarthost)
- ______________________________________________________________________
-
- Let's dissect this:
-
- include(`../m4/cf.m4') requests for the m4 macro found in
- ../m4/cf.m4 to be include to resolve some things
-
- VERSIONID(`me.com's setup with uucp created by xxxx')dnl This is
- used to distinguish the different versions of .cf file you might end
- up creating.
-
- OSTYPE(linux) This is used to define/redefine linux specific stuff.
- It is safe to have it here.
-
- FEATURE(nodns)dnl This says we dont have a DNS server (so in effect
- we are using uucp only for mail. Sendmail must be compiled not to use
- bind) This is now obsolete. I will let it stay here just in case you
- use an older version of sendmail.
-
- FEATURE(nocanonify)dnl This says Don't pass addresses to $[ ... $]
- for canonification. Normally if you have BIND compiled in sendmail
- would try and expand the alias/IP address to a canonical name using
- DNS. You dont wanna do this if all you have are feeds which connect to
- you via UUCP i.e you are a stand alone.
-
- FEATURE(always_add_domain)dnl This adds the local domain host name
- even on locally delivered mail Not necessary i just like it; This
- might not be a safe feature since spammers, with proper setup
- conditions, can abuse you.
- me.com is not connected to the net via tcp/ip so it is safe
-
- FEATURE(mailertable, hash /etc/mailertable)dnl the file
- /etc/mailertable is going to be a hash database where we will store
- routing information of certain sites. If you dont have anyone who you
- feed uucp to then you dont need this. More on this later. If you
- wanted to use the dbm format you would have FEATURE(mailertable, dbm
- /etc/mailertable)dnl If you wanted to use the btree format you would
- have FEATURE(mailertable, btree /etc/mailertable)dnl
-
- MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp) These are the mailers
- we use.
-
- define(`SMART_HOST', uucp-dom:mysmarthost) Our smart host is our ISP
- who is defined in the uucp sys file as system mysmarthost. Any
- messages that we cant handle (i.e ones for domains or mailers we dont
- understand) will be passed on to our smarthost/ISP to figure out. note
- we use uucp-dom as the uucp mailer. This particular mailer uses smtp
- rewriting rules.
-
-
- b) DNS on
- ______________________________________________________________________
-
- include(`../m4/cf.m4')
- VERSIONID(`me.com's setup with uucp created by xxxx --dns enabled')dnl
- OSTYPE(linux)
- FEATURE(always_add_domain)dnl
- FEATURE(mailertable, hash /etc/mailertable)dnl
- MAILER(local)dnl
- MAILER(smtp)dnl
- MAILER(uucp)
- define(`SMART_HOST', uucp-dom:mysmarthost)
- ______________________________________________________________________
-
-
-
- II) create your sendmail.cf file
-
- a) backup your old /etc/sendmail.cf file
- b) overwrite the sendmail.cf with the new one: m4 my.mc >
- /etc/sendmail.cf
- c) verify that the sendmail.cf file was correctly created based on
- your specifications.
- Some of the gotchas that i came across were: - missing uucp-dom mailer
- This was because i didnt have the smtp mailer entry. Actually, i
- understand it is important to have it defined before the uucp
-
-
- III) create your /etc/mailertable
-
- if you dont have uucp sites feeding off you skip this step
-
- a) create/edit the file /etc/mailertable
-
- sample /etc/mailertable
- ______________________________________________________________________
-
- system1.org uucp-dom:system1
- .system1.org uucp-dom:system1
- down.com uucp-dom:down
- up.down.com error: Host is unknown at me.com
- .down.com uucp-dom:down
- .me.com error: Host unknown at me.com
- ______________________________________________________________________
-
- This says anything that is addressed to system1.org or to
- *.system1.org that we receive will be sent using the uucp-dom mailer
- and be delivered to system1 (defined in the the uucp sys file) in
- other words we are doing the mail routing for *.system1.org ; similar
- for down.com and its subnodes except for the additional filtering; we
- bounce back any mail for down's subnode up.down.com using sendmail's
- built-in error mailer with the message "Host is unknown at me.com";
- This is because we have been asked to do this by the admin at
- down.com. To bounce unknown subdomains to us we use the last line in
- the mailertable (which is what all unknown nodes default to).
- b) create the database with makemap
-
- if you use hash:
- makemap hash /etc/mailertable < /etc/mailertable
- if you use dbm:
- makemap dbm /etc/mailertable </etc/mailertable
- if you use btree:
- makemap btree /etc/mailertable </etc/mailertable
-
- do this every time you change the file.
-
- IV) restart sendmail
-
- V) test sendmail
-
- i) sendmail -bv user@destination
- ii) using sendmail -bt and enter various addresses using 3,0
- ruleset to see where they end up and the various rulesets and cf walks
- taken.
-
- You are set!
- ______________________________________________________________________
-
- TODO
-
- 1) Add info on setting up system down.com (so as to show how to
- take care of those smtp nodes)
- 2) Add info on how to setup news to be delivered via UUCP
- (preferably INN). This might require changing the title of the doc.
-
- References
-
- 1. news:comp.mail.sendmail
- 2. news:comp.mail.uucp
- 3. news:comp.os.linux.networking
-