- Info: https://systemausfall.org/toolforge/ezmlm-web/
- Versione: 3.3.1 (scarica)
- patch per gcc-7 (tx Ricardo Brisighelli)
ezmlm-web è un'interfaccia web per l'amministrazione delle mailing-list di ezmlm.
Lo svilupp di ezmlm-web sembra essere concluso e perciò non c'è la compatibilità con ezmlm-idx-7.x, perciò se si è deciso di usarlo sarà bene installare la versione 5.1. Se si incontrano problemi di compilazione con le ultime versioni di gcc (>=7) installare queste patch (tx Ricardo Brisighelli).
Per i principianti: questo argomento è avanzato e accessorio. E' dunque consigliabile saltare questo passaggio e cominciare a creare le proprie liste semplicemente con qmailadmin e ritornare qui dopo.
Avvertenza: non gestire le mailing list già create da qmailadmin con ezmlm-web e viceversa.

Pagine man
Prerequisiti
- ezmlm-idx v0.40 o superiore
- clearsilver v0.10.3 (è necessario solo il supporto a perl)
- Perl v5.004 e i seguenti moduli;
- Mail::Ezmlm v0.07
- Mail::Address v1.15 OR Email::Address
- CGI v2.6
- CGI::Carp v1.06
- DB_File v1.65
- Getopt::Std v4.1
- File::Find
- File::Copy v2.02
- File::Path v1.07
- Text::ParseWords v3.24
- MIME::QuotedPrint
- Encode (optional)
clearsilver
- Info: http://www.clearsilver.net/
- Versione: 0.10.5 (scarica)
Lo sviluppo clearsilver sembra essere finito. L'ultima versione 0.11 sembra non compilare e quindi consiglio di rimanere alla versione 0.10.5. Se si incontrano problemi di compilazione con le ultime versioni di di gcc (>=7) provare questa patch (tx Ricardo Brisighelli).
cd /usr/local/src
wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
tar xzf clearsilver-0.10.5.tar.gz
cd clearsilver-0.10.5
chown -R root:root .
# necesssario il solo supporto a perl
./configure \
--prefix=/usr \
--enable-perl \
--with-perl=/usr/bin/perl \
--disable-compression \
--disable-remote-debugger \
--disable-apache \
--disable-python \
--disable-ruby \
--disable-java \
--disable-csharp \
--disable-gettext
make
make install
moduli perl
perl -MCPAN -e shell > o conf prerequisites_policy ask > install Mail::Ezmlm Mail::Address Email::Address CGI CGI::Carp DB_File Getopt::Std File::Find File::Copy File::Path Text::ParseWords MIME::QuotedPrint Encode > quit
Installazione di ezmlm-web
Decomprimere e compilare:
cd /usr/local/src wget --no-check-certificate https://systemausfall.org/toolforge/ezmlm-web/download/ezmlm-web-3.3/ezmlm-web-3.3.1.tar.gz tar xzf ezmlm-web-3.3.1.tar.gz cd ezmlm-web-3.3.1 chown -R root:root . perl Makefile.PL make make install
Installazione delle pagine man
Sfortunatamente le pagine man sembrano non essere installate automaticamente con il processo "make install". Quindi è necessrio copiarle a mano:
cp man/*.1 /usr/local/share/man/man1 cp man/*.5 /usr/local/share/man/man5
Impostazione del wrapper
Dal momento che vogliamo gestire liste per domini multipli, lo script ezmlm-web.cgi deve essere di proprietà dell'utente vpopmail, che ha accesso a tutte le liste. Pertanto creeremo un setuid wrapper (come si dice in italiano, involucro?) di ezmlm-web.cgi di cui sarà proprietario vpopmail. Il wrapper è una copia di ezmlm-web.cgi che apache può eseguire con i privilegi del proprietario del file (vpopmail in questo caso). Lo si può chiamare index.cgi o come si vuole e deve essere salvato in un posto dove apache ha accesso di lettura (/var/www/ezmlm-web per esempio).
mkdir /var/www/ezmlm-web # ezmlm-web-make-suid vpopmail /var/www/ezmlm-web/index.cgi Successfully created '/var/www/ezmlm-web/index.cgi' for user 'vpopmail'. # ls -la /var/www/ezmlm-web/index.cgi -rwsr-xr-x 1 vpopmail vchkpw 6231 2011-01-22 23:24 /var/www/ezmlm-web/index.cgi*
Notare l'etichetta s.
Impostazione di apache
<VirtualHost *:80> DocumentRoot /var/www/ezmlm-web ServerName ezmlm-web.yourdomain.net <Directory "/var/www/ezmlm-web"> Options +ExecCGI Order allow,deny Allow from all AllowOverride AuthConfig </Directory> # html and css stuff Alias /ezmlm-web/ /usr/local/share/ezmlm-web/www-data/ <Directory "/usr/local/share/ezmlm-web/www-data"> Order allow,deny Allow from all </Directory> # ModSecurity stuff (ignore if you don''t have ModSecurity installed) <IfModule security2_module> SecRuleRemoveById 970902 </IfModule> </VirtualHost>
Mettere in sicurezza la cartella di apache che richiede l'autenticazione
mkdir /usr/local/etc/htdocspwd chown -R apache:apache /usr/local/etc/htdocspwd chmod -R o-rx /usr/local/etc/htdocspwd /usr/local/apache/bin/htpasswd -bc /usr/local/etc/htdocspwd/ezmlmpwd ezmlm-admin1 [password]
Dunque abbiamo creato un utente ezmlm con una password [password] salvata nel file /usr/local/etc/htdocspwd/ezmlmpwd che è accewssibile solo da apache.
Creare un file .htaccess per controllare la cartella via /usr/local/etc/htdocspwd/ezmlmpwd
cat > /var/www/ezmlm-web/.htaccess << __EOF__ AuthType Basic AuthName "Authentication required" AuthUserFile /usr/local/etc/htdocspwd/ezmlmpwd Require user ezmlm-admin1 __EOF__
Configurazione multidominio
Dal momento che ogni amministratore dei domini virtuali avrà l'interesse di gestire le liste, possiamo configurare ezmlm-web per consentire account multipli con una sola interfaccia web.
Copiare examples/ezmlmwebrc.dist e examples/multidomain.conf.dist in /usr/local/etc/ezmlm-web
mkdir /usr/local/etc/ezmlm-web cp examples/ezmlmwebrc.dist /usr/local/etc/ezmlm-web/ezmlmwebrc cp examples/multidomain.conf.dist /usr/local/etc/ezmlm-web/multidomain.conf
file webusers
webusers contiene le definizioni per l'accesso alle liste al di sotto di una certa directory. Vedere il man per l'utilizzo.
In questo esempio /home/vpopmail/domains/domain.net è la cartella che include la lista di certi domini come sotto-cartelle. ezmlm-admin1 è l'utente apache che avrà i privilegi per gestire le liste per domain.net. Tener presente che ezmlm-admin1 è l'utente definito prima.
cat > /home/vpopmail/domains/domain.net/webusers << __EOF__ ALL: ezmlm-admin1 ALLOW_CREATE: ezmlm-admin1 __EOF__
file multidomain.conf
cd /usr/local/etc/ezmlm-web/
Creare i domini ammessi modificando l'array %DOMAINS come nell'esempio seguente:
%DOMAINS = (
domain1.net => {
name => "Domain1.net",
list_dir => "/home/vpopmail/domains/domain1.net",
dot_dir => "/home/vpopmail/domains/domain1.net",
mail_domain => "domain1.net",
mail_prefix => "",
webusers_file => "/home/vpopmail/domains/domain1.net/webusers",
},
domain2.net => {
name => "Domain2.net",
list_dir => "/home/vpopmail/domains/domain2.net",
dot_dir => "/home/vpopmail/domains/domain2.net",
mail_domain => "domain2.net",
mail_prefix => "",
webusers_file => "/home/vpopmail/domains/domain2.net/webusers",
}
);
file ezmlmwebrc
Modificare il file examples/ezmlmwebrc e le variabili per soddisfare il proprio sistema. Prestare attenzione a che tutte le variabili già definite nel file multidomain.conf siano qui commentate, altrimenti sarnno sovrascritte da ezmlmrc. Per esempio:
cat /usr/local/etc/ezmlm-web/ezmlmwebrc
# Configuration file for ezmlm-web 3.3
# ===========================================================================
# This file is not just an ordinary configuration file - it contains valid
# perl statements that are executed just like any other perl script. When
# editing this file, be careful that it is still valid perl when you have
# finished (perl -w ezmlmwebrc ;-)
#
# See the manpage of ezmlmwebrc(5) for a list of all available configuration
# settings.
# ---------------------------------------------------------------------------
# Where do we store lists on this server ... Try "$HOME_DIR/lists".
# This directory will automatically be created if needed.
# BEWARE: the (resulting) path MUST be absolute (starting with a slash)!
#$LIST_DIR = "$HOME_DIR/lists";
# Multi-Domain-Support
# This is a quite advanced setting for special installations.
# Most people should just ignore it.
# Anyway - if you want to control more than one directory containing
# different lists, then you should:
# 1) copy examples/multidomain.conf.dist to /etc/ezmlm-web/multidomain.conf
# 2) adjust /etc/ezmlm-web/multidomain.conf to your setup
# 3) uncomment the following line
# 4) make sure that your multi domain settings are not overriden by settings below
warn "multidomain.conf failed" unless (defined do "/etc/ezmlm-web/multidomain.conf");
# Where do we store the dotqmail files of this user?
# (defaults to the home directory of the executing user)
# You will have to change this value, if you use a multi domain
# vpopmail setup. Otherwise just leave the setting turned off.
# BEWARE: the (resulting) path MUST be absolute (starting with a slash)!
#$DOTQMAIL_DIR = "/home/vpopmail/domains";
# Where is the webusers file for access-permissions
# defaults to "$LIST_DIR/webusers"
#$WEBUSERS_FILE = "$LIST_DIR/webusers";
# Where are the language files
# usually something like /usr/local/share/ezmlm-web/lang
$LANGUAGE_DIR = "/usr/local/share/ezmlm-web/lang";
# Where are the template files
# usually something like /usr/local/share/ezmlm-web/template
$TEMPLATE_DIR = "/usr/local/share/ezmlm-web/template";
# Safe list deletion?
# 0 = move List to $LIST_DIR/_deleted_lists -> recoverable :)
# 1 = allow user to delete list completely. No backup, therefore no recovery.
$UNSAFE_RM = 0;
# Who is the qmail alias user on this system (usually alias ;)
$ALIAS_USER = "alias";
# Where do the qmail control files live on this system ...
# defaults to /var/qmail/control
$QMAIL_BASE = $Mail::Ezmlm::QMAIL_BASE . '/control';
# default mailing list domain name (optional)
#$MAIL_DOMAIN = "liste.sagredo.eu";
# default prefix of the local part of the addresses of mailing lists
# useful for some qmail-ldap setups
#$MAIL_ADDRESS_PREFIX = "lists-";
# Do we want to allow ``pretty'' names - ie more human readable ones
# This will slow ezmlm-web down a bit for large lists
$PRETTY_NAMES = 1;
# Do we want to allow the users to be allowed to upload a file containing
# lists of email addresses to subscribe?
$FILE_UPLOAD = 1;
# What switches to we want ezmlm-web to have on as default. The ezmlm-make
# defaults are aBDFGHIJKLMNOpQRSTUWX (small means enabled, CAPITALS mean
# disabled). The defaults below should be reasonable - I use them ;)
$DEFAULT_OPTIONS = "aBDFGHiJkLMNOpQRSTUWx";
# Which interface type should be displayed by default?
# available values are: easy, normal and expert
$DEFAULT_INTERFACE_TYPE = "expert";
# exclude some interface options from being displayed
# BEWARE: this does not protect the specific option from being changed.
# It just hides the visible interface items. Anyone can still craft a manual
# http request, that could change the specified options.
# See the list of filenames below $TEMPLATE_DIR/config_options/. The
# blacklist may contain any of these filenames (without '.cs' extension).
#$INTERFACE_OPTIONS_BLACKLIST = ('lang_select', 'mime_reject');
# What is the title of this document?
$HTML_TITLE = "ezmlm-web - a mailinglist administration interface";
# Optional: some permanent links (visible in the top right corner)
#@HTML_LINKS = (
# { name => 'ezmlm-web homepage',
# url => 'https://systemausfall.org/toolforge/ezmlm-web' },
# { name => 'domain\'s root',
# url => '/'},
# );
# use a cascading style sheet (css)
# the setting is interpreted as a URL
# this setting was formerly known as "HTML_CSS_FILE"
$HTML_CSS_COMMON = "/ezmlm-web/default.css";
# choose a coloring scheme - the available files are:
# color-blue-gray: default style used before v3.2
# color-red-blue: use gradients instead of plain colors (since v3.2)
#
# be aware, that some stylesheets may require additional graphic
# files in the same directory
$HTML_CSS_COLOR = "/ezmlm-web/color-red-blue.css";
# the default interface language
# all other available translation are available via the web interface
# the configured preferred browser language of a user can override this
# setting individually
$HTML_LANGUAGE = "en_US";
# enabled support for encrypted mailing lists - defaults to 0 (off)
# This include keyring management and mailing list handling in general.
#$ENCRYPTION_SUPPORT = 0;
# Define the default location of gnupg keyrings used for mailing list
# encryption. If the location starts with a slash ('/'), then it is considered
# to be an absolute path. Otherwise it is relative to the current list
# directory. For the ezmlm-gpg mailing list encryption system, the default
# (".gnupg") is usable.
#$GPG_KEYRING_DEFAULT_LOCATION = ".gnupg";
Ora è possibile testare l'nstallazione puntando il browser all pagina http://ezmlm.yourdomain.net/index.cgi

