Ottenere ed installare il software

Parecchi del software necessario è già incluso nella tua distribuzione Linux, ad esempio SuSE include Cyrus, da che mi ricordi già dalla 7.1. Dalla SuSE 8.1, cyrus-imap 2.1 and sasl2 sono inclusi e funzionano. E' comunque raccomandato compilare Cyrus da te. SuSE inoltre non include Postfix abilitato per MySQL.

Pacchetti obsoleti per Debian stable e testing: Gli utenti Debian probabilmente vorranno installare i pacchetti forniti da Debian. Sfortunatamente Debian stable (Woody) e testing (sarge) usano versioni obsolete delsoftware usato in questo HOWTO. Ho testato i rispettivi pacchetti dalla Debian unstable (sid) e funzionano. Notate che i manteiners di Debian sono molto conservatori. Il pacchetti »postfix-mysql«, »libsasl2« and »cyrus21-imapd« sono stabili »stabili« anche se si trovano solo nell' »unstable« tree.

Ottenere ed installare MySQL

Compilazione e installazione

cd /usr/local
tar -xvzf mysql-4.0.16.tar.gz
cd mysql-4.0.16

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb

make
make install

/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf
ldconfig

ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

Per migliorare la sicurezza,aggiungete un utente mysql al vostro sistema ad es. »mysql«, quindi

chown -R mysql /usr/local/mysql/var

Se volete far partire automaticamente MySQL al boot, copiate /usr/local/mysql/share/mysql/mysql.server su /etc/init.d/ per SuSE, per Redhat esso è/etc/rc.d/init.d invece di /etc/init.d/. In seguito dovrete aggiungere link simbolici su /etc/init.d/rc3.d per SuSE e /etc/rc.d/rc3.d per Redhat.

Il seguente esempio riguarda SuSE Linux ma può facilmente essere cambiato per Redhat o altre distribuzioni Linux o Unix commerciali.

cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/k08mysql

Ottenere e installare Berkeley DB

Berkeley DB è un requisito ber compilare Cyrus-SASL e Cyrus-IMAP. Alcuni sistemi lo propongono con versioni recenti ma senza gli header fil installati. Controlla i cd/DVD della tua distribuzione per vedere se puoi installare gli header file del pacchetto. Normalmente questo pacchetto è chiamato bdb-devel.

La versione presente in GNU/Debian Linux è superata, dovrai invece compilare la versione più recente. Se hai già installato Berkely DB sulla tua Debian, disinstallalo per prevenire conflitti.

E' anche molto importante che Cyrus-SASL e Cyrus-IMAP vengano compilati con la stessa versione di Berkely DB se no potreste avere dei problemi.

Versioni Berkeley DB: Io ho testato solo la versione 4.0.x di bdb. Fatemi sapere se funziona se usate versioni più nuove.

Compilazione e Installazione di Berkeley DB

cd dist

./configure --prefix=/usr/local/bdb

make
make install

echo /usr/local/bdb/lib >> /etc/ld.so.conf
ldconfig

Ottenere e Installare OpenSSL

Download OpenSSL

Origin-Site http://www.openssl.org

Compilazione e Installazione

cd /usr/local
tar -xvzf openssl-0.9.7c.tar.gz

cd openssl-0.9.7c

./config shared

make
make test
make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig

Selezionate la vostra CPU per migliorare la velocità: Di il Makefile genera codice per il processore i486. Potete cambiare questa impostazione modificando il Makefile dopo aver lanciato il config shared. Cercate -m486 e sostite ad es. con-march=athlon

Ottenere ed Installare Cyrus SASL and IMAP

Compilare Cyrus SASL and IMAP dai sorgenti non è un'attività semplice. Ci sono una serie di requisiti che devono essere soddisfatti, una serie di difficoltà legate alle autenticazioni da considerare.

Creare l'utente cyrus

In molti sistemi non c'è l'utente e il mailgroup cyrus di default. Cerca un UID libero, normalmente i demoni girano con UID minori di 100. Ad esempio io uso UID 96 perchè in SuSE c'è di default/etc/passwd.

groupadd mail
useradd -u 96 -d /usr/cyrus -g mail cyrus
passwd cyrus

Compilazione e Installazione Cyrus SASL

tar -xvzf cyrus-sasl-2.1.17.tar.gz
cd cyrus-sasl-2.1.17

./configure \
--enable-anon \
--enable-plain \
--enable-login \
--disable-krb4 \
--disable-otp \
--disable-cram \
--disable-digest \
--with-saslauthd=/var/run/saslauthd \
--with-pam=/lib/security \
--with-dblib=berkeley \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--with-plugindir=/usr/local/lib/sasl2


