Per chi amministra un server, è importante comprendere a fondo come dovrebbe essere configurato il proprio server di posta, soprattutto perchè in caso di problemi o guasti, deve essere in grado di intervenire e trovare la soluzione nel minor tempo possibile ( soprattutto se il server è una macchina aziendale e magari gestisce la posta della clientela ).

Sul web vi sono molte informazioni e documentazione sulla gestione del server di posta, ma la maggior parte dei tutorial è legato a configurazioni specifiche che molto spesso si discostano parecchio da quella che si sta implementando.

Con questa guida impareremo non solo a configurare un server di posta, ma anche come si gestisce l’utenza della posta senza l’ausilio di un pannello di hosting, in modo da comprendere totalmente i meccanismi che guidano la gestione delle mail.

Su un sistema operativo linux, andremo a configurare il server di posta Postfix, il server Courier-Imap e la webmail horde come interfaccia grafica per la visione delle mail.

Noi abbiamo effettuato le prove su un sistema OpenSuse 10.2, ma ciò che vedremo andrà benissimo per qualsiasi sistema operativo linux.

Requisiti

La prima cosa da fare è ovviamente installare tutti i pacchetti che ci servono. Per chi è alle prime armi, consigliamo di utilizzare i meccanismi messi a disposizione da ogni sistema linux per effettuare tali installazione, come yast o smart per OpenSuse 10.2 o yum per i sistema Debian.

Ecco quello che ci occorre:

  • Il server di posta Postix ( )
  • Il server imap Courier
  • La libreria courier-authlib-userdb del server imap Courier
  • La webmail Horde ( o quella che si preferisce, squirrelmail, ecc. )

Installati i pacchetti necessari, procediamo alla configurazione.

Configurazione

Inziamo con la configurazione del Postfix: ovviamente vi sono moltissime configurazione possibili, ognugno è libero di scegliere quella che preferisce e che meglio si adatta alle proprie esigenze. Qui è possibile vedere alcuni esempi sulle diverse configurazioni di base: noi implementeremo quella che nel Postfix viene chiamata Domini MailBox Virtuali : questa configurazione permette di utilizzare un elenco di utenti e le corrispondenti mailbox in modo assolutamente indipendente dagli utenti del sistema (per maggiori dettagli leggete il link sopra indicato).

Editiamo il file principale che gestisce la configurazione del Postifx, main.cf , che solitamente di trova nella cartella /etc/postix/main.cf e inseriamo queste direttive:

virtual_mailbox_domains = mio_dominio.com
virtual_mailbox_base = /var/mailboxes/
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

Analizziamo come sempre riga per riga le direttive che abbiamo scritto. La direttiva virtual_mailbox_domains serve per specificare al Postfix i domini per i quali intendiamo creare le mailbox. Nel nostro caso abbiamo un solo dominio, mio_dominio.com .

virtual_mailbox_base specifica il prefisso per il percorso di tutte le mailbox virtuali. I tre parametri successivi

virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

sono molto importanti, perchè configurano il cuore del server di posta. Il primo, virtual_mailbox_maps, specifica il file che contiene l’elenco delle caselle di posta presenti nel dominio specificato (virtual_mailbox_domains), nel seguente formato:

user@mio_dominio.com user/

I seguenti due campi, virtual_uid_maps e virtual_gid_maps, sono riespettivamente userid e il groupid dell’utente che il delivery agent utilizza per scrivere nelle mailbox.

L’ultimo campo che rimane da vedere è il virtual_alias_maps : questo è da utilizzarsi quando tra le caselle specificate vi sono dei reindirizzamenti. Il formato è il seguente:

user@mio_dominio.com altro_user@altrodominio.com

in cui il primo elemento rappresenta l’origine, mentre il secondo rappresenta la destinazione, ovvero la casella di posta dove il messaggio per user@mio_dominio.com dovrà essere recapitato. Attenzione: quando modifichiamo il file /etc/postfix/virtual, è necessario eseguire il comando:

postmap /etc/postfix/virtual

affinchè le modfiche abbiamo effetto.

