--------------------------------------------------------- The Exilist list manager for exim --------------------------------------------------------- (c) Tom Kistner CONCEPT --------------------------------------------------------- Exilist is a mailing list manager (MLM). Its current key features are: - Sophisticated, modern, good-looking web interface - Browser-based administration, including list creation - Multi-domain capable - VERP bounce detection - SQL Database backend - Transparent installation, nothing done behind your back (yes, that means MANUAL installation !) :) PREREQUISITES ---------------------------------------------------------- You need - a MySQL server (not necessarily on the same machine) - exim with MySQL support compiled in - Perl with MySQL modules (DBI, DBD::mysql) and the 'Storable' module - A web server with CGI capabilities (Apache will work fine) INSTALLATION ---------------------------------------------------------- Step 1: Untar the distribution Untar the distribution file somewhere inside your webservers document root. You'll get an "exilist" folder which will be the "home" of exilist. Step 2: Database setup In MySQL, create a new database and create the exilist tables by running the script doc/exilist-tables.sql. I'd propose to use "exilist" as the database name. Optionally, create a user with full access to these tables if you do not want to use the MySQL default user. Step 3: Webserver setup Modify your webserver to execute CGI scripts ending with '.pl' in the exilist home (see Step 1). In the exilist home, chown the 'temp' dir to the effective user ID of the webserver (usually 'wwwrun' or 'apache'). This directory contains a '.htaccess' file that denies all webserver based client access. If your web server does not honor the contents of that file, you must make sure that the 'temp' directory cannot be accessed by web clients. Edit the 'index.html' file to redirect to 'exilist.cgi.pl', or modify your web server to accept 'index.pl' as a DirectoryIndex. In the last case, you can delete 'index.html'. If your perl path is not '/usr/bin/perl', edit the shebang lines in exilist.cgi.pl and exilist.mgr.pl accordingly. Step 4: Exim setup Make sure MySQL is running. Edit your exim configuration. In Section 1: - Add your exilist MySQL database to mysql_servers. If this is your only MySQL database, use a line like this: mysql_servers = localhost/exilist/username/password - Add the following variables block, and edit it to suit your setup. Exilist should run under the web servers UID and GID. EXILIST_HOME=/path/to/the/home/of/exilist EXILIST_BIN=EXILIST_HOME/exilist.mgr.pl EXILIST_UID=apache EXILIST_GID=apache - Add EXILIST_UID to your trusted_users setting. If you don't have one yet, use: trusted_users=EXILIST_UID - Tweak smtp_accept_queue_per_connection to a higher value. I use smtp_accept_queue_per_connection = 100 This will deliver the first 100 messages of a list posting immediately, the rest will be queued up and will be delivered on the next queue run. To tune the speed of posting delivery, either crank up smtp_accept_queue_per_connection even higher, or decrease the queue runner interval (one minute ?). In the 'Routers' section: - Add the following 2 routers at the end of the routers section. This implies that the domains used for list hosting are in your local_domains. # exilist posting router exilist_post_router: driver = accept verify_sender = false condition = ${lookup mysql {select id from lists where name='$local_part' and domain='$domain'}} transport = exilist_post_transport # exilist bounce router exilist_bounce_router: driver = accept verify_sender = false condition = ${if match {$local_part}{^[0-9]+_return_[0-9]+\\.[A-Za-z0-9-]+\$}{1}{0}} transport = exilist_bounce_transport In the 'Transports' section: - Add the following 2 transports (warning, long lines, take care with cut and paste): # exilist post transport exilist_post_transport: driver = pipe command = EXILIST_BIN "${lookup mysql {select id from lists where name='$local_part' and domain='$domain'}}" post none $message_id $sender_address $reply_address user = EXILIST_UID group = EXILIST_GID current_directory = EXILIST_HOME home_directory = EXILIST_HOME return_fail_output # exilist bounce transport exilist_bounce_transport: driver = pipe command = EXILIST_BIN ${extract{1}{_}{$local_part}} ${extract{2}{_}{$local_part}} ${extract{3}{_}{$local_part}} $message_id $sender_address $reply_address user = EXILIST_UID group = EXILIST_GID current_directory = EXILIST_HOME home_directory = EXILIST_HOME return_fail_output Step 5: Exilist setup Edit the 'exilist.pm' file and scroll down one page. You'll find the configuration section. It has comments. Read them and fill in your matching details. Step 6: Log in Open your preferred Web Browser. IT MUST HAVE (basic) JAVASCRIPT SUPPORT. That mostly means event triggers and getElementById etc. LYNX WILL NOT WORK. Hint: Use Mozilla, Opera, Konqueror, Netscape 6 or even IE. Browse to your exilist web address. If everything works, you'll see the anonymous user list interface. If something bombs, read the above documentation again. If the problem persists, contact me by mail (tom@duncanthrax.net). Now create a new account on the system. After you have done that, you need to turn yourself into a superuser. Access the database with your favourite management tool (PHPMyAdmin is nice, but you can use the mysql command line tool too). In the 'users' table, change the 'status' column for your newly created account from '1' to '2'. You are now an exilist superuser. Step 7: Enjoy ! Create a list, edit its properties, and subscribe to it. Send stuff to the list to see if you get it. If everything works, read the USAGE section below. If not, send me feedback. USAGE -------------------------------------------------------------------- This section should contain a users manual. Since this is the first release of this project, announced only to a limited audience, I count on your intelligence to use the web interface. To get online help, you can hover over the '?' buttons with the mouse. :) I'll fill in this section later, when I have collected some feedback. CONTACT -------------------------------------------------------------------- Tom Kistner http://duncanthrax.net/exilist-distro/