Index of /itools/MSDOS/WINDOWS/WINSOCK/WSMTPD16

      Name                    Last modified       Size  Description

[DIR] Parent Directory 19-Apr-2005 00:31 - [TXT] ABSTRACT.TXT 09-Oct-1993 03:53 3k [   ] CTL3D.DLL 17-Nov-1992 04:57 17k [TXT] CTL3D.H 09-Oct-1993 04:01 1k [TXT] DEBWSMTP.C 09-Oct-1993 06:07 45k [   ] DEBWSMTP.EXE 09-Oct-1993 05:20 61k [TXT] DELMAIL.BAT 02-Jul-1993 07:04 1k [TXT] DIALOGS.DLG 09-Oct-1993 03:30 1k [TXT] DIALOGS.H 04-Oct-1993 10:48 7k [IMG] EMPTY.ICO 08-Jun-1993 23:57 1k [IMG] ENVELOPE.ICO 08-Jun-1993 12:07 1k [IMG] FULL.ICO 08-Jun-1993 23:59 1k [TXT] IAFA_PAC.TXT 09-Oct-1993 02:50 1k [DIR] LIB/ 19-Apr-2005 00:30 - [TXT] MAIL.RC 02-Jul-1993 06:59 1k [TXT] MAILX.BAT 02-Jul-1993 07:15 1k [TXT] NET.C 09-Oct-1993 05:25 17k [TXT] NET.H 09-Oct-1993 03:56 4k [TXT] WINSOCK.H 27-Jun-1993 22:46 28k [TXT] WSMTPSRV.C 09-Oct-1993 08:05 45k [TXT] WSMTPSRV.DEF 09-Oct-1993 03:53 1k [   ] WSMTPSRV.EXE 09-Oct-1993 08:25 35k [TXT] WSMTPSRV.H 09-Oct-1993 06:14 8k [IMG] WSMTPSRV.ICO 20-Jun-1993 08:50 1k [TXT] WSMTPSRV.INI 21-Jun-1993 12:30 1k [TXT] WSMTPSRV.MAK 09-Oct-1993 08:26 2k [TXT] WSMTPSRV.RC 09-Oct-1993 08:27 10k [TXT] WSMTPSRV.WSP 09-Oct-1993 08:16 2k

                            Windows SMTP Server
                            for Windows Sockets
                                  v1.61
                           Sunday, October 8, 1993

                               wsmtpd16.zip

    Announcing a WinSock 1.1 compliant SMTP daemon for Windows. This is a
public domain program, and I am releasing it somewhat as Lee Murach has with
his TXTSRV program. All source code is included, I can't accept any money for
it, and I don't want the headache of supporting any program. What I do want
is for programmers in the public domain to include this source code in thier
mail programs, and possibly as a skeleton in other daemon programs. This
server was written with reusability and speed in mind. You should be able to
find this program on the following FTP sites:

FTP.MICRODYNE.COM    /pub/winsock/apps/wsmtpd16.zip
SUNSITE.UNC.EDU      /pub/micro/pc-stuff/ms-windows/winsock/apps/wsmtpd16.zip
                     (this is a mirror of Microdyne, give it time to catch up)
FTP.CICA.INDIANA.EDU /pub/pc/win3/programr/wsmtpd16.zip
                     (or /pub/pc/win3/uploads/wsmtpd16.zip for the near
                      future)

                               **************
                               ** Versions **
                               **************

wsmtpd10.zip  v1.00a       June 22, 1993
- Origional release

wsmtpd11.zip  v1.10a       June 22, 1993
- Fixes a WSAENOTCONN problem with Lanera's TCPOPEN WinSock DLL
- "Might" be causing only one connection to be accepted at a time, but
  I think this is Lanera's problem.
- Another version might be out to fix any glitches.

wsmtpd12.zip  v1.20a       June 22, 1993
- What did I tell ya? This SHOULD have been v1.0! Owell, It's
  stable now on the Lanera stack. Haven't tried Chameleon.