Creazione Utenti

Vediamo ora la procedura che bisogna eseguire dopo la configurazione del Postfix per creare effettivamente l’utenza mail: questo è il punto più importante dell’articolo, perchè in effetti non vi sono molte risorse disponibili al riguardo.

  1. Inserisco la riga per la nuova casella di posta nel file di postfix /etc/postfix/virtual_mailbox:

    nome.cognome@mio_dominio.com nome.cognome/

    ovviamente al posto di nome.cognome è possibile utilizzre lo schema di gestione utenza che si preferisce.

  2. E’ necessario ora rigenerare il file .db lanciando il comando:

    postmap virtual_mailbox

  3.  

    Creaimo l’utenza imap(courier-auth), che viene scritta nel file /etc/authlib/userdb :

    userdb nome.cognome@mio_dominio.com set uid=5000 gid=5000 home=/var/mailboxes mail=/var/mailboxes/nome.cognome

    userdbpw -md5 | userdb nome.cognome@mio_dominio.com set systempw

  4. makeuserdb

Il primo comando andrà specifica il nome utente e la rispettiva mailbox per il nuovo account di posta. Il secondo comando ci permette di assegnare una password per l’account in creazione, mentre il terzo e ultimo comando è necessario per scrivere nei relativi file rendendo così effettive le modifiche.

  1. Per creare tali utenze, abbiamo usato la libreria libreria courier-authlib-userdb che ci siamo procurati durante la fase di installazione dei requisiti.
  2. Per creare fisicamente (intendiamo le directory) le cartelle del nuovo utente è sufficiente che questo riceva un messaggio, sarà postfix stesso a crearle ed inserire il messaggio ricevuto nella giusta cartella. Nel caso in cui volessimo fare una prova, si può mandare una mail esterna (attraverso cioè una qualsiasi casella di posta funzionante) o interna (dal localhost tramite telnet o sendmail).Nel caso di telnet si procede nel seguente modo:S: telnet qualcheparte 25R: 220 qualcheparte Simple Mail Transfer Service ReadyS: HELO miohost
    R: 250 miohost
    S: MAIL FROM:<Marco@miohost>R: 250 OK

    S: RCPT TO:<Roberto@suohost>

    R: 250 OK

    S: DATA

    R: 354 Start mail input; end with <CRLF>.<CRLF>

    S: Blah blah blah…

    S: …etc. etc. etc.

    S: .

    R: 250 OK

    S: QUIT

    R: 221

    dove:

    * HELO tuohost
    (dove tuohost e’ il nome del server che spedisce il messaggio.
    Questo comando e’ usato per identificare il server mittente)

    * MAIL tuoindirizzo (dove tuo indirizzo e’ il tuo indirizzo di posta elettronica. Questo comando inizia una transazione di posta dove i dati vengono consegnati ad una o piu’ caselle di posta)

    * RCPT indirizzodestinatario (dove indirizzo destinatario e’ l’ indirizzo di posta elettronica del destinatario)

    * DATA (questo comando e’ usato per definire il testo del messaggio. Un testo di una e-mail puo’ contenere solo i caratteri compresi nel set dei 128 caratteri dello standard ASCII. La fine del messaggio e’ indicata da una riga contenente esclusivamente la sequenza di caratteri “<CRLF>.<CRLF>” . In altre parole devi premere il tasto invio, digitare un punto e premere di nuovo il tasto invio)

    * RSET (questo comando specifica che la transazione corrente deve essere interrotta)

    * NOOP (questo comando indica che non deve essere eseguita alcuna azione, tranne quella che permette al ricevente di inviare una risposta di OK)

    * QUIT (questo comando e’ usato per chiudere la connessione)

    E le risposte piu’ comuni:

    220 <dominio> Service ready
    221 <dominio> Service closing transmission channel
    250 Requested mail action okay, completed
    354 Start mail input; end with <CRLF>.<CRLF>
    421 <dominio> Service not available, closing transmission channel
    450 Requested mail action not taken: mailbox unavailable [Es. mailbox occupata]
    500 Syntax error, command unrecognized [Es. una riga di comando troppo lunga]
    501 Syntax error in parameters or arguments
    502 Command not implemented
    550 Requested action not taken: mailbox unavailable
    551 User not local; please try <indirizzo>
    554 Transaction failed

    Nel caso di sendmail si procede in questo modo:

    sendmail user@dominio.com<enter>
    From: user@altrodominio.com
    Subject: Oggetto messaggio
    (riga vuota)

    tutto il testo del messaggio

    .
    (un punto solo sulla riga)