make
make install

mkdir -p /var/run/saslauthd

cd saslauthd
make testsaslauthd
cp testsaslauthd /usr/local/bin

echo /usr/local/lib/sasl2 >> /etc/ld.so.conf
ldconfig

La libreria SASL è installata in /usr/local/lib/sasl2 ma alcuni programmi si aspettano SASL in /usr/lib/sasl2. Quindi è una buona idea creare un link simbolico: ln -s /usr/local/lib/sasl2 /usr/lib/sasl2.

Compilare Cyrus-IMAP

tar -xvzf cyrus-imapd-2.1.16.tar.gz
cd cyrus-imapd-2.1.16

export CPPFLAGS="-I/usr/include/et" 

./configure \
--with-sasl=/usr/local/lib \
--with-perl \
--with-auth=unix \
--with-dbdir=/usr/local/bdb \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--without-ucdsnmp \

make depend
make
make install

Script per l'avvio automatico

Se volete far partire il demone di Cyrus IMAP automaticamente al boot, avete bisogno di uno script di avvio. Inserite questo script in /etc/init.d/. Per Redhat, è in /etc/rc.d/init.d invece di/etc/init.d/.

#!/bin/bash
#
# Cyrus startup script

case "$1" in
    start)
        # Starting SASL saslauthdaemon
        /usr/local/sbin/saslauthd -c -a pam&

        # Starting Cyrus IMAP Server
        /usr/cyrus/bin/master &
        ;;

    stop)

        # Stopping SASL saslauthdaemon
        killall saslauthd

        # Stopping Cyrus IMAP Server
        killall /usr/cyrus/bin/master

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac

Se avrò tempo, provvederò ad uno script più sofisticato, intanto questo funziona.

Ora create i link simbolici nelle directory dei runlevel (SuSE):

ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/S20
ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/K10

For Redhat:

ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/S20cyrus
ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/K10cyrus

Ottenere e Installare Postfix

Creazione di uno User-ID (UID) e Group-ID (GID) per postfix

Prima di compilare e installare postfix,assicuratevi di creare un utente e gruppo »postfix« and a »maildrop« se già non esistono. Prima controllate i gruppi, potete farlo con grep postfix /etc/group e grep maildrop /etc/group

Se non ci sono gruppi e utenti potete crearli. Cerca un UID e un GID liberi, nel seguente esempio io userò come UID e GID 33333 per Postfix e 33335 per maildrop. Questi ID's corrispondoni negli altri documenti.

groupadd -g 33333 postfix
groupadd -g 33335 maildrop

useradd -u 33333 -g 33333 -d /dev/null -s /bin/false postfix
useradd -u 33335 -g 33335 -d /dev/null -s /bin/false maildrop

Compilazione e Installazione

La seguente sezione mostra cosa dovete fare per installare MySQL dal sorgente comedescritto sopra. Se installate MySQL da un package binario come rpm o deb, allora dovete cambiare gli include e library flags a -I/usr/include/mysql e -L/usr/lib/mysql.

Il vecchio MTA deve essere disinstallato

E' importante che disinstalliate ogni versione di sendmail dal sistema basato su RPM. Io suggerisco di rimuovere sendmail e installare al suo posto Postfix. Gli RPM di SuSE hanno bisogno di almeno un MTA. Dopo aver installato l'RPM di Postfix, reinstallate Postfix sopra quell'installazione RPM seguendo questo HOWTO.

tar -xvzf postfix-2.0.16.tar.gz

cd postfix-2.0.16

make makefiles 'CCARGS=-DHAS_MYSQL \
-I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \
-I/usr/local/include/sasl -I/usr/local/bdb/include' \
'AUXLIBS=-L/usr/local/mysql/lib/mysql \
-lmysqlclient -lz -lm -L/usr/local/lib -lsasl2 -L/usr/local/bdb/lib'
make
make install

Durante make install verranno chieste una serie di domande. Premendo sempre Enter dovreste soddisfare le richieste. Per gli utenti Redhat potrebbe essere utile inserire /usr/local/share/man

Ora avete bisogno di creare alcuni link simbolici per far partire Postfix automaticamente all'avvio. L'esempio è per SuSE Linux, consulta il manuale del produttore per altre distribuzioni.

ln -s /usr/sbin/postfix /etc/init.d/rc3.d/S14postfix
ln -s /usr/sbin/postfix /etc/init.d/rc3.d/K07postfix

Ottenere ed Installare PAM

