Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
Linux Magazine: The source for advanced Linux know-how

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 254 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here



Current HOWTO: Sendmail+UUCP HOWTO


Sendmail + UUCP HOWTO

Author: Jamal Hadi Salim (jamal@glcom.com or hadi@cyberus.ca)



  • 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:
    IRC channels
    #linux, #unix


    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       |
    |         |                             ------------


    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 (,,
    Edit /etc/hosts and add the following as a sample for the host myhost 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] 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 myhost.me.com myhost and NOT 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

    VERSIONID(`me.com's setup with uucp created by xxxx --no dns ')
    dnl OSTYPE(linux)
    FEATURE(mailertable, hash /etc/mailertable)dnl
    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

    VERSIONID(`me.com's setup with uucp created by xxxx --dns enabled')dnl
    FEATURE(mailertable, hash /etc/mailertable)dnl
    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!


    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.

    The Linux Tutorial completely respects the rights of authors and artists to decide for themselves if and how their works can be used, independent of any existing licenses. This means if you are the author of any document presented on this site and do no wish it to be displayed as it is on this site or do not wish it to be displayed at all, please contact us and we will do our very best to accommodate you. If we are unable to accommodate you, we will, at your request, remove your document as quickly as possible.

    If you are the author of any document presented on this site and would like a share of the advertising revenue, please contact us using the standard Feedback Form.


    Looking for a "printer friendly" version?



    Security Code
    Security Code
    Type Security Code

    Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

    Help if you can!

    Amazon Wish List

    Did You Know?
    The Linux Tutorial welcomes your suggestions and ideas.


    Tell a Friend About Us

    Bookmark and Share

    Web site powered by PHP-Nuke

    Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
    All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
    The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

    PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
    Page Generation: 11.7 Seconds