Gestire un server, in particolare un server Linux, è un’attività che richiede parecchio lavoro e costante impegno. Per svolgere al meglio il proprio lavoro, soprattutto se si è responsabili di una macchina, è necessario seguire con attenzione gli aggiornamenti e le security patch rilasciate per il proprio sistama operativo, o per gli applicativi utilizzati.

Ma è ovviamente molto difficile avere tutto sotto controllo senza un ausilio “esterno”: ecco a cosa servono i tool come Tiger, Nmap e Nessus.

Questi tool hanno diverse caratteristiche interessanti, alcuni sono più precisi, altri più approfonditi, ma comunque hanno uno scopo in comune: permettere all’amministratore di rete di monitorare il proprio sistema e scoprire le vulnerabilità prima che sia troppo tardi.

Tiger e Nmap sono in effetti più semplici da installare ed utilizzare, ma è anche vero che non raggiungono la profondità di analisi e la precisione di Nessus.

Quest’ultimo è eseguibile su diversi sistemi operativi, tra i quali ci sono i seguenti:

  • Red Hat ES 3, ES 4, and ES 5 (i386 and x86-64)
  • Fedora Core 7 and 8
  • SUSE 9.3 and 10.0
  • Debian 4 (i386 and amd64)
  • FreeBSD 6.0
  • Solaris 9 and 10
  • Mac OS X 10.5
  • Windows 2000, XP, Server 2003, Server 2008, and Vista
  • Enterasys Dragon appliance running Dragon 7.2 or later

Anche gli altri due tool supportano diversi sistemi operativi, per questo motivo conviene leggere le rispettive documentazioni e le rispettive liste di plugin per capire quale sia il tool che meglio si addice all’analisi che vogliamo eseguire sul nostro sistema.

In particolare, i link a cui facciamo riferimento sono i seguenti:

Non proseguiamo con ulteriori spiegazioni, visto che la documenzione di ogni tool è veramente esauriente ed intuitiva. Ad ogni modo, rimaniamo come sempre a disposizione per chi incontrasse difficoltà nella configurazione, nell’installazione o nell’utilizzo.



Nonostante la crescita esponenziali di linguaggi di programmazioni come PHP o Ruby, Java continua a mantenere un posto di primo ordine nel cuore degli sviluppatori. Oltre all’essere un linguaggio sicuro e divertente, permette di integrarsi in ogni piattaforma, grazie alla Java Virtual Machine, e come se non bastasse, permette l’integrazione di piattaforme stand-alone con piattaforme web-side, lasciando praticamente assoluta libertà di creazione e fantasia allo sviluppatore.

Ci sono molti pacchetti, soprattutto per chi utilizza Windows, che auto-installano Java e che forniscono strumenti per iniziare a sviluppare piccoli applicativi con questa meravigliosa tecnologia. Ovviamente i professionisti si avvalgono di strumenti ben diversi, già a partire dall’installazione, che ovviamente fanno a mano.

In questa mini guida, tuttavia, non ci dedichiamo alla installazione di Java su sistemi Windows o Linux, ma concentriamo la nostra attenzione a come gestire gli eseguibili Java, ovvero i file che permettono alla nostra applicazione di “girare” .

Quando ci troviamo di fronte ad una applicazione stad-alone scritta in java, quasi sicuramente incontriamo file con un’estenzione particolare: .jar . Questa è proprio l’estenzione che caratterizza gli eseguibili in Java, almeno quelli “regolari” (vedramo più avanti che ci sono metodi che permettono la manipolazione di tali file, per estendere il loro utilizzo).

