home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
mg111d.zip
/
mailgate.doc
< prev
next >
Wrap
Text File
|
1996-05-17
|
31KB
|
893 lines
MailGate 1.11d
Copyright (c) Dave Hamilton 1995, 1996
WARNING
This is shareware. It is not guaranteed to do anything, or
to not do anything. Use it at your own risk.
This software is not free. If you don't want to register it,
please remove it from your system or give it to someone else to
try.
See the section on Registration at the end of this document.
Acknowledgements
OS/2, Warp, and IBM's version of SENDMAIL are copyright (c) IBM Corp.
Msgapi32.dll and Squish are copyright (c) SCI Communications, and are
trademarks of Lanius Corporation.
FleetStreet is copyright (c) by Michael Hohner and Harry Herrmannsdorfer.
Many thanks go to:
- Niel Kempson, who gets out his email after a walk in the Alps
- Pete Norloff, for his kind, thoughtful, and thorough feedback
- Eric Allman, for giving us Sendmail and still hanging in there
in comp.mail.sendmail
1.1 What is MailGate ?
MailGate allows multi-user mail on an OS/2 system or LAN.
MailGate is a command-line program that acts as an interface between
OS/2's Sendmail and your BBS Message Base. Typically, you set up
one Message area for Email. Your users can then send and receive
internet mail via this area. MailGate retrieves incoming mail that
has been received by SENDMAIL, confirms that the addresee exists
in your user base, and places the mail in this area, addressed
to this user. MailGate can also scan outgoing mail out of this area
and send it out of your system via SENDMAIL.
1.2 Installation
Create a directory for MailGate (typically C:\MM ) and place
the files from the .zip file in that directory.
If you don't already have msgapi32.dll on your system, copy
the one in this distribution to a directory in your LIB path.
Create MailGate's User file. If you're using Maximus as a BBS,
you can use the makeuf.exe utility included with MailGate. Decide
where you want the user file to be (usually in your \mm directory
or your \max directory) and run the utility, specifying the path
to your USER.BBS file, and the path to where you want the user
file. Example:
makeuf \Max\ \MG\
If you don't want makeuf to create aliases in the UserFile
from the alias fields in your User.BBS file, specify the
commandline switch -noalias. Example
makeuf \Max\ \MG\ -noalias
If you use makeuf, you should be aware that MailGate supports
one-word user names as well as firstname.lastname@yourdomain.
MailGate will use the Alias field from USER.BBS as a mailing
alias. You can have Aliases turned off in Max but still use
them for email addresses. If you use the -noalias switch when
running makeuf, aliases will not be copied from your User.BBS
file. However, you can still use aliases by manually entering
users into the UserFile.
If you don't use Max, you can create the user file with any
text editor.
The file must be called USERFILE (you don't have to use upper case)
and you must specify where it is located in your MailGate.Cfg
file.
The format of the file is:
Firstname Lastname [, alias]
Note that the alias is optional, but if you use it, MailGate will
look for one-word mail recipients as aliases.
Copy Sample.Cfg to MailGate.Cfg
Edit MailGate.Cfg file to suit your needs. Items in the config file
are fully documented. Any line that begins with a hash (#) is
a comment. MailGate ignores these and blank lines.
Add the line:
SET MAILGATE=\MG\
(or whatever MailGate's home directory is) to your CONFIG.SYS.
MailGate looks for the environment variable MAILGATE to find its
configuration file. If you don't set this variable, you can
always run MailGate in its own directory.
Copy MailGate.EXE to a directory in your PATH.
AFTER you have set up MailGate.Cfg to suit your needs, compile
your user data base. Type:
MAKEIDX
MailGate determines where to put the compiled files from your
configuration. If you have specified either a UserFile location
or a User.BBS location, MailGate places the indexed files in
the first of those locations it encounters when reading MailGate.Cfg.
On startup, MailGate uses the same approach to locate its indexed
files. If it finds them, it uses them.
1.2 How Does it Work ?
MailGate, if run without any commands or command-line switches,
will simply report any mail that is sitting in SENDMAIL's inbound
directory - who it's from and who it's to.
When run with the -in switch,
MailGate -in
MailGate reads all the mail in SENDMAIL's server inbox, converts
it to your message base format, either Squish or *.MSG, and places
the mail in your message area for your users to read.
When run with the -out switch,
MailGate -out
MailGate scans the Email message base defined in MailGate.Cfg for
outgoing mail. If any messages are found, they are sent via
SENDMAIL.
1.3 Other Command Line Switches
-v Verbose mode - MailGate will display a running commentary on
everything it does.
-l Logging - MailGate will create the file MailGate.Log in its home
directory. This is useful for running MailGate as a background
or CRON-scheduled task.
-po Peek at Outbound - MailGate will scan your Email area rapidly,
not reading messages but counting messages that will be
scanned out. This lets you know if there is any mail to
go out without running MailGate -out
-pi Peek at Inbound - This will give you a quick report of mail
that is sitting in SENDMAIL's inbox, waiting to be tossed
into your Email area.
-pq Peek at Queue - At the time of this writing, IBM has not
implemented an outbound queue listing service in SENDMAIL.
When you use this option, MailGate lists messages that have
been passed to SENDMAIL but have not yet been sent by
SENDMAIL. This could be an indication of a problem with
your ISP's routing, or with the recipient's routing.
You can concatenate the -p options together:
-pioq
-r Reset the timestamp. This will set the last-looked time
to zero, so that all incoming mail will be checked when
you next look or scan.
1.4 Without Command Line Switches
Just type MailGate ( or MailGate -v ) for a report on what mail is
pending.
2.0 About SENDMAIL
When the internet access kit is installed, it defaults to using
the SMTP (Simple-Mail-Transport-Protocol) protocol for receiving
mail, and POP (Post-Office-Protocol) for sending it. POP is a
single-user protocol. Users must use a login name and password
to access their mail.
There are two widely distributed versions of SENDMAIL for OS/2.
One works with Ultimail, the other with the older LaMail. These
versions behave slightly differently. If you use either of these
programs, you must have a MailStyle=Ultimail, or MailStyle=LaMail
line in your MailGate.Cfg file for MailGate to interface completely
with your setup. If you don't put this line in your config file,
MailGate will still appear to work correctly, but information
created by SENDMAIL that is not obvious will not be correctly
updated.
You need to set up SENDMAIL to use SMTP for both sending and
receiving. If you're not sure how to do this, an excellent
source of information is contained in the file umsmtp03.zip
by Niel Kempson, available on wellknown internet sites, including
this author's site ( ftp.proven.com ). This file contains
in-depth documentation of the Warp release of SENDMAIL, as well
as sample SENDMAIL configuration files.
If you really want to know everything there is to know about
SENDMAIL, read Sendmail by Bryan Costales et al, O'Reilly &
Associates.
We have seen many systems that started out as a single OS/2
multi-user machine, and have had workstations added on a
network later. If your system is on a network, we strongly
urge you to consider using one machine for your BBS and
another for your internet mail and news, as a gateway. This
gives you more flexibility in your mailing setup and significantly
reduces competition for resources on your main machine. IBM's
version of SENDMAIL is extremely well suited to local networking
and distributed processing. Just an observation...
3.0 The MailGate.CFG File
MailGate requires some information to run, which is contained in
the MailGate.Cfg file. A well-documented example is contained
in the distribution.
You must edit this file using any OS/2 text editor (E.EXE will do)
and specify some paths and options to suit your system.
3.1 MyAddr
This line contains your FidoNet address, which you will have if
you are running a BBS. MailGate supports 4-D addresses. Example:
MyAddr=1:229/622.2
3.2 MyOrg
This is the name of your organization. It is included in outbound
messages in the standard Organization: header. Example:
MyOrg=Proven Systems
3.3 MyDomain
This is the full domain name of your mail server. If your mailing
address is george@hoochie.com, the domain name will be hoochie.com
Example:
MyDomain=proven.com
When processing inbound mail, MailGate can process multiple domains,
as specified with the Accept command. If you do not specify any
Accept commands, MailGate uses MyDomain as the default domain.
When processing outbound mail, you can use the Scan command to
assign different domains to different email areas. This domain
is the default domain.
3.4 LogFile
Logging is optional. If you want MailGate to keep a log, you must
run it with the -l switch. If you do, this specifies the directory
path where the logfile will go. It does not contain the name of
the log file itself - MailGate will create that - it just needs to
know where you want it put. Example:
LogFile=c:\MG\
3.5 ServerInBox
This is the pathway to SENDMAIL's inbox. MailGate will check this
when run without switches, or with the -i switch, for incoming
mail. Example:
ServerInBox=c:\tcpip\umail\server\inbox\
3.6 ServerOutBox
This is the pathway to SENDMAIL's outgoing spool queue. MailGate
will ONLY access this path if you specify Send=Queue for the
sending method. Whether you specify Queue sending or not, it is
a good idea to declare this path. You will read several warning
messages throughout this document about using the Queue method
on a network. Please don't. Use the Pipe method instead.
Example:
ServerOutBox=c:\tcpip\etc\mqueue\
3.7 EmailArea
This is the path to your Email BBS area. If your message base
is *.MSG (shudder) this line will be the path to where the
messages are stored. If this is a Squish message base, it is
the path and name of the message area. If this is a Squish area,
put a $ at the end of the line.
MailGate can handle multiple areas using the Accept and Scan
commands. This command specifies the default area.
Example for a *.MSG area:
EmailArea=c:\Max\Msg\Email\
Example for a Squish area:
EmailArea=c:\Max\Msg\Email $
3.8 BadArea
This is the path to your BBS bad files area, usually called
BAD_MGS. Optionally, you can have MailGate toss bad messages or
messages to users unknown to you into this area. The syntax is
the same as the Email area. If it's a *.MSG area, specify the
directory. If it's a Squish base, specify the path and name, and
put a $ at the end of the line.
Example for a *.MSG area:
BadArea=c:\Max\Msg\Bad\
Example for a Squish area:
BadArea=c:\Max\Msg\Bad $
MailGate will only toss messages here if the TossBadMsgs line
IS specified and the BounceBadMsgs line is NOT specified.
3.9 FileAttachArea
This line specifies the directory where MailGate should deposit
binary files it finds encapsulated in your mail messages. MailGate
automatically detects and decodes UUencoded files.
You can instruct MailGate to totally ignore encapsulated binary
files using the IgnoreFileAttach line. This only applies to
inbound messages. You can still send binary files by attaching
them to outbound messages, and MailGate will UUencode them.
Example:
FileAttachArea=c:\Max\File\Uncheck
3.10 UserFile
This is the path, not including the filename, of where MailGate's
UserFile is located. Example:
UserFile=c:\MG\
3.11 Max2UserBBS
If you use Maximus 2.x or 3.00, you can have MailGate search your
User.BBS file for users. In this case, you don't have to run MAKEUF
every time you make changes to your user base. If you are specifying
both UserFile and UserBBS, MailGate will search in both files
starting with whichever you specify first. Note that you can turn
off searching-by-alias using the UseBBSAlias=No line. This will
cause MailGate to ignore the alias field in your User.BBS file,
but it will still search for aliases in your UserFile.
Example:
Max2UserBBS=c:\Max\
3.12 TossBadMsgs
You can specify TossBadMsgs, BounceBadMsgs, or neither. If you
specify TossBadMsgs, MailGate will put mail for unknown users
in the area specified by BadArea.
3.13 BounceBadMsgs
If you specify BounceBadMsgs, MailGate will return to sender any
mail for which it cannot locate a valid, legal user. If you
don't specify either TossBadMsgs or BounceBadMsgs, MailGate will
skip such messages.
3.14 Send
There are currently two methods of sending mail: Pipe or Queue.
If your machine is on a network and the SENDMAIL directories
are on another machine, you MUST specify Pipe.
Why the choices? If you specify Pipe, MailGate sends outgoing
messages by calling SENDMAIL, and pipes the messages to SENDMAIL.
This is not particularly fast, but it is very reliable. If
SENDMAIL cannot connect with a destination host, it will enqueue
the message for later transmission by itself, and retry at a
later time to send the message.
If you are on a single machine, you can specify Queue, in which
case MailGate will create the appropriate files in SENDMAIL's
outbound queue. SENDMAIL checks its outbound queue periodically,
and if there is anything in it, sends out the messages. This
method is ver fast in terms of getting the mail out of the
BBS base, and overall it is faster than piping the messages
one at a time.
Examples:
Send=Queue
Send=Pipe
3.15 HideAHeaders
RFC822 mail has a header and a body. The header is classified
by MailGate into two areas, A and B. Info contained in the A
part is To:, From:, Full-Name:, and Return-Path:. Info contained
in the B part is everything else that comes in in a header.
MailGate ALWAYS hides this information in the hidden control area
of each message, so this keyword is invoked by default.
3.16 KeepAHeaders
If you want to include A-Header information in your message body
so you can read it, specify this keyword in your .cfg file. Example:
KeepAHeaders
3.17 HideBHeaders
Non-essential header information can also be stored in the hidden
area if you specify HideBHeaders. Most message editors have some
way of showing you the hidden information on demand. This is the
default choice for MailGate. Example:
HideBHeaders
3.18 KeepBHeaders
If you want the Class B header information to show up in your
messages, specify this keyword. Example:
KeepBHeaders
3.19 SkipBHeaders
If you're not interested in keeping the non-essential header
information at all, specify this keyword to instruct MailGate
to just skip over it. Example:
SkipBHeaders
3.20 NoOutboundKludges
If you are using (recommended) a Local area for your email
message base, you don't need to worry about this option. If
you are using (not recommended) an EchoArea for your email,
Fido programs normally place a hidden PATH kludge after the
tearline (origin line). These will appear on an internet
mail editor. To have them ignored when scanning messages OUT
of your message base, include this line in your MailGate.Cfg:
NoOutboundKludges
3.21 NoOutboundSeenbys
As in the situation above (section 3.20), Fidonet Echo areas
have a hidden line at the end of a message with a list of
systems that have seen the message. You should never remove
this line from incoming or existing messages. However, when
scanning them out to Email, you can direct MailGate to omit
this line by including in your MailGate.Cfg:
NoOutboundSeenbys
3.22 TextWidth
Well-written Fido message editors allow the text to free flow
except for paragraph breaks. This lets editors with varying
screen widths format text in readable form. It is convention
however in internet mail to place carriage returns at the end
of lines. By default, MailGate sets the right margin at 70
characters, and word-wraps text that would exceed that limit
by starting a new line. You can set the TextWidth to any number
of columns from 40 to 80, but 65-75 are recommended. Example:
TextWidth=70
3.23 UseBBSAlias
By default, MailGate will search your User.BBS file looking for
either a match in the alias field for one-word recipients, or
a match in the username field for multiple-word recipients. To
have MailGate ignore the alias field altogether, specify:
UseBBSAlias=No
When creating a UserFile using the utility Makeuf, use the
commandline switch -noalias.
3.24 MailStyle
If your system is set up for LaMail, specify:
MailStyle=LaMail
If your system is set up for Ultimail, specify:
MailStyle=Ultimail
If you are not set up for either LaMail or Ultimail, leave
this specification line out of your .cfg file. Other interfaces
may be supported in the future.
If you are using the Warp Internet Access Kit, install Ultimail
even if you don't plan to use it. This will ensure that SENDMAIL
is creating the .UML files. Then, specify:
MailStyle=Ultimail
3.25 UseTime
If you specify a single line with:
UseTime
MailGate will remember when it last scanned mail in. On systems
that toss or bounce mail to unknown users, this will not be
relevent, but for those who keep mail to read with some other
mailer, it can speed up your processing. When MailGate checks
for inbound mail, if this line has been specified, it only
checks mail that has arrived since the last time it looked.
If you want MailGate to re-scan older mail, you can either leave
this line out of your configuration, or you can reset the
timer by running:
MailGate -r
This will have the one-time effect of setting the last-looked
timer to zero which will cause MailGate to scan all mail
in the inbox.
3.26 NoLocalFlag
If you specify a single line with
NoLocalFlag
MailGate will not set the MSGLOCAL bit in your Squish/MSG base
when it tosses incoming mail. By default, this bit is set, but
it causes problems with some tossers/scanners.
3.27 Accept
This command may be repeated as often as neccesary. It allows
you to specify multiple email areas according to how incoming
mail is addressed. Examples:
Accept support@proven.com L:\Max\Msg\Support $
Accept proven.com L:\Max\Msg\Proven $
Accept sbase.com L:\Max\Msg\Sbase $
Accept * L:\Max\Msg\Email $
Take a look at the above examples. These allow you to 'filter'
incoming messages and assign them to different areas. In the
first example, a single user is specified. All mail addressed
to that user will go to the Support area. Mail going to the
same domain, but any user, will go to the Proven area. Mail
addressed to any user in the sbase.com domain will go to the
Sbase area. Finally, a default area is specified for all users.
You don't have to specify a default. If you don't, any mail
that does not fit the above lines will be considered 'bad' and
dealt with according to how you have configured BounceBadMsgs
and so on.
Note that Squish areas have a dollar sign at the end of the line.
It is important to note that MailGate starts comparing incoming
addresses from the top of the list down, and stops comparing
if it finds a match. As shown in the example, put your most
detailed addresses at the top of the list, and your most general
addresses at the bottom.
Any number of areas may be specified.
3.28 Scan
This command lets you tell MailGate which message areas to scan
when looking for outbound mail, and which domains to assign to
those areas. For example:
Scan proven.com L:\Max\Msg\Proven $
Scan proven.com L:\Max\Msg\Support $
Scan sbase.com L:\Max\Msg\Sbase $
Scan sbase.com L:\Max\Msg\Email $
The command specifies the domain name, the message area, then
an optional dollar sign if this is a squish area. When MailGate
scans mail out of these areas, it will assign the specified
domain name to each area. Any number of areas may be specified.
4.0 Sending Email
We suggest setting up your Email area as a Local file area. This
way, when Squish scans, it will ignore this area.
When a user wants to send email, she goes to this area via whatever
menu paths exist on your BBS and enters a new message. For her own
name (From:) she can either put Firstame Lastname, or she can enter
Firstname.Lastname@your.domain, or she can enter alias@your.domain.
In the To: line, the user enters the email address of the recipient
of the message. If your message editor does not have enough room
to enter the email address,
Leave the To: line blank, and on the first line of the
message body, enter:
To:person@destination.address
Leave the next line blank. Then, enter your message.
If you are using a full-featured editor such as FleetStreet,
you can set it up so that when you are in the Email area,
your personal email address is used for the From: field.
If your editor insists on having something in the To: field,
rather than leaving it blank, just put in something like 'list'.
It will be replaced by the real destination found on the first
line of the body when MailGate scans it out.
Multiple Recipients:
MailGate can handle sending a message to multiple recipients.
You can have multiple addresses on the To: line of the
body like this:
To: harry@armes.com,
sam@quicksilver.com
Just be sure that there are no blank lines until after the
addressing. The To: must be on the first line of the body.
Place a comma at the end of every line but the last one,
to tell MailGate that there are more lines.
There must be at least one blank line after the addresses.
Carbon Copies:
MailGate can send carbon copies of a message to you or other
users. Specify carbon copies like this:
To: harry@armes.com,
sam@quicksilver.com
Cc: daveh@proven.com
As above, there must be no blank lines until after the addresses.
Blind Carbons:
RFC822 defines a blind-carbon copy field, and MailGate supports
it for the sake of convention. You would use this when sending
mail to a host where the message is send to a list of users,
and you know the name of the list. The receiving host will
take care of copying in everyone on its list. Example:
To: harry@armes.com,
sam@quicksilver.com
Bcc: userlist@tohost.com
5.0 Name-Alias Translations
When sending mail, MailGate looks to see how many words are in
the sender's name. If there are more than one, MailGate considers
this to be the sender's BBS name. It then looks for an alias in
the UserFile, and if it finds one, uses alias@your.domain for the
sending address and return path. If MailGate finds a multiple-word
name but no corresponding alias, it uses first.last@your.domain as
the email address.
If only one word is found in the sender's name, it is considered to
be an alias, but it is verified. MailGate then uses alias@your.domain
as the sender's address.
When receiving mail, MailGate counts the number of words in the
recipient's name. If it finds only one, it looks for an alias in
the UserFile. If it finds one, it translates the alias to the
user's registered BBS name and files the message under that name
so that the BBS itself can recognize it. If MailGate finds multiple
words for the recipient's name, it considers them to be parts of
a BBS name, parses them out, and looks in the UserFile for
verification. If it finds the name, it saves the message.
If neither a valid name nor a valid alias are found, MailGate
designates the message as Bad. It then behaves according to its
configuration file.
If you have specified BouceBadMsgs, MailGate returns the message to
its sender.
If you have specified TossBadMsgs, MailGate places the message in
the area you have defined as BadArea.
If you have not specified either TossBadMsgs or BounceBadMsgs, the
message is left untouched in SENDMAIL's inbox.
If you have logging turned on ( -l switch ) when MailGate is run,
a record of the action taken on received messages is kept.
6.0 How to reach us
For problem reports, suggestions for future releases, and even
good news, you can reach us at:
mailgate@sbase.com
or you can send Fido Netmail to Mail Gate at 1:229/622.
7.0 Current Versions
The current release is in mg110.zip. The current beta is mg111c.zip.
You can FREQ the current release from 1:229/622 using the
magic name MAILGATE, or you can download it from hobbes or:
ftp.sbase.com
in the Os2/Inet directory.
8.0 The makeidx.exe utility
Beginning with version 0.9, MailGate uses a compiled index
created from your User.BBS and/or UserFile. MAKEIDX scans
your MailGate.Cfg to determine which of these files you use,
and whether or not you permit the User.BBS alias field to
be used. It then creates the index files.
Note that even if you don't allow your User.BBS alias field
to be used, aliases are still permitted and searched for in
your UserFile, allowing you to set up aliases for you and your
staff, but not for your users, or to create aliases for some
users in such case that you might be using the alias field
in your User.BBS for some other thing.
Once the indexed files are compiled, MailGate automatically
detects them and uses them.
This process reduces the time for MailGate to validate a user
dramatically.
9.0 The fu.exe utility
You can lookup user names and/or aliases using the fu utility.
FU searches your files in the same sequence as MailGate does.
By default, fu expects as an argument either a name or an alias,
and returns the name for that user. Example:
fu daveh
daveh is Dave Hamilton
If you use the -a switch anywhere in the command line, fu will
return an alias from either a name or alias:
fu dave hamilton -a
dave hamilton is daveh
The -v switch can provide more information IF you have used a
User.BBS file to create your indexed files. In this case, pointers
to the User.BBS entries are maintained, and fu has access to
all the information contained about the user in your system.
Try looking up a user with the -v switch for a demonstration.
This was originally developed for testing purposes, but it has
proven to be handy. We just thought we'd share it with you. Even
if you decide not to register MailGate, please keep it with our
compliments.
10.0 Registration
If you wish to use MailGate, please consider registering it.
Registration is $25. US. Registration will entitle you to
support responses and future upgrades. You can register either
by mail or through BMT Micro using pretty well any payment
method you can think of.
Registering by Mail:
Please print the form REGISTER.FRM and send it with your check
to:
Dave Hamilton
220 Arthur Street
Newcastle, ON, CANADA, L1B 1L8
We will send you a registration name and key via email, snailmail,
or netmail. Please indicate your choice on the registration form.
Registering with BMT Micro:
Mail Orders To: BMT Micro
PO Box 15016
Wilmington, NC 28408
U.S.A.
Voice Orders: 9:00am - 7:00pm EST (-5 GMT)
(800) 414-4268 (orders only)
(910) 791-7052
Fax Orders: (910) 350-2937 24 hours / 7 Days
Online Orders via modem: (910) 350-8061 10 lines, all 14.4K
(910) 799-0923 Direct 28.8K line
Ordering and general ordering questions:
Via AOL: bmtmicro
via Compuserve: Thomas Bradford, 74031,307
via Internet: thomas.bradford@bmtmicro.com
We accept Visa, Mastercard, Discover, American Express, Money Order,
Cashiers Check, Personal Check. Please do not send cash in the mail.
Personal checks are subject to clearance.
Each copy of the package includes the latest version of MailGate.
Name ________________________________________________________________
Address _____________________________________________________________
_____________________________________________________________
Phone _______________________________________________________________
Product Quantity Price Number of copies
_________________________ ______________ ________________
x ____________ = + $ _______
x ____________ = + $ _______
x ____________ = + $ _______
Product is shipped on 3.5" diskette.
Shipping and Handling (no quantity limit): + $ _______
Email - Subject to Credit Card Verification Free
Fax - Subject to Credit Card Verification.. Free
Worldwide 1st Class ....................... Free
2nd Day Priority, USA Only ................ $ 4.00 US
US Postal Service International Express
(Including Canada and Mexico), allow up to
7-10 days ............................... $ 20.00 US
Airborne Select Delivery (USA Only) $ 7.00 US
FedEx Overnight, USA Only (delivery by
3:00 pm the following day) .............. $ 15.00 US
FedEx Europe/Japan (guaranteed delivery
within 3 days) .......................... $ 30.00 US
Worldwide, any business with a valid FedEx account can
charge shipping to their FedEx account and pay no
shipping charges to us.
Total: $ _______
For credit card payment only
Circle one: VISA / Master / Discover / American Express
Credit card number: _____________________________________________
Expiration date: ________________________________________________
Authorization signature: ________________________________________
Happy Computing...
dave hamilton