23 gennaio 2007

Configurare SMTP in JAMES

Mi sto dilungando con la stesura di questi post soprattutto per non farli troppo lunghi.
Nelle precedenti puntate avevamo visto come installare James e modificare il suo file di configurazione.

Veniamo alla parte più interessante.
Se, come ho illustrato in precedenza, avete creato il vostro primo utente avete già la possibilità di testare se James funziona.
Usando telnet possiamo digitare:

$>telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 MyMailServer SMTP Server (James SMTP Server 2.3.0) readu Tue, 23 Jan 2007 11:53:10 +0100 (CET)
EHLO localhost
250-MyMailServer Hello localost (localhost 127.0.0.1)
250-PIPELINING
250 ENHANCHEDSTATUSCODE
MAIL FROM: <paperino
>
250 2.1.0 Sender <paperino@localhost> OK
RCPT TO: <nomeUtente>
250 2.1.0 Sender <nomeUtente@localhost> OK
DATA
354 Ok Send data ending <CRLF>.<CRLF>
messaggio di prova

.

250 2.6.0 Message received
quit
221 2.0.0 MyMailServer Service closing transmission channel
Connection closed by foreing host

L'utente che invia il messaggio (paperino) nel nostro caso può anche non esistere, per altro queste è una delle possibilità che offre SMTP.
L'utente destinatario del messaggio sarà l'utente che avremo creato la volta precedente.

Passiamo a configurare James.
La prima sezione che si trova nel file config.xml è
<config>
<James>

In questa sezione troviamo i parametri principali:

<postmastrer>davide@localhost<postmaster>

In questa sezione definiamo l'indirizzo al quale James manderà gli avvisi amministrativi.

<servernames autodetect="true" autodetectIP="true">
<servername>localhost</servername>
<servername>mail.mydomain.local</servername>
</servernames>

La sezione servernames permette di definire i nomi o gli indirizzi IP che James identifica come locali, cioè sottoposti al suo controllo.

22 gennaio 2007

Configurare JAMES (Java Apache Mail Enterprise Server)

Come abbiamo visto, installare James è cosa veramente facile.

Una volta che è stato avviato, è già possibile passare alla creazione degli utenti.
Utilizzando sulla macchina locale il comanda telnet è possibile collegarsi allo strumento di amministrazione di James.

$>telnet localhost 4555
Trying 127.0.0.1....
Connected to localhost
Escape character in '^]'.
JAMES Remote Administration Tool 2.3.0
Please enter your login e password
Login id:
root
Password:
root
Welcome root. HELP for a list of commands
james>

Ecco cosa compare alla connessione. Per accedere la Login iniziale è root e la sua password è root.
Poi vedremo come cambiarla.

Per creare un nuovo utente è semplicissimo:

james>adduser nomeUtente passwordUtente

Fatto! Abbiamo creato il nostro primo utente in james.

La configurazione di James avviene quasi completamente tramite il file /appl/james-2.3.0/apps/james/SAR-INF/config.xml.

Questo file xml è suddiviso a sezioni e ciascuna si preoccupa della configurazione di un servizio.
Giusto per prendere confidenza modificheremo il file per cambiare i parametri di accesso al Remote manager.
Nel file config.xml cercare la sezione

<remotemanager enabled="true">
<port>4555</port>
<handler>
<halloName autodetect="true">MyMailServer</halloName>
<administrator_accounts>
<account login="root" password="root />
</administrator_accounts>
</handler>
</remotemanager>

Credo che ciascuna opzione sopra illustrata parli da se, specialmente per chi ha un minimo di dimestichezza con le strutture xml.
Per altro il file config.xml è abbondantemente ricco di commenti esplicativi per la configurazione.
Conviene quindi premunirsi anzitutto di modificare la porta di accesso al Remote Manager spostandola dalla 4555, ma soprattutto modificare l'account di accesso e la sua password.
E' comunque possibile aggiungere più di un account amministrativo come la sezione <administrator_accounts> suggerisce.
La sezione <helloName identifica il nome del server con il quale il servizio si presenta.
Se autodetect è impostato su true James cerca di identificare il nome della macchina, se non la trova si annuncia come localhost.
Se autodetect è impostato su false James utilizza il nome che viene impostato in questa sezione.
Siccome James è un server SMTP, POP3 e NNTP ciascun servizio può avere un nome differente MySMTPServer, MyPOP3Server,....
Successivamente vedremo come configurare il server SMTP

Installare JAMES (Java Apache Mail Enterprise Server)

Per chi non lo conoscesse JAMES è un server di posta compatibile POP3 e SMTP completamente scritto in Java da Apache (quella del server HTTP) .
La caratteristica di essere scritto in Java lo rende compatibile praticamente con tutte le piattaforme che possono far girare una macchina Java. JAMES è scaricabile qui.
Mi sono interessato a questo prodotto, prima di tutto per la gratuità con la quale viene distribuito e poi (a onor del vero) per amor di scienza.
L'idea iniziale è stata ovviamente quella di crearmi un server di posta interno che potesse inviare e ricevere posta da altri server. Come fa praticamente il vosto ISP.

Per la prova ho sfruttato il mio IP Pubblico e la registrazione tramite DynDNS di un dominio tipo xxx.ath.cx (uno dei tanti che DynDNS mette a disposizione)
La macchina sulla quale ho installato James è un vecchiotto Pentium III da 1GHz com 500MB di Ram ed un HD da 40GB
I test li ho condotti su una macchina con Ubuntu 6.10 fresco fresco di installazione.

Non mi dilungo su come installare Java su Ubuntu, potete trovarlo, per esempio, qui oppure cercare con Google.
Opzionalmente, abilitando il repository multiverse è possibile scaricare il pacchetto j2re1.4

>sudo apt-get install j2re1.4 java-common

per verificare che sia installato correttamente digitare

>java -version
java version "1.4.2-02"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.4.2-02)
Java HotSpot(TM) Client VM (build Blackdown-1.4.2-02 mixed mode)


Definite convenientemente la variabile JAVA_HOME. In questo caso:

>export JAVA_HOME=/usr/lib/j2se/1.4

sarà comunque conveniente mettere questo comando come ultima riga del vostro file .bashrc

Possiamo ora scompattare James, consiglio di farlo nella vostra directory delle applicazioni, nel mio caso /appl

>sudo tar xvfz james-2.3.0.tar.gz -C /appl

Verrà creata una directory /appl/james-2.3.0 con dentro tutto il programma.

Ora possiamo lanciare per prova James

>/appl/james-2.3.0/bin/run.sh

Se tutto ha funzionato James partirà con la configurazione di base rispondendovi:

Using PHOENIX_HOME /appl/james-2.3.0
Using PHOENIX_TMPDIR /appl/james-2.3.0/temp
Using JAVA_HOME /usr/lib/j2se/1.4
Running Phoenix:

Phoenix 4.2

James mail Server 2.3.0
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled


E' tutto, per il momento.
Nel prossimo post passeremo alla configurazione di James ed alla creazione degli utenti.