Last updated by Steven Libis & Associates on 04/05/2003
Back in the 1990s, before the internet was popular (and dinosaurs still roamed the earth), people used to dial in to BBSes. Some BBSes offered internet e-mail. One of the ways that BBSes used to handle internet e-mail, was through a UUCP account. Mostly this was done through a dial up connection.
How did I provide internet e-mail on my BBS?
Wildcat v4.x DOS BBS software comes with support for UUCP accounts. So, it was a no brainer. Use UUCP for internet e-mail for my system. When I decided to start using a UUCP account, my original problem was finding an ISP that supported a UUCP account. Then, it was configuring the BBS software to work with the UUCP account. Which seemed to work reasonably well for a few years. But I was starting to have problems.
First: spammers were using addressing schemes that caused the DOS dial up software to crash, and therefore, I was unable to download incoming e-mail without contacting tech support at the ISP and asking them to manually delete the problem message. As the volume of spam increased, the frequency of crashes also increased.
I started to resolve this problem, by setting up my Linux system to perform dial up access for my UUCP account. It was a struggle, but I did make a little bit of progress. I reached the point where I was able to download the mail that caused the DOS software to crash. Once I had the mail downloaded, I manually renamed the files from the Linux long file names, to the DOS short file names. I then manually copied the files from the Linux partition to a DOS partition on the same hard drive. I then rebooted to DOS. At this point I was able to log into my NetWare server and copy the files over. A bit ackward, but there were still quite a few things I hadn't figured out how to do. However, since I wasn't doing this multiple times per day, I wasn't motivated enough to try to completely automate the process.
Second: A few months later, my IPS was in the process of stopping support for dial up UUCP accounts.
So, I either had to give up internet e-mail for the BBS or figure out a way to provide internet e-mail for the BBS (via UUCP) over an internet connection.
I chose to try to figure it out.
Since I didn't own any hardware that was capable of running Windows (9x), I had no choice, I had to set up a Linux computer (with the help of a friend). Well, even though I am familiar with NetWare, and networks, I was not familiar with Linux or UUCICO. I got very lucky, and found someone at a local Linux User Group who helped me work out ALL the Linux problems I was having with UUCICO (setup, configuration, ...). Thus allowing me to work on the DOS side of the problem (which I could handle).
There were a number of problems to be worked out. They included:
For incoming mail:
- scheduling the regular collection of mail
- renaming the Linux long file name, to the short file name that my DOS Wildcat BBS software expected.
- getting the messages from the Linux partition to the NetWare partition.
For outgoing mail:
- creating a Linux message file that the Linux UUCICO would recognize as an
outgoing message. (The outgoing message created by the BBS was only useful
for the DOS dial up software.)
- getting the messages from the NetWare partition to the Linux partition.
So, here are my configuration files, and the steps I needed to take to process and transfer from UUCP e-mail (and newsgroups) from Linux to NetWare and back again.
I am using Taylor UUCP.
I originally started setting up / testing with a modem. So where possible, I have left both configurations in place. Where not possible, I have turned the line into non-executable (comment) lines.
These are the configuration files and shell scripts I used, and where they are stored on my Linux system.
/etc/uucp/call
/etc/uucp/config
/etc/uucp/dial
/etc/uucp/dialcode not used
/etc/uucp/passwd not used
/etc/uucp/port
/etc/uucp/sys
/etc/crontab
/etc/fstab
/etc/hosts
/root/run-uucp.sh (does all of these shell and perl scripts)
I also wrote (and use) a DOS program to convert the DOS UUCP commands to Linux
UUCP commands. I run it on the DOS system, before running the perl and shell scripts.
/root/mail2lin.sh
/root/outgoing.pl
/root/getmail.sh
/root/incoming.pl
/root/mail2nw.sh
/root/cleanup.sh
isp1 uucpname1 uucppassword1
isp2 uucpname2 uucppassword2
isp3 uucpname3 uucppassword3
There is no reason why the uucpname couldn't be the same for all systems.
hostname uucpname1
nodename uucpname1
spool /var/spool/uucp
pubdir /var/spool/uucppublic
logfile /var/log/uucp/log
statfile /var/log/uucp/stats
debugfile /var/log/uucp/debug
sysfile /etc/uucp/sys
portfile /etc/uucp/port
dialfile /etc/uucp/dial
dialcodefile /etc/uucp/dialcode
callfile /etc/uucp/call
passwdfile /etc/uucp/passwd
# modem configuration
dialer generic
chat "" ATZ OK ATM1DT\T CONNECT
chat-fail RING
chat-fail BUSY
chat-fail ERROR
chat-fail VOICE
chat-fail NO\sCARRIER
chat-fail NO\sANSWER
chat-fail NO\sDIALTONE
complete \d\d+++\d\dATH\r\c
abort \d\d+++\d\dATH\r\c
# Description for modem entry.
port serial4
type modem
device /dev/modem
speed 38400
dialer generic
# Description for TCP/IP connection entry.
port TCP
type TCP
service 540
# This section required for dial up or internet connection.
remote-send ~
remote-receive ~
local-send ~
local-receive ~
command-path /usr/sbin
commands rmail rnews
# This section required for dial up connection.
system isp1
call-login *
call-password *
time any
phone 555-1212
port serial4
speed 38400
chat "" \d\d\r\c ogin: \d\L word: \P
alternate
phone 555-1212
# This section required for internet connection via TCP/IPP.
system isp2
call-login *
call-password *
time any
chat "" \d\d\r\c ogin: \d\L word: \P
port type tcp
address uucp.isp.com
port TCP
protocol t
# UUCP mail runs
# This means that at 55 minutes after the hour, this event will run.
55 * * * * root /root/run-uucp.sh
LABEL=/ / ext2 defaults 1 1 LABEL=/boot /boot ext2 defaults 1 2 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 /dev/hda4 swap swap defaults 0 0 /dev/hda1 /mnt/dos vfat noauto,nouser 0 0
# revised: 04/05/2003
192.168.0.0 uucpname1.isp.com localhost.localdomain localhost
telnet uucp.isp.com 540
I never figured out how to automate this, but for my system, it sometimes seems to help to do this before trying the normal connection.
# revised: 04/05/2003
echo starting UUCP mail run.
echo Starting time/date.
date
echo step 1: copy files from NetWare to Linux, rename, ....
/root/mail2lin.sh
echo step 2: dial/connect to ISP and download the mail.
/root/getmail.sh
echo step 3: convert long file names to short file names.
echo First, test normal directories:
echo Second, test error directories:
/root/reduce.sh
echo step 4: copy mail from Linux partition to NetWare partition.
/root/mail2nw.sh
echo step 5: delete incoming mail from Linux partition.
/root/cleanup.sh
echo Ending time/date.
date
echo This command makes the NetWare partition accessable to Linux
ncpmount -S bbs /mnt/bbs -U username -P password
echo These commands copy the outgoing mail from NetWare to a Linux temporary directory.
cp -p /mnt/bbs/sys/wildcat/gateway/isp/d* /tmp
cp -p /mnt/bbs/sys/wildcat/gateway/isp/c* /tmp
echo These commands copy a FLAG file from Linux to NetWare, and then
echo back again.
cp -p /root/success.txt /mnt/bbs/sys/wildcat/gateway/isp/success.txt
cp -p /mnt/bbs/sys/wildcat/gateway/isp/success.txt /tmp/success.txt
rm /mnt/bbs/sys/wildcat/gateway/isp/success.txt
echo These commands compare the above copied file.
echo If not compare, then problems connecting with NetWare server.
cmp -s /root/success.txt /tmp/success.txt || cp -p /root/failure.txt /tmp/failure.txt
cmp -s /root/success.txt /tmp/success.txt || rm /tmp/success.txt
echo Convert from DOS file names to Linux file names.
/root/outgoing.pl
echo These commands copy the files from the temporary directory to the outgoing directory.
cp -p /tmp/C.* /var/spool/uucp/isp/C.
cp -p /tmp/D.* /var/spool/uucp/isp/D.
echo These commands remove the files from the NetWare partition.
rm -v /mnt/bbs/sys/wildcat/gateway/isp/c*
rm -v /mnt/bbs/sys/wildcat/gateway/isp/d*
echo These commands remove the files from the temporary Linux partition.
rm -v /tmp/C.*
rm -v /tmp/D.*
echo These commands, check/set the flag file after completition.
if test -e /tmp/success.txt
then
echo Able to connect to NetWare server.
rm /tmp/success.txt
rm /tmp/failure.txt
else
echo Unable to connect to NetWare server.
cp -p /root/failure.txt /tmp
fi
echo This command makes the NetWare partition inaccessable to Linux
ncpumount /mnt/bbs
foreach $_ (`ls -1 /tmp/c*`) { $oldfilename = $_; # save old filename s/c/C\./; # replace "c" with "C." $newfilename = $_; # save new filname chomp ($oldfilename); # get rid of newline chomp ($newfilename); # get rid of newline rename("$oldfilename", "$newfilename") || die "died with $!"; }# next line needed if uuxqt is *NOT* run.
foreach $_ (`ls -1 /tmp/d*`) { $oldfilename = $_; # save old filename s/d/D\./; # replace "d" with "D." $newfilename = $_; # save new filname chomp ($oldfilename); # get rid of newline chomp ($newfilename); # get rid of newline rename("$oldfilename", "$newfilename") || die "died with $!"; }
echo This command starts the dial out and upload/download process.
echo It also disables the UUXQT function so that the Linux
echo box doesn't try to process the incoming mail/newsgroups.
echo Be aware, this terminal returns to the command prompt when it is
echo done processing. It does *NOT* display it's progress on screen.
echo ...
echo Please be patient.
echo ...
uucico -S isp -q -x all
# -S = don't wait specified time. Retry at any time
# -q = don't run rmail or rnews on my linux computer.
# -x all = set debug level for *ALL* detail
foreach $_ (`ls -1 /var/spool/uucp/isp/D./D.*`) { $oldfilename = $_; # save old filename s/D\.isp/0/; # replace "D.isp" with "0" s/$/\.D/; # replace end of line with ".D" $newfilename = $_; # save new filname chomp ($oldfilename); # get rid of newline chomp ($newfilename); # get rid of newline rename("$oldfilename", "$newfilename") || die "died with $!"; }# next line needed if uuxqt is *NOT* run.
foreach $_ (`ls -1 /var/spool/uucp/isp/X./X.*`) { $oldfilename = $_; # save old filename s/X\.isp/0/; # replace "X.isp" with "0" s/$/\.X/; # replace end of line with ".X" $newfilename = $_; # save new filname chomp ($oldfilename); # get rid of newline chomp ($newfilename); # get rid of newline rename("$oldfilename", "$newfilename") || die "died with $!"; }
echo This command makes the NetWare partition accessable to Linux
ncpmount -S bbs /mnt/bbs -U username -P userpassword
echo This command changes to a directory on the Linux system
cd /root
echo If there were problems with the incoming mail, these
echo commands copy the *.D and *.X files to the NetWare partition.
cp -p /var/spool/uucp/.Failed/isp/D./*.D /mnt/bbs/sys/wildcat/gateway/isp
cp -p /var/spool/uucp/.Failed/isp/X./*.X /mnt/bbs/sys/wildcat/gateway/isp
echo If there were no problems with the incoming mail, these
echo commands copy the *.D and *.X files to the NetWare partition.
cp -p /var/spool/uucp/isp/D./*.D /mnt/bbs/sys/wildcat/gateway/isp
cp -p /var/spool/uucp/isp/X./*.X /mnt/bbs/sys/wildcat/gateway/isp
echo This command copies the 'flag' file from Linux to NetWare.
cp /root/success.txt /mnt/bbs/sys/wildcat/gateway/isp/success.txt
echo This command copies the 'flag' file from NetWare to Linux.
cp /mnt/bbs/sys/wildcat/gateway/isp/success.txt /tmp/success.txt
echo This command removes the test file from the NetWare server.
rm /mnt/bbs/sys/wildcat/gateway/isp/success.txt
echo These commands compare the original file, to the file that was copied to NetWare and back again.
echo If files don't compare, then there was a problem connecting to NetWare.
cmp -s /root/success.txt /tmp/success.txt || cp -p /root/failure.txt /tmp/failure.txt
cmp -s /root/success.txt /tmp/success.txt || rm /tmp/success.txt
echo This command makes the NetWare partition inaccessable to Linux
ncpumount /mnt/bbs
# revised: 04/05/2003
# It looks like the root directory is *NEVER* in the path. So, I always
# need to type the command (for the shell script) in this format for it
# to run.
echo This command deletes the *.D "error" files.
rm -v /var/spool/uucp/.Failed/isp/D./D.uucpname1*
rm -v /var/spool/uucp/.Failed/isp/D./*.D
echo This command deletes the *.X "error" files.
rm -v /var/spool/uucp/.Failed/isp/X./X.uucpname1*
rm -v /var/spool/uucp/.Failed/isp/X./*.X
echo This command deletes the *.D "regular" files.
rm -v /var/spool/uucp/isp/D./D.uucpname1*
rm -v /var/spool/uucp/isp/D./*.D
echo This command deletes the *.X "regular" files.
rm -v /var/spool/uucp/isp/X./X.uucpname1*
rm -v /var/spool/uucp/isp/X./*.X
SITE MAP/INDEX
[Earthquake City BBS HomePage]
[E-Mail Sysop]
[File Areas]
[Online Games]
[Message Areas]
[wcFileGate]
[ListServ]
[UUCP]
[Users/Friends Links]
[Computer Links]
[Science Fiction/Fun Links]
[Political / Serious Links]
[Other Links]
[Computer Swap Meets]
[Steven Libis & Associates]
be sure to check out:
Chrome Oxide Music Collector:
[Home Page]
[site index]