Di fronte ad un file .jar, possiamo utilizzare il seguente comando per lanciare l’applicazione Java:

java -jar nome_file.jar

Qeusto comando è utile per lanciare l’applicazione quando abbiamo a disposizione solo la linea di comando o quando non riusciamo a lanciare l’applicazione direttamente cliccando sul file .jar (probabilmente perchè sul proprio sistema operativo non si è configurato bene l’ambiente, o la variabile CLASSPATH non è stata settata correttamente).

Abbiamo quindi visto il comando per lanciare eseguibili Java: ma se, una volta conclusa la fase di sviluppo della nostra piccola applicazione, volessimo creare un eseguibile? Ecco come fare.

Esistono diversi tool freeware che permettono non solo la compilazione e la creazione di file .jar, ma addirittura di creare eseguibili .exe per l’ambiente Windows. Uno esempio di tale applicativo è scaricabile qui. Java Launcher è veramente un ottimo prodotto: semplice e veloce, leggero e utile per chi, lavorando in ambiente Windows, ha incontrato difficoltà con gli eseguibili Java.

Un altro tool davvero interessante è Jelude: anche questo tool permette di passare da eseguibili .jar a eseguibili .exe . E’ sufficiente seguire questo link per leggere tutta le documentazione e scaricare il necessario.

Ovviamente questi tool sono utili per l’ambiente Windows, in particolare lì dove non è stato installato il Java Runtime Environment (JRE) o il JRE non viene riconosciuto sul proprio sistema Windows (probabilmente in questo caso ci sono problemi di configurazione). Per gli utenti Linux, ovviamente, i file .exe non servono a nulla o quasi, ma non si dovrebbero incontrare grossi problemi, visto che in praticamente tutte le distruzioni JRE è praticamente fornito con il sistema operativo stesso.



L’ammistrazione da remoto di server linux può essere effettuata in diversi modi, ma il modo più sicuro ed efficiente è sicuramente l’utilizzo di SSH (Secure SHell), un protocollo che permette di stabilire una sessione remota cifrata ad interfaccia a linea di comando con un altro host.

Supponendo di utilizzare un PC con una qualche versione di linux installata per effettuare la connessione remota, tutto ciò che ci occorre è aprire una finestra di terminale o shell (per chi utilizza windows, è possibile sfruttare tool come Putty per effettuare connessioni remote). Siccome è buona norma non utilizzare l’utente root per lavorare, supporremo che utilizziamo nel nostro sistema di casa un utente diverso, ad esempio user-007. Dunque, aprendo il terminale, a linea di comando vedremo un qualcosa di simile:

$user-007\

Ora, normalmente in remoto ci si collega come utente root, ma allora sorge un problema: nel sistema di casa che utilizziamo per effettuare la connessione remota siamo identificati con l’utente user-007, mentre nell’host remoto vogliamo essere identificati come utente root.

Allora il comando che dobbiamo utilizzare è il seguente:

ssh root@indirizzo_ip

dove al posto di indirizzo _ip ovviamente andremo a mettere l’ip del server con il quale vogliamo effettuare la connessione remota. A questo punto ci verrà richiesta la password di sistema relativa all’utente remoto root: una volta inserita, entreremo nel server e potremo gestirlo da linea di comando proprio come facciamo con il nostro sistema linux locale.

Utilizzare PC domestici con linux per lavorare ed effettuare connessioni SSH è decisamente la cosa più sicura ed efficiente per ammistrare un server da remoto: vi sono tool per windows che permettono di utilizzare meccanismi che simulano o lavorano in modo simile ad un sistema linux per amministrare server linux, ma provate per esempio ad uplodare sul server una grande quantità di dati (ad esempio video o altro materiale multimediale). La differenza che potrete osservare parla da sola.



ISPConfig è un pannello di controllo hosting opensource per server Linux. Attraverso questo pannello, diventa molto più comodo e semplice gestire la configurazione e la manuntezione del vostro server Linux: è un prodotto veramente interessante, soprattutto perchè complete e assolutamente gratuito.