- Received data is flushed correctly now. The other versions
  didn't like mass dumps, this one doesn't care.
- "Title bar" in the debwsmtpd.exe binary tells you the current
  progress with all of the clients as things go - but only if
  you have "debug" on.
- "Title bar" resets to "WSMTPD" when no mail remains (the file
  is deleted).
- This should be the last release for the near future. ;)
  Actually, this version is stable enough, as long as you
  don't quit it and retry running it. Somehow Im not freeing
  the listening socket.
wsmtpd12.zip  v1.20b        June 23, 1993
- Fixed HELO, fixed line length problem
wsmtpd12.zip  v1.20c        June 24, 1993
- Fixed stack problem caused by v1.20b

wsmtpd13.zip  v1.30a        June 24, 1993
- 8BITMIME capabilities. ESMTP compliant.
- Fixed RECV and MAIL replies.
- Fixed the resource strings and smtpSendMessage()
- Added a 'local ESMTP extension' of XWIN3 to the server.
- Fixed NUMEROUS misspellings. Cleaned things up.
- As long as nothing is connected, closing the app and restarting
  isn't a bad thing anymore - Don't know about Chameleon though.

wsmtpd14.zip  v1.40a        June 28, 1993
- Fixed code to use Linked list for client structures. There is no
  longer a limit on the incoming number of connections.
- Fixed receiver buffer overflow error on long messages. I had to find
  out what the TCP/IP kernel was buffering to, and then duplicated the
  same amount of memory. This is only for the receive buffer though.
- Took out "phase" garbage. Debugging is past that point
- Changes alot of the code for the new LPSMTPCLIENT type to replace the
  old int iIndex. This and alot of replacements of LPSTR for PSTR.
- Fixed a problem with buffer overflows.
  Note #1: Chameleon telnet WILL freeze if you try to send a large PASTE
           from the clipboard (It seems to overflow its buffers).
wsmtpd14.zip  v1.40b        June 28, 1993
- GPF during closed connections aborting DATA transfer problem fixed.
- 500/501 twin messages during bad RCPT/MAIL commands fixed.
- Now prints a "%s Disconnected!" message when smtpDestroyClient() is called.
- Still gets stuck in a infinite loop somewhere. This WILL be fixed if I can
  consistently duplicate it.
- If a client send more than the edit control can handle between
  smtpSendMessage() calls, the connection seems to hang. Just turn off
  debug mode if you aren't debugging!!!

wsmtpd15.zip  v1.50a        June 28, 1993
- The listbox bug is fixed. Everything should be completely stable now.
  I have tested messages of 120k in size - in rfc822 mode - and it works
  perfectly.
- This might be the last major release of WinSMTPSrv
wsmtpd15.zip  v1.51a        July 2, 1993
- Fixed problem with server "eating" empty lines
- Fixed a bug with MULT returning 2 messages
- Added .BAT files for PCTCP "mail" users like me. Do NOT try
  running this program on PCTCP's v1.06 WinSock DLL - it doesn't
  work right. Instead, try getting Lanera and PCTCP to work
  together, and use Lanera's DLL while in Windows.

