Archivi tag: Postfix

Linux – Configurare il server di posta Postfix con Courier-Imap e Horde

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)