Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Nov 1996 15:37:40 -0500 (EST)
From:      William Lloyd <wlloyd@tolstoy.mpd.ca>
To:        freebsd-doc@freebsd.org
Subject:   handbook additions.	
Message-ID:  <199611272037.PAA10951@tolstoy.mpd.ca>

next in thread | raw e-mail | index | archive | help

I have done some work moving information from the FAQ and integrating
it into the handbook.  As well, I have written some basic stuff for
the mail section.

The FAQ should be trimmed down as information is migrated
to the handbook.  I will do that when this stuff is finished.

I am posting the complete changes that I have done.  Diff's to 3 files
and 3 new ones.

If you don't want to bother fooling with the diffs, yu can see the
changes in a modified handbook on my site
<http://www.mdp.ca/FreeBSD/handbook/handbook.html>;

I only have 14.4 connection, it will be SLOW I expect.

All changes are in handbook section 11, and 14.  Except for the
addition of a search handbook link in the opening text.

Please provide comments/additions/changes/complaints etc.

-bill
wlloyd@mpd.ca

*** ../handbook.orig/Makefile	Wed Nov 13 15:10:25 1996
--- Makefile	Wed Nov 27 14:38:53 1996
***************
*** 2,15 ****
  
  SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml
  SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml 
! SRCS+= cyclades.sgml development.sgml dialup.sgml
  SRCS+= diskless.sgml dma.sgml eresources.sgml esdi.sgml 
  SRCS+= firewalls.sgml glossary.sgml goals.sgml
! SRCS+= handbook.sgml history.sgml hw.sgml install.sgml isdn.sgml kerberos.sgml
! SRCS+= kernelconfig.sgml kerneldebug.sgml lists.sgml memoryuse.sgml
  SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml policies.sgml
! SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml quotas.sgml relnotes.sgml 
! SRCS+= routing.sgml scsi.sgml sections.sgml sio.sgml skey.sgml slipc.sgml 
  SRCS+= slips.sgml stable.sgml submitters.sgml sup.sgml synching.sgml 
  SRCS+= term.sgml troubleshooting.sgml userppp.sgml uart.sgml linuxemu.sgml
  
--- 2,17 ----
  
  SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml
  SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml 
! SRCS+= cyclades.sgml development.sgml dialup.sgml dialout.sgml
  SRCS+= diskless.sgml dma.sgml eresources.sgml esdi.sgml 
  SRCS+= firewalls.sgml glossary.sgml goals.sgml
! SRCS+= handbook.sgml history.sgml hw.sgml install.sgml isdn.sgml 
! SRCS+= kerberos.sgml kernelconfig.sgml kerneldebug.sgml 
! SRCS+= lists.sgml mail.sgml memoryuse.sgml
  SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml policies.sgml
! SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml 
! SRCS+= quotas.sgml relnotes.sgml routing.sgml 
! SRCS+= serial.sgml scsi.sgml sections.sgml sio.sgml skey.sgml slipc.sgml 
  SRCS+= slips.sgml stable.sgml submitters.sgml sup.sgml synching.sgml 
  SRCS+= term.sgml troubleshooting.sgml userppp.sgml uart.sgml linuxemu.sgml
  
*** ../handbook.orig/handbook.sgml	Sat Nov 16 16:11:04 1996
--- handbook.sgml	Wed Nov 27 14:38:57 1996
***************
*** 47,55 ****
  Web server">.  It may also be downloaded in ascii, LaTeX, postscript 
  or HTML from the <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/docs"
  name="FreeBSD FTP server"> or one of the numerous
! <ref id="mirrors" name="mirror sites">.
  </abstract>
- 	
        <toc>
  
  <!-- ************************************************************ -->	      
--- 47,55 ----
  Web server">.  It may also be downloaded in ascii, LaTeX, postscript 
  or HTML from the <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/docs"
  name="FreeBSD FTP server"> or one of the numerous
! <ref id="mirrors" name="mirror sites">.  You may also want to <url url="/search.html" name="Search the Handbook">.	
! 
  </abstract>
        <toc>
  
  <!-- ************************************************************ -->	      
***************
*** 108,116 ****
  
      <chapt><heading>Basic Networking</heading>
        <sect><heading>* Ethernet basics</heading>
