[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.
Action unknown: addtobook

Welcome to the Slackware Documentation Project

Installing OpenWebMail in Slackware64 14.0

This article explains how to install OpenWebmail and configure it so that you can access your mailbox using a web interface from any place with internet access and a webbrowser available.
These instructions were tested on Slackware64 14.0 64-bit OS and the latest openwebmail-current.tar.gz (actually version 2.53)
It means, you are configured and running Apache web server and Sendmail mailserver.

Install libraries and required packages

Using CPAN via CPAN.pm:

perl -MCPAN -e shell                    [as root]
o conf prerequisites_policy ask

then:

install CGI
install Compress:Zlib
install Convert::ASN1
install Digest
install Digest::MD5
install IO::Socket::SSL
install MIME::Base64
install Net::SSLeay
install Text::Iconv

quit

Install OpenWebMail

  1. First, download latest openwebmail: openwebmail-current.tar.gz
  2. Create a directory wherever you want it, say “/ADISKS/openwebm_inst” and move the downloaded file “openwebmail-current.tar.gz” into that directory.
  3. Extract all files using the command
    tar -zxvBpf openwebmail-current.tar.gz

    Use “tar” with “-zxvBpf” option, due to strange file permissions inside that archive. I tried to untar it via midnight comander built-in archive tools, ans the wrapsuid script would not work because of this…

  4. Move the extracted directory “cgi-bin/openwebmail” to “/var/www/cgi-bin/openwebmail
  5. Move the extracted directory “data/openwebmail” to your webserver's DocumentRoot (in a default Apache configuration, that will be “/var/www/openwebmail”)
  6. Change directory to “/var/www/openwebmail”, delete the file index.html and run the command
    ln -s redirect.html index.html
  7. Change directory to “/var/www/cgi-bin/openwebmail” and run the command
    perl misc/tools/wrapsuid/wrapsuid.pl /var/www/cgi-bin/openwebmail

    You should see the following output:

    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-folder.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-main.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-read.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-send.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-cal.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-webdisk.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-advsearch.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-abook.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-viewatt.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-vdomain.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-saprefs.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-prefs.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-tool.pl
    Fixing /tmp/openwebmail/cgi-bin/openwebmail/openwebmail-spell.pl
  8. Then go to “/var/www/cgi-bin/openwebmail/etc” and edit the configuration files:
    1. Change “openwebmail.conf” according to:
      domainnames             auto                                                                                                                                
      auth_module             auth_unix.pl                                                                                                                        
      mailspooldir            /var/spool/mail                                                                                                                     
      ow_cgidir               /var/www/cgi-bin/openwebmail                                                                                                        
      ow_cgiurl               /cgi-bin/openwebmail                                                                                                                
      ow_htmldir              /var/www/openwebmail                                                                                                                
      ow_htmlurl              /                                                                                                                                   
      logfile                 /var/log/openwebmail.log     
    2. Change directory to “/var/www/cgi-bin/openwebmail/etc/defaults”, edit auth_unix conf to become
      passwdfile_plaintext    /etc/passwd                                                                                                                         
      passwdfile_encrypted    /etc/shadow                                                                                                                         
      passwdmkdb              none
    3. In directory “/var/www/cgi-bin/openwebmail/etc/defaults”, edit db.conf as follows:
      dbm_ext                 .db                                                                                                                                 
      dbmopen_ext             .db                                                                                                                                 
      dbmopen_haslock         no
    4. Then, change directory to “/var/www/cgi-bin/openwebmail” and run
      ./openwebmail-tool.pl --init
  9. After that, go to “/var/www/cgi-bin/openwebmail”, check that there are files starting with a dot (like “.openwebmail.pl”) and old-style filenames (like “openwebmail.pl)”. Set the suid bit for these scripts:
    chmod u+s openwebmail*.pl
    chmod u+s .openwebmail*.pl

Apache additional configuration

  • Add a AddHandler cgi-script .cgi .pl option in /etc/httpd/httpd.conf in section “Directory /srv/httpd/” httpd.conf like be:
    ServerRoot "/usr"
    Listen 80
    
    LoadModule authn_file_module lib64/httpd/modules/mod_authn_file.so
    LoadModule authn_core_module lib64/httpd/modules/mod_authn_core.so
    LoadModule authz_host_module lib64/httpd/modules/mod_authz_host.so
    LoadModule authz_groupfile_module lib64/httpd/modules/mod_authz_groupfile.so
    LoadModule authz_user_module lib64/httpd/modules/mod_authz_user.so
    LoadModule authz_core_module lib64/httpd/modules/mod_authz_core.so
    LoadModule access_compat_module lib64/httpd/modules/mod_access_compat.so
    LoadModule auth_basic_module lib64/httpd/modules/mod_auth_basic.so
    LoadModule reqtimeout_module lib64/httpd/modules/mod_reqtimeout.so
    LoadModule filter_module lib64/httpd/modules/mod_filter.so
    LoadModule mime_module lib64/httpd/modules/mod_mime.so
    LoadModule log_config_module lib64/httpd/modules/mod_log_config.so
    LoadModule env_module lib64/httpd/modules/mod_env.so
    LoadModule headers_module lib64/httpd/modules/mod_headers.so
    LoadModule setenvif_module lib64/httpd/modules/mod_setenvif.so
    LoadModule version_module lib64/httpd/modules/mod_version.so
    LoadModule proxy_module lib64/httpd/modules/mod_proxy.so
    LoadModule proxy_connect_module lib64/httpd/modules/mod_proxy_connect.so
    LoadModule proxy_ftp_module lib64/httpd/modules/mod_proxy_ftp.so
    LoadModule proxy_http_module lib64/httpd/modules/mod_proxy_http.so
    LoadModule proxy_fcgi_module lib64/httpd/modules/mod_proxy_fcgi.so
    LoadModule proxy_scgi_module lib64/httpd/modules/mod_proxy_scgi.so
    LoadModule proxy_ajp_module lib64/httpd/modules/mod_proxy_ajp.so
    LoadModule proxy_express_module lib64/httpd/modules/mod_proxy_express.so
    LoadModule lbmethod_byrequests_module lib64/httpd/modules/mod_lbmethod_byrequests.so
    LoadModule lbmethod_bytraffic_module lib64/httpd/modules/mod_lbmethod_bytraffic.so
    LoadModule lbmethod_bybusyness_module lib64/httpd/modules/mod_lbmethod_bybusyness.so
    LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so
    LoadModule unixd_module lib64/httpd/modules/mod_unixd.so
    LoadModule status_module lib64/httpd/modules/mod_status.so
    LoadModule autoindex_module lib64/httpd/modules/mod_autoindex.so
    ##openwebmail!
    LoadModule cgi_module lib64/httpd/modules/mod_cgi.so
    LoadModule dir_module lib64/httpd/modules/mod_dir.so
    LoadModule alias_module lib64/httpd/modules/mod_alias.so
    
    <IfModule unixd_module>
    User apache
    Group apache
    
    </IfModule>
    
    # 'Main' server configuration
    #
    # The directives in this section set up the values used by the 'main'
    # server, which responds to any requests that aren't handled by a
    # <VirtualHost> definition.  These values also provide defaults for
    # any <VirtualHost> containers you may define later in the file.
    ServerAdmin webmaster@sten.lv
    
    ServerName elephant.org
    
    
    <Directory />
        AllowOverride None
    </Directory>
    
    DocumentRoot "/srv/httpd/"
    <Directory "/srv/httpd/">
    
        Options Indexes FollowSymLinks Includes MultiViews ExecCGI
    
        AllowOverride All
        #None
    
        #
        # Controls who can get stuff from this server.
        #
    ##    Require all granted
    Order allow,deny
    Allow from all
    ###Need! otherwise "save as binary...." appear...
    AddHandler cgi-script .cgi .pl
    
    </Directory>
    
    #
    # DirectoryIndex: sets the file that Apache will serve if a directory
    # is requested.
    #
    <IfModule dir_module>
        DirectoryIndex index.html index.shtml index.php
    </IfModule>
    
    #
    # The following lines prevent .htaccess and .htpasswd files from being
    # viewed by Web clients.
    #
    <Files ".ht*">
        Require all denied
    </Files>
    
    
    
    ErrorLog "/var/log/httpd/error_log"
    
    LogLevel warn
    
    <IfModule log_config_module>
    
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
        LogFormat "%h %l %u %t \"%r\" %>s %b" common
    
        <IfModule logio_module>
          # You need to enable mod_logio.c to use %I and %O
          LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
        </IfModule>
    
        #
        ##CustomLog "/var/log/httpd/access_log" common
    
        #
        CustomLog "/var/log/httpd/access_log" combined
    </IfModule>
    
    <IfModule alias_module>
      #
        ScriptAlias /cgi-bin/ "/srv/httpd/cgi-bin/"
    
    </IfModule>
    
    <IfModule cgid_module>
        #
    #    Scriptsock cgisock
    </IfModule>
    
    #
    # "/srv/httpd/cgi-bin" should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have that configured.
    #
    ##<Directory "/srv/httpd/cgi-bin">
    ##    AllowOverride None
    ##    Options None
    ##    Require all granted
    ##</Directory>
    #for openwebmail
    <Directory "/srv/httpd/cgi-bin">
        AllowOverride All
        Options ExecCGI
        Order Allow,deny
        Allow from all
    </Directory>
    
    
    <IfModule mime_module>
        #
        TypesConfig /etc/httpd/mime.types
    
        #
        AddType application/x-compress .Z
        AddType application/x-gzip .gz .tgz
    
        #
    ##    AddHandler cgi-script .cgi .pl
        # for openwebmail
    ##    AddHandler cgi-script .pl
        
    #test openwebmail
    ##AddHandler server-parsed  .html
    ###AddHandler server-parsed  .pl
    
    </IfModule>
    
    
    
    # Virtual hosts
    Include /etc/httpd/httpd-vhosts.conf
    
    # Various default settings
    Include /etc/httpd/extra/httpd-default.conf
    
    # Configure mod_proxy_html to understand HTML4/XHTML1
    <IfModule proxy_html_module>
    Include /etc/httpd/extra/proxy-html.conf
    </IfModule>
    
    <IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    </IfModule>
    
    # Deal with user agents that deliberately violate open standards
    #
    <IfModule setenvif_module>
    BrowserMatch "MSIE 10.0;" bad_DNT
    </IfModule>
    <IfModule headers_module>
    RequestHeader unset DNT env=bad_DNT
    </IfModule>
    
    
    # Uncomment the following line to enable PHP:
    #
    Include /etc/httpd/mod_php.conf
    
    

Links

Sources

 howtos:network_services:install_openwebmail ()