home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / winsock / wsmtpd16 / readme.txt < prev    next >
Encoding:
Text File  |  1995-05-19  |  15.0 KB  |  313 lines

  1.                             Windows SMTP Server
  2.                             for Windows Sockets
  3.                                   v1.61
  4.                            Sunday, October 8, 1993
  5.  
  6.                                wsmtpd16.zip
  7.  
  8.     Announcing a WinSock 1.1 compliant SMTP daemon for Windows. This is a
  9. public domain program, and I am releasing it somewhat as Lee Murach has with
  10. his TXTSRV program. All source code is included, I can't accept any money for
  11. it, and I don't want the headache of supporting any program. What I do want
  12. is for programmers in the public domain to include this source code in thier
  13. mail programs, and possibly as a skeleton in other daemon programs. This
  14. server was written with reusability and speed in mind. You should be able to
  15. find this program on the following FTP sites:
  16.  
  17. FTP.MICRODYNE.COM    /pub/winsock/apps/wsmtpd16.zip
  18. SUNSITE.UNC.EDU      /pub/micro/pc-stuff/ms-windows/winsock/apps/wsmtpd16.zip
  19.                      (this is a mirror of Microdyne, give it time to catch up)
  20. FTP.CICA.INDIANA.EDU /pub/pc/win3/programr/wsmtpd16.zip
  21.                      (or /pub/pc/win3/uploads/wsmtpd16.zip for the near
  22.                       future)
  23.  
  24.                                **************
  25.                                ** Versions **
  26.                                **************
  27.  
  28. wsmtpd10.zip  v1.00a       June 22, 1993
  29. - Origional release
  30.  
  31. wsmtpd11.zip  v1.10a       June 22, 1993
  32. - Fixes a WSAENOTCONN problem with Lanera's TCPOPEN WinSock DLL
  33. - "Might" be causing only one connection to be accepted at a time, but
  34.   I think this is Lanera's problem.
  35. - Another version might be out to fix any glitches.
  36.  
  37. wsmtpd12.zip  v1.20a       June 22, 1993
  38. - What did I tell ya? This SHOULD have been v1.0! Owell, It's
  39.   stable now on the Lanera stack. Haven't tried Chameleon.
  40. - Received data is flushed correctly now. The other versions
  41.   didn't like mass dumps, this one doesn't care.
  42. - "Title bar" in the debwsmtpd.exe binary tells you the current
  43.   progress with all of the clients as things go - but only if
  44.   you have "debug" on.
  45. - "Title bar" resets to "WSMTPD" when no mail remains (the file
  46.   is deleted).
  47. - This should be the last release for the near future. ;)
  48.   Actually, this version is stable enough, as long as you
  49.   don't quit it and retry running it. Somehow Im not freeing
  50.   the listening socket.
  51. wsmtpd12.zip  v1.20b        June 23, 1993
  52. - Fixed HELO, fixed line length problem
  53. wsmtpd12.zip  v1.20c        June 24, 1993
  54. - Fixed stack problem caused by v1.20b
  55.  
  56. wsmtpd13.zip  v1.30a        June 24, 1993
  57. - 8BITMIME capabilities. ESMTP compliant.
  58. - Fixed RECV and MAIL replies.
  59. - Fixed the resource strings and smtpSendMessage()
  60. - Added a 'local ESMTP extension' of XWIN3 to the server.
  61. - Fixed NUMEROUS misspellings. Cleaned things up.
  62. - As long as nothing is connected, closing the app and restarting
  63.   isn't a bad thing anymore - Don't know about Chameleon though.
  64.  
  65. wsmtpd14.zip  v1.40a        June 28, 1993
  66. - Fixed code to use Linked list for client structures. There is no
  67.   longer a limit on the incoming number of connections.
  68. - Fixed receiver buffer overflow error on long messages. I had to find
  69.   out what the TCP/IP kernel was buffering to, and then duplicated the
  70.   same amount of memory. This is only for the receive buffer though.
  71. - Took out "phase" garbage. Debugging is past that point
  72. - Changes alot of the code for the new LPSMTPCLIENT type to replace the
  73.   old int iIndex. This and alot of replacements of LPSTR for PSTR.
  74. - Fixed a problem with buffer overflows.
  75.   Note #1: Chameleon telnet WILL freeze if you try to send a large PASTE
  76.            from the clipboard (It seems to overflow its buffers).
  77. wsmtpd14.zip  v1.40b        June 28, 1993
  78. - GPF during closed connections aborting DATA transfer problem fixed.
  79. - 500/501 twin messages during bad RCPT/MAIL commands fixed.
  80. - Now prints a "%s Disconnected!" message when smtpDestroyClient() is called.
  81. - Still gets stuck in a infinite loop somewhere. This WILL be fixed if I can
  82.   consistently duplicate it.
  83. - If a client send more than the edit control can handle between
  84.   smtpSendMessage() calls, the connection seems to hang. Just turn off
  85.   debug mode if you aren't debugging!!!
  86.  
  87. wsmtpd15.zip  v1.50a        June 28, 1993
  88. - The listbox bug is fixed. Everything should be completely stable now.
  89.   I have tested messages of 120k in size - in rfc822 mode - and it works
  90.   perfectly.
  91. - This might be the last major release of WinSMTPSrv
  92. wsmtpd15.zip  v1.51a        July 2, 1993
  93. - Fixed problem with server "eating" empty lines
  94. - Fixed a bug with MULT returning 2 messages
  95. - Added .BAT files for PCTCP "mail" users like me. Do NOT try
  96.   running this program on PCTCP's v1.06 WinSock DLL - it doesn't
  97.   work right. Instead, try getting Lanera and PCTCP to work
  98.   together, and use Lanera's DLL while in Windows.
  99.  
  100. wsmtpd16.zip  v1.61         October 8, 1993
  101. - Fixed the funky icon problems (thanks to May '93 DrDobbs)
  102. - Took out unneccisary calls to setsockopt() and WSAAsyncSelect()
  103.   where they weren't needed.
  104. - Included a call to getservbyname() for SERVICE database lookups of the
  105.   "smtp" port... if the call fails, I hard set it to port 25.
  106. - Updated this README file to be kinder to certain Vendors who's stacks
  107.   have improved dramatically....
  108. - I have some worries about how I implemented my netSendData() procedure,
  109.   as it should sit in a loop trying to send until WSAEWOULDBLOCK... but
  110.   it does currently work just fine without.
  111.  
  112.                                **************
  113.                                ** Features **
  114.                                **************
  115.  
  116. 1. Almost completely NON-BLOCKING, and FAST (only the blocking gethostbyaddr()
  117.    call is used).
  118. 2. No 'theoretical' limit on the number of incoming connections. Most TCP/IP
  119.    stacks limit the maximum number of sockets to something like 64. All of
  120.    the connection structures/buffers are locked into memory, using handles
  121.    and locking at the beginning of each slice would be too much overhead.
  122. 3. Easy reusability for future daemons.
  123. 4. All message strings are Resources; all commands are looked up in a
  124.    structure array for easy switch()/case parsing.
  125. 5. FIFO buffers for input/output. Allows for, among other things, manual
  126.    intervention with the server (including Backspace and Delete for non-
  127.    linemode telnets: try "telnet localhost 25").
  128. 6. Fully implemented SMTP HELP. So many commands... I even grabbed a few that
  129.    the RFCs didn't talk about; I could only implement the majority, however.
  130. 7. Extended SMTP as defined in RFC1425/1426/1427/1428.  The SIZE extension is
  131.    not yet implemented. 8BITMIME is!
  132.  
  133.  
  134.                       *********************************
  135.                       ** Features lost to simplicity **
  136.                       *********************************
  137.  
  138. 1. Exotic front end dropped in favor of a quick and spiffy dialog box.
  139. 2. All mail is put in one file. This was origionally intended so that I
  140.    might read it with FTP's mail program. Too bad their DLL doesn't work
  141.    right yet.
  142. 3. Mail is NOT forwarded, and recipients are NOT checked. Everything that
  143.    is accepted is written to the mail file.
  144. 4. The listbox is NOT a virtual one. After 1000 (MAXITEMS), the listbox is
  145.    reset so that the program doesn't crash.
  146.  
  147.                       *******************************
  148.                       ** Possible current problems **
  149.                       *******************************
  150.  
  151. 1. WSAAsyncGetHostByAddr() Never did quite work right, so I went with the
  152.     blocking gethostbyaddr() - no pauses noticed (except sometimes over SLIP).
  153. 2. Buffer size of 2048 means that the maximum line that can be used is limited
  154.     to this. If this is overwritten, the server just seems to suddenly shut
  155.     up.
  156.    The Receive buffer makes itself the same size as the SO_RCVBUF value
  157.     returned from getsockopt() - older versions did not!
  158.    Future versions, based on RFC1427, might dynamically allocate the FIFO
  159.     buffer as needed.
  160.    ESMTP extensions are in place, I just have to decode the SIZE extension.
  161.     It looks like I don't have to worry... but you never know.
  162. 3. The RFC info is a little confusing in places, so if I have anything wrong,
  163.     please tell me.
  164. 4. Lines over 2048 characters in length do BAD things.
  165.    This limit is only with the 7bit RFC-822 code, the ESMTP 8BITMIME bypasses
  166.     such limits in the message (block, not line, oriented).
  167. 5. The list box should probably be made into a virtual one. But this aspect of
  168.     a SMTP server is beyond the scope of the project. A log file might be
  169.     added in the future if the POP3 and multiuser capabilities are in place.
  170. 6. Stupid Icon flag keeps updating every 30 seconds when there is mail. When
  171.     no mail is present, the timer is turned off until more is received.
  172. 7. If two programs try to access the mailbox at the same time, all
  173.    hell breaks loose (nice little dialogs pop up).
  174. 8. The SMTP port (25), is not derived by getportbyname()
  175.  
  176.  
  177.                                 ***********
  178.                                 ** Notes **
  179.                                 ***********
  180.  
  181.     There are 2 binaries. The DEBWSMTP.EXE version has all of the debugging
  182. symbols linked in, and the "USE_TITLE" definition set. The WSMTPSRV.EXE
  183. version is the clean "release" binary, with the "USE_TITLE" commented out. If
  184. you minimize WSMTPD, no error messages will go to your screen, they will all
  185. go to the dialog's listbox.
  186.     If you delete your mailbox after reading it, the flag icon will go back
  187. down.
  188.     The listbox will occasionally reset - so don't depend on reading your mail
  189. through it. Every 1000 (MAXITEMS) lines it clears the hole thing.
  190.  
  191.  
  192.                               ****************
  193.                               ** Installing **
  194.                               ****************
  195.  
  196.     You MUST have Windows v3.1 and a WinSock.DLL installed with
  197.       your TCP/IP package.
  198.     Copy CTL3D.DLL to your C:\WINDOWS\SYSTEM\ directory.
  199.     Copy WSMTPSRV.EXE to your favorite network utils directory.
  200.     Open up filemanager, and click and hold on WSMTPSRV.EXE
  201.       and drop it into your favorite network group in Progman.
  202.     Double click on the new icon.
  203.     Click on the MAIL> button. Choose a file for your Mailbox.
  204.     Minimize WSMTPD to avoid the nasty error messages.
  205.     Get real work done and receive SMTP mail!
  206.  
  207. My installation:
  208.   Clarkson 3c503 driver
  209.   pktmux
  210.   3 pktdrv's
  211.   PC/TCP 2.2 Kernel
  212.   Lanera's Kernel  WinSock.DLL (demo version for testing compliance).
  213.  
  214. Other neat WinSock software that goes well:
  215.   WinTrumpet
  216.   HGopher
  217.   WinQVT/Net
  218.  
  219.                       ********************************
  220.                       ** The Agreement of all users **
  221.                       ********************************
  222.  
  223. Ian Blenke cannot be held responsible for damages, expressed or implied,for
  224. the use of this software. No commercial use can be made of this product
  225. without the consent of the author. No profit of any kind can be made on the
  226. sale or distribution of this program. If you wish to distribute this program
  227. with other samples of WinSock programming, you must first contact the author
  228. so that he can keep accurate records of its usage. If after 3 months, you
  229. still cannot get the author's attention, this program can be distributed IN
  230. ITS CURRENT FORM with any other samples; you may not, however, gain any
  231. profit from its distribution. If I think you have distributed any of this
  232. program without adequate notification, I will require you have proof that you
  233. did try. If you write any programs based on this source code, you may
  234. not sell them for any profit without the written consent of the author. If
  235. you incorporate this source code into a public domain program, all the author
  236. requires is a notification that "part of the code was written by Ian Blenke"
  237. and some form of notification that his name was used in the public domain
  238. software distribution. This does not represent a contract on the part of the
  239. author. If any issues cannot clearly be resolved by reading this text,
  240. immediately contact the author. I do not wish any profit from this program
  241. and I don't need the responsibility. You may not make a profit on this
  242. software, the author hasn't.
  243.  
  244. I don't like such agreements, but in today's world of lawyers and lawbreakers
  245. I have little other choice.
  246.  
  247.                              ******************
  248.                              ** Future Plans **
  249.                              ******************
  250.  
  251. - SMTP client - A VisualBasic project is in the works - looks good.
  252. - Definite ESMTP compliance.
  253. - Multi-user capability. This is neccisary for the POP3 server as well.
  254. - POP3 server in the works - it's on paper.
  255. - POP3 client wanted. Haven't started on it yet. (But there are MANY)
  256. - MIME client for SMTP/POP3 wanted REAL bad. Someone is working on it.
  257.  
  258. - A WinSock client VBX is already a reality. Currently in alpha testing,
  259.   it includes 4 clients: WinRSH/WSMTPC/WFinger/VBTest. When the control
  260.   is beyond it's alpha testing stages, I will release it to Microdyne
  261.   with complete source. (If you are interested in participating in the
  262.   alpha testing, let me know)
  263.   (I learned a lesson with versions 1.0 to 1.3 of WSMTPSRV! ;)
  264.  
  265.                              *******************
  266.                              ** Compatibility **
  267.                              *******************
  268.  
  269. Versions known to work with this version:
  270. -   PCTCP v1.09beta2Y and newer. Bob Quinn from FTP Software Inc.
  271.      (rcq@ftp.com) has been a great help in getting this example code
  272.      to work with PCTCP's WinSock.DLL
  273. -   PCTCP v1.09beta1 will only carry on 1 conversation, so you have
  274.      to close and restart the window for each connection (this is
  275.      a bug that has been fixed in 1.09beta2Y and newer)
  276.  
  277. Versions not sure of:
  278. -   Lanera might not work any more... But I no longer use it, so I
  279.      can't confirm my concept. It seems that when you close the
  280.      child accept()ed socket from a listen()ing one, the event
  281.      mask set by WSAAsyncSelect() is forgotten. - Or so it seems.
  282. -   Chameleon should work... I had a good experience with their
  283.      WinSock in my first few versions. But I cannot confirm wether
  284.      this will work on thier.
  285.  
  286. -   Distinct hasn't been tested at all.
  287. -   SuperTCP hasn't been tested at all.
  288. -   LWP hasn't been tested at all.
  289.  
  290.  
  291.                             *********************
  292.                             ** About the Author *
  293.                             *********************
  294.  
  295. I am a student currently in search of an education. If anyone out there
  296. believes that this little project shows any hope, I would like to hear
  297. about it. It isn't too bad for a Community College student (that had to
  298. teach himself everything he knows). ;)
  299.  
  300.  
  301. Have fun!
  302.  
  303. harris.iblenke@ic1d.harris.com  // should work for a while
  304. iblenke@rhino.ess.harris.com    // should work about as long
  305.  
  306. (407)725-6073/3887              // Use sparingly
  307.          Home/Data
  308.  
  309. Remember, if you can't reach me after 3 months, and you don't see any
  310. newer versions, the package can be distributed IN ITS ENTIRETY as long
  311. as it does not make a profit for ANYONE.
  312.  
  313.