Prima di procedere con l’installazione, è bene che studiate bene i requisiti presentati al seguente indirizzo.

Vediamo come installarlo e configurarlo correttemente. Dopo averlo scaricato al seguente indirizzo, procediamo con la ‘decomprensione’ del file archivio e sistemandoci nella cartella di installazione:

tar xvfz ISPConfig*.tar.gz
cd install_ispconfig

A questo punto siamo pronti per partire con il processo di installazione, lanciando il comando

./setup

A questo punto l’installatore si preoccuperà di tutto il processo, a noi non resterà che rispondere a delle domande che nella maggior parte dei casi sono semplici e chiare. La prima cosa che farà l’installatore sarà compilare Apache con il modulo PHP5: questa compilazioni non modificherà eventuali precedenti personalizzazioni nella configurazione del server wev

Una volta conclusa questa prima fase, sarà necessario creare un certificato SSL: a questo proposito verranno sottoposte una serie di domande, alle quali si può rispondere accettando i valori di default o inserendone di personali.

Bisogna fare attenzione quando raggiungiamo i seguenti punti :

Encrypting RSA private key of CA with a pass phrase for security [ca.key]

Encrypting RSA private key of SERVER with a pass phrase for security [server.key]

del processo di creazione del certificato, perchè qui possiamo chiedere se vogliamo crittografare la password realativa. E’ importante scegliere no, perchè altrimenti ogni qualvolta intendiamo riavviare il sistema ISPConfig ci verrà chiesta una password, e questo comporta che non è possibile riavviare il sistema senza un intervento umano.

Se ci troviamo di fronte un fallimento della compilazione, il processo di setup viene interrotto e i file finora compilati vengono rimossi. Dal messaggio di errore, dovrebbe essere chiaro il problema: una volta risolto, si può procedere nuovamente con il processo di setup.

In caso di successo, invece, ci verrà chiesto di scegliere una lingua: questa scelta si riferisce al linguaggio dell’interfaccia di ISPConfig. Una volta accetta la licenza, che consigliamo di leggere bene, viene chiesta la modalità di installazione: sarebbe meglio scegliere la modalità expert, perchè permette un maggior controllo sull’installazione. Quindi digitiamo 2 e proseguiamo con il processo di installazione.

Segue il riconscimento del daemon postfix, e la scelta della web-root: se non ci va bene la proposta di default, digitiamo n ed inseriamo la cartella che preferiamo. Inserita la web-root verranno richiesti ulteriori dati di configurazione:

Please enter your MySQL server: localhost
Please enter your MySQL user: root
Please enter your MySQL password: (inserire la pass scelta durante l’installazione del MySQL Server)

Please enter a name for the ISPConfig database (e.g. db_ispconfig): db_ispconfig
Please enter the IP address of the ISPConfig web (e.g. 192.168.0.1): xxx.xxx.xxx.xxx (Inserire il proprio IP)
Please enter the host name (e.g. www): www
Please enter the domain (e.g. xyz.de):
tuodominio.com

Please select the protocol (http or https (SSL encryption)) to use to access the ISPConfig system:
1) HTTPS
2) HTTP
Your Choice:
1

Se stiamo procedendo ad una installazione di test, il nome host lo possiamo lasciare vuoto, e al posto del nome di dominio possiamo inserire l’indirizzo IP.

Una volta completati tutti i passaggi ISPConfig sarà finalmente installato sul proprio server. Se durante l’installazione abbiamo indicato www come nome host e tuodominio.com come dominio, allora l’interfaccia di ISPConfig sarà raggiungibile al seguente indirizzo:

https://www.tuodominio.com:81 o http://www.tuodominio.com:81

Il primo login andrà fatto inserendo admin come username e password. Ovviamente la prima cosa da fare una volta installato il pannello, è proprio quello di cambiare questi dati, viato che quelli di default non sono mai sicuri.

L’installazione è conclusa, e al seguente indirizzo potete trovare il manuale di utilizzo del pannello. Le istruzioni di installazione dettagliate per ogni sistema operativo linux sono disponibili qui.