wsmtpd16.zip  v1.61         October 8, 1993
- Fixed the funky icon problems (thanks to May '93 DrDobbs)
- Took out unneccisary calls to setsockopt() and WSAAsyncSelect()
  where they weren't needed.
- Included a call to getservbyname() for SERVICE database lookups of the
  "smtp" port... if the call fails, I hard set it to port 25.
- Updated this README file to be kinder to certain Vendors who's stacks
  have improved dramatically....
- I have some worries about how I implemented my netSendData() procedure,
  as it should sit in a loop trying to send until WSAEWOULDBLOCK... but
  it does currently work just fine without.

                               **************
                               ** Features **
                               **************

1. Almost completely NON-BLOCKING, and FAST (only the blocking gethostbyaddr()
   call is used).
2. No 'theoretical' limit on the number of incoming connections. Most TCP/IP
   stacks limit the maximum number of sockets to something like 64. All of
   the connection structures/buffers are locked into memory, using handles
   and locking at the beginning of each slice would be too much overhead.
3. Easy reusability for future daemons.
4. All message strings are Resources; all commands are looked up in a
   structure array for easy switch()/case parsing.
5. FIFO buffers for input/output. Allows for, among other things, manual
   intervention with the server (including Backspace and Delete for non-
   linemode telnets: try "telnet localhost 25").
6. Fully implemented SMTP HELP. So many commands... I even grabbed a few that
   the RFCs didn't talk about; I could only implement the majority, however.
7. Extended SMTP as defined in RFC1425/1426/1427/1428.  The SIZE extension is
   not yet implemented. 8BITMIME is!


                      *********************************
                      ** Features lost to simplicity **
                      *********************************

1. Exotic front end dropped in favor of a quick and spiffy dialog box.
2. All mail is put in one file. This was origionally intended so that I
   might read it with FTP's mail program. Too bad their DLL doesn't work
   right yet.
3. Mail is NOT forwarded, and recipients are NOT checked. Everything that
   is accepted is written to the mail file.
4. The listbox is NOT a virtual one. After 1000 (MAXITEMS), the listbox is
   reset so that the program doesn't crash.

                      *******************************
                      ** Possible current problems **
                      *******************************

1. WSAAsyncGetHostByAddr() Never did quite work right, so I went with the
    blocking gethostbyaddr() - no pauses noticed (except sometimes over SLIP).
2. Buffer size of 2048 means that the maximum line that can be used is limited
    to this. If this is overwritten, the server just seems to suddenly shut
    up.
   The Receive buffer makes itself the same size as the SO_RCVBUF value
    returned from getsockopt() - older versions did not!
   Future versions, based on RFC1427, might dynamically allocate the FIFO
    buffer as needed.
   ESMTP extensions are in place, I just have to decode the SIZE extension.
    It looks like I don't have to worry... but you never know.
3. The RFC info is a little confusing in places, so if I have anything wrong,
    please tell me.
4. Lines over 2048 characters in length do BAD things.
   This limit is only with the 7bit RFC-822 code, the ESMTP 8BITMIME bypasses
    such limits in the message (block, not line, oriented).
5. The list box should probably be made into a virtual one. But this aspect of
    a SMTP server is beyond the scope of the project. A log file might be
    added in the future if the POP3 and multiuser capabilities are in place.
6. Stupid Icon flag keeps updating every 30 seconds when there is mail. When
    no mail is present, the timer is turned off until more is received.
7. If two programs try to access the mailbox at the same time, all
   hell breaks loose (nice little dialogs pop up).
8. The SMTP port (25), is not derived by getportbyname()


                                ***********
                                ** Notes **
                                ***********

    There are 2 binaries. The DEBWSMTP.EXE version has all of the debugging
symbols linked in, and the "USE_TITLE" definition set. The WSMTPSRV.EXE
version is the clean "release" binary, with the "USE_TITLE" commented out. If
you minimize WSMTPD, no error messages will go to your screen, they will all
go to the dialog's listbox.
    If you delete your mailbox after reading it, the flag icon will go back
down.
    The listbox will occasionally reset - so don't depend on reading your mail
through it. Every 1000 (MAXITEMS) lines it clears the hole thing.


                              ****************
                              ** Installing **
                              ****************

    You MUST have Windows v3.1 and a WinSock.DLL installed with
      your TCP/IP package.
    Copy CTL3D.DLL to your C:\WINDOWS\SYSTEM\ directory.
    Copy WSMTPSRV.EXE to your favorite network utils directory.
    Open up filemanager, and click and hold on WSMTPSRV.EXE
      and drop it into your favorite network group in Progman.
    Double click on the new icon.
    Click on the MAIL> button. Choose a file for your Mailbox.
    Minimize WSMTPD to avoid the nasty error messages.
    Get real work done and receive SMTP mail!

My installation:
  Clarkson 3c503 driver
  pktmux
  3 pktdrv's
  PC/TCP 2.2 Kernel
  Lanera's Kernel  WinSock.DLL (demo version for testing compliance).

Other neat WinSock software that goes well:
  WinTrumpet
  HGopher
  WinQVT/Net

                      ********************************
                      ** The Agreement of all users **
                      ********************************

Ian Blenke cannot be held responsible for damages, expressed or implied,for
the use of this software. No commercial use can be made of this product
without the consent of the author. No profit of any kind can be made on the
sale or distribution of this program. If you wish to distribute this program
with other samples of WinSock programming, you must first contact the author
so that he can keep accurate records of its usage. If after 3 months, you
still cannot get the author's attention, this program can be distributed IN
ITS CURRENT FORM with any other samples; you may not, however, gain any
profit from its distribution. If I think you have distributed any of this
program without adequate notification, I will require you have proof that you
did try. If you write any programs based on this source code, you may
not sell them for any profit without the written consent of the author. If
you incorporate this source code into a public domain program, all the author
requires is a notification that "part of the code was written by Ian Blenke"
and some form of notification that his name was used in the public domain
software distribution. This does not represent a contract on the part of the
author. If any issues cannot clearly be resolved by reading this text,
immediately contact the author. I do not wish any profit from this program
and I don't need the responsibility. You may not make a profit on this
software, the author hasn't.

I don't like such agreements, but in today's world of lawyers and lawbreakers
I have little other choice.

                             ******************
                             ** Future Plans **
                             ******************

- SMTP client - A VisualBasic project is in the works - looks good.
- Definite ESMTP compliance.
- Multi-user capability. This is neccisary for the POP3 server as well.
- POP3 server in the works - it's on paper.
- POP3 client wanted. Haven't started on it yet. (But there are MANY)
- MIME client for SMTP/POP3 wanted REAL bad. Someone is working on it.

- A WinSock client VBX is already a reality. Currently in alpha testing,
  it includes 4 clients: WinRSH/WSMTPC/WFinger/VBTest. When the control
  is beyond it's alpha testing stages, I will release it to Microdyne
  with complete source. (If you are interested in participating in the
  alpha testing, let me know)
  (I learned a lesson with versions 1.0 to 1.3 of WSMTPSRV! ;)

                             *******************
                             ** Compatibility **
                             *******************

Versions known to work with this version:
-   PCTCP v1.09beta2Y and newer. Bob Quinn from FTP Software Inc.
     (rcq@ftp.com) has been a great help in getting this example code
     to work with PCTCP's WinSock.DLL
-   PCTCP v1.09beta1 will only carry on 1 conversation, so you have
     to close and restart the window for each connection (this is
     a bug that has been fixed in 1.09beta2Y and newer)

Versions not sure of:
-   Lanera might not work any more... But I no longer use it, so I
     can't confirm my concept. It seems that when you close the
     child accept()ed socket from a listen()ing one, the event
     mask set by WSAAsyncSelect() is forgotten. - Or so it seems.
-   Chameleon should work... I had a good experience with their
     WinSock in my first few versions. But I cannot confirm wether
     this will work on thier.

-   Distinct hasn't been tested at all.
-   SuperTCP hasn't been tested at all.
-   LWP hasn't been tested at all.


                            *********************
                            ** About the Author *
                            *********************

I am a student currently in search of an education. If anyone out there
believes that this little project shows any hope, I would like to hear
about it. It isn't too bad for a Community College student (that had to
teach himself everything he knows). ;)


Have fun!

harris.iblenke@ic1d.harris.com  // should work for a while
iblenke@rhino.ess.harris.com    // should work about as long

(407)725-6073/3887              // Use sparingly
         Home/Data

Remember, if you can't reach me after 3 months, and you don't see any
newer versions, the package can be distributed IN ITS ENTIRETY as long
as it does not make a profit for ANYONE.