PostfixAdmin Download e Installazione

postfix-admin-logo

Useremo la versione Subversion di Postfix Admin in modo da avere sempre l’ultima versione aggiornata.

Configurazione con Apache

# cd /var/www
# svn co https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/trunk postfixadmin
# cd postfixadmin

PostfixAdmin Config File

  • /var/www/html/postfixadmin/config.inc.php

Prima di tutto indichiamo a PostfixAdmin che abbiamo installato e configurato tutto.

$CONF['configured'] = true;

Inseriamo l’indirizzo url completo nel quale si trova Postfix Admin

$CONF['postfix_admin_url'] = 'https://mail.example.com/postfixadmin';

Database Setup

Ora configuriamo la nostra connessione al database. In questo esempio stiamo utilizzando MySQL.

$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = ;

Impostiamo l’email address dell’amministratore del servizio in modo che tutti gli errori arrivino a questa mail.

$CONF['admin_email'] = '[email protected]';

Impostiamo i parametri del nostro server smtp.

$CONF['smtp_server'] = 'localhost';
$CONF['smtp_port'] = '25';

Le password verranno criptate utilizzando il seguente metodo:

$CONF['encrypt'] = 'md5';

Impostiamo la lunghezza minima della password:

$CONF['min_password_length'] = 7;

Inseriamo gli alias che verranno creati di default su tutti i domini.

$CONF['default_aliases'] = array (
    'postmaster' => '[email protected]',
);

Mailbox Setup

Se si vuole organizzare l’alberatura sul filesystem in modo da dividere le email per dominio, impostare a ‘YES’ questo campo. (Esempio: /usr/local/virtual/example.com/[email protected]

$CONF['domain_path'] = 'YES';

Se non vuoi avere il @dominio nel path finale della mailbox, sempre nell’alberatura sul filesystem, impostare a ‘NO’ il seguente campo. (Example: /usr/local/virtual/example.com/username al posto di /usr/local/virtual/example.com/[email protected])

$CONF['domain_in_mailbox'] = 'NO';

Valori di default. Specificare i valori di default. La quota è in MB.

$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '512';        (NOTE: Postfix dose NOT understand quota's and will not enforce them)

Transport Setup

Se si vuole definire un diverso transport per i domini di posta che si hanno (esempio: virtual o local), impostare a ‘YES’ la seguente voce.

$CONF['transport'] = 'YES';

Se si vogliono definire ulteriori transport, è possibile inserirli in un’array.

$CONF['transport_options'] = array (
    'virtual',  // for virtual accounts
    'local',    // for system accounts
    'relay'     // for backup mx
);

Transport default

$CONF['transport_default'] = 'virtual';

Virtual Vacation Setup

Se si vuole utilizzare la configurazione del ‘Vacation’ per le mailbox, ovvero l’avviso di assenza, impostare a ‘YES’ la seguente voce. (Attenzione: Bisogna installare il sistema Vacation secondo le specifiche al seguente sito. http://high5.net/postfixadmin/)

$CONF['vacation'] = 'YES';

Qui sotto vi è una variabile che setta un nome di dominio che verrà usato per il VACATION e che dovrà essere inserito nella configurazione transport del nostro Postfix in modo da abilitare i virtual vacations. Non deve essere necessariamente un dominio reale (i.e. non bisogna settare un reale nome DNS).

$CONF['vacation_domain'] = 'vacation.example.com';

Se si vuole che le utenze possa gestirsi in autonomia i vacation, impostare la prossima variabile a ‘YES’.

$CONF['vacation_control'] ='YES';

Se si vuole che i domain admins possano gestire gli user vacation, impostare la prossima variabile a ‘YES’.

$CONF['vacation_control_admin'] = 'YES';

Alias Control

Il Postfix Admin inserisce un alias all’interno della tabella alias del DB per ogni mailbox creata. La ragione di questa scelta è da attribuirsi al fatto che quando si vuole eseguire un catch-all delle normali mailboxes occorre che le mailbox siano replicate nella tabella alias. Se si vuole permettere la gestione degli aliases, impostare la prossima variabile a ‘YES’.

$CONF['alias_control'] = 'YES';

Per la gestione degli aliases da parte degli admin:

$CONF['alias_control_admin'] = 'YES';

Welcome Message

In questa sezione è possibile settare un messaggio che verrà inviato appena creata una nuova mailbox.

$CONF['welcome_text'] = <<<EOM
Hi,

Welcome to your new account.
EOM;

La variabile qui sotto riportata serve per eseguire un check del dominio in modo da validarne la configurazione a livello DNS prima di creare la singola mailbox.

$CONF['emailcheck_resolve_domain']='YES';

PostfixAdmin Webbased Setup

Il prossimo passo è la configurazione di PostfixAdmin attraverso la pagina di setup che permetterà la configurazione delle tabelle del DB.

http://mail.example.com/postfixadmin/setup.php

Oltre al DB, verificherà la corretta presenza di tutti i moduli necessari al funzionamento di Postfix Admin.

PostfixAdmin Virtual Vacation Setup

Installazione dei prerequisiti per il Vacation

Prima di tutto occorre installare i moduli necessari via CPAN

cpan> install MIME::EncWords
...
cpan> install MIME::Charset

Successivamente usare apt o yum per i pacchetti mancanti

yum

yum install perl-DBD-MySQL perl-Email-Valid perl-Mail-Sendmail perl-Log-Log4perl

apt

apt-get install libmail-sender-perl libdbd-pg-perl libemail-valid-perllibmime-perlliblog-log4perl-perlliblog-dispatch-perllibgetopt-argvfile-perllibmime-charset-perllibmime-encwords-perl

Configurazione di PostfixAdmin Virtual Vacation

Creiamo un nuovo utente a sistema che verrà dedicato al sistema vacation:

adduser -d /var/spool/vacation -s /sbin/nologin -r vacation

Copiamo il file vacation.pl all’interno della directory /var/spool/vacation (se non presente, crearla) e assegnamo i permessi dell’utenza e gruppo vacation ad essa.

# cp /var/www/html/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation
# chown vacation:vacation /var/spool/vacation/vacation.pl

Configurazione di PostfixAdmin Virtual Vacation script in Postfix

Configuriamo ora Postfix in /etc/postfix/master.cf e /etc/postfix/main.cf files.

  • /etc/postfix/master.cf
# PostfixAdmin Vacation Bounceback Filter
vacation  unix  -       n       n       -       -       pipe
       flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} ${recipient}
  • /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport

Inseriamo in /etc/postfix/transport (se non esiste occorre crearlo) la seguente voce

vacation.example.com   vacation:

Il vacation.example.com è lo stesso dominio che era stato inserito nel file conf di PostfixAdmin:

$CONF['vacation_domain'] = 'vacation.example.com';

Creiamo il file db per il file transport

postmap /etc/postfix/transport