INSTALL
上传用户:dayuan858
上传日期:2007-01-04
资源大小:194k
文件大小:22k
源码类别:

网络编程

开发平台:

Unix_Linux

  1. INSTALL 
  2. Last updated: 07/14/98
  3. Refer to http://www.eudora.com/freeware for new releases of 
  4. POP3 server.
  5. This document is updated between releases.  So please read 
  6. it each time you download a new version of Qpopper.
  7. [ Warning : Do not use qpopper over NFS. ]
  8. For release notes please refer doc/Release.Notes
  9. Send your patches and bug reports to qpopper@qualcomm.com.
  10. Please read the License file for license information.
  11. SECTIONS:
  12. 0. BUFFER OVERRUN IN QPOPPER
  13. 1. QUICKNOTES
  14. 2. RUN-TIME OPTIONS (COMMAND LINE OPTIONS).
  15. 3. APOP
  16. 4. BULLETINS
  17. 5. SERVER MODE
  18. 6. SHADOW PASSWORDS / ENHANCED SECURITY SYSTEMS.
  19. 7. COMPILE TIME MACROS(for other options)
  20. NOTES
  21. DEBUGGING
  22. 0.0 BUFFER OVERRUN IN QPOPPER:
  23. ------------------------------
  24. Some versions of qpopper are prone to buffer overrun. Remote 
  25. users can exploit this bug and obtain root access. If you are 
  26. using qpopper2.41 or older please upgrade or patch it with new 
  27. versions.
  28. 1.0 QUICKNOTES:
  29. ---------------
  30. To compile the qpopper, change the directory to where the 
  31. sources of qpopper are located and run the following 
  32. commands. 
  33. ./configure
  34. make
  35. Running the configure script builds the Makefile for your 
  36. operating system. Using the default settings, the Makefile 
  37. can run correctly for the following operating Systems: 
  38. Solaris, HPUX, IRIX, SCO, SunOS4.x, Linux, BSDI, FreeBSD 
  39. and Digital OSF1.
  40. Running make builds the popper for your Operating system. 
  41. Although there is no required location, many sysadmins prefer 
  42. /usr/local/lib.
  43. Modify your /etc/inetd.conf file to contain the line below. 
  44. You may have to modify it to support your version of the file. 
  45. pop3 stream tcp nowait root /usr/local/lib/popper popper -s
  46. If your OS does not have an inetd.conf file, then it uses 
  47. the config file /etc/servers.  Use the following line:
  48. pop3 tcp /usr/local/etc/qpopper qpopper -s
  49. For all OS versions you must modify, your /etc/services file 
  50. needs to include the following line:
  51. pop3         110/tcp                # Post Office
  52. Restart inetd with a kill -HUP inetdpid (some systems can 
  53. use inetd -c).
  54.     
  55. If you have modified these files for AIX, the commands 
  56. displayed below may work for you.  First you need to import 
  57. the new inetd.conf file, and then you need to re-init inetd.  
  58. Use the following commands:
  59.     inet imp
  60.     refresh -s inetd
  61. If you are running NIS, please don't forget to update your 
  62. maps.
  63. 2.0 RUN-TIME OPTIONS (COMMAND LINE OPTIONS):
  64. --------------------------------------------
  65. The following are command line options you may want to use.
  66. popper [-d] [-k] [-s] [-t trace-file] [-T timeout] [-b bulldir] 
  67. -b bulldir - This is the location of the bulletin 
  68.                directory.  The command line will override the 
  69.                compiled value if it is defined.   A bulletin 
  70.                database can be used to track the bulletins 
  71.                instead of the users home directory. 
  72.                This feature is enabled with -DBULLDB during 
  73.                compilation. -DBULLDB requires two blank files 
  74.                including the name of BULLDIR/bulldb.pag and 
  75.                the creation of BULLDIR/bulldb.dir.
  76. -d        - Enables the debug logging if compiled.
  77. -k        - If compiled with -DKERBEROS, this flag 
  78.                enables Kerberos support only. In qpopper, 
  79.                enter this command at the appropriate kpop port 
  80.                in inetd.
  81. -s        - This enables statistics logging.  
  82. -t logfile     - If debug and trace files are defined, output 
  83.                from logging goes to the trace file instead of 
  84.                syslog.
  85. -T timeout     - You can change the compiled default for read 
  86.                timeouts. This value causes the qpopper to 
  87.                terminate the connection with the client and 
  88.                move the messages back to the user's maildrop 
  89.                The RFC states that this timeout should be 600 
  90.                seconds (10 minutes). However, ideal settings 
  91.                are between 30 and 120 second.
  92. 3.0 APOP:
  93. ---------
  94. APOP is an alternate authentication method.  This is a secure
  95. method to authenticate without passing the password in 
  96. cleartext over the wire. Building this support to the server
  97. would require DBM or GDBM libraries to exist on the system. 
  98. GDBM is a GNU's version of dbm which can be obtained from any
  99. of GNU's distribution sites.
  100. To setup APOP - 
  101.  *  Create a user account(for eg:"pop") that would be used for 
  102.    administering the APOP users. 
  103.  *  Choose a location where APOP would place the authentication 
  104.    files (Make sure that would be read/write accessible only to 
  105.    the administering accoung("pop"). Typically "/etc/pop.auth".
  106.  *  Run configure script with the options --enable-apop and
  107.    --with-popuid.
  108.  eg: ./configure --enable-apop=/etc/pop.auth --with-popuid=pop
  109.    The first definition is the location of the authentication 
  110.    files; the second specifies the administering account that 
  111.    will own the authentication database.
  112.  *  Run the make, and this should produce executables "popauth"
  113.    and "popper".
  114.  *  Move the executables to a public location.
  115.  *  Change the owner on popauth to administering account("pop")
  116.    and set SUID.
  117.  eg: chown pop popauth
  118.      chmod u+s popauth
  119.  *  Initialize the authentication database files by running 
  120.    following command :
  121.    popauth -init
  122.  *  New users can be added by root or the administering ("pop")
  123.    user with the following command:
  124.     popauth -user <user>
  125.    Or removed with the following command:
  126.     popauth -delete <user>
  127.    Any other user can add themselves or change their password 
  128.    with the following command: 
  129.     popauth
  130. 4.0 BULLETINS:
  131. --------------
  132. Bulletins can be used to send the messages to all POP users.
  133. Bulletins are placed as plain text files in a specified format 
  134. under a directory known to the server.
  135. 4.1) To Enable Bulletins :
  136.  *  Choose the directory where the bulletins would reside.
  137.    Typically "/var/spool/bulls". The directory should be 
  138.    entereable with user privileges.
  139.  *  Run the configure script with option --enable-bulletins.
  140.    eg: ./configure --enable-bulletins=/var/spool/bulls
  141.  *  Running make should produce the popper executable.
  142.  *  Use the command line option -b for popper to override the 
  143.    compiled value of bulletin directory.
  144. 4.2) Writing Bulletins :
  145.      Bulletins have to be placed as files in the BULLDIR 
  146.     and the directory should be entereable and the files 
  147.     inside readable with user privileges.
  148.      Readable file names can be choosen for bulletins 
  149.     using the number.string form, for example, 
  150.     00001.Bulletin_one, 00002.2hr_Downtime_2-4-95.
  151.     Give each bulletin a unique and an ascending order number.
  152.     The number portion of filename should be 1 + the largest
  153.     bulletin number in directory. [Warning : Recycling the 
  154.     bulletin numbers is not supported yet.]
  155.      Contents in bulletin should be in same format as 
  156.     messages in mail spool. For example : 
  157.     -------------- start message -------------
  158.     From qpop Wed Nov  9 13:31:08 1998
  159.     Date: Wed, 9 Nov 1998 13:31:07 -0800 (PST)
  160.     From: "POP Administrator" <qpopper@qualcomm.com>
  161.     Subject: Example bulletin
  162.     This is an example bulletin to demonstrate the format
  163.     in which bulletins have to be placed.  This message 
  164.     will be appended to mailspool when the user checks 
  165.     his/her mail.
  166.     If you remove this file later on, it wouldn't be seen by
  167.     users who haven't checked their mail since you placed this
  168.     bulletin.
  169.     Try to preserve the rfc822 header format, esecially date
  170.     format. Failing which clients may not parse information 
  171.     in headers correctly. 
  172.     Allow a blank line between headers and message body.
  173.     --------------- end message --------------
  174.      Do not include the --- start message --- and 
  175.     --- end message --- lines to your bulletin.
  176. 4.3) How does bulletins work :
  177.     During POP session after the authentication by user, server
  178.     copies the bulletins placed in the BULLDIR in to the users
  179.     message spool. Server would figure out the last bulletin 
  180.     read by user by placing under users home directory ~/.popbull
  181.     the last bulletin number read. Any bulletin in the BULLDIR
  182.     with number greater than the one in ~/.popbull would be copied
  183.     to users message spool.
  184. 5.0 SERVER MODE :
  185. -----------------
  186. 5.1) To Enable Server mode :
  187.   * Run the configure script with option --enable-servermode.
  188.    and the rest is same.
  189. 5.2) When to use server mode : 
  190.     This mode of operation is specifically designed to work with 
  191.    POP accounts only. Use this mode for a better throughput from
  192.    server when there is huge user base to the server. Read all the
  193.    sections about server mode before enabling.
  194. 5.3) Bottleneck in normal mode :
  195.     In the default mode server after authentication copies the 
  196.    mail in users message spool to a temporary file(.user.pop).
  197.    Once user terminates the session the undeleted messages are
  198.    moved back to the message spool. When the users download all
  199.    the messages and delete them from the server (Which is commonly
  200.    done by most sites and clients.) on every session, server need
  201.    not have to make a copy of the message spool to temporary file.
  202.    The same is true for users who leave all their mail on server.
  203.    and do occasional mailchecks. For large pop servers, the extra 
  204.    IO processing can be a performance problem. SERVER-MODE is 
  205.    created to improve the performance of the mentioned users.
  206. 5.4) Server Mode Operation :
  207.     Enabling SERVER_MODE assumes that the other programs that write
  208.    to the message spool is "Delivery agent". In server mode, the 
  209.    mailspool is locked, scanned, and then unlocked. The qpopper 
  210.    assumes that only new messages will be appended to the mailspool.  
  211.    After retrieving messages, the qpopper checks for any 
  212.    remaining messages (undeleted messages)for status and UID 
  213.    updates. If there are any changes, it updates the mailspool.
  214. 5.5) Benefits of Server Mode :
  215.     The benefit of using this mode is that the mailspool is not
  216.    copied to the temporary spool area unless mail is left on 
  217.    the server, and when messages are read and/or deleted.  The 
  218.    NO_STATUS flag causes the qpopper to ignore the Status 
  219.    header and recalculates the UID each time the mailspool is 
  220.    run. When new messages are read, the new UID and Status 
  221.    headers are not updated and no copy of the mailspool is 
  222.    done.  
  223.     
  224.    In server mode, if all messages are deleted, then the 
  225.    mailspool is truncated (unless new messages have arrived).  
  226.    The initial copy is not processed, and IO cycles are saved.  
  227. 6.0 SHADOW PASSWORDS / ENHANCED SECURITY SYSTEMS :
  228. --------------------------------------------------
  229. Some OS configurations require different libraries to perform the 
  230. authentication.
  231. For these systems run the configure script with 
  232.   ./configure --enable-specialauth
  233. or
  234.   define AUTH_SPECIAL, the preprocessor macro.
  235. The known systems that Qpopper supports with AUTH_SPECIAL are,
  236.   Linux with Shadow passwords
  237.   Digital Unix with C2 Enabled.
  238.   HP Unix in Trusted Mode.
  239.   SUNOS4.x with Shadow passwords
  240. The systems for which the macro AUTH_SPECIAL is active by default are,
  241.   SCO
  242.   ULTRIX
  243.   SOLARIS
  244. 7.0 COMPILE TIME MACROS(for other options):
  245. -------------------------------------------
  246. There are options to consider when doing a build. If you 
  247. want to change any of the default settings, make the 
  248. appropriate changes to the Makefile while reading this 
  249. document. 
  250. 7.1) config.h & popper.h - There are some macro definitions 
  251. you may want to change.
  252.   a) MMDF_SEP_CHAR - Default is '01' (<CTL>-A).  
  253.  A line that starts with this character is 
  254.  considered an MMDF separator.  The rest of the 
  255.  line is copied as the separator regardless of its 
  256.  value.
  257.   b) BULLDIR - Is the compiled value as opposed to 
  258.  the command line option that enables bulletins.
  259.  You can also specify this value in the makefile 
  260.  -DBULLDIR="/var/spool/bulls". This makes
  261.  bulletins the default regardless of the command 
  262.  line options.  The option -DBULLDB uses
  263.  an ndbm or gdbm database for tracking bulletins 
  264.  sent to pop users.  If you use this feature, it 
  265.  will read the old ~user/.popbull file if it 
  266.  exists. -DBULLDB requires two blank files with 
  267.  the name of BULLDIR/bulldb.pag and 
  268.  BULLDIR/bulldb.dir to be created.
  269.   c) NEWBULLCNT - New users receive all bulletins 
  270.  by default. This value reduces the max bulletin 
  271.  value for new qpopper users.
  272.   d) OFF_T - If "off_t" is not typedefed for you, 
  273.  then set this definition to a type that lseek and 
  274.  ftruncate and expect it as an offset parameter.
  275.  UID_T, GID_T, and PID_T are also available for 
  276.  portability.
  277.   e) BLOCK_UID - This value protects mailboxes of 
  278.  all UIDs, at and below, from being accessed via 
  279.  the qpopper.  The default value is 10 meaning 
  280.  that root and other users with UID values of 10 
  281.  and under will not be able to login via the 
  282.  qpopper.
  283.   f) POP_DROP - When qpopper runs, it moves your 
  284.  mailspool to a temporary location (.user.pop).  The 
  285.  default location is in the mail spool directory.  
  286.  /tmp is an alternative but is considered to be a 
  287.  security risk. A system reboot usually clears the 
  288.  temporary .user.pop files. For performance reasons, a 
  289.  sysadmin who has 1000+ users can create a separate 
  290.  spool directory for qpopper files; /usr/spool/poptemp 
  291.  is preferable. Permissions should be the same as your 
  292.  mailspool with the same owner and group. Edit the value
  293.  of POP_DROP in config.h. 
  294.  For Eg: #define POP_DROP "/usr/spool/poptemp/.%s.pop"
  295. 7.2) Makefile - The makefile for your OS is setup for 
  296. the most common defaults. Below are some values you 
  297. may want to modify.
  298. These precompiler macros are to be placed in Makefile. 
  299. Append these defines to DEFS in Makefile. For eg to 
  300. enable Kerberos modify DEFS in Makefile to 
  301.   DEFS   =  -DHAVE_CONFIG_H -DKERBEROS
  302. To enable Kerberos and Verbose Debugging
  303.   DEFS   =  -DHAVE_CONFIG_H -DKERBEROS -DDEBUG
  304.   a) KERBEROS - Define this value if you want to 
  305.  add Kerberos IV support to the server.  Update 
  306.  the makefile so you can load the appropriate 
  307.  libraries(-lkrb).  This option works only if you 
  308.  have Kerberos headers and libraries installed.  
  309.  You can also define KUSEROK if you want to use 
  310.  the kuserok()function.
  311.   b1) AUTHFILE - Define this value to reference the 
  312.  file which allows only users listed in the file 
  313.  to have qpopper access.  
  314.  Ex: -DAUTHFILE="/etc/authfile"
  315.  The format is a list of user id's, one per line.
  316.   b2) NONAUTHFILE - Define this value to reference 
  317.  the file which excludes listed users.
  318.  Ex: -DAUTHFILE="/etc/nonauthfile"
  319.  The format is a list of user id's, one per line.
  320.   c) AUTH_SPECIAL - Define this value if your system 
  321.  supports special authorization mechanisms like 
  322.  shadow passwords or special crypt programs. 
  323.  Qpopper's makefiles support this feature. 
  324.  SunOS4.x does not support this by default, since 
  325.  it requires the code to be loaded which is not 
  326.  done by default. If you support shadow passwords 
  327.  on SunOS4.x, then define SUNOS4 and AUTH_SPECIAL in the 
  328.  Makefile. You may have to port a pop_pass routine 
  329.  for your OS before enabling this feature.
  330.   d) RPOP - This feature allows the pop client to 
  331.  use the hosts.equiv and .rhosts files for 
  332.  system/user validation.  This feature is not 
  333.  recommended since it can spoof both a PC or Mac 
  334.  system.
  335.   e) SECURENISPLUS - Add this definition if you are 
  336.  running secure NIS+; that is, when the qpopper 
  337.  server cannot access a user抯 encrypted password.
  338.   f) DEBUG - Verbose logging requires the -d 
  339.  commandline argument to enable.  Enable this only 
  340.  if you are having problems figuring out why the 
  341.  qpopper is not working.  Log files on busy 
  342.  systems expand quickly.
  343.     
  344.   g) SETPROCTITLE - This definition controls 
  345.  whether setproctitle()should be used to display 
  346.  user, host, and status in the process title.  
  347.  Your OS must support this feature.
  348.   h) KEEP_TEMP_DROP - Keep the .user.pop file.  It 
  349.  can determine the last time a user has accessed 
  350.  his/her mail.
  351.   i) BIND43 - BSD 4.3 is a domain name service.
  352.   j) SYSLOG42 - The QUALCOMM qpopper defaults to 
  353.  BSD 4.3 syslog.
  354.   k) HOMEDIRMAIL - Define this value if mail is 
  355.  spooled into the user's home directory. Check the
  356.  macro and the sprintf statement in pop_dropcopy.c 
  357.  ensuring that it is correct for your system.
  358.   l) APOP="/etc/pop.auth" - This value is the 
  359.  location of the authorization database.  Users 
  360.  found in this DB may not use user/pass 
  361.  authentication if they are found in the apop 
  362.  database.
  363.   m) POPUID="pop" - This value is the username of 
  364.  the owner of the apop database.
  365.   n) GNUPASS - This definition specifies the use of 
  366.  the (modified) GNU getpass routine which allows 
  367.  longer than 8 character passwords to be entered 
  368.  when using popauth. There is also a definition 
  369.  within popauth (NO_GETLINE) if you
  370.  compile this code, and it complains of not having 
  371.  a getline routine.
  372.   o) CONTENT_LENGTH - If your MTA (Mail Delivery
  373.  Agent) inserts a Content-Length header into the 
  374.  message, you must define this option.
  375.   p) SERVER_MODE - See SERVER MODE section for 
  376.  details.
  377.   q) NO_STATUS - Do not update the status Header of 
  378.  the message and do not store the UID in the 
  379.  message header.
  380.   r) NOUPDATEONABORT - By default, the qpopper  
  381.  enters the update state on abort. This flag 
  382.  causes the qpopper to ignore any changes 
  383.  (deletions) to occur if a qpopper session is 
  384.  aborted.
  385.   s) HASH_SPOOL=(1|2) - Mail is deposited into the 
  386.  mailspools by either 
  387.    (1) hashing the first 4 characters or 
  388.    (2) by using mailspools in directories as in the 
  389.   following:  /<1st letter>/<2nd letter>/file.
  390.   t) BULLDB - Use a central database located in the 
  391.  bulletin directory instead of a user抯 home 
  392.  directory.  This feature uses the user抯 .popbull 
  393.  file the first time for backwards compatibility.  
  394.  BULLDBDIR can be defined in the makefile if an 
  395.  alternate location for the bulletin database is 
  396.  desired.
  397.   u) CHECK_SHELL - Enable this compile time feature 
  398.  to lock out users via the shell value.  A user 
  399.  shell of /QPOPPER/ANY/SHELL allows the user 
  400.  access but blocks other programs that check 
  401.  shells.
  402.   v) GDBM - This value uses the GNU's GDBM library 
  403.  instead of NDBM.
  404. NOTES:
  405. The qpopper uses /etc/passwd to validate the userid for any user 
  406. in any mode (user/pass, kerberos, apop, authuser, nonauthuser).  
  407. The reason being that the mail spool file must be owned by 
  408. someone, and ownership relationships live in /etc/passwd.  So, a 
  409. user name must exist in both the passwd file as well as any of 
  410. the other files associated with other authentication methods.
  411. SCO - Some versions of SCO use the crypt_d library, others 
  412. the crypt_i library.  This distribution assumes crypt_d. SCO
  413. requires loading the Standard and TCP/IP development 
  414. environments to get the sockets and crypt libraries.
  415. IRIX - The default spool directory is /usr/mail; some 
  416. systems use /usr/spool/mail.
  417. FreeBSD - This requires the crypt library for password 
  418. comparisons. Check the FreeBSD.crypt file in the doc 
  419. directory for the appropriate locations.
  420. OSF/1 - If you are not using enhanced security (shadow 
  421. passwords), then turn off the AUTH define. Otherwise, you 
  422. receive a link error stating that set_auth_parameters() is 
  423. not defined.
  424. A/UX - A/UX does not support the sticky bit, so the default 
  425. dir is /tmp.  If you want to support shadow passwords, you 
  426. need to add the -DAUTH define into make.aux.  A shadow 
  427. passwd library is also required.  You can find one on
  428. jagubox.gsfc.nasa.gov.  A/UX requires gcc and libUTIL.a,
  429. also available on jagubox to build this version of qpopper.
  430. ISC - APOP does not work because the port was installed on a 
  431. system without dbm.  If you want to use apop, then get a 
  432. working dbm library, change the link line, and add the APOP 
  433. definitions.
  434. SUNOS - Some systems don't seem to have strerr defined in 
  435. the default location.  You may need to use the alternate 
  436. CFLAGS to compile correctly.
  437. NCR - You may need to increase STRTHRESH, for example, a 600 
  438. user system needs to increase from 0x200000 to 0x600000.
  439. Next - You should probably use NetInfo Manager available 
  440. under Next Admin to change your services file.
  441. Bulletins - The From line must be complete with address and 
  442. date. If the qpopper can use full From lines, then a simple 
  443. "From" line causes the message to get concatenated to the 
  444. previous message.
  445. DEBUGGING:
  446. Telnet to the qpopper port "telnet <qpopper host> pop3." 
  447. INETD is not servicing the POP port if you receive one of 
  448. the following error messages:
  449. 1. "connect: Connection refused"
  450. 2. "connect: Connection closed"
  451.     
  452. If you receive message 1, check your services file and make 
  453. sure the port name "POP3" is exactly the same as the one in 
  454. inetd.conf.  Also, it can indicate that you have not reset 
  455. inetd (kill -HUP <inetd PID>)(some systems can use inetd -
  456. c). 
  457. If you receive message 2, this indicates that inetd has the 
  458. correct port assigned to the qpopper, but that either 
  459. program cannot be located, or it is failing on startup.  If 
  460. you are compiling with a listed OS, chances are the POP 
  461. program is not named correctly in the /etc/inetd.conf file.  
  462. Otherwise, add the -d flag and check your log messages for 
  463. the source of the problem.
  464. If you have correctly installed the qpopper as far as inetd 
  465. is concerned, you will see the following line, and the 
  466. startup banner is displayed:
  467. +OK QPOP (version 2.53) at <system> starting. <13625.811191280@system>
  468. Now, you need to run two commands to give yourself 
  469. authorization to run qpopper. Make sure you have a message 
  470. or two queued so you can ensure that the qpopper is pointing 
  471. at the correct mail spool file.  Be aware that the password 
  472. is echoed back: 
  473.    user <your user name here>
  474.      +OK Password required for <your user name users>
  475.      pass <your password>
  476.      +OK mark has 2 message(s) (4123 octets).
  477. If you have the authority and if you have two messages, you 
  478. can enter QUIT to exit.  LIST and UIDL are two commands to 
  479. list messages by size and ID. At this point, Eudora or any 
  480. other pop client should not have any problems communicating 
  481. with your qpopper.
  482. If you get the following message: Unable to process From 
  483. lines (envelops), change recognition modes.
  484. This indicates that your mailbox is corrupted; that is, the 
  485. first line which includes the From header or MMDF separator 
  486. is not recognizable. Or there may be a From line displayed 
  487. that has never appeared before.  Edit the mail spool file 
  488. and send the first line.  If the first line is blank, then 
  489. remove it until you reach the From line.
  490. If an error message displays indicating that your password 
  491. is incorrect, you might be using a shadow password, and you 
  492. may need to use the -DAUTH definition. Or, you might be 
  493. using a UID less than 11 (default) which is automatically 
  494. blocked from access.