!       <sect><heading>* Serial basics</heading>
        &term;
        &dialup;
  
      <chapt><heading>PPP and SLIP</heading>
  
--- 108,117 ----
  
      <chapt><heading>Basic Networking</heading>
        <sect><heading>* Ethernet basics</heading>
!       &serial;
        &term;
        &dialup;
+       &dialout;
  
      <chapt><heading>PPP and SLIP</heading>
  
***************
*** 135,143 ****
        <sect><heading>* Yellow Pages/NIS</heading>
        &isdn;	
  
!     <chapt><heading>* Mail</heading>
! 
! 
  
  <!-- ************************************************************ -->	      
  
--- 136,143 ----
        <sect><heading>* Yellow Pages/NIS</heading>
        &isdn;	
  
!     <chapt><heading>E-Mail</heading>
! 	&mail;
  
  <!-- ************************************************************ -->	      
  
*** ../handbook.orig/sections.sgml	Sun Sep  8 21:56:58 1996
--- sections.sgml	Wed Nov 27 14:38:54 1996
***************
*** 14,19 ****
--- 14,20 ----
  <!ENTITY crypt SYSTEM "crypt.sgml">
  <!ENTITY development SYSTEM "development.sgml">
  <!ENTITY dialup SYSTEM "dialup.sgml">
+ <!ENTITY dialout SYSTEM "dialout.sgml">
  <!ENTITY diskless SYSTEM "diskless.sgml">
  <!ENTITY dma SYSTEM "dma.sgml">
  <!ENTITY eresources SYSTEM "eresources.sgml">
***************
*** 30,35 ****
--- 31,37 ----
  <!ENTITY kernelconfig SYSTEM "kernelconfig.sgml">
  <!ENTITY kerneldebug SYSTEM "kerneldebug.sgml">
  <!ENTITY linuxemu SYSTEM "linuxemu.sgml">
+ <!ENTITY mail SYSTEM "mail.sgml">
  <!ENTITY memoryuse SYSTEM "memoryuse.sgml">
  <!ENTITY mirrors SYSTEM "mirrors.sgml">
  <!ENTITY nfs SYSTEM "nfs.sgml">
***************
*** 43,48 ****
--- 45,51 ----
  <!ENTITY quotas SYSTEM "quotas.sgml">
  <!ENTITY relnotes SYSTEM "relnotes.sgml">
  <!ENTITY routing SYSTEM "routing.sgml">
+ <!ENTITY serial SYSTEM "serial.sgml">
  <!ENTITY scsi SYSTEM "scsi.sgml">
  <!ENTITY sio SYSTEM "sio.sgml">
  <!ENTITY cy SYSTEM "cyclades.sgml">


******************New file serial.sgml******************
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
     Configuring a FreeBSD for Dialup Services by Guy Helmer.
     $Id: dialup.sgml,v 1.13 1996/08/15 20:52:18 mpp Exp $

     The FreeBSD Documentation Project

<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">

<linuxdoc>
  <article>
      <title> Serial Basics
      <author>  FAQ
      <date> 24 Nov 1996, (c) 1996

      <abstract> This section outlines some of the basics to get your serial ports working.  This is really just a stepping stone into the section on PPP or Dialout if you are interested in modems.
      </abstract>
	
    <toc>
-->

<sect><heading>Serial Basics<label id="serial"></heading>

<p><em>Assembled from FAQ.</em>

