Il seguente Manuale vi illustra l'installazione e la configurazione du un server per la gestione delle posta elettronica.
I protocolli di autenticazione abilitati saranno: POP3 SMTP IMAP
La consistenza degli utenti sarà gestita tramite database

Download dei pacchetti utili alle installazioni:

https://www.redhat.com/apps/download/
http://de.postfix.org/ftpmirror/index.html
http://www.courier-mta.org/download.php

Per il test sono state utilizzate le seguenti versioni:

RedHat Enterprise 4
Postfix 2.5
courier-imap 0.61.0
courier-authlib 0.62.1

INSTALLAZIONE MYSQL

#creazione utente e gruppo mysql

shell> groupadd mysql
shell> useradd -g mysql mysql


#estrazione pacchetto mysql

shell> cd /usr/local
shell> gunzip < /product/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz | tar xvf -
shell> ln -s mysql-5.1.30-linux-i686-icc-glibc2 mysql


#assegnazione proprietà, diritti e variabili

shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> export PATH=$PATH:/usr/local/mysql/bin
shell> export PATH=$PATH:/usr/local/mysql/scripts/


#installazione

shell> mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data


#attivazione mysql

shell> mysqld_safe --user=mysql &


#registrazione variabili

shell> export LD_LIBRARY_PATH=/usr/local/mysql/lib
shell> echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql_lib.conf
shell> ln /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock


#creazioni database e tabelle di gestione mail

shell> mysqladmin -u root --password='' create postfix


#Creazione tabella alias

USE postfix;
CREATE TABLE `alias` (
`address` varchar(255) NOT NULL default '',
`goto` text NOT NULL,
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';


#Creazione tabella domini

USE postfix;
CREATE TABLE `domain` (
`domain` varchar(255) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`aliases` int(10) NOT NULL default '0',
`mailboxes` int(10) NOT NULL default '0',
`maxquota` int(10) NOT NULL default '0',
`transport` varchar(255) default NULL,
`backupmx` tinyint(1) NOT NULL default '0',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (domain)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';


#Creazione tabella mailbox

USE postfix;
CREATE TABLE `mailbox` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`maildir` varchar(255) NOT NULL default '',
`quota` int(10) NOT NULL default '0',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';


#Insert di test

USE postfix;
INSERT INTO domain (domain,description) VALUES ('test.it','Dominio di test');
INSERT INTO alias (address,goto) VALUES ('user@test.it', 'user@test.it');
INSERT INTO alias (address,goto) VALUES ('test@test.it', 'user@test.it');
INSERT INTO mailbox (username,password,name,maildir) VALUES ('user@test.it','password','Mailbox User','user@test.it/');


INSTALLAZIONE POSTFIX


#aggiungere le seguenti righe al file passwd per aggiungere i seguenti utenti

vi /etc/passwd
postfix:*:12345:12345:postfix:/no/where:/no/shell
courier:x:12346:12346::/home/courier:/bin/bash


#aggiungere le seguenti righe al file group per aggiungere i seguenti gruppi

vi /etc/group
postfix:*:12345:
postdrop:*:54321:
courier:x:12346:


#estrazione pacchetto

shell> cd /product
shell> gunzip postfix-2.5.6.tar.gz
shell> tar xvf postfix-2.5.6.tar
shell> cd postfix-2.5.6


#installazione

shell> make -f Makefile.init makefiles \
> 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
> 'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'
shell> make
shell> make install


#creazione directory per mailbox e asseganzione diritti

shell> mkdir /usr/local/virtual
shell> chown -R postfix:postfix /usr/local/virtual
shell> chmod -R 771 /usr/local/virtual


#Configurazione

shell> vi /etc/postfix/main.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:1001
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1001
virtual_transport = virtual
virtual_uid_maps = static:1001
# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
relay_domains = proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf
shell> vi /etc/postfix/master.cf
virtual unix - n n - - virtual
smtp inet n - y - - smtpd
shell> vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
#Syntax with postfix 2.2.x:
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
shell> vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
#additional_conditions = and backupmx = '0' and active = '1'
#Syntax with postfix 2.2.x:
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'
shell> vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'
#Syntax with postfix 2.2.x:
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
#query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = 1
shell> vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
#additional_conditions = and active = '1'
#Syntax with postfix 2.2.x:
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'
shell> vi /etc/postfix/mysql_relay_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '1'
#Syntax with postfix 2.2.x:
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'


INSTALLAZIONE COURIER


#estrazione pacchetto

shell> cd /product
shell> tar -jxf courier-authlib-0.62.1.tar.bz2
shell> cd courier-authlib-0.62.1


#installazione

shell> ./configure WITH_MYSQL=yes
shell> make
shell> make install
shell> make install-configure


#configurazione

shell> vi /usr/local/etc/authlib/authmysqlrc
#DEFAULT_DOMAIN test.it
#MYSQL_CRYPT_PWFIELD password
MYSQL_CLEAR_PWFIELD password
MYSQL_DATABASE postfix
MYSQL_GID_FIELD '12345'
MYSQL_HOME_FIELD '/usr/local/virtual'
MYSQL_LOGIN_FIELD username
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_OPT 0
MYSQL_PASSWORD postfix
#MYSQL_PORT 0
# Uncomment below if you want quota support.
#MYSQL_QUOTA_FIELD quota
MYSQL_SERVER localhost
# Default FreeBSD Socket
#MYSQL_SOCKET /var/mysql/mysql.sock
# Default RedHat Socket
#MYSQL_SOCKET /var/lib/mysql/mysql.sock
# Default Debian Sarge Socket
#MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_UID_FIELD '12345'
MYSQL_USERNAME postfix
MYSQL_USER_TABLE mailbox
#MYSQL_WHERE_CLAUSE server='example.domain.com'



#INSTALLAZIONE COURIER


#estrazione pacchetto

shell> cd /product
shell> tar -jxf courier-imap-4.4.1.20080920.tar.bz2
shell> chown -R courier courier-imap-4.4.1.20080920


#installazione

shell> su - courier
shell> cd courier-imap-4.4.1.20080920
shell> ./configure --prefix=/usr/local/courier-imap
shell> make
shell> make check
shell> exit
shell> make install
shell> make install-configure


#AGGIUNTA VARIABILI DI SISTEMA

vi /etc/profile

export LD_LIBRARY_PATH=/usr/local/mysql/lib
export PATH=$PATH:/usr/local/mysql/bin/
export PATH=$PATH:/usr/local/mysql/scripts/
export PATH=$PATH:/usr/local/etc/authlib/
PATH="/usr/lib/courier-imap/bin:$PATH"
if test -w /etc
then
PATH="/usr/lib/courier-imap/sbin:$PATH"
fi
export PATH
MANPATH="/usr/lib/courier-imap/man:$MANPATH"
export MANPATH
export PATH=$PATH:/usr/local/sbin/
export PATH=$PATH:/usr/local/courier-imap/libexec/


#START SERVIZI


come utente mysql:

shell> mysqld_safe --user=mysql & (già startato precedentemente)


come utente root:

shell> authdaemond start
shell> postfix start
shell> imapd.rc start
shell> pop3d.rc start