Giggle 0.4
Giggle in Debian
Debian “Etch” 4r0
È stata rilasciata Etch; la nuova stable!!!!!!!!!!!!!!!!!!!
Per la gioia dei mouse-maniaci questa versione ha un installer grafico; grande innovazione per debian che fino ad ora era rimasta affezzionata all’interfacia pseudografica con ncurses (che preferisco :)
Qui trovate i cd(21) o dvd(3) da scaricare da http/ftp, bittorrent o jigdo; io uso quest’ultimo, visto che devo scaricare sia dvd per i386 che per amd64 con jigdo non devo scaricare due volte i pachetti indipendenti dall’architettura con un risparmio di banda e tempo :)
Buona Etch a tutti!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Postfix + Mysql + TLS + Saslauth [Sarge]
Qualche appunto su come mettere su un sistema di posta con virtual domain su mysql, connessioni crittate e autenticazione.
Il tutto ovviamente su Debian Sarge
I pacchetti che ci servono sono: postfix postfix-tls postfix-mysql mysql-client mysql-server sasl2-bin libsasl2-modules pam-mysql
Iniziamo creando il databse con le tabelle che ci servono su mysql:
CREATE DATABASE mailserver;#
# Table structure for table alias
#
USE mailserver;
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;#
# Table structure for table domain
#
USE mailserver;
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;#
# Table structure for table mailbox
#
USE mailserver;
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;
Ora creiamo l’utente che dovrà accedere al db:
GRANT insert,update,select ON mailserver.* TO mailuser@127.0.0.1 IDENTIFIED BY 'password'
Bisogna creare i file di configurazione di postfix per accedere a mysql, mettiamoli in /etc/postfix/mysql/
virtual_alias_maps.cf
user = mailuser
password = password
hosts = 127.0.0.1
dbname = mailserver
table = alias
select_field = goto
where_field = address
virtual_domains_maps.cf
user = mailuser
password = password
hosts = 127.0.0.1
dbname = mailserver
table = domain
select_field = domain
where_field = domain
# la direttiva ‘additional_conditions’ permette di aggiungere delle clausole
# alla ricerca all’interno del database, nel caso seguente (che consiglio di non
# decommentare, richiede che la il dominio non sia di backup e che sia attivo.
#additional_conditions = and backupmx = ‘0′ and active = ‘1′
virtual_mailbox_maps.cf
user = mailuser
password = password
hosts = 127.0.0.1
dbname = mailserver
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = ‘1′
virtual_mailbox_limit_maps.cf
user = mailuser
password = password
hosts = 127.0.0.1
dbname = mailserver
table = mailbox
select_field = quota
where_field = username
#additional_conditions = and active = ‘1′
relay_domains_maps.cf
user = mailuser
password = password
hosts = 127.0.0.1
dbname = mailserver
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = ‘1′
Ora che abbiamo finito di trafficare con query e sql passiamo a configurare saslauthd e pam per l’autenticazione.
Bisogna creare i file /etc/postfix/sasl/smtpd.conf e /etc/pam.d/smtp :
smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
smtp
auth required pam_mysql.so user=mailuser passwd=password host=127.0.0.1 db=mailserver table=mailbox usercolumn=username passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mailuser passwd=password host=127.0.0.1 db=mailserver table=mailbox usercolumn=username passwdcolumn=password crypt=1
Ora visto che postfix gira in un chroot dobbiamo fare in modo che possa vedere il soket creato da saslauth:
Creiamo la cartella per saslauthd all’interno del chroot postfix:
mkdir -p /var/spool/postfix/var/run/saslauthd
facciamo in modo che appartenga al gruppo sasl:
chgrp sasl /var/spool/postfix/var/run/saslauthd
e aggiungiamo l’utente postfix al gruppo sasl:
addgroup postfix sasl
rimuoviamo la cartella /var/run/saslauthd/ e al suo posto creiamo un collegamento a /var/spool/postfix/var/run/saslauthd/ :
rm -r /var/run/saslauthd/
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
Come ultima cosa dobbiamo editare il file /etc/default/saslauthd, bisogna decommentare:
#START=yes
il meccanismo di autenticazione deve essere pam:
MECHANISMS="pam"
e aggiungiamo:
PARAMS="-r"
in questo modo verrò considerato in sede di autenticazione non solo l’username ma anche il dominio cosi da non creare conflitti.
Possiamo ora riavviare saslauthd:
/etc/init.d/saslauthd restart
Ultima cosa da fare prima di configurare postfix è creare l’utente vmail, che sarà l’utente proprietario di tutte le mail dei nostri virtual domain, che saranno memorizzate in /var/spool/mail/vmail
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/spool/mail/vmail -m
per sicurezza ho anche dato:
passwd -l vmail
che impedisce all’utente vmail di loggarsi e gli ho messo come bash: /bin/false nel file /etc/passwd
E’ giunta l’ora di configurare postfix!!!!!!!!!!
Aggiungiamo al file /etc/ppostfix/main.cf:
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf# vengono assegnate all’utente che gestirà e mailbox un uid e gid statici
# cosa da evitare di dover creare un utente reale per ogni utente virutale
virtual_gid_maps = static:5000
virtual_uid_maps = static:5000# questa direttiva indica dove verranno collocate le mailbox virtuali
virtual_mailbox_base = /var/spool/mail/vmail# indica con quale backend (mysql) e dove trovare la lista dei domini gestiti
# dal server
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_domains_maps.cf
virtual_mailbox_limit = 51200000# indica in quale file di configurazione sono presenti i parametri per ottenere la
# lista delle mailbox presenti nel sistema
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = virtual# Per la gestione delle quote delle mailbox
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
# dove trovare i limiti di dimensione della mailbox e come comportarsi
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# indica i domini per cui il server deve accettare la posta in ingresso
relay_domains = mysql:/etc/postfix/mysql/relay_domains_maps.cfsmtpd_sasl_auth_enable = yes
smtpd_sasl_security_option = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipientsmtpd_use_tls = yes
smtpd_tls_cert_file = /path/chiavi/ssl/certificato.key
smtpd_tls_key_file = /path/chiavi/ssl/chiave.key
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Queste aggiunte le ho fatte al file che l’installazione mette di default scegliendo all’installzione “Solo locale”
Nello stesso file vanno ancora modificati due valori:
myhostname = pippo.esempio.it
dove pippo.esempio.it è un FQDN valido; e aggiungere il vostro ip esterno a
inet_interfaces = 127.0.0.1, ipesterno
L’ultima modifica da fare è decommentare in /etc/postfix/master.cf:
tlsmgr fifo - - n 300 1 tlsmgr
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
Ora possiamo riavviare postfix!!!!!!!!!!!!!!!!!!!!!!!!
/etc/init.d/postfix restart
Il nostro server di posta ora è attivo e funzionante!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Nel riempire il database bisogna tenere conto che l’autenticazione viene fatta da pam quindi il record password va riempito con la password crittografata con la funzione crypt; php, perl, python dovrebero avere una funziona apposita, oppure scrivete un programmino in C.
Link:
http://guide.debianizzati.org/index.php/Postfix-mysql
http://www.howtoforge.com/virtual_postfix_mysql_quota_courier