PAM è installato di default nella maggior parte delle distribuzioni Linux. Io non descriverò come compilare PAM da soli perchè potrebbe bloccare il sistema, descriverò invece come installare il package.

Gli utenti di una distribuzione basata su RPM possono dare i seguenti comandi:

rpm -i pam-devel.rpm

Gli utenti Debian possono installare il package devel con i segienti comandi:

apt-get install libpam0g-dev

Ottenere ed installare pam_mysql

Installazione

tar -xvzf pam_mysql-0.5.tar.gz

cd pam_mysql

Se avete compilato mysql da soli, controllate il Makefile ed inserite il corretto percorso alle vostre librerie mysql e aggiungete il flag di compilazioneCFLAGS -I/path/to/mysql/include.

ifndef FULL_LINUX_PAM_SOURCE_TREE
export DYNAMIC=-DPAM_DYNAMIC
export CC=gcc
export CFLAGS=-O2 -Dlinux -DLINUX_PAM \
       -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
       -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional \
       -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline \
       -Wshadow -pedantic -fPIC -I/usr/local/mysql/include
export MKDIR=mkdir -p
export LD_D=gcc -shared -Xlinker -x -L/usr/local/mysql/lib/mysql -lz
endif

Dopo aver personalizzato il file potete continuare con la compilazione di pam_mysql.

make

cp pam_mysql.so /lib/security

[[ ! -d /var/lib/mysql ]] && mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Ottenere ed Installare Web-cyradm

Download

Origin-Site: http://www.web-cyradm.org

Installazione

cd /usr/local/apache/htdocs

tar -xvzf web-cyradm-0.5.4.tar.gz

touch /var/log/web-cyradm.log
chown nobody /var/log/web-cyradm.log

Dopo avere scompattato web-cyradm, spostatelo all'interno della DocumentRoot del vostro Web server.

Questo è tutto. Non dovete configurare lintero malloppo del software.

Web-cyradm 0.5.4 è considerato stabile, ed è stato rilasciato il 5-12-2003

Poiché web-cyradm usa PEAR per il suo livello di astrazione di database, avete bisogno di una copia recente di PEAR. Questa è inclusa nelle recenti versioni di PHP. Io suggerisco fortemente di aggiornare il PHP alla 4.3.4, in quanto sono stati corretti parecchi importanti bachi.

Un errore frequente è quello di dimenticare di creare il logfile e cambiare la proprietà dell'UID di Apache. Questo è solitamente »nobody« o »wwwrun«.

Creare il database e le tabelle

Ora abbiamo bisogno di creare il database e le tabelle per Postfix e Web-cyradm e aggiungere un utente al database.

Web-cyradm si presenta con parecchi scripts MySQL: insertuser_mysql.sql e create_mysql.sql. Il primo inserisce gli utenti del database nel database »mysql« e crea il database »mail«. Il secondo crea le tabelle richieste e popola il database con un utente amministratore iniziale e l'utente cyrus.

Gli altri scripts sono usati per gli aggiornamenti incrementali da vecchie releases.

La password per l'utente del database »mail« in questo esempio è »secret«. Inserite l'utente e la password che preferisci.

Il nome utente per il superuser iniziale è »admin« con password »test«.

Cambia la password di default!

Se utenti malintenzionati vogliono ottenere un accesso non autorizzato al sistema, il primo tentativo che fanno è sempre l'username e la password fornita dal produttore. E' importante che li cambiate negli scripts prima di utilizzarli.

Dopo aver cambiato la username e la password, applicate gli scripts:

/usr/local/mysql/bin/mysql -u root -p < \
/usr/local/apache/htdocs/web-cyradm/scripts/insertuser_mysql.sql

/usr/local/mysql/bin/mysql mail -u mail -p < \
/usr/local/apache/htdocs/web-cyradm/scripts/create_mysql.sql

Upgrading from 0.5.3 to 0.5.4

Nella versione 0.5.4 c'è un piccolo miglioramento nel database. Potete aggiornare il database utilizzanto il relativo script fornito con il pacchetto.

mysql mail -u mail -p < \ 
scripts/upgrade-0.5.3-to-0.5.4_mysql.sql

Dalla Versione 0.5.3 web-cyradm supporta pienamente le password criptate DES. Potete usare lo script in php migrate.php per convertire le password degli utenti da testo in chiaro a criptato compatibile unix (DES).

La migrazione da testo in chiaro a criptata non può essere annullata

Assicuratevi di avere un backup recente del database prima di fare qualunque cosa con lo script di migrazione.