1 alpine.tar.z web/INSTALL
2 /* ========================================================================
3 * Copyright 2006-2008 University of Washington
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * ========================================================================
15 BUILDING AND INSTALLING WEB ALPINE
16 ----------------------------------
18 This file provides brief instructions for building, installing and
19 configuring the Web Alpine application
21 Web Alpine's binary components are built along with the other Alpine
22 Mail System components. If the build process completed, that is the
23 commands ./configure and make completed without error, then you are
26 Unlike the other Alpine components, however, Web Alpine does not use
27 the "make install" method of installation. Between the various Web
28 Alpine pieces, web site layout and web server configuration,
29 variability and administrative preference is too great to be reliably
30 automated at this time.
32 For more information on the how's and why's of Web Alpine consult the
33 somewhat more technically complete treatment in
34 web/cgi/alpine/help/tech-notes.html.
36 At some point online FAQs and such may be available. If you find
37 anything missing, incomplete, or otherwise unclear please send a note
44 The Web Alpine package is distributed as part of the Alpine Mail System.
45 The source for the various components can be found in the "web/"
46 directory arranged, for the most part, by function.
50 source for Web Alpine's binary components: the
51 per-user/per-session serverette and the small library used for
52 inter-tcl script communication.
55 sources for various components required to provide
56 pubcookie web-login support
59 Tcl library used to help coordinate web page generation
62 CGI scripts used to generate Web Alpine pages, typically synonymous
63 with the web server's document root. It, in turn, contains:
66 Meat and potatoes of the Web Alpine Application.
69 Meat and potatoes of the Web Alpine 2.0 Application
72 Alpine session management scripts used to login, establish
73 an alpine session, logout and acquire IMAP server credentials
74 as needed. These scripts are distinct from the alpine/
75 scripts in order to properly scope the session key.
78 Various images and icons
81 Scripts that are accessed outside the scope of the Web Alpine
85 Sounds files that might be referenced by Web Alpine
88 general Web Alpine and default host configurations
91 binary executables providing services to the CGI scripts
94 binary and script routines used by both CGI scripts
97 For a more thorough discussion of the distribution's layout and
98 Web Alpine components see cgi/alpine/help/tech-notes.html.
101 BUILDING WEB ALPINE'S BINARY COMPONENTS
102 ---------------------------------------
104 For the most part, Web Alpine's binary components were built
105 automatically along with the rest of the Alpine Mail System.
107 If configure reports that it could not locate suitable TCL libraries
108 and header files, then it is likely that the components necessary for
109 Web Alpine were not built. Locating and installing a TCL development
110 environment appropriate for your system should get the build back on
111 track. Note, even though a tclsh interpreter may be available on the
112 command line, tools necessary to build TCL applications may need to be
113 installed separately.
115 If you plan to use UW pubcookie for browser-based network login,
116 please review src/pubcookie/README. Be sure the Web Alpine Mail
117 System was configured with the "--with-pubcookie" AND --with-web-bin=
118 options set. The latter is set to the directory that will eventually
119 contain Web Alpine's binary components. For the example system
120 described in the next section, you would add:
122 --with-pubcookie --with-web-bin=/usr/local/libexec/alpine/bin
124 to the configure script's command line.
127 ACQUIRING EXTERNAL LIBRARIES
128 ----------------------------
130 Web Alpine 2.0 makes heavy use of the functionality provided by the
131 The Yahoo! User Interface Library (YUI). By default, Web Alpine is
132 configured to generate pages that cause user's browser to request the
133 necessary library files directly from Yahoo servers.
135 Web Alpine can be easily configured to generate pages with references
136 to a local copy of the YUI libraries.
138 First, you will need to download the YUI libararies from:
140 http://developer.yahoo.com/yui/download/
142 They are made available to Web Alpine 2.0 scripts thru the symbolic
145 web/cgi/alpine-2.0/lib/yui
147 Simply install the downloaded library in the directory specified by
148 the symbolic link, or change the link to refer to the intalled
151 Second, you will need to change the _wp(yui) configuration setting
154 web/config/alpine.tcl
156 to reference the new location.
159 INSTALLING WEB ALPINE COMPONENTS
160 --------------------------------
162 Unfortunately, due to the variety of web server requirements and
163 configurations, Web Alpine installation must be done by hand and
164 requires several steps. To illustrate the procedure, a generic Fedora
165 Core 8 system with standard httpd package installed is used as an
166 example. On other systems, the general ideas are the same but the
167 specific file locations and server configuration settings will likely
168 vary. Note also that your system may have an additional security
169 layer installed, such as selinux, that may require extra configuration
170 that is beyond the scope of this explanation.
172 The first step is to build and configure the tools Web Alpine needs to
173 generate pages and access mail data. The following commands will put
174 those tools where they need to be within the web/ directory structure.
182 Second, the web/ directory tree needs to be made available to the web
183 server. On the example system, start by moving the web/ directory
184 tree into a more system-visible location. We'll also change the name
185 to reflect the current version number (for this example, 1.00) to help
186 keep future upgrades isolated. This command will likely require
187 elevated privileges using either sudo or after becoming root.
191 5. % sudo mv web /usr/local/libexec/alpine-2.00
193 Next, for simplicity, create a generically named symbolic link as a
194 synonym for the version-specific directory.
196 6. % cd /usr/local/libexec
198 7. % sudo ln -s alpine-2.00 alpine
200 After that, make the scripts that actually generate the user visible
201 portion of Web Alpine available to the web server.
205 9. % sudo ln -s /usr/local/libexec/alpine/cgi ./alpine
207 Now adjust the web server's configuration so that it can effectively
208 provide Web Alpine pages to connecting browsers by editing httpd's
211 10. % sudo vi /etc/httpd/conf/httpd.conf
213 After the section that starts with <Directory /var/www/html> and ends
214 with </Directory>, add the lines:
217 # This sets up Web Alpine
219 <Directory "/var/www/alpine">
220 Options FollowSymLinks ExecCGI -Indexes
226 If you intend for your web server to provide Web Alpine pages
227 exclusively, then simply edit the DocumentRoot to the directory
230 DocumentRoot /var/www/alpine
232 If your web server offers pages other than Web Alpine, specify a
233 prefix the web server should use for referencing Web Alpine pages by
234 adding this line before the <Directory> entry specified above:
236 Alias /webmail/ "/var/www/alpine/"
238 After saving httpd.conf with these small additions, it's time to
239 adjust Web Alpine's configuration.
241 First, be sure the symbolic link "/usr/local/libexec/alpine/bin/tclsh"
242 points to the tclsh interpreter for your system. The default should
243 work for the example system.
245 Then edit the Web Alpine configuration file to configure appropriate
246 settings for your environment.
248 11. % sudo vi /usr/local/libexec/alpine/config/alpine.tcl
250 The config file is itself a Tcl script, and the settings are
251 simply Tcl variable settings. Most are settings of elements
252 within the "_wp" array.
254 Starting from the top, skim the various configuration
255 settings. The primary one's to be aware of include:
257 admin email address offered in error pages
258 associated with problems that likely
259 require system administrator attention
261 helpdesk email address offered in help pages and
262 some error pages as a place to report
263 problems or get more information
265 comments email address offered in help pages
266 as place to send general comments on
269 urlprefix directory or path defined in the httpd.conf's
270 "Alias" setting. In example above, set this to
271 "webmail". If DocumentRoot set as above, set this
274 fileroot file system path to directory that contains cgi/,
275 config/, bin/, and lib/ directories. In example
276 above, set this to /usr/local/libexec/alpine.
278 Continue scanning the list, and adjust as needed. Most defaults
279 should be fine. Until you come to:
281 ispell full path to ispell application if installed
284 a performance setting that allows for relatively
285 safe disabling of SSL for connections that we know
286 are reasonably safe from sniffing. For our campus
287 web alpine installation, browsers associated with the
288 campus dial-in pools connecting to our servers
289 offer this kind of connection. Be careful.
292 determines whether or not web alpine offers the option
293 of connecting to a user-defined IMAP server on
296 hosts an array of default configurations that
297 correspond to default web alpine config files
298 in the config/ directory. these are what
299 is offered on the greeting page as the option
300 list of servers to connect to.
302 And, probably lastly:
305 the server used to send out script errors that are
306 so heinous that no web page error could be generated
309 The final step is to restart httpd and give it a try! Using a browser
310 pointed to your server's https port, try connecting to the alpine/
313 If you run into problems, rest assured you have our sympathies.
314 Because of the various components that must be coordinated, errors can
315 be difficult to resolve. The good news is, once initially configured
316 and working the system is reasonably stable. As for debugging, with
317 luck, the error response reported in the browser will point in a
318 useful direction. If not, check httpd access and error logs to verify
319 paths and check for exceptional conditions. Next, check syslog's
320 maillog for any exceptional reports issued by the alpined serverette.
321 Depending on the type of error, you may also have to consult the IMAP
322 server's logs for clues.
325 COLLECTED GOTCHAS AND SO FORTH
326 ------------------------------
328 First, it is strongly encourage that Web Alpine be run on a web server
329 that does not have general user accounts. The primary reason is to
330 maintain the privacy of the Web Alpine session key. Steps are taken
331 to minimize the risk and consequences of session key exposure, but
332 there are risks nonetheless.
334 For the most part, the default Web Alpine application settings should
335 require little adjustment for your particular environment. These
336 settings are in the web/config/pine.conf file which uses the same
337 format as alpine's pinerc file. The most likely setting to adjust is
340 By default, Web Alpine sends via SMTP to the localhost's SMTP port.
341 This setting can easily be adjusted by setting the smtp-server in
342 web/config/pine.conf to one or more external servers. Web Alpine can
343 also be directed to post to a local process by setting the
344 sendmail-path variable. Be aware, however, posting to a local process
345 (e.g., sendmail, postfix, etc), will likely require you to grant
346 trusted mail user privilege to the userid associated with the web
347 server process. Without such privilege, the SMTP envelope From will
348 be set to the web server's userid which causes all externally bounced
349 mail to be returned to the mailbox associated with the web server
356 See the Web Alpine technical notes for more detailed descriptions of
357 what's going on and why. If you have any questions or comments drop
358 us a note <chappa@gmx.com>.