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