[L]ash in BackGround

Archive for the ‘Debian’ Category

Giggle 0.4

leave a comment »

E’ in debian la nuova versione di giggle!!
Questa nuova versione in particolare supporta il nuovo formato in cui sono salvati i remote branch e li visualizza nella history; inoltre è stata aggiunta la possibiltà di salvare le patch!

Annunci

Written by lashbg

dicembre 21, 2007 at 23:58

Pubblicato su Debian, Giggle, Linux

Giggle in Debian

leave a comment »

E’ entrato da poco in Debian il mio primo pachetto!!!!
Giggle è un programma grafico fatto con le gtk che permette di visionare un repository git!

Written by lashbg

maggio 9, 2007 at 20:51

Pubblicato su Debian, Giggle, Linux

Debian “Etch” 4r0

leave a comment »

È 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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Written by lashbg

aprile 10, 2007 at 14:00

Pubblicato su Debian, Linux

Postfix + Mysql + TLS + Saslauth [Sarge]

with 6 comments

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.cf

smtpd_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_recipient

smtpd_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

Written by lashbg

gennaio 17, 2007 at 22:28

Pubblicato su Debian, Howto, Linux

Tagged with , , , ,