Strutture dati di posta

From ortiche
Jump to navigation Jump to search

messaggi:

i messaggi vengono stoccati in formato maildir

disposti nel filesystem con la struttura dominio.di.posta/naomeutente@dominio.di.posta/Maildir

autenticazione:

i dati di autenticazione degli utenti di posta sono su database mysql gli account sono divisi per dominio di secondo livello in tabelle col seguente formato

CREATE TABLE `ortiche_net` (
`user` varchar(32) collate utf8_bin NOT NULL default ,
`domain` varchar(32) collate utf8_bin NOT NULL default ,
`password` varchar(32) collate utf8_bin NOT NULL default ,
`goto` varchar(32) collate utf8_bin NOT NULL default ,
`active` char(1) collate utf8_bin NOT NULL default 'Y',
`tipo` varchar(5) collate utf8_bin default 'mbox',
`md5salt` varchar(64) collate utf8_bin default NULL,
`modified` int(11) default NULL,
`deleted` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

'user' contiene la parte a sinistra della chiocciola 'domain' contiene la parte alla destra della chiocciola 'password' contiene la password hashata in formato md5 puro (senza salting) 'goto' e' la destinazione alla quale recapitare nel caso l'account sia un alias 'active' se a Y l'account e' attivo 'tipo' mbox nel caso di account di posta e alias nel caso di alias 'md5salt' password hashata in formato md5-salt 'modified' data di ultima modifica di un campo qualsiasi dei precedenti 'deleted' data di cancellazione della riga corrente

l'algoritmo di hashing e' doppio dato che non tutti i demoni lavorano bene con lo stesso algoritmo. per il campo active sarebbe interessante definire una semantica un po piu complessa. modified e deleted servono primariamente per la replicazione della tabella stessa.

la commutazione e attivazione dei vari servizi viene fatta su blocchi di account divisi per comune dominio di posta mediante la seguente tabella

CREATE TABLE `posta_domains` ( `domain` varchar(64) collate utf8_bin default NULL, `host` varchar(64) collate utf8_bin NOT NULL, `smtp` varchar(1) collate utf8_bin NOT NULL, `popimap` varchar(1) collate utf8_bin NOT NULL, `mx` varchar(1) collate utf8_bin default NULL, `relay` varchar(1) collate utf8_bin NOT NULL, `modified` int(11) NOT NULL, `deleted` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


'domain' e' un dominio di posta (la parte alla destra della chiocciola) 'host' e' un server, individuato dal proprio hostname 'smtp' 'popimap' 'mx' e 'relay' indicano (con una Y o una N) se account di posta con il dato domain devono essere accettati o meno rispettivamente: come autenticazione SASL per l'invio di messaggi, come autenticazione POP e IMAP per l'accesso alla casella di posta, come indirizzi destinatario della posta entrante, da stoccare localmente e come indirizzi destinatario della posta entrante da inoltrare successivamente ad un'altro server sul server host 'modified' e 'deleted' come sopra