This section should give you some general information about serial ports.  If you don't find what you want here, check into the Terminal and Dialup sections of the handbook.


      <sect1>
        <heading>Default Port settings</heading>
        <p>
          The <tt/ttydX/ (or <tt/cuaaX/) device is the regular device
          you'll want to open for your applications.  When a process opens
          the device, it'll have a default set of terminal I/O settings.
          You can see these settings with the command
          <verb>
            stty -a -f /dev/ttyd1
          </verb>

          When you change the settings to this device, the settings are in
          effect until the device is closed.  When it's reopened, it goes
          back to the default set.  To make changes to the default set, you
          can open and adjust the settings of the ``initial state'' device.
          For example, to turn on <tt/CLOCAL/ mode, 8 bits, and
          <tt>XON/XOFF</tt> flow control by default for ttyd5, do:
          <verb>
            stty -f /dev/ttyid5 clocal cs8 ixon ixoff
          </verb>

          A good place to do this is in <tt>/etc/rc.serial</tt>. Now, an
          application will have these settings by default when it opens
          <tt/ttyd5/.  It can still change these settings to its liking,
          though.

          You can also prevent certain settings from being changed by an
          application by making adjustments to the ``lock state'' device.
          For example, to lock the speed of <tt/ttyd5/ to 57600 bps, do
          <verb>
            stty -f /dev/ttyld5 57600
          </verb>

          Now, an application that opens <tt/ttyd5/ and tries to change the
          speed of the port will be stuck with 57600 bps.

          Naturally, you should make the initial state and lock state
          devices writable only by <tt/root/. The <tt/MAKEDEV/ script does
          <bf/NOT/ do this when it creates the device entries.



******************New file mail.sgml******************
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
     Configuring a FreeBSD for Dialup Services by Guy Helmer.
     $Id: dialup.sgml,v 1.13 1996/08/15 20:52:18 mpp Exp $

     The FreeBSD Documentation Project

<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">

<linuxdoc>
  <article>
      <title> Mail
      <author>  &a.wlloyd;
      <date> 24 Nov 1996, (c) 1996

      <abstract> This section contains basic information on setting up E-Mail for you FreeBSD box.
      </abstract>
	
    <toc>
-->

<sect><heading>Basic Information<label id="mail"></heading>

<p><em>Contributed by &a.wlloyd;.</em>

<p>   E-mail, as simple as the concept sounds, can be extremely complicated.  If you plan on doing anything beyond setting up a simple one machine E-mail system, you should buy and refer to a book on Sendmail.

   <sect1><heading>Introduction</heading>
        <p>
	These are the major programs or components of an email exchange.
	<sect2><heading>User program</heading>
	<p> This is a program like <tt /elm, pine, mail/ , or something more sophisticated like a WWW browser.  This program will simply pass off all email transactions to the local mailhost, either by calling <tt>sendmail</tt> or delivering it over TCP to your mailhost.
	<sect2><heading>Transport Agent - Sendmail</heading>
	<p> Usually this program is <tt /sendmail or smail/ running in the background.  Turn it off or change the command line options in <tt> /etc/sysconfig </tt>.  It's best to leave it on unless you have a specific reason to want it off.  Ie: Firewall 
<p>
You should be aware that <tt>sendmail</tt> is a potential weak link in a secure site.  Some versions of <tt>sendmail</tt> have known security problems.
 
	<p> <tt> sendmail </tt> will look up in the DNS to determine the actual host that will receive mail for the destination.
	<p> Sendmail will take the message from the local queue and deliver it across the internet to another sendmail on the receivers computer. 
	<p> Sendmail will also be able to do the reverse.  It will accept messages and save them on your local machine. 
	<sect2><heading>POP Servers</heading>
	<p> This program gets the mail from your mailbox and gives it to your browser.  If you want to run a POP server on your computer, you will need to do 2 things.
<verb>
Get pop software from the ports or packages collection.
Modify /etc/inetd.conf to load POP server.
</verb>

The pop program you get will have instructions with it.  Read them.
   
<sect1><heading>Configure</heading>
<p>
As your FreeBSD system comes "out of the box" you should be able to send email to external hosts.  The problem is no mail will be able to get back to your host.  This is not a problem if you are willing to make sure you hand edit the automatic <tt> reply to address </tt> every time you send a message.
<p>
It is relatively simple to get another host to receive your email under the same username.  You can then pick it up over POP or telnet.  

A user account with the SAME USERNAME should exist on both machines.  Please use <tt/adduser/ to do this if needed.  If you set the <tt/shell/ to <tt>/nonexistant</tt> the user will not be allowed to login.

The mailhost that you will be using must be designated the Mail eXchange for your host.  This must be arranged in DNS (ie BIND, named).  Please refer to a Networking book for more information.

You basically need to add these lines in your DNS server.
<verb> 
myhost.smalliap.com	A	xxx.xxx.xxx.xxx		; Your ip 
			MX  10	smtp.smalliap.com	; your mailhost
</verb>

You cannot do this yourself unless you are running a DNS server.  If you don't want to run a DNS server, get somebody else like your Internet Provider to do it.

This will redirect mail for your host to the MX (Mail eXchange) host.  It does not matter what machine the A record points to, the mail will be sent to the MX host.
<p>
This feature is used to implement Virtual Hosting. 
<p>Example
<p>
I have a customer with domain foo.bar and I want all mail for foo.bar to be sent to my machine smtp.smalliap.com.  You must make an entry in your DNS server like:

<verb> 
myhost.smalliap.com	MX  10	smtp.smalliap.com	; your mailhost
</verb>
The A record is not needed if you only want email for the domain.

On the mailhost that actually accepts mail for final delivery to a mailbox, sendmail must be told what hosts it will be accepting mail for.

<p>Add myhost.smalliap.com to /etc/sendmail.cw (if you are using FEATURE(use_cw_file)), or add a "Cw myhost.smalliap.com" line to /etc/sendmail.cf.
	  
<p>To actually receive mail on your host, you need to have the MX entry above changed to point to your host.  You also move the Cw line above in your <tt>sendmail.cf</tt>.

<p>
This is a Bad Idea if your connection to the internet is not permanent.  Mail will bounce.

<p>
If you plan on doing anything serious with <tt/sendmail/ you should install the sendmail source.  The source has plently of documentation with it.  You will find information on getting <tt/sendmail/ source from <ref name="UUCP and sendmail" id="sendmailuucp">.
</sect>

<sect><heading>FAQ<label id="mailfaq"></heading>     
 <sect1>
        <heading>Why do I have to use the FQDN for hosts on my site?</heading>
        <p>
	  You will probably find that the host is actually in a different
	  domain; for example, if you are in foo.bar.edu and you wish to reach
	  a host called ``mumble'' in the bar.edu domain, you will have to
	  refer to it by the fully-qualified domain name, ``mumble.bar.edu'', 
	  instead of just ``mumble''.     
	<p>
	  Traditionally, this was allowed by BSD BIND resolvers. However
	  the current version of <em>BIND</em> that ships with FreeBSD
	  no longer provides default abbreviations for non-fully
	  qualified domain names other than the domain you are in.
	  So an unqualified host <tt>mumble</tt> must either be found
	  as <tt>mumble.foo.bar.edu</tt>, or it will be searched for
	  in the root domain.
	<p>
	  This is different from the previous behaviour, where the
	  search continued across <tt>mumble.bar.edu</tt>, and
	  <tt>mumble.edu</tt>.  Have a look at RFC 1535 for why this
	  was considered bad practice, or even a security hole.
	<p>
	  As a good workaround, you can place the line
<p><tt>
search foo.bar.edu bar.edu
</tt><p>
	  instead of the previous

<p><tt>
domain foo.bar.edu
</tt><p>
	  into your <tt>/etc/resolv.conf</tt>.  However, make sure
	  that the search order does not go beyond the ``boundary
	  between local and public administration'', as RFC 1535
	  calls it.

      </sect1>

      <sect1><heading>Sendmail says ``mail loops back to myself''</heading>
	<p>
	  This is answered in the sendmail FAQ as follows:-
	  <verb>
          * I'm getting "Local configuration error" messages, such as:

          553 relay.domain.net config error: mail loops back to myself
          554 <user@domain.net>... Local configuration error

          How can I solve this problem?

          You have asked mail to the domain (e.g., domain.net) to be
          forwarded to a specific host (in this case, relay.domain.net)
          by using an MX record, but the relay machine doesn't recognize
          itself as domain.net.  Add domain.net to /etc/sendmail.cw
          (if you are using FEATURE(use_cw_file)) or add "Cw domain.net"
          to /etc/sendmail.cf.
	  </verb>
	<p>
	  The sendmail FAQ is in <tt>/usr/src/usr.sbin/sendmail</tt>
	  and is recommended reading if you want to do any
	  ``tweaking'' of your mail setup.

      <sect1>
        <heading>How do I use sendmail for mail delivery with UUCP?<label id="sendmailuucp"></heading>

        <p>
          The sendmail configuration that ships with FreeBSD is
          suited for sites that connect directly to the Internet.
          Sites that wish to exchange their mail via UUCP must install
          another sendmail configuration file.

        <p>
          Tweaking <tt>/etc/sendmail.cf</tt> manually is considered
          something for purists.  Sendmail version 8 comes with a
          new approach of generating config files via some <tt>m4</tt>
          preprocessing, where the actual hand-crafted configuration
          is on a higher abstraction level.  You should use the
          configuration files under

<verb>
     /usr/src/usr.sbin/sendmail/cf
</verb>

          If you didn't install your system with full sources,
          the sendmail config stuff has been
          broken out into a separate source distribution tarball just
          for you.  Assuming you've got your CD-ROM mounted, do:

<verb>
     cd /usr/src
     tar -xvzf /cdrom/dists/src/ssmailcf.aa
</verb>

          Don't panic, this is only a few hundred kilobytes in size.
          The file <tt>README</tt> in the <tt>cf</tt> directory can
          serve as a basic introduction to m4 configuration.

        <p>
          For UUCP delivery, you are best advised to use the
          <em>mailertable</em> feature.  This constitutes a database
          that sendmail can use to base its routing decision upon.

        <p>
	  First, you have to create your <tt>.mc</tt> file.  The
          directory <tt>/usr/src/usr.sbin/sendmail/cf/cf</tt> is the
          home of these files.  Look around, there are already a few
          examples.  Assuming you have named your file <tt>foo.mc</tt>,
          all you need to do in order to convert it into a valid
          <tt>sendmail.cf</tt> is:

<verb>
     cd /usr/src/usr.sbin/sendmail/cf/cf
     make foo.cf
     cp foo.cf /etc/sendmail.cf
</verb>

          A typical <tt>.mc</tt> file might look like:

<verb>
     include(`../m4/cf.m4')
     VERSIONID(`Your version number')
     OSTYPE(bsd4.4)

     FEATURE(nodns)
     FEATURE(nocanonify)
     FEATURE(mailertable)

     define(`UUCP_RELAY', your.uucp.relay)
     define(`UUCP_MAX_SIZE', 200000)

     MAILER(local)
     MAILER(smtp)
     MAILER(uucp)

     Cw    your.alias.host.name
     Cw    youruucpnodename.UUCP
</verb>

          The <em>nodns</em> and <em>nocanonify</em> features will
          prevent any usage of the DNS during mail delivery.  The
          <em>UUCP_RELAY</em> clause is needed for bizarre reasons,
          don't ask.  Simply put an Internet hostname there that
          is able to handle .UUCP pseudo-domain addresses; most likely,
          you will enter the mail relay of your ISP there.

        <p>
          Once you've got this, you need this file called
          <tt>/etc/mailertable</tt>.  A typical example of this
          gender again:

<verb>
     #
     # makemap hash /etc/mailertable.db < /etc/mailertable
     #
     horus.interface-business.de   uucp-dom:horus
     .interface-business.de        uucp-dom:if-bus
     interface-business.de         uucp-dom:if-bus
     .heep.sax.de                  smtp8:%1
     horus.UUCP                    uucp-dom:horus
     if-bus.UUCP                   uucp-dom:if-bus
     .                             uucp-dom:sax
</verb>

          As you can see, this is part of a real-life file.  The first
          three lines handle special cases where domain-addressed mail
          should not be sent out to the default route, but instead to
          some UUCP neighbour in order to ``shortcut'' the delivery
          path.  The next line handles mail to the local Ethernet
          domain that can be delivered using SMTP.  Finally, the UUCP
          neighbours are mentioned in the .UUCP pseudo-domain notation,
          to allow for a ``uucp-neighbour!recipient'' override of the
          default rules.  The last line is always a single dot, matching
          everything else, with UUCP delivery to a UUCP neighbour that
          serves as your universal mail gateway to the world.  All of
          the node names behind the <tt>uucp-dom:</tt> keyword must
          be valid UUCP neighbours, as you can verify using the
          command <tt>uuname</tt>.

        <p>
          As a reminder that this file needs to be converted into a
          DBM database file before being usable, the command line to
          accomplish this is best placed as a comment at the top of
          the mailertable.  You always have to execute this command
          each time you change your mailertable.

        <p>
          Final hint: if you are uncertain whether some particular
          mail routing would work, remember the <tt>-bt</tt> option to
          sendmail.  It starts sendmail in <em>address test mode</em>;
          simply enter ``0 '', followed by the address you wish to
          test for the mail routing.  The last line tells you the used
          internal mail agent, the destination host this agent will be
          called with, and the (possibly translated) address.  Leave
          this mode by typing Control-D.

<verb>
     j@uriah 191% sendmail -bt
     ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
     Enter <ruleset> <address>
     > 0 foo@interface-business.de 
     rewrite: ruleset  0   input: foo @ interface-business . de
     ...
     rewrite: ruleset  0 returns: $# uucp-dom $@ if-bus $: foo \
     < @ interface-business . de >
     > ^D
     j@uriah 192% 
</verb>
 
<sect1><heading>How can I do email with a dialup PPP host</heading>
<p>
You want to connect a FreeBSD box on a lan, to the internet.  The FreeBSD box will be a mail gateway for the lan.  The PPP connection is non-dedicated.

There are at least two way to do this.

The other is to use UUCP.

The key is to get a internet site to provide secondary MX services for your domain.  
For example:
<verb>
bigco.com.			MX	10	bigco.com.
				MX	20	smalliap.com.
</verb>

Only one host should be specified as the final recipient ( add ''Cw bigco.com'' in <tt>/etc/sendmail.cf</tt> on bigco.com).

When the senders sendmail is trying to deliver the mail it will try to connect to you over the modem link.  It will most likely time out because you are not online.  Sendmail will automatically deliver it to the secondary MX site, ie your internet provider.  The secondary MX site will try every (<tt>sendmail_flags = "-bd -q15m"</tt> in <tt>/etc/sysconfig</tt> ) 15 minutes to connect to your host to deliver the mail to the primary MX site.  

You might wat to use something like this as a login script.
<verb>
#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &  
/usr/sbin/ppp -direct pppbigco
</verb>
If you are going to create a seperate login script for a user you could use <tt>sendmail -qRbigco.com</tt> instead in the script above.  This will force all mail in your queue for bigco.com to be processed immediately.


A further refinement of the situation is as follows.

Message stolen from the freebsd-isp mailing list.
<verb>
> we provide the secondary mx for a customer. The customer connects to 
> our services several times a day automatically to get the mails to 
> his primary mx (We do not call his site when a mail for his domains 
> errived). Our sendmail sends the mailqueue every 30 minutes. At the 
> momen he has to stay 30 minutes online to be sure that all mail is 
> gone to the primary mx.
> 
> Is there a command that would initiate sendmail to send all the mails 
> now? The user has not root-privilages on our machine of course.

In the 'privacy flags' section of sendmail.cf, there is a definition
Opgoaway,restrictqrun

Remove restrictqrun to allow non-root users to start the queue processing.
You might also like to rearrange the MXs.  We are the 1st MX for our 
customers like this, and we have defined:

# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue

That way a remote site will deliver straight to you, without trying 
the customer connection.  You then send to your customer.  Only works for 
'hosts', so you need to get your customer to name their mail machine 
'customer.com' as well as 'hostname.customer.com' in the DNS.  Just put 
an A record in the DNS for 'customer.com'.
</verb>

      </sect1>

******************New file dialout.sgml******************
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
     Configuring a FreeBSD for Dialout Services.
     $Id$

     The FreeBSD Documentation Project

<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">

<linuxdoc>
  <article>
      <title> Dialout
      <author>  FAQ
      <date> 24 Nov 1996, (c) 1996

      <abstract> This section contains some basic information on being able to dialout from your FreeBSD box with a modem.  This information is really a stepping stone into PPP.  
      </abstract>
	
    <toc>
-->

<sect><heading>Dialout<label id="dialout"></heading>

<p><em>Information integrated from FAQ.</em>

The following are tips to getting your host to be able to connect over the modem to another computer.  This is appropriate for establishing a terminal session with a remote host.  
<p>This is usefull to log onto a BBS.
<p>This kind of connection can be extremely helpfull to get a file on the internet if you have problems with PPP.  If you need to ftp something and PPP is broken, use the terminal session to ftp it.  Then use zmodem to transfer it to your machine. 
<sect1>
	<heading>Why can't I run <tt/tip/ or <tt/cu/?</heading>
        <p>
          On your system, the programs <tt/tip/ and <tt/cu/ are probably
          executable only by <tt/uucp/ and group <tt/dialer/.  You can use
          the group <tt/dialer/ to control who has access to your modem or
          remote systems.  Just add yourself to group dialer.

          Alternatively, you can let everyone on your system run <tt/tip/
          and <tt/cu/ by typing:
          <verb>
            chmod 4511 /usr/bin/tip
          </verb>
          You don't have to run this command for <tt/cu/, since <tt/cu/ is
          just a hard link to <tt/tip/.

      <sect1>
	<heading>My stock Hayes modem isn't supported---what can I do?</heading>
        <p>
          Actually, the man page for <tt/tip/ is out of date.  There is a
          generic Hayes dialer already built in.  Just use
          ``<tt/at=hayes/'' in your <tt>/etc/remote</tt> file.

          The Hayes driver isn't smart enough to recognize some of the
          advanced features of newer modems---messages like <tt/BUSY/,
          <tt/NO DIALTONE/, or <tt/CONNECT 115200/ will just confuse it.
          You should turn those messages off when you use <tt/tip/ (using
          <tt/ATX0&amp;W/).

          Also, the dial timeout for <tt/tip/ is 60 seconds.  Your modem
          should use something less, or else tip will think there's a
          communication problem.  Try <tt/ATS7=45&amp;W/.

          Actually, as shipped <tt/tip/ doesn't yet support it fully. The
          solution is to edit the file <tt/tipconf.h/ in the directory
          <tt>/usr/src/usr.bin/tip/tip</tt> Obviously you need the source
          distribution to do this.

          Edit the line ``<tt/#define HAYES 0/'' to ``<tt/#define HAYES
          1/''. Then ``<tt/make/'' and ``<tt/make install/''. Everything
          works nicely after that.

      <sect1>
        <heading>How am I expected to enter these AT commands?<label id="direct-at"></heading>
        <p>
          Make what's called a ``<tt/direct/'' entry in your
          <tt>/etc/remote</tt> file.  For example, if your modem's hooked
          up to the first serial port, <tt>/dev/cuaa0</tt>, then put in the
          following line:
          <verb>
            cuaa0:dv=/dev/cuaa0:br#19200:pa=none
          </verb>
          Use the highest bps rate your modem supports in the br
          capability.  Then, type ``<tt/tip cuaa0/'' and you'll be
          connected to your modem.

          If there is no <tt>/dev/cuaa0</tt> on your system, do this:
          <verb>
            cd /dev
            MAKEDEV cuaa0
          </verb>
        <p>
          Or use cu as root with the following command:
          <verb>
            cu -l``line'' -s``speed''
          </verb>
          with line being the serial port (e.g.<tt>/dev/cuaa0</tt>)
          and speed being the speed (e.g.<tt>57600</tt>).
          When you are done entering the AT commands hit <tt>~.</tt> to exit.

      <sect1>
        <heading>The <tt/@/ sign for the pn capability doesn't work!</heading>
        <p>
          The <tt/@/ sign in the phone number capability tells tip to look in
          <tt>/etc/phones</tt> for a phone number.  But the <tt/@/ sign is
          also a special character in capability files like
          <tt>/etc/remote</tt>.  Escape it with a backslash:
          <verb>
            pn=\@
          </verb>

      <sect1>
	<heading>How can I dial a phone number on the command line?</heading>
        <p>
          Put what's called a ``<tt/generic/'' entry in your
          <tt>/etc/remote</tt> file.  For example:
          <verb>
            tip115200|Dial any phone number at 115200 bps:\
            :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
            tip57600|Dial any phone number at 57600 bps:\
            :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
          </verb>

          Then you can things like ``<tt/tip -115200 5551234/''.  If you
          prefer <tt/cu/ over <tt/tip/, use a generic cu entry:
          <verb>
            cu115200|Use cu to dial any number at 115200bps:\
            :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
          </verb>
          and type ``<tt/cu 5551234 -s 115200/''.

      <sect1>
        <heading>Do I have to type in the bps rate every time I do that?</heading>
        <p>
          Put in an entry for <tt/tip1200/ or <tt/cu1200/, but go ahead and
          use whatever bps rate is appropriate with the br
          capability. <tt/tip/ thinks a good default is 1200 bps which is
          why it looks for a ``<tt/tip1200/'' entry.  You don't have to use
          1200 bps, though.

      <sect1>
        <heading>I access a number of hosts through a terminal server.</heading>
        <p>
          Rather than waiting until you're connected and typing 
          ``<tt/CONNECT &lt;host&gt;/'' each time, use tip's <tt/cm/
          capability. For example, these entries in
          <tt>/etc/remote</tt>:
          <verb>
            pain|pain.deep13.com|Forrester's machine:\
            :cm=CONNECT pain\n:tc=deep13:
            muffin|muffin.deep13.com|Frank's machine:\
            :cm=CONNECT muffin\n:tc=deep13:
            deep13:Gizmonics Institute terminal server:\
            :dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
          </verb>

          will let you type ``<tt/tip pain/'' or ``<tt/tip muffin/'' to
          connect to the hosts pain or muffin; and ``<tt/tip deep13/'' to
          get to the terminal server.

      <sect1>
        <heading>Can tip try more than one line for each site?</heading>
        <p>
          This is often a problem where a university has several modem lines
          and several thousand students trying to use them...
        <p>
          Make an entry for your university in <tt>/etc/remote</tt>
          and use <tt>\@</tt> for the <tt/pn/ capability:
          <verb>
            big-university:\
            :pn=\@:tc=dialout
            dialout:\
            :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
          </verb>

          Then, list the phone numbers for the university in
          <tt>/etc/phones</tt>:
          <verb>
            big-university 5551111
            big-university 5551112
            big-university 5551113
            big-university 5551114
          </verb>

          <tt/tip/ will try each one in the listed order, then give up.  If
          you want to keep retrying, run <tt/tip/ in a while loop.

      <sect1>
	<heading>Why do I have to hit CTRL+P twice to send CTRL+P once?</heading>
        <p>
          CTRL+P is the default ``force'' character, used to tell <tt/tip/
          that the next character is literal data.  You can set the force
          character to any other character with the <tt/~s/ escape, which
          means ``set a variable.''

          Type ``<tt/~sforce=&lt;single-char&gt;/'' followed by a newline.
          <tt/&lt;single-char&gt;/ is any single character.  If you leave
          out <tt/&lt;single-char&gt;/, then the force character is the nul
          character, which you can get by typing CTRL+2 or CTRL+SPACE.  A
          pretty good value for <tt/&lt;single-char&gt;/ is SHIFT+CTRL+6,
          which I've seen only used on some terminal servers.

          You can have the force character be whatever you want by
          specifying the following in your <tt>&dollar;HOME/.tiprc</tt>
          file:
          <verb>
            force=<single-char>
          </verb>

      <sect1>
        <heading>Suddenly everything I type is in UPPER CASE??</heading>
        <p>
          You must've pressed CTRL+A, <tt/tip/'s ``raise character,''
          specially designed for people with broken caps-lock keys. Use
          <tt/~s/ as above and set the variable ``raisechar'' to something
          reasonable.  In fact, you can set it to the same as the force
          character, if you never expect to use either of these features.

          Here's a sample .tiprc file perfect for Emacs users who need to
          type CTRL+2 and CTRL+A a lot:
          <verb>
            force=^^
            raisechar=^^
          </verb>
          The ^^ is SHIFT+CTRL+6.

      <sect1>
	<heading>How can I do file transfers with <tt/tip/?</heading>
        <p>
          If you're talking to another UNIX system, you can send and
          receive files with <tt/~p/ (put) and <tt/~t/ (take).  These
          commands run ``<tt/cat/'' and ``<tt/echo/'' on the remote system
          to accept and send files.  The syntax is:
          <verb>
            ~p <local-file> [<remote-file>]
            ~t <remote-file> [<local-file>]
          </verb>

          There's no error checking, so you probably should use another
          protocol, like zmodem.

      <sect1>
	<heading>How can I run zmodem with <tt/tip/?</heading>
        <p>
          To receive files, start the sending program on the remote end.
          Then, type ``<tt/~C rz/'' to begin receiving them locally.

          To send files, start the receiving program on the remote end.
          Then, type ``<tt/~C sz &lt;files&gt;/'' to send them to the
          remote system.

    </sect



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611272037.PAA10951>