INDICE INTRODUZIONE: LA POSTA ELETTRONICA (E-MAIL)...

Documenti analoghi
- Corso di computer -

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Configurazione di Outlook Express

La posta elettronica. Informazioni di base sul funzionamento

Protocolli applicativi: FTP

Reti di Telecomunicazione Lezione 6

Strutturazione logica dei dati: i file

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Le caselle di Posta Certificata attivate da Aruba Pec Spa hanno le seguenti caratteristiche:

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

LA CORRISPONDENZA COMMERCIALE

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Reti di Telecomunicazione Lezione 8

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

Posta Elettronica. Comunicare con . Definizione di . metodo di trasmissione dei messaggi tramite Internet:

STAMPA DI UNA PAGINA SEMPLICE

Posta Elettronica. Comunicare con . Definizione di . Def) La posta elettronica è un metodo di trasmissione dei messaggi tramite Internet:

Laboratorio di Reti Esercitazione N 2-DNS Gruppo 9. Laboratorio di Reti Relazione N 2. Mattia Vettorato Alberto Mesin

Allegato 3 Sistema per l interscambio dei dati (SID)

File, Modifica, Visualizza, Strumenti, Messaggio

Accesso al Web Client Zimbra

GESGOLF SMS ONLINE. Manuale per l utente

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Joomla! 2.5:Utenti e permessi - Il wiki di Joomla.it

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Scenari esemplificativi di utilizzo delle Mailing List

MANUALE EDICOLA 04.05

Utilizzo di SmartAttach e personalizzazioni

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

StoneFax User Guide. (Settembre 2011 ver.1.1) StoneFax-User-Guide-ita-1.1.docx

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Corso basi di dati Installazione e gestione di PWS

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Unsolicited Bulk (UBE) (spamming) Francesco Gennai IAT - CNR Francesco.Gennai@iat.cnr.it

Database. Si ringrazia Marco Bertini per le slides

Reti di Telecomunicazione Lezione 7

Hub-PA Versione Manuale utente

Centro Tecnico per la Rete Unitaria della Pubblica Amministrazione

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Informatica per la comunicazione" - lezione 8 -

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

1) GESTIONE DELLE POSTAZIONI REMOTE

Soluzione dei problemi di scansione verso rete. Problemi frequenti e soluzioni Stato della scansione verso

Mac Application Manager 1.3 (SOLO PER TIGER)

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

CONTENT MANAGEMENT SY STEM

Transmission Control Protocol

RICEZIONE AUTOMATICA DEI CERTIFICATI DI MALATTIA 1.1. MALATTIE GESTIONE IMPORT AUTOMATICO 1.2. ATTIVAZIONE DELLA RICEZIONE DEL FILE CON L INPS

Esempi di applicazioni internet. WEB Trasferimento File Posta Elettronica Sistema dei nomi di dominio (DNS)

ARCHIVIA PLUS - ARCHIFILE

Inserimento dei dati

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Leggere un messaggio. Copyright 2009 Apogeo

Reti diverse: la soluzione nativa

Manuale Utente Amministrazione Trasparente GA

Il web server Apache Lezione n. 3. Introduzione

e-government La Posta Elettronica Certificata

Guida all uso. Esso sarà riportato nell intestazione. Vediamo:

Il tuo manuale d'uso. SONY ERICSSON Z550I

Script di prevenzione invii massivi

FPf per Windows 3.1. Guida all uso

HTTP adaptation layer per generico protocollo di scambio dati

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Sostituto abilitato Entratel con più sedi: ricezione diretta e incarico ad intermediario abilitato

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

INFN Sezione di Perugia Servizio di Calcolo e Reti Fabrizio Gentile Enrico Becchetti

Utilizzo dello strumento di migrazione server

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

Spazio Commerciale. Le tue vendite, il nostro successo. Manuale Operativo. Guida inserimento articoli tramite Area di amministrazione.

Software per Helpdesk

Guida Migrazione Posta Operazioni da effettuare entro il 15 gennaio 2012

Manuale Utente Albo Pretorio GA

Le imprese di nuova costituzione dovranno dotarsi di certificata da subito, all atto della costituzione.

ICARO Terminal Server per Aprile

GateManager. 1 Indice. tecnico@gate-manager.it

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Acronis License Server. Manuale utente

Teoria di un server di posta. Corso GNU/Linux Avanzato Torino,

Online Help StruxureWare Data Center Expert

Archiviare messaggi di posta elettronica senza avere un proprio mail server

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

INTEGRATA OTTIMIZZAZIONE DEI PROCESSI AZIENDALI

Transcript:

INDICE INTRODUZIONE: LA POSTA ELETTRONICA (E-MAIL)... - 3 - SERVIZIO DI RETE E SERVIZIO DI CONSEGNA LOCALE...- 3 - SCHEMA ESSENZIALE...- 4 - COMPOSIZIONE DI UN MESSAGGIO...- 5 - TRACCIAMENTO DI UN MESSAGGIO...- 7 - IDENTIFICAZIONE DELLA DESTINAZIONE...- 8 - ELEMENTI DI INTESTAZIONE...- 8 - RISPOSTA, PROSEGUIMENTO E RISERVATEZZA...- 9 - RECAPITO DELLA POSTA ELETTRONICA: LA VARIABILE MAIL...- 10 - MAIL USER AGENT...- 10 - CARTELLE E FORMATO DEI DATI...- 10 - IL PROTOCOLLO...- 11 - MESSAGGI, ALLEGATI ED ESTENSIONI MIME...- 12 - ALLEGATI...- 12 - INVOLUCRO MIME...- 13 - MESSAGGI CONTENENTI PIÙ PARTI MIME...- 15 - SVILUPPI RECENTI...- 17 - SMTP Esteso... - 17 - QMAIL... - 17 - DOCUMENTAZIONE...- 17 - CARATTERISTICHE PRINCIPALI...- 18 - COMPARATIVI CON GLI ALTRI MTA'S...- 18 - STRUTTURA ED ARCHITETTURA DI QMAIL...- 18 - STRUTTURA DEI FILE...- 19 - STRUTTURA DELLA CODA...- 19 - SCHEMI...- 20 - INSTALLAZIONE DI QMAIL...- 23 - DOT-FORWARD...- 23 - FASTFORWARD...- 24 - UCSPI-TCP...- 24 - DAEMONTOOLS...- 25 - AVVIARE QMAIL... - 25 - /VAR/QMAIL/RC...- 25 - STARTUP AL BOOT-TIME...- 26 - FILE DI START-UP E DI GESTIONE...- 27 - Lo script qmailctl... - 27 - Gli scripts di supervise...- 29 - Controllo di accesso al servizio SMTP... - 30 - Create System Aliases... - 30 - Il MUA locale di Unix... - 31 - AVVIO DI QMAIL...- 31 - TEST DELL APPLICAZIONE...- 31 - CONFIGURAZIONE... - 32 - - 1 - qmail

FILE DI CONFIGURAZIONE...- 32 - RELAYING...- 33 - Disabilitare il relaying... - 34 - Consentire il relaying selettivo... - 34 - HOST NAMES MULTIPLI...- 35 - DOMINI VIRTUALI...- 35 - ALIASES...- 36 - QMAIL-USERS...- 36 - Comandi di gestione di qmail-users... - 37 - INVIO DI POSTA ELETTRONICA... - 37 - MUA VARI...- 38 - RICEZIONE DI MESSAGGI... - 38 - ESTENSIONE DEGLI INDIRIZZI...- 38 - FILTERING MAIL...- 39 - GESTIONE DI QMAIL... - 39 - GESTIONE DELLA CODA...- 39 - RISOLUZIONE DEI PROBLEMI...- 39 - Processi... - 39 - LOGGING...- 40 - splogger... - 40 - multilog... - 41 - Messaggi di log... - 41 - CONFIGURAZIONI TIPICHE... - 42 - MODALITÀ GENERAL PURPOSE...- 42 - MODALITÀ BACKUP MAIL EXCHANGER...- 42 - MODALITÀ NULL CLIENT...- 43 - MODALITÀ SMART HOST...- 43 - MODALITÀ MAILBOX SERVER...- 44 - MODALITÀ CLIENT DIAL-UP...- 44 - POP3... - 44 - STRUTTURA DEL POP3...- 45 - INSTALLAZIONE E CONFIGURAZIONE DI QMAIL-POP3...- 45 - TEST DI FUNZIONALITÀ DI QMAIL-POP3...- 46 - VIRTUALDOMAIN E VIRTUALUSERS... - 47 - MAILING-LISTS... - 47 - - 2 - qmail

Introduzione: La posta elettronica (e-mail) Generalmente, l'invio di messaggi di posta elettronica (email) si basa su un MTA (Mail transfer agent) locale che, quando riceve una richiesta di invio di un messaggio, si occupa di mettersi in contatto con un suo collega presso l'indirizzo di destinazione, o se necessario in una destinazione intermedia, che si prenda cura di consegnare il messaggio o di reinoltrarlo. Tutto quanto sembra molto semplice a dirsi, in realtà la configurazione di un MTA potrebbe essere molto complessa. Spesso, in presenza di una rete locale, il funzionamento corretto dell'mta richiede la predisposizione di un servizio di risoluzione dei nomi locale. L'invio di messaggi di posta elettronica avviene solitamente attraverso l'uso di un programma adatto alla loro composizione, che poi si mette in comunicazione con l'mta per l'inoltro del messaggio. Più precisamente, un messaggio inviato a un utente dell'elaboratore locale non richiede alcun MTA, mentre l'invio a un altro elaboratore richiede almeno la presenza di un MTA presso l'indirizzo di destinazione. Storicamente, l'mta più diffuso nei sistemi Unix è stato Sendmail; tuttavia, è sempre più comune l'uso di MTA alternativi, meno complicati, pur mantenendo un certo grado di compatibilità con quello tradizionale. Servizio di rete e servizio di consegna locale Il protocollo di comunicazione per il trasfermineto di posta elettronica è noto come SMTP (Simple Mail Trasmission Protocol). I documenti di riferimento del protocollo SMTP sono RFC821 e RFC822. La posta elettronica non è semplicemente un servizio di rete che si attua attraverso il protocollo SMTP. Il servizio di rete permette il trasferimento dei messaggi, ma l'mta ha anche il compito di recapitarli ai destinatari, in forma di file. In questo senso, il meccanismo può sembrare un po' confuso all'inizio, trattandosi effettivamente di un sistema piuttosto complicato. In un sistema composto da un elaboratore isolato, anche se provvisto di terminali più o meno decentrati, non c'è alcun bisogno di fare viaggiare messaggi attraverso una rete, è sufficiente che questi vengano semplicemente messi a disposizione dell'utente destinatario (in un file contenuto nella sua directory personale, o in una directory pubblica, in cui il file in questione possa essere accessibile solo a quell'utente particolare). In tal caso, chi si occupa di attuare questo sistema è un MDA, ovvero Mail delivery agent. Quando invece si deve inviare un messaggio attraverso la rete, perché l'indirizzo del destinatario si trova in un nodo differente, si utilizza il protocollo SMTP, per contattare presso la destinazione un servente SMTP. Questo servente ha il compito di recapitare la posta elettronica (presumibilmente presso il proprio sistema locale). Quindi, lo scopo del servente SMTP è quello di recapitare i messaggi. La trasmissione del messaggio, che richiede la connessione con il servente remoto della destinazione, non fa capo ad alcun servizio di rete nell'ambito locale. Questa connessione potrebbe essere instaurata direttamente dal programma che si utilizza per scrivere il messaggio da trasmettere, oppure, come succede di solito, da un altro programma specifico, che in più si preoccupa di - 3 - qmail

ritentare l'invio del messaggio se per qualche motivo le cose non funzionano subito, rinviandolo eventualmente all'origine se non c'è modo di recapitarlo. L'MTA ha generalmente questi tre ruoli fondamentali: l'attivazione del servizio SMTP, per la ricezione di messaggi dall'esterno; la gestione della trasmissione di questi, assieme a una coda per ciò che non può essere trasmesso immediatamente; la consegna locale dei messaggi ricevuti attraverso il protocollo SMTP oppure attraverso lo stesso sistema locale. Quindi, in generale, un MTA integra anche le funzioni di un MDA. La posta elettronica e' senza dubbio uno degli applicativi più importanti; si ritiene che quasi metà dei pacchetti scambiati in rete appartengano al protocollo SMTP. Il messaggio medio di posta scambiata e' di 1500 byte, ma alcuni messaggi arrivano anche ad alcuni megabyte di dimensione, poiché la posta viene utilizzata come mezzo di file transfer. Schema essenziale Generalmente, lo schema essenziale di funzionamento del sistema di trasferimento dei messaggi di posta elettronica è basato sul protocollo SMTP (Simple mail transfer protocol) e utilizza fondamentalmente due componenti: MTA (Mail transport agent), che include anche l'mda (Mail delivery agent), e MUA (Mail user agent). Il primo dei due è il sistema che si occupa del trasferimento e della consegna dei messaggi, mentre il secondo è il programma che viene utilizzato per comporre i messaggi e passarli all'mta. - 4 - qmail

Eventualmente, l'mda è un componente particolare di un MTA che permette di provvedere alla consegna di un messaggio localmente, oppure alla trasmissione attraverso il protocollo SMTP, dopo averlo ricevuto dallo standard input. I programmi MUA più semplici dipendono dall'mda, non essendo in grado di provvedere da soli a instaurare una connessione SMTP con un servente di posta elettronica. La sequenza di MTA, o meglio, di serventi SMTP utilizzati per trasmettere il messaggio a destinazione, dipende dall'organizzazione di ognuno di questi. La situazione più comune è quella in cui ne sono coinvolti solo due: quello utilizzato per iniziare la trasmissione e quello di destinazione che si occupa anche della consegna. In realtà, si possono porre delle esigenze diverse, a causa della struttura della rete nel punto di partenza e nel punto di destinazione. Per rendere l'idea, si possono indicare i casi seguenti. L'MTA utilizzato nell'origine si avvale di uno smarthost, ovvero un altro MTA, collocato in una posizione conveniente della rete, che si occupa di smistare i messaggi. Ciò è utile quando l'mta di origine è collocato in una posizione della rete per cui esiste un solo percorso per raggiungere la rete esterna: quando un messaggio è inviato a più di un destinatario è conveniente trasmetterlo una volta sola attraverso questo tratto di rete, lasciando che sia l'mta esterno a provvedere alla duplicazione dei messaggi per i vari destinatari. Lo smarthost svolge quindi l'attività di relè, o di scambio. L'MTA di destinazione è il punto di ingresso a una rete privata, nella quale vengono poi usati altri MTA per la consegna effettiva dei messaggi. L'MTA di destinazione è solo il punto di arrivo di un alias (da quel punto riprende l'invio del messaggio all'indirizzo vero dell'utente). Composizione di un messaggio Un messaggio di posta elettronica è composto da due parti fondamentali: l'intestazione e il corpo. Il corpo è quella parte che contiene il testo del messaggio, mentre l'intestazione contiene informazioni amministrative di vario genere, compreso l'oggetto (subject). All'interno dell'intestazione, si distingue in particolare la busta o envelope, cioè quelle informazioni amministrative necessarie al trasporto del messaggio; queste appaiono nella parte superiore e si espandono mano a mano che il messaggio attraversa i vari MTA necessari a raggiungere la destinazione. L'esempio seguente mostra un breve messaggio trasmesso da pippo@router.brot.dg a daniele@dinkel.brot.dg. From pippo@router.brot.dg Mon Jun 8 21:53:16 1998 Return-Path: <pippo@router.brot.dg> Received: from router.brot.dg (pippo@router.brot.dg [192.168.1.254]) by dinkel.brot.dg (8.8.7/8.8.7) with ESMTP id VAA00615 for <daniele@dinkel.brot.dg>; Mon, 8 Jun 1998 21:53:15 +0200 From: pippo@router.brot.dg Received: (from pippo@localhost) by router.brot.dg (8.8.7/8.8.7) id AAA00384 for daniele@dinkel.brot.dg; Tue, 9 Jun 1998 00:00:09 +0200 Date: Tue, 9 Jun 1998 00:00:09 +0200 Message-Id: <199806082200.AAA00384@router.brot.dg> To: daniele@dinkel.brot.dg Subject: Una vita che non ci si sente :-) Ciao Daniele! Quanto tempo che non ci si sente. - 5 - qmail

Fai un cenno se possibile :-) Pippo Per distinguere la conclusione dell'intestazione dall'inizio del corpo, si utilizza una riga vuota. Nell'esempio, L'oggetto è l'ultimo elemento dell'intestazione, quindi appare una riga vuota di separazione e finalmente inizia il testo del messaggio. L'intestazione è composta da record separati dal codice di interruzione di riga. Ognuno di questi record, definisce l'informazione contenuta in un campo nominato all'inizio del record stesso, precisamente nella prima colonna del testo. Questi campi (field) terminano necessariamente con il carattere due punti (:), seguito da uno spazio; il resto del record descrive il loro contenuto. Un record può continuare su più righe; la continuazione viene segnalata da un carattere di tabulazione orizzontale, <HT>, all'inizio della riga che continua il record interrotto in quella precedente (si osservino a questo proposito i campi Received: dell'esempio). Il programma usato come MUA genera l'intestazione necessaria a iniziare la trasmissione del messaggio. In particolare, sono fondamentali i campi seguenti. Campo Date: Message- Id: From: To: Subject: Descrizione Contiene la data di invio del messaggio. Contiene una stringa generata automaticamente, in modo da essere unica per il messaggio. In un certo senso, serve a dare un'impronta al messaggio che permette di distinguerlo e di farvi riferimento. Contiene le informazioni sul mittente del messaggio; generalmente si tratta dell'indirizzo di posta elettronica e probabilmente anche il suo nome reale. Contiene l'indirizzo di posta elettronica del destinatario. L'oggetto del messaggio. Oltre ai campi già visti, ne possono essere aggiunti altri, a seconda delle esigenze o dell'impostazione del programma utilizzato come MUA. Campo Reply-To: Organization: X-...: Descrizione Permette di indicare un indirizzo al quale si desidera siano inviate le risposte. Permette di definire l'organizzazione proprietaria della macchina da cui ha origine il messaggio di posta elettronica. I campi che iniziano per X- sono ammessi, senza essere definiti. In pratica, vengono utilizzati per scopi vari, accordati tra le parti. Per una convenzione ormai consolidata, il primo record dell'intestazione di un messaggio di posta elettronica inizia con la parola chiave From seguita immediatamente da uno spazio. Questo record è diverso da quello che definisce il campo From: (cioè quello che termina con i due punti), tanto che per distinguerlo viene spesso indicato come From_, per sottolineare il fatto che non appaiono i due punti prima dello spazio. La presenza di questo campo un po' anomalo, fa sì che quando si scrive un messaggio, nel corpo non possa apparire la parola From scritta in questo modo e a partire dalla prima colonna. - 6 - qmail

Convenzionalmente, se ne esiste la necessità, viene aggiunto il carattere > davanti a questa (>From). Il problema si pone essenzialmente quando si vuole incorporare un messaggio di posta elettronica nel corpo di un nuovo messaggio; il programma che si usa per comporre il testo dovrebbe provvedere da solo a correggere la riga in cui appare il record From_. I vari MTA che si occupano di trasferire e consegnare il messaggio a destinazione sono responsabili dell'aggiunta dei campi Received:. Questi vengono aggiunti a ogni passaggio, dal basso verso l'alto, allo scopo di tenere traccia degli spostamenti che il messaggio ha dovuto subire. Tracciamento di un messaggio I vari campi Received: utilizzati per tenere traccia degli spostamenti di un messaggio di posta elettronica permettono di ricostruirne il percorso. Nell'esempio mostrato in precedenza, venivano utilizzati solo due MTA. 1. Il primo campo Received: partendo dal basso rappresenta il primo MTA che è stato interpellato. Received: (from pippo@localhost) by router.brot.dg (8.8.7/8.8.7) id AAA00384 for daniele@dinkel.brot.dg; Tue, 9 Jun 1998 00:00:09 +0200 Trattandosi dello stesso nodo da cui è stato inviato il messaggio, appare solo l'informazione dell'mta, by router.brot.dg, e la destinazione, for daniele@dinkel.brot.dg. 2. Il secondo campo Received: viene aggiunto dal secondo MTA interpellato, che in questo caso è anche l'ultimo. Received: from router.brot.dg (pippo@router.brot.dg [192.168.1.254]) by dinkel.brot.dg (8.8.7/8.8.7) with ESMTP id VAA00615 for <daniele@dinkel.brot.dg>; Mon, 8 Jun 1998 21:53:15 +0200 L'MTA provvede prima a identificare l'origine, ovvero l'mta che gli ha trasmesso il messaggio, attraverso l'indicazione from router.brot.dg; quindi identifica se stesso attraverso l'indicazione by dinkel.brot.dg. I vari record Received: possono essere più o meno ricchi di informazioni e questo dipende dall'mta che li genera. In particolare, l'indicazione della data permette eventualmente di comprendere in che punto la trasmissione del messaggio è stata ritardata; inoltre, la presenza dell'identificativo id può permettere di ricercare informazioni su una trasmissione particolare all'interno di registrazioni eventuali. Alcuni MTA, per motivi di sicurezza, verificano l'origine della trasmissione attraverso il sistema DNS e includono il nome e l'indirizzo IP così ottenuto tra parentesi. Nell'esempio mostrato, il secondo MTA ha indicato from router.brot.dg (pippo@router.brot.dg [192.168.1.254]). - 7 - qmail

Identificazione della destinazione In precedenza, in questo capitolo, si è accennato al meccanismo di trasferimento dei messaggi tra diversi MTA. L'MTA di origine, o comunque quello utilizzato come distributore di origine (relè), deve identificare l'mta più adatto a ricevere il messaggio per ottenere la consegna di questo all'utente destinatario. Generalmente, il problema si riduce alla trasformazione del nome di dominio dell'indirizzo di posta elettronica del destinatario in un numero IP, per poi tentare di contattare tale nodo con la speranza di trovare un MTA pronto a rispondere. La realtà è spesso più complessa e può darsi benissimo che l'mta competente per ricevere la posta elettronica di un certo utente sia un nodo diverso da quello che appare nell'indirizzo di posta elettronica. Per pubblicizzare questo fatto nella rete si utilizzano i record MX nella configurazione dei DNS. L'esempio seguente mostra un caso in cui si stabilisce che, per consegnare messaggi di posta elettronica nel dominio brot.dg, è competente il servente dinkel.brot.dg. brot.dg. IN MX 10 dinkel.brot.dg. Elementi di intestazione Un messaggio di posta elettronica si compone inizialmente di una serie di indicazioni, tra cui le più importanti sono quelle che servono a recapitarlo al destinatario. L'uso corretto di questi elementi di intestazione è importante, non solo perché il messaggio raggiunga il destinatario o i destinatari, ma anche per chiarire loro il contesto del messaggio e le persone coinvolte. Campo To: Descrizione Il campo To: viene utilizzato per definire i destinatari del messaggio. Quando si tratta di più di uno, convenzionalmente, i vari indirizzi vengono separati attraverso una virgola. L'indirizzo del destinatario va indicato secondo le regole consentite dagli MTA interessati; generalmente è ammissibile una delle tre forme seguenti. utente@nodo nominativo_completo <utente@nodo> Cc: Bcc: "nominativo_completo" <utente@nodo> Il campo Cc: viene utilizzato per definire i destinatari del messaggio in copia carbone. Nella corrispondenza normale, almeno in Italia, si utilizza la definizione «per conoscenza», intendendo che questi destinatari non sono chiamati in causa direttamente. In pratica, si utilizza il campo Cc: per recapitare una copia del messaggio a dei corrispondenti dai quali non si attende una risposta, ma che è importante siano a conoscenza di queste informazioni. Il campo Bcc: viene utilizzato per definire i destinatari del messaggio a cui deve essere inviata una copia carbone nascosta (Blind carbon copy). La differenza rispetto alla copia carbone normale sta nel fatto che i destinatari non vengono messi a - 8 - qmail

Campo From: Reply- To: Subject: Descrizione conoscenza della presenza di queste copie aggiuntive. Il campo From: viene utilizzato per definire l'indirizzo del mittente. Non si tratta necessariamente del nome utilizzato dall'utente nel momento in cui compone il messaggio, ma di quello al quale ci si aspetta di ricevere una risposta. Il campo Reply-To: viene utilizzato per indicare un indirizzo a cui si invita a inviare un'eventuale risposta. Viene utilizzato in situazioni particolari, quando per questo non si intende usare il campo From:. Tipicamente viene aggiunto nei messaggi trasmessi da un sistema che gestisce le liste di posta elettronica (mailing-list) quando si vuole lasciare l'indicazione del mittente effettivo, guidando la risposta verso la stessa lista. Il campo Subject: serve a indicare l'oggetto del messaggio. Anche se nella corrispondenza normale l'oggetto viene usato solo nelle comunicazioni formali, nella posta elettronica è opportuno aggiungere sempre questa indicazione. Un oggetto chiaro permette al destinatario di capire immediatamente il contesto per il quale viene contattato. Inoltre, quando da un messaggio si genera una catena di risposte (cioè un thread), è importante l'oggetto scelto inizialmente. Risposta, proseguimento e riservatezza La risposta a un messaggio viene inviata normalmente al mittente (From:), a tutti i destinatari normali (To:) e a tutti quelli cui è stato inviato il messaggio per conoscenza (Cc:). Questa operazione viene fatta solitamente in modo automatico dal programma utilizzato per leggere e comporre i messaggi: il Mail user agent (MUA). È importante però fare attenzione sempre che ciò corrisponda alla propria volontà, o che le circostanze siano appropriate. Infatti, se sono coinvolte diverse persone in una corrispondenza, è probabile che si giunga a un punto in cui non abbia più significato continuare a «importunarle» quando la catena di risposte è degenerata in un contesto differente. I programmi MUA comuni aggiungono la sigla Re: davanti all'oggetto, a meno che non inizi già in questo modo, quando si risponde a un messaggio precedente. Il problema sta nel fatto che non sempre viene rispettata questa convenzione, per cui se ne trovano altri che aggiungono qualcosa di diverso, come R:. Così, se la catena di risposte prosegue si rischia di arrivare ad avere un oggetto formato da una serie di Re: R: Re: R:. Quando il messaggio a cui si risponde contiene l'indicazione del campo Reply-To:, si pone un problema in più: la scelta corretta del destinatario. Infatti, la risposta va inviata all'indirizzo Reply-To: solo se perfettamente conforme al contesto. Si è già accennato al fatto che questo campo viene aggiunto dai programmi di gestione delle liste di posta elettronica. In questa situazione è molto diverso inviare una risposta alla lista o soltanto al mittente originario del messaggio. Quando si vuole rinviare a un altro indirizzo (forward in inglese), si dice che questo viene fatto proseguire (così come avviene nella posta normale quando l'indirizzo di destinazione non è più valido per qualche motivo). Per farlo si incorpora il messaggio originale con alcune informazioni sul mittente e sul destinatario originale, permettendo di aggiungere qualche commento aggiuntivo. - 9 - qmail

Quando si riceve un messaggio, così come accade nella corrispondenza normale, occorre un po' di attenzione se si pensa di divulgarne il contenuto ad altri. Evidentemente dipende dalle circostanze; in caso di dubbio occorre almeno chiedere il consenso della persona che lo ha scritto. Recapito della posta elettronica: la variabile MAIL La posta elettronica viene recapitata normalmente all'interno di un file di testo unico, appartenente all'utente destinatario. Generalmente, si distinguono due possibilità sulla collocazione di tale file: la directory /var/mail/ (o anche /var/spool/mail/) e un file particolare nella directory personale dell'utente. Sendmail e altri programmi simili, utilizzano il primo modo, secondo la configurazione predefinita, dove ogni utente ha un proprio file con un nome che corrisponde a quello dell'utenza. I programmi utilizzati per leggere la posta elettronica devono sapere dove trovarla; in generale si utilizza la convenzione della variabile di ambiente MAIL, che serve a definire il percorso assoluto del file di destinazione dei messaggi. Di solito, nel profilo di configurazione della shell appare un'istruzione simile a quella seguente, dove si definisce l'uso di un file, il cui nome corrisponde a quello dell'utente destinatario, nella directory /var/mail/ (si fa riferimento a una shell derivata da quella di Bourne). MAIL="/var/mail/$USER" export MAIL Mail user agent Per scrivere, inviare e leggere i messaggi di posta elettronica si utilizza normalmente un programma apposito, detto MUA o Mail user agent. Programmi di questo tipo se ne possono trovare in grande quantità, ma difficilmente questi sono compatibili tra loro. Il MUA storicamente più importante e quasi sempre presente nei sistemi Unix è Berkeley Mail, ovvero Mailx. Oltre a Mail, sono molto diffusi i MUA Pine, Elm (ormai superato da Mutt), Balsa. Cartelle e formato dei dati Un programma MUA comune consente di organizzare i messaggi ricevuti e le copie di quelli trasmessi all'interno di cartelle. Queste cartelle possono essere delle directory contenenti i messaggi sotto forma di file differenti, oppure possono essere dei file singoli, a cui spesso si affiancano altri file contenenti dei puntatori ai vari messaggi interni. La forma tradizionale di queste cartelle è quella conosciuta con il nome mailbox, corrispondente in pratica a quella del file usato per il recapito dei messaggi locali, come indicato dalla variabile di ambiente MAIL. - 10 - qmail

La gestione di cartelle in formato mailbox ha lo svantaggio di non offrire un metodo efficace per l'accesso simultaneo da parte di più programmi, tuttavia la corrispondenza è qualcosa di personale e difficilmente si utilizzano due o più programmi simultaneamente. Nella situazione più semplice, il programma MUA gestisce le cartelle dei messaggi nel formato mailbox, in una directory, senza aggiungere altri file (riconoscendo tutti i file della directory come cartelle di messaggi). Eventualmente, alcune cartelle significative possono essere identificate dal programma MUA con un nome particolare, differente dal nome reale del file corrispondente. Per esempio, una di queste cartelle potrebbe chiamarsi «messaggi trasmessi» ed essere abbinata al file sentbox. Sono pochi i programmi che ancora oggi si limitano all'uso del formato mailbox, senza associare degli indici, riconoscendo come cartelle tutti i file contenuti in una directory stabilita, ma sono solo questi che consentono di usare la posta elettronica sia con Mailx, sia con altri programmi compatibili. Appartengono a questa categoria Pine e Balsa, che vengono descritti in questo capitolo proprio per la loro compatibilità reciproca. Il Protocollo La comunicazione tra due MTA usa il codice NVT ASCII. I comandi sono inviati dal client al server ed il server risponde con codici numerici e stringhe di messaggio opzionali. Il numero di comandi è più limitato che in FTP, circa una dozzina, di cui alcuni quasi mai usati. E' interessante notare che l'idea della posta elettronica e' nata in sordina, non per progetto ufficiale, e i programmatori hanno proprio modificato e semplificato il protocollo TFP. Solo cinque comandi sono usati nello scambio posta, che si svolge come segue: 1. Il client compie una Active Open al porto TCP 25 del server, che stabilisce la connessione. Il server risponde con un messaggio di benvenuto (codice 220) che inizia col nome di dominio completo del server. 2. Il client si identifica con il comando HELO, il cui argomento e' il proprio nome di dominio completo. 3. Il client invia il comando MAIL che identifica il mittente del messaggio, e il comando RCPT che identifica il destinatario. Vi possono essere piu' RCPT per destinatari multipli. 4. Il contenuto del messaggio e' inviato con il comando DATA. Il termine del messaggio e' denotato da un singolo carattere punto sull'ultima riga. 5. Lo scambio e' terminato dal comando QUIT. Vi sono alcuni comandi aggiuntivi che tutte le implementazioni di SMTP devono supportare: RSET - abortisce la transazione corrente e risetta la connessione VRFY - verifica l'esistenza del destinatario senza inviare posta NOOP - nessuna operazione, ma forza un messaggio di ricezione dal server Altri comandi sono utili, ma solo opzionali: EXPN - espande una lista di mail nei suoi destinatari TURN - inverte i ruoli client e server senza bisogno di una nuova connessione TCP - 11 - qmail

Messaggi, allegati ed estensioni MIME Il messaggio di posta elettronica tradizionale è composto utilizzando soltanto la codifica ASCII a 7 bit e ha un aspetto simile all'esempio seguente: Date: Tue, 17 Jul 2001 11:27:59 +0200 From: caio@dinkel.brot.dg To: tizio@dinkel.brot.dg Subject: Messaggio tradizionale Message-Id: <E15MR95-0001Wb-00@dinkel.brot.dg> Questo rappresenta un esempio di messaggio di posta elettronica tradizionale, dove si utilizzano solo i primi 7 bit. In pratica, per quanto riguarda la lingua italiana, non si possono usare le lettere accentate. Per garantire che un messaggio di posta elettronica viaggi attraverso qualsiasi servente SMTP, è necessario che si rimanga nell'ambito dei soli 7 bit, oltre al fatto di avere un limite alla lunghezza delle righe. La necessità di scrivere in lingue differenti dall'inglese e di poter trasmettere informazioni diverse dal solito testo puro e semplice, ha fatto nascere lo standard multimediale MIME (Multipurpose internet mail extentions). Con le estensioni multimediali MIME è possibile definire come deve essere interpretato il contenuto di un messaggio di posta elettronica, che così può essere codificato in modo particolare, per trasportare anche informazioni diverse dal solo testo ASCII puro, rispettando i limiti tradizionali dei sistemi di trasporto dei messaggi. Allegati L'invio di un file allegato a un messaggio di posta elettronica richiede un modo per inserire e circoscrivere questo file, oltre alla sua trasformazione in modo tale che possa essere gestito come un file di testo normale. In pratica, è come allegare un file a un file di testo, dal quale deve poter essere estrapolato correttamente in un momento successivo. - 12 - qmail

Dal momento che in un messaggio di posta elettronica alcuni caratteri, che in condizioni normali appartengono già all'ascii standard a 7 bit, hanno un significato speciale (senza contare l'importanza di alcune parole chiave, quando collocate a partire dalla prima colonna), sono da escludere anche questi nelle trasformazioni necessarie a creare gli allegati. La figura mostra in modo semplificato il problema che si tenta di descrivere: un file viene prima trasformato, in base a un certo algoritmo, in un file di testo puro, che possa essere trasmesso attraverso il sistema della posta elettronica; questa trasformazione genera necessariamente un file più grande di quello di partenza; quindi, per diventare un allegato, occorre un modo per circoscriverlo, aggiungendo anche le informazioni necessarie a riprodurre il file originale (che nell'esempio della figura sono state omesse per semplicità). Involucro MIME Un messaggio realizzato secondo le estensioni MIME contiene informazioni aggiuntive specifiche nell'intestazione, come si vede nell'esempio seguente: Date: Tue, 17 Jul 2001 12:28:23 +0200 (CEST) From: caio@dinkel.brot.dg To: daniele@dinkel.brot.dg Subject: Messaggio MIME semplice Message-ID: <Pine.LNX.4.04.10107171139070.5873@dinkel.brot.dg> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Questo =E8 un messaggio un po' pi=f9 complesso, perch=e9 consente l'uso di un insieme di caratteri pi=f9 ampio. In generale appare il campo MIME-Version:, che dichiara l'utilizzo delle estensioni, secondo la versione indicata, anticipando così la presenza di altri campi specifici. L'elenco seguente descrive quelli essenziali. Content-type: tipo/sottotipo[; opzione]... - 13 - qmail

Il campo Content-type: serve a specificare il tipo e il sottotipo MIME del messaggio. Esiste un tipo MIME particolare, che serve a dichiarare la presenza di più componenti; si tratta di multipart e viene chiarito meglio nel seguito il suo significato. Il campo Content-type:, oltre al tipo e al sottotipo MIME, consente l'indicazione aggiuntiva di informazioni opzionali, precedute da un punto e virgola (;), che chiariscono ulteriormente le caratteristiche dell'informazione contenuta. Per esempio, quando si tratta di text/plain, può essere specificato l'insieme di caratteri con l'opzione charset=insieme_di_caratteri. In mancanza di indicazioni, l'insieme di caratteri corrisponde a us-ascii, mentre nell'esempio si vede l'uso dell'insieme iso-8859-1, corrispondente a ISO 8859-1. Segue la descrizione delle opzioni più frequenti. o charset=insieme_di_caratteri o o Definisce l'insieme di caratteri nel caso si tratti di un testo. Il valore predefinito è us-ascii, mentre iso-8859-n rappresenta una codifica secondo lo standard ISO 8859-n. name=file o o Definisce il nome del file nel caso il contenuto venga salvato. boundary="stringa" o Definisce la stringa di delimitazione del confine delle componenti MIME multiple. Content-Transfer-Encoding: codifica_per_il_trasferimento Il campo Content-Transfer-Encoding: serve a specificare in che modo avviene la trasformazione delle informazioni stabilite nel campo Content-type:, per le esigenze legate al trasferimento del messaggio. In pratica si tratta di indicare una parola chiave che chiarisca come interpretare il contenuto del messaggio al momento della ricezione. L'esempio mostra l'uso del tipo quoted-printable (non fa differenza l'uso delle maiuscole o delle minuscole). o Content-Transfer-Encoding: 7bit o o Si tratta della codifica predefinita, ovvero della situazione in cui non è necessario apportare alcuna trasformazione, perché si utilizzano solo i primi 7 bit e le righe di testo non sono troppo lunghe. Content-Transfer-Encoding: 8bit - 14 - qmail

o o In questo caso si tratta di un testo in cui vengono usati 8 bit, senza trasformazioni, con righe non troppo lunghe. Tuttavia, si tratta di una codifica non conveniente, perché non tutti i serventi SMTP sono in grado di mantenere invariate queste informazioni. Content-Transfer-Encoding: binary o o Le informazioni sono inserite così come sono, senza alcuna trasformazione. In generale è impossibile trasmettere messaggi di questo tipo. Content-Transfer-Encoding: quoted-printable o o I caratteri che richiedono l'uso di 8 bit, si rappresentano nella forma =hh, dove la coppia hh rappresenta un numero esadecimale, corrispondente al codice del carattere. In pratica, la lettera «è» si rappresenta come =E8 (come si può vedere dall'esempio); inoltre, per evitare di avere righe troppo lunghe, queste vengono spezzate ponendo il simbolo = alla fine della riga; infine, il carattere «=» viene rappresentato necessariamente come =3D. Content-Transfer-Encoding: base64 o o Si tratta di una trasformazione in cui ogni gruppo di 24 bit (3 byte) viene trasformato in quattro caratteri (4 byte), su righe non troppo lunghe. Il nome della codifica deriva dal fatto che per ogni byte si possono rappresentare solo 64 simboli, essendo necessario escludere tutto ciò che può creare problemi alla trasmissione del messaggio. Pertanto: 2 24 = 64 3. Questo tipo di codifica rende completamente illeggibile, a livello umano, il suo contenuto. In questo senso, si presta alla trasmissione di immagini o di altri tipi di file che non sarebbero comunque leggibili in questo modo. Messaggi contenenti più parti MIME Il tipo MIME multipart prevede la presenza di più componenti separate, con altrettante intestazioni specifiche. In questo caso si indica comunemente il confine tra una componente e l'altra attraverso una stringa particolare (di solito creata in modo da essere univoca), dichiarata con l'opzione boundary="stringa" nel campo Content-Type:, come si può osservare nell'esempio seguente: Date: Thu, 5 Jul 2001 16:38:22 +0200 (CEST) From: caio@dinkel.brot.dg To: tizio@dinkel.brot.dg Subject: Foto MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811839-324931406- 994342670=:16889" - 15 - qmail

Il testo che appare qui viene ignorato. ---1463811839-324931406-994342670=:16889 Content-Type: TEXT/PLAIN; CHARSET=iso-8859-1 Content-Transfer-Encoding: 7BIT Ciao Tizio, ti allego le foto che ti ho promesso. Caio ---1463811839-324931406-994342670=:16889 Content-Type: IMAGE/JPEG; NAME="caio-1.jpg" Content-Transfer-Encoding: BASE64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/ 2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB...... 45/Q+9TZ+XPtn9KAFopFORk9/wDGokdmdgcYAPT2IH9aAJqKqTyurooIAJ5/ L/P5fWrAJC/THX3AP9aAKU2nwzyGRgCSMc+g/D3orC1HWby2umii8rYFUjcj E5Oc87x/KildXt/XT/NGijKytLp3Z//Z ---1463811839-324931406-994342670=:16889 Content-Type: IMAGE/JPEG; NAME="caio-2.jpg" Content-Transfer-Encoding: BASE64 /9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/ 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy...... AgkiBwEifAQArSQpJAD/APah2keikDwgBeEj0iOUKXAFXKIZXKQ5PSJ54tdA VIH7Innrwm9nlABJ8JpKcRQQDfKAGpD5TiEPhACHISI5TttBCigAcoHtO8IA ikacvljhj5sxap/z ---1463811839-324931406-994342670=:16889-- In questo caso, la stringa -1463811839-324931406-994342670=:16889 viene usata per delimitare i vari componenti del messaggio. Si può osservare che quanto contenuto tra la fine dell'intestazione del messaggio e il primo componente MIME viene ignorato dai programmi utilizzati per leggerlo. Questa zona può essere usata per annotare informazioni tecniche destinate alla lettura umana, nel caso di un accesso diretto al file. Si noti che ogni componente MIME è preceduto dalla stringa di delimitazione, a cui si aggiungono inizialmente due trattini (--). Alla fine, dopo l'ultimo componente la stringa di delimitazione ha altri due trattini finali. Volendo schematizzare la cosa: Date: data From: mittente To: destinatario Subject: oggetto MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="delimitatore" [commento]...... - 16 - qmail

--delimitatore Content-Type: tipo/sottotipo[; opzione]... Content-Transfer-Encoding: codifica_per_il_trasferimento contenuto_codificato...... [--delimitatore Content-Type: tipo/sottotipo[; opzione]... Content-Transfer-Encoding: codifica_per_il_trasferimento contenuto_codificato......]... --delimitatore-- Sviluppi Recenti SMTP Esteso Il documento RFC1425 descrive una nuova versione di SMTP, ESMTP (Extended). Il client che desidera farne uso invia il comando EHLO invece di HELO. Un server compatibile risponde col codice 250; la risposta e' di solito multilinea, ed ogni linea contiene una parola chiave e opzionalmente un argomento, a specificare le estensioni SMTP supportate dal server. Un server che non riconosce il comando EHLO e quindi le estensioni, semplicemente invierà un codice di errore. qmail qmail è un MTA, come tale accetta mail, può rigirarle ad altri domini, altri server, oppure effettuare delle consegne locali. Documentazione I siti più importanti dovere reperire informazioni sono i seguenti: http://cr.yp.to/qmail.html: qmail home page ufficiale. http://www.qmail.org: qmail home page non ufficiale. Contiene molte informazioni circa add-ons e patches, e link a buone pagine su altri siti. http://www.flounder.net/qmail/qmail-howto.html: Adam McKenna's HOWTO. - 17 - qmail

Caratteristiche principali qmail è stato progettato in modo sicuro. I processi che potrebbero presentare problemi di sicurezza vengono assegnati a normali utenti Unix senza alcun privilegio. Dunque eventuali hacker non possono effettuare grandi danni. Mentre la maggior parte degli MTA sono monoliti (come ad esempio sendmail), qmail ha una struttura modulare. Ciò permette delle prestazioni notevolmente più elevate in quanto i processi ed i relativi moduli possono agire indipendentemente, senza dover aspettare il termine del lavoro di un altra parte del programma. Anche l'attività di consegna dell e-mail è notevolmente performante. Al contrario di sendmail ed altri MTA, dedica più processi a questa attività Come noto, è necessario contattare l'mx per ogni mail che deve essere consegnata. qmail, crea più processi, dedicati a contattare MX diversi, potendo così consegnare più mail contemporaneamente. Il numero di processi è configurabile dall amministratore. qmail è anche a prova di crash. Memorizza mail provenienti dall esterno in modo tale che una volta incamerate, non può più essere perse. qmail è utile per connessioni ad altra velocità e sempre attive quali quelle presso realtà di grandi dimensioni. Per realtà piccole o disconnesse (quali tramite dial-p= è preferibile utilizzare altri MTA quali ad esempio Exim. Supporta POP3, IMAP4, mailing-list, blacklist, antispamming, antivirus, forwarding, virtualdomains. Comparativi con gli altri MTA's Potrebbe essere scritto un libro su questo argomento, ma sarebbe tedioso da legger. Ecco una veloce comparativa di qmail con alcuni dei più famosi e comuni UNIX MTA. MTA Maturità Sicurezza Funzionalità Performance Sendmailish Modulare qmail medio alto alto alto addons si Sendmail alto basso alto basso x no Postfix medio alto medio alto si si exim medio basso alto medio si no Courier basso medio alto medio opzionale si Sendmailish significa che l'mta si comporta come Sendmail, in alcuni casi si potrebbe passare da Sendmail all'mta alternativo in maniera più trasparente agli utenti, come per es. l'utilizzo di.forward files, /etc/aliases, e di /var/spool/mail. Struttura ed architettura di qmail I messaggi in fase di transizione vengono salvati all interno di una coda (queue). La coda da una struttura a sottodirectory. - 18 - qmail

Le componenti più importanti di qmail sono le seguenti: MODULO qmail-smtpd qmail-inject qmail-queue qmail-rspawn/qmail-remote qmail-lspawn/qmail-local qmail-send qmail-clean FUNZIONE Accetta/Rifiuta messagi SMTP via SMTP Costruisce un messaggio e lo incoda tramite qmail-queue Mette un messaggio in coda Gestisce consegne remote Gestisce consegne locali Processa la coda Pulisce la coda Struttura dei file Tutti i file di qmail risiedono sotto la directory /var/qmail Vediamo una tabella riassuntiva: DIRECTORY alias bin boot control doc man queue users CONTENUTI Contiene i file.qmail per la gestione degli alias Contiene tutti i file binari e gli script Contiene vari script di startup Contiene i file di configurazione di qmail Documentazione varia Man pages di qmail Coda di qmail (vedi prossimo paragrafo) Database per i qmail-users (opzionale) Struttura della coda SUBDIRECTORY bounce info* intd local* lock mess* CONTENUTI Errori permanenti di consegna Envelope dei sender Envelope in fase di creazione dal processo qmail-queue Envelope degli indirizzi locali File con lock File di messaggi - 19 - qmail

pid remote* todo Utilizzato da qmail-queue per acquisire un inode Envelope degli indirizzi locali Envelope completi Schemi Riportiamo di seguito gli schemi della struttura di qmail (facilmente visualizzabili alla URL http://www.nrg4u.com). - 20 - qmail

- 21 - qmail

- 22 - qmail

Installazione di qmail Per installare qmail, è possibile compilare il codice sorgente oppure effettuare un installazione del pacchetto Linux già compilato e distribuito. In questo manuale sceglieremo questa seconda opzione. Per installare qmail in Debian, è necessario prelevare i pacchetti da un sito che li distribuisce. Si inserisca nel file sources.list di APT le seguenti direttive: deb http://smarden.org/pape/debian woody unofficial deb-src http://smarden.org/pape/debian woody unofficial Si digiti poi il commando apt-get update e finalmente apt-get install qmail (Prima di effettuare l'installazione verificare che un altro MTA non stia lavorando sulla porta 25, ed eventualmente disabilitarlo da inetd.conf ed effettuare l'hup del processo). È possibile verificare che l'installazione ha creato degli utenti dedicati a qmail alias:*:7790:2108::/var/qmail/alias:/bin/true qmaild:*:7791:2108::/var/qmail:/bin/true qmaill:*:7792:2108::/var/qmail:/bin/true qmailp:*:7793:2108::/var/qmail:/bin/true qmailq:*:7794:2107::/var/qmail:/bin/true qmailr:*:7795:2107::/var/qmail:/bin/true qmails:*:7796:2107::/var/qmail:/bin/true e due gruppi corrispondenti: qmail:*:2107: nofiles:*:2108: Inoltre è stata creata la directory /var/qmail con la struttura già descritta nei paragrafi precedenti. In questo modo qmail è stato installato e potrebbe già funzionare, sebbene, in previsione di aver un servizio ad alta affidabilità, è stata prevista una successiva integrazione di altri pacchetti che dovremo installare. A questo punto, basterebbe inserire l'abilitazione del processo smtp fornito da qmail nel file inetd.conf e, dopo lo startup di qmail, il servizio sarebbe disponibile. dot-forward Sendmail usa i file.forward, si pronuncia dot forward, per permettere agli utenti di controllare la consegna dei messaggi loro destinati. qmail usa un meccanismo simile, i file.qmail. Il pacchetto dot-forward consente a qmail di utilizzare i file.forward. I sistemi che utilizzano Sendmail, o qualsiasi altro MTA che usa i file.forward, potrebbero prendere i considerazione il pacchetto dotforward per evitare di convertire i.forward esistenti negli equivalenti.qmail--o semplicemente per rendere più trasparente il passaggio a qmail. Il pacchetto dot-forward è piccolo: facile da installare e configurare. I sorgenti sono disponibili su ftp://cr.yp.to/software/dot-forward-0.71.tar.gz. - 23 - qmail

dot-forward è stato scritto da Dan Bernstein, la pagina ufficiale si trova su http://cr.yp.to/dotforward.html. Questo pacchetto viene installato automaticamente durante l'installazione di qmail utilizzando i pacchetti di Debian. fastforward fastforward è un altro add-on di compatibilità con Sendmail. Sendmail usa un database di alias centralizzato contenuto in un unico file, di solito /etc/aliases. qmail usa una serie di file dotqmail in /var/qmail/alias, un file per ogni alias. Se stai effettuando la migrazione a qmail, e vuoi utilizzare il database di alias in formato Sendmail, fastforward consente a qmail di utilizzarlo così com'è, senza convertirlo. I sorgenti sono disponibili su ftp://cr.yp.to/software/fastforward-0.51.tar.gz. fastforward è stato scritto da Dan Bernstein http://cr.yp.to/fastforward.html. Questo pacchetto viene installato automaticamente durante l'installazione di qmail utilizzando i pacchetti di Debian. ucspi-tcp Il server SMTP di qmail non viene lanciato come demone stand alone. Un programma di aiuto come inetd, xinetd, o tcpserver avvia il demone. Quando questo riceve una connessione sulla portat 25, la porta del servizio SMTP, esso esegue una copia di qmail-smtpd. Inetd è il "super-server" standard. Può essere configurato attraverso /etc/inetd.conf per avviare qmail-smtpd, ma il tool raccomandatoè tcpserver, che fa parte del pacchetto ucspi-tcp. ucspi-tcp è un acronimo per UNIX Client-Server Program Interface for TCP, ed èpronunciato ooks-pie tee see pee. tcpserver è preferito a inetd perchè: tcpserver permette di limitare il numero di connessioni simultanee ad un servizio. Inetd ha invece un meccanismo che disabilita temporaneamente il servizio se è raggiunto un certo livello di utilizzo. tcpserver può essere configurato per impedire l'accesso a certi hosts o per riconoscere gli hosts locali e marchiarli, così da trattare le diverse istanze di qmail-smtpd in maniera diversa. tcpserver è l'unico superserver supportato dall'autore di qmail. I sorgenti sono disponibili su ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz. Gerrit Pape distribuisce la documentazione per ucspi-tcp come man pages http://smarden.org/pape/djb/. ucspi-tcp è stato scritto da Dan Bernstein http://cr.yp.to/ucspi-tcp.html. - 24 - qmail

Dunque per installare ucspi-tcp baster (per Debian) digitare apt-get install ucspi-tcp (ed eventualmente se si desidera approfondire, installare anche ucspi-tcp-doc). Daemontools Il pacchetto dei daemontools contiene un set di utility per il controllo e il monitoraggio dei servizi services. Non è necessario, ma è molto raccomandato, specialmente per i sistemi ad alto utilizzo. Include: supervise, che monitora un servizio e lo riavvia se muore. svc, che si interfaccia con supervise e permette di fermare, mettere in pausa, o riavviare il servizio. multilog, che mantiene un log per il servizio, automaticamente li ruote per mantenerli sotto la dimensione massima configurata. svstat per vedere lo stato del processo svscan monitorizza una serie di servizi setuidgid, che avvia programmi per il superuser con normali UID e GID. I sorgenti dei daemontools sono su: http://cr.yp.to/daemontools/daemontools-0.70.tar.gz. Gerrit Pape si occupa della documentazione dei daemontools disponibile come man pages su http://smarden.org/pape/djb/. daemontools creato Dan Bernstein, che mantiene una pagina web su http://cr.yp.to/daemontools.html. Per installarlo su Debian, sarà dunque sufficiente digitare apt-get install daemontools. Dopo aver effettuato l'installazione di questo pacchetto, potremmo trovare la directory /services, /comand e /package. Avviare qmail A questo punto dell installazione è necessario definire degli script che permetteranno la gestione di qmail e l'interazione di quest ultimo con gli altri pacchetto già installati. /var/qmail/rc Per effettuare lo startup di qmail, è necessario impostare il file /var/qmail/rc. Quest ultimo, lancia il comando qmail-start che deve essere seguito da un parametro. Il parametro indica la tipologia di casella postale (mailbox) che vogliamo utilizzare; qmail prevede tre tipologie di mailbox che analizzeremo meglio nei prossimi paragrafi. Per ora visioniamo la tabella: Formato Mailbox Nome Locazione defaultdelivery Commenti mbox Mailbox $HOME./Mailbox più comune, funziona con la maggior parte degli MUA - 25 - qmail

maildir Maildir $HOME./Maildir/ mbox username /var/spool/mail Vedi INSTALL.vsm più efficiente, ma meno supportato formato UNIX tradizionale La directory /var/qmail/boot contiene degli esempi di script di avvio per le 3 diverse configurazioni di mailbox: /var/spool/mail oppure $HOME/Mailbox oppure $HOME/Maildir/, usando procmail o dot-forward, e varie combinazioni di questi. È anche possibile utilizzare uno script come il seguente #!/bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver messages by default exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start "`cat /var/qmail/control/defaultdelivery`" In questo caso il file defaultdelivery deve contenere la modalità di funzionamento di qmail (il tipo di mailbox che si vuole adottare). Vedi INSTALL.mbox, INSTALL.maildir, e INSTALL.vsm per maggiori informazioni. Per selezionare il tipo di mailbox predefinito, inserire il valore defaultdelivery della tabella in /var/qmail/control/defaultdelivery. Es., per utilizzare il formato Mailbox standard con qmail, eseguire: echo./mailbox >/var/qmail/control/defaultdelivery Individuato lo script di propria preferenza, questo va posto in /usr/sbin e chiamato qmail-rc. Startup al boot-time Contrariamente a quanto indicato nella documentazione di qmail reperibile su internet, non dovremo preoccuparci di fare in modo che qmail parta allo startup. Infatti avendo installato il pacchetto Debian di nome daemontools, questo prevede lo startup tramite il processo init (che a sua volta lancia il tool supervise). Per vedere come ciò viene effettuato, visionare il file /etc/inittab. Qualora invece, avessi compilato a mano qmail, oppure l'avessimo installato tramite pacchetti Linux ma senza l'installazione dei daemontools, allora sarebbe necessario definire il boot nel file /etc/init.d ed ai vari livelli di boot gestiti dalle directory rc.n dove N è il livello di boot. Dunque: ln -s /var/qmail/bin/qmailctl INITDIR/qmail ln -s../init.d/qmail RCDIR/rc0.d/K30qmail ln -s../init.d/qmail RCDIR/rc1.d/K30qmail ln -s../init.d/qmail RCDIR/rc2.d/S80qmail ln -s../init.d/qmail RCDIR/rc3.d/S80qmail ln -s../init.d/qmail RCDIR/rc4.d/S80qmail ln -s../init.d/qmail RCDIR/rc5.d/S80qmail ln -s../init.d/qmail RCDIR/rc6.d/K30qmail - 26 - qmail

dove INITDIR è il percorso complete di init.d così come con RCDIR. File di start-up e di gestione Vediamo ora le procedure per effettuare lo startup Lo script qmailctl Definiamo ora uno script che ci permetterà di gestire qmail a mano, ovvero effettuare lo start, stop, reload (rilegge la configurazione) ed altri comandi ancora. Scriviamo il seguente script: #!/bin/sh # For Red Hat chkconfig # chkconfig: - 80 30 # description: the qmail MTA PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin export PATH QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` case "$1" in start) echo "Starting qmail" if svok /service/qmail-send ; then svc -u /service/qmail-send else echo qmail-send supervise not running fi if svok /service/qmail-smtpd ; then svc -u /service/qmail-smtpd else echo qmail-smtpd supervise not running fi if [ -d /var/lock/subsys ]; then touch /var/lock/subsys/qmail fi ;; stop) echo "Stopping qmail..." echo " qmail-smtpd" svc -d /service/qmail-smtpd echo " qmail-send" svc -d /service/qmail-send if [ -f /var/lock/subsys/qmail ]; then rm /var/lock/subsys/qmail fi ;; stat) svstat /service/qmail-send svstat /service/qmail-send/log svstat /service/qmail-smtpd svstat /service/qmail-smtpd/log qmail-qstat - 27 - qmail

;; doqueue alrm flush) echo "Flushing timeout table and sending ALRM signal to qmail-send." /var/qmail/bin/qmail-tcpok svc -a /service/qmail-send ;; queue) qmail-qstat qmail-qread ;; reload hup) echo "Sending HUP signal to qmail-send." svc -h /service/qmail-send ;; pause) echo "Pausing qmail-send" svc -p /service/qmail-send echo "Pausing qmail-smtpd" svc -p /service/qmail-smtpd ;; cont) echo "Continuing qmail-send" svc -c /service/qmail-send echo "Continuing qmail-smtpd" svc -c /service/qmail-smtpd ;; restart) echo "Restarting qmail:" echo "* Stopping qmail-smtpd." svc -d /service/qmail-smtpd echo "* Sending qmail-send SIGTERM and restarting." svc -t /service/qmail-send echo "* Restarting qmail-smtpd." svc -u /service/qmail-smtpd ;; cdb) tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp.cdb echo "Reloaded /etc/tcp.smtp." ;; help) cat <<HELP stop -- stops mail service (smtp connections refused, nothing goes out) start -- starts mail service (smtp connection accepted, mail can go out) pause -- temporarily stops mail service (connections accepted, nothing leaves) cont -- continues paused mail service stat -- displays status of mail service cdb -- rebuild the tcpserver cdb file for smtp restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it doqueue -- schedules queued messages for immediate delivery reload -- sends qmail-send HUP, rereading locals and virtualdomains queue -- shows status of queue alrm -- same as doqueue flush -- same as doqueue hup -- same as reload HELP ;; *) echo "Usage: $0 {start stop restart doqueue flush reload stat pause cont cdb queue help}" exit 1 ;; esac - 28 - qmail

exit 0 Questo script è disponibile su http://www.lifewithqmail.org/qmailctl-script-dt70. È poi possibile effettuare i seguenti comandi: chmod 755 /var/qmail/bin/qmailctl ln -s /var/qmail/bin/qmailctl /usr/bin Gli scripts di supervise Come già detto, supervise è uno dei tool installati tramite daemontools e serve per fare lo startup di qmail. Lo startup viene effettuato dall istruzione inserita nel file /etc/inittab a condizione che siano state effettuate le seguenti impostazioni: mkdir -p /var/qmail/supervise/qmail-send/log mkdir -p /var/qmail/supervise/qmail-smtpd/log Creare il file /var/qmail/supervise/qmail-send/run: #!/bin/sh exec /var/qmail/rc Creare il file/var/qmail/supervise/qmail-send/log/run: #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail Creare il file /var/qmail/supervise/qmail-smtpd/run: #!/bin/sh QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" ]; then echo QMAILDUID, NOFILESGID, or MAXSMTPD is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi exec /usr/local/bin/softlimit -m 2000000 \ /usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 Nello script c è un riferimento al file concurrencyincoming. Questo contiene il numero di processi smtp concorrenti e contemporanei. Per crearlo e configurarlo in modo corretto digitare: echo 20 > /var/qmail/control/concurrencyincoming chmod 644 /var/qmail/control/concurrencyincoming Creare il file /var/qmail/supervise/qmail-smtpd/log/run: - 29 - qmail

#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd Rendere eseguibile i file: chmod 755 /var/qmail/supervise/qmail-send/run chmod 755 /var/qmail/supervise/qmail-send/log/run chmod 755 /var/qmail/supervise/qmail-smtpd/run chmod 755 /var/qmail/supervise/qmail-smtpd/log/run Creare le directory di logging: mkdir -p /var/log/qmail/smtpd chown qmaill /var/log/qmail /var/log/qmail/smtpd In fine, fare i link delle directory di supervise in /service: ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service in questo modo è possibile vedere che viene effettuato lo startup di qmail tramite ad esempio il comando ps aux grep qmail. Per fare qmail digitare il comando qmail stop Controllo di accesso al servizio SMTP Come visto in precedenza abbiamo installato l'applicativo tcpserver in sostituzione di inetd che continua a funzionare ma non è abilitato per gestire qmail. Tra le funzioni principali di tcpserver c è quella di gestire gli accessi, ovvero stabilire chi potrà utilizzare il nostro MTA qmail. Per fare ciò è necessario effettuare le seguenti configurazioni: echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp qmailctl cdb La prima direttiva permetterà agli utenti locali di inviare mail tramite l'utilizzo di smtp. Il secondo comando prende il file appena creato e lo trasforma in un file /etc/tcp.smtp.cdb leggibile da tcpserver. In questo file dovremo anche inserire tutti gli IP delle macchine che devono poter utilizzare il nostro MTA. Create System Aliases Ci sono 3 alias di sistema che dovrebbero essere creati in qualsiasi installazione di qmail: Alias postmaster Scopo Richiesto dall'rfc 2821, punta al mail administrator - 30 - qmail

mailer-daemon di fatto il destinatario per alcuni bounces root redireziona la posta di root al system administrator Per creare gli alias, decidere dove devono puntare (un utente locale o un indirizzo remoto), creare i file.qmail appropriati ed editarli. Per es., dave è sia il system administrator che il mail administrator: echo dave > /var/qmail/alias/.qmail-root echo dave > /var/qmail/alias/.qmail-postmaster ln -s.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster Vedi INSTALL.alias per maggiori dettagli. Il MUA locale di Unix Per effettuare i primi test di consegna della mail, può essere utilie ed immedito utilizzare il comando mail presente su tutti i sistemi Unix. Tuttavia mail, ancora è configurato in modo da puntare ad eventuali MTA precedenti all installazione di qmail (normalmente punta ad Exim oppure a sendmail se quest ultimo è stato installato; anche se sendmail non è installato c è un link simbolico di nome sendmail). Dunque è necessario apportare delle modifiche: Eliminare il link /usr/sbin/sendmail che punta a sendmail oppure ad exim. Creare un link a /var/qmail/bin/sendmail. Dunque: cd /usr/sbin rm sendmail ln s /var/qmail/bin/sendmail sendmail Effettuare le stesse operazioni per /usr/lib/sendmail In questo modo ora, utilizzando il comando mail, viene utilizzato il sendmail fornito da qmail che in realtà punta a qmail-inject, un modulo necessari per inviare mail in modo automatico oppure manuale. Avvio di qmail Per effettuare l'avvio di qmail digitare: qmailctl start Test dell applicazione Per verificare se qmail funziona correttamente digitare: # qmailctl stat /service/qmail-send: up (pid 30303) 187 seconds /service/qmail-send/log: up (pid 30304) 187 seconds /service/qmail-smtpd: up (pid 30305) 187 seconds /service/qmail-smtpd/log: up (pid 30308) 187 seconds - 31 - qmail

messages in queue: 0 messages in queue but not yet preprocessed: 0 Tutti e quattro i servizi dovrebbero essere "up" per più di un secondo. Vi sono poi le istruzioni in TEST.deliver e TEST.receive per verificare che tutto funziona correttamente. Nota che usando queste direttive, il logging verrà fatto da multilog, e non da splogger. Sostanzialmente si tratta di simulare una connessione di un MUA ad un MTA, ma la cosa viene effettuata a mano: $ telnet example.com 25 Trying 192.168.1.5... Connected to example.com. Escape character Is '^]'. 220 example.com ESMTP helo example.net 250 example.com mail from:<postmaster@example.net> 250 ok rcpt to:<postmaster@example.com> 250 ok data 354 go ahead From: postmaster@example.net To: postmaster@example.com Subject: testing Please ignore. 250 ok 989155531 qp 15669 quit 221 example.com Connection closed by foreign host. $ Configurazione Vediamo ora come configurare qmail. File di Configurazione Tutti i file di configurazione di qmail, con l'eccezione dei file.qmail in ~alias, risiedono in /var/qmail/control. La pagina di man di qmail-control contiene una tabella simile a quella riportata in calce: Controllo Default Usato da Scopo badmailfrom none qmail-smtpd blacklisted per indirizzo (From) bouncefrom MAILER- DAEMON qmail-send username del mittente del bounce bouncehost me qmail-send hostname del mittente del bounce concurrencylocal 10 qmail-send max numero di consegne simultanee locali concurrencyremote 20 qmail-send max numero di consegne simultanee remote defaultdomain me qmail-inject nome predefinito del dominio - 32 - qmail

defaulthost me qmail-inject nome predefinito dell'host databytes 0 qmail-smtpd max numero di bytes per messaggio (0=no limit) doublebouncehost me qmail-send host name del mittente del doppio bounce doublebounceto postmaster qmail-send user che riceve il doppio bounce envnoathost me qmail-send helohost me dominio predefinitp per gli indirizzi senza "@" host name usato nel comando SMTP HELO idhost me qmail-inject host name per Message-ID localiphost me qmail-smtpd nome sostituito per l'ip locale locals me qmail-send domini per i quali effetturare la consegna in locale me FQDN of system various predefinito per molti file di controllo morercpthosts none qmail-smtpd database rcpthosts secondario percenthack none qmail-send domini che possono usare "%"-style relaying plusdomain me qmail-inject domini sostituiti per i "+" finali qmqpservers none queuelifetime 604800 qmail-send indirizzo IP del server QMQP secondi che un messaggio può rimanere in coda rcpthosts none qmail-smtpd domini per i quali accettiamo la posta smtpgreeting me qmail-smtpd Messaggio di benvenuto dell'smtp smtproutes none timeoutconnect 60 timeoutremote 1200 qmailremote qmailqmqpc qmailremote qmailremote qmailremote Route SMTP artificiali attesa, in secondi, per una connessione SMTP attesa, in secondi, per il server remoto timeoutsmtpd 1200 qmail-smtpd attesa, in secondi, per un client SMTP virtualdomains None qmail-send domini virtuali ed utenti Per maggiori informazioni circa un particolare file, vedi la pagina di man per i moduli sotto "Used by". Relaying Cos'è il relaying? Quando un MTA accetta un messaggio via SMTP, che non pare essere indirizzato ad un indirizzo locale o provenire da un mittente locale. Prima che esistesse lo spam, era comune trovare MTA configurati per un relayng aperto: server promiscui che accettavano mail da chiunque per chiunque. - 33 - qmail

Molti MTA sono adesso configurati per chiudere completamente il relaying, o aprirlo solo a certi utenti o sistemi fidati. Chris Johnson ha scritto veramente un bel documento sul problema per gli utenti di qmail: http://www.palomine.net/qmail/relaying.html Come vedremo successivamente, il realying ha ragione di esistere perché in alcuni caso gli MTA possono gestire domini di posta a cui non appartengono, per cui è normale che possano arrivare mail indirizzate ad un dominio a cui l'mta non appartiene. Disabilitare il relaying Se si seguono le direttive ufficiali il relaying verrà disabilitato di default. Si raggiunge questo scopo riempendo il file /var/qmail/control/rcpthosts con i fully-qualified domain names elencati in locals e virtualdomains (il localhosts). Il nome del file di controllo, rcpthosts, proviene dal comando SMTP RCPT (recipient - destinatario). In una sessione SMTP, RCPT è usato per specificare l'indirizzo del destinatario del messaggio. rcpthosts, dunque, elenca gli hostnames validi che possono apparire nell'indirizzo RCPT. Sostanzialmente, il qmail accetta mail indirizzata da RCPT, solo se il dominio di destinazione è presente nel file locals oppure rcpthosts. Consentire il relaying selettivo Molti server single-user e per piccoli workgroup possono disabilitare completamente il relaying, ma se si vogliono supportare una comunità distribuita di utenti, c è bisogno di un modo per permettere ai propri utenti, e solo ai propri, di usare il nostro sistema: il relay ci aiuterà a questo scopo. Infatti, avendo aggiunto dei domini e nomi di macchina all interno del file rcpthosts, anche gli utenti locali sono impediti da inviare mail che non siano indirizzati ai domini presenti nel file stesso. Possiamo raggiungere il nostro scopo utilizzando tcpserver per settare la variabile di ambiente RELAYCLIENT, che impone a qmail-smtpd di ignorare le impostazioni del file rcpthosts. Se segui le istruzioni di questo documento, il relaying selettivo sarà abilitato per default. Per consentire l'accesso relay ad un client, aggiungi un'entrata di questo tipo in /etc/tcp.smtp: IP address del client:allow,relayclient="" Adesso è necessario ricompilare di database di accesso SMTP con: o: qmailctl cdb tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp* - 34 - qmail

In questo modo, per lo specifico indirizzo, viene creata la variabile RELAYCLIENT e dunque viene ignorato il file rcpthosts. In realtà nel file rcphosts, oltre che gli IP address è possibile inserire anche domini. La sintassi è la seguente: =dominio.it:allow, RELAYCLIENT= Host names multipli Se il nostro sistema è conosciuto con più nomi, per es. tutti gli indirizzi del tipo user@host1.example.com possono essere anche scritti come user@example.com o user@mail.example.com, allora bisogna configurare qmail cosicché sappia per quali indirizzi effettuare la consegna locale e quali accettare dai sistemi remoti. Basta aggiungere tutti i nomi a due file di controllo: rcpthosts, che dice a qmail-smtpd di accettare la posta indirizzata a questi hosts, e locals, che dice a qmail-send di effettuare la consegna locale per questi hosts. Domini Virtuali I domini virtuali sono simili agli hostname multipli discussi nella sezione precedente, ma ci sono alcune importanti differenze. Innanzitutto, considerando gli host di example.net e del dominio virtuale virtual.example.com, non è generalmente vero che i messaggi spediti a joe@example.net finiranno nella stessa mailbox dei messaggi spediti a joe@virtual.example.com. Lo spazio dei nomi di ogni dominio virtuale è distinto. Con qmail, i domini virtuali sono configurati nel file virtualdomains, che consiste di uno o più entrate nella forma: user@domain:prepend qmail converte user@domain a prepend-user@domain e tratta il risultato com se domain fosse locale. La parte user@ è opzionale, se questa è omessa, tutti gli indirizzi possono essere gestiti con all @domain. Ritornando all'esempio precedente, se il mail administrator di example.net volesse creare un dominio virtuale, virtual.example.com, sotto il controllo dell'utente john, la seguente entrata in virtualdomains risolve il problema: virtual.example.com:john Un messagio per joe@virtual.example.com verrà riscritto come johnjoe@virtual.example.com e consegnato in locale. Vedi la sezione.qmail, e la sottosezione estensione degli indirizzi per informazioni più approfondite su come john può gestire il suo dominio virtuale. - 35 - qmail

Così come con gli host names multipli, tutti i domini virtuali devono essere elencati in rcpthosts così qmail-smtpd saprà di dover accettare i messaggi per quegli indirizzi. Ad ogni modo, diversamente dagli host names multipli, i domini virtuali non devono essere aggiunti a locals. Il record mail exchanger (MX) del DNS deve essere settato per direzionare la posta dei domini virtuali verso il corretto mail server. Questo è un lavoro per il name server administrator e va oltre gli scopi di questa guida. Aliases Il sistema standard di aliasing di qmail è il naturale sviluppo del suo meccanismo di consegna locale. qmail-local tenta di consegnare il messaggio destinato a localpart@host ad un utente locale chiamato localpart. Se nessun utente corrispondente è trovato, il messaggio è consegnato all'utente alias, uno pseudo-utente di tutti i sistemi qmail la cui home directory è /var/qmail/alias. Supponiamo di volere creare un alias info@example.com che forwarda i messaggi all'utente tom. Su example.com, esegui come utente root : echo tom > /var/qmail/alias/.qmail-info chmod 644.qmail-info La sezione.qmail e la sottosezione Estensione degli indirizzi descrivono come creare i file.qmail che specificano quali alias esistono, e cosa fare con i messaggi a loro destinati. Notare che per il modo in cui sono implementati gli alias in qmail, un alias non può mai impedire una consegna ad un utente locale. Se per es. rachel è un normale utente, ~alias/.qmail-rachel non sarà mai usato. Il pacchetto fastforward provvede un metodo alternativo di aliasing che elenca alias multipli in un singolo file compatibile con il database degli alias di Sendmail. La prossima sezione, qmail-users, descrive un altro meccanismo che può essere usato per implementare gli alias. qmail-users qmail-users è un sistema di assegnamento degli indirizzi agli utenti. Normalmente il modulo qmaillspawn gestisce le consegne degli utenti locali. Il modulo lancia infatti a sua volta il modulo qmailgetpw per determinane quale utente appartiene a quale indirizzo, dove risiede la relativa home directory, l'uid, ed il GID. Tuttavia se esiste il file /var/qmail/users/cdb, qmail-lspawn verifica prima alcune informazioni in esso contenute che possono gestire in modo più dettagliato e controllato la consegna della posta elettronica. Il file cdb viene generato dal comando qmail-newu, che legge il file assign (posto sempre nella directory users) che contiene alcune definizioni. C è la possibilità di indicare definizioni simple e wilcard. Vediamo un esempio del primo tipo: =info:andy:35:20:/home/andy:-info - 36 - qmail

Questa sintassi indica che una mail indirizzata ad info (ad es. info@dominio.it) viene gestita dall utenza andy (con UID e GID rispettivamente 35 e 20), usando il file /home/andy/.qmailinfo La sintassi generale è dunque: =address:user:uid:gid:homedir:dash:extension che individuerà il file.qmaildashextension. Il secondi tipo, come indicato precedentemente è di tipo wildcard; ritornando all esempio precedente: +andy-:andy:35:20:/home/andy:-:: Questa sintassi indica che una mail inviata ad esempio a andy-info verrà gestita dall utenza andy e dal file.qmail-info, mentre ad esempio una mail inviata a andy-base verrà gestita dal file q.mail-base e così via. Comandi di gestione di qmail-users Per creare il file cdb come detto in precedenza si utilizza il comandi qmail-newu. Questo legge come input il file assign e genera il file cdb. Vi è poi comando qmail-pw2u per convertire il file /etc/passwd in un formato gestibile e compatibile con il sistema qmail-users. Questo comando permette di escludere ed includere utenti nel file assign. Non è obbligatorio utilizzare questo comando. Qualora non venga utilizzato, vengono utilizzati gli utenti di sistema. Invio di posta elettronica Come visto in precedenza è possibile inviare posta tramite la porta 25 del TCP. Naturalmente esistono dei metodi più pratici. Il comando più utilizzato in ambiente Unix è il comando mail, che abbiamo già opportunamente configurato in modo che utilizzi un MUA fornito da qmail che si chiama qmail-inject. In realtà mail si appoggia al comando standard Unix sendmail che a sua volta fa riferimento a qmailinject. La sintassi di sendmail può essere recuperata dalle man pages. Il modo più banale per inviare una mail è sendmail t < mesg dove mesg è un file ASCII che contiene il nostro messaggio. qmail-inject può essere utilizzato come MUA: $ echo To: eunice@example.com /var/qmail/bin/qmail-inject - 37 - qmail

MUA vari Tra i vari MUA che possono essere installati in ambiente Linux vi sono tra i più famosi Pine, (che finge anche da clienti IMAP4), e Mutt (che è una evoluzione di elm e finge anche da client IMAP4 e POP3). Ricezione di messaggi Come già visto in precedenza i messaggi possono essere gestiti dai cosiddetti dot-qmail files. Questi utilizzando i seguenti caratteri: Carattere Tipo di consegna Valore # Nessuno (commento) Ignorato Programma Comando eseguito dalla shell / oppure. mbox Path dell mbox / oppure. maildir Path del maildir & Forward Indirizzo a cui i messaggi sono rigirati Lettera o numero Forward Indirizzo a cui i messaggi sono rigirati Dunque creando il file $HOME.qmail, questo viene letto dal modulo qmail-local. Se il file contiene il carattere questo deve essere seguito da un comando di shell. Ad esempio: preline /usr/ucb/vacation maryjane oppure: echo "This address is disabled." && exit 100 Se il file contiene./mailbox, inserirà le mail in./mailbox nella $HOME Se il file contiene./maildir/ inserirà le mail nella directory./maildir nella $HOME. Inserendo il carattere & seguito da un indirizzo di e-mail ogni messaggio verrà rinviato ad esso. Estensione degli indirizzi È possibile utilizzare anche gli extension addresses. Oltre ad utilizzare indirizzi quali user@dominio l'utente può scegliere di utilizzare indirizzi del tipo username-extension@dominio Per esempio davide-hlp@dominio sarà gestito dal file ~davide/.qmail-hlp. È possibile anche avere più campi: davide-hlp-lista97@dominio con relativo file.qmaildavide-hlp-lista97. Infine esiste anche la possibilità di utilizzare il file con estensione -default. Quindi ad esempio davide-list-old97 può essere gestito dal file.qmail-list-default. - 38 - qmail

Filtering mail Unix prevede un cosiddetto MDA (Message Delivery Agent) di nome procamil, il quale permette di trattare la posta in ingresso in una mailbox. Questo può essere utilizzato anche con qmail per definire le caselle posta in modo tradizionale Unix definendole quindi in /var/spool/mail Gestione di qmail Tra i comandi più utili che permettono di gestire qmail riportiamo i seguenti: Comando qmailctl qmail-qread qmail-qstat qmail-showctl qmail-tcpto qmail-tcpto splogger Funzione qmailctl help (questo permette di vedere l'help dello script qmail). Brevemente qmailctl permette di fermare i processi, farli ripartire, fare il restart, il reload, creare il cdb, verificare lo stato della coda, verificare lo stato dei processi. Legge lo stato dei messaggi nella coda Fornisce un sommario del funzionamento attuale di qmail Visualizza lo stato dei controlli (directory /var/qmail/control) Gli MTA che non hanno riposto dall ultima ora, vengono inseriti in una lista visualizzabile con questo comando. Per riattivare gli MTA nella lista descritta nel punto precedente in modo che vengano contattati da qmail Legge i messaggi di uno sdtin e li invia al file di sistema syslog. Gestione della coda Normalmente si utilizza il comando qmail-qstat visto nel paragrafo precedente. Per verificare che lo stato della coda non sia corrotto, è necessario avere il codice sorgente di qmail e digitare dalla directory di installazione il comando make setup check. Questo comando, qualora la struttura della coda sia corrotta, la rigenera. Eventuali messaggi possono essere persi, dunque prima è necessario fermare qmail. Risoluzione dei Problemi Processi Un sistema minimale qmail che funziona correttamente deve sempre avere i seguenti processi: qmail-send utente qmails qmail-clean utente qmailq - 39 - qmail

qmail-rspawn utente qmailr qmail-lspawn utente root Uno dei seguenti comandi, secondo la tua variante di UNIX, dovrebbe visualizzare i processi, e possibilmente qualcosa in più: Per es.: ps -ef grep qmail ps waux grep qmail [dave@sparge dave]$ ps waux grep qmail dave 2222 0.0 0.8 836 348 p4 S 10:25 0:00 grep qmail qmaild 351 0.0 1.0 840 400? S N 12:43 0:00 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 49491 -g 31314 0 smtp /var/qmail/bin/qmail-smtpdqmaild 2220 0.0 1.0 844 420? S N 10:25 0:00 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 49491 -g 31314 0 smtp /var/qmail/bin/qmail-smtpdqmaill 365 0.0 0.8 748 344? S N 12:43 0:00 splogger qmail qmailq 368 0.0 0.7 736 292? S N 12:43 0:00 qmail-clean qmailr 367 0.0 0.6 732 272? S N 12:43 0:00 qmail-rspawn qmails 350 0.0 0.8 776 336? S N 12:43 0:00 qmail-send root 340 0.0 0.6 724 252? S N 12:43 0:00 /usr/local/sbin/supervise /var/supervise/qmail-send /var/qmail/rc root 341 0.0 0.6 724 252? S N 12:43 0:00 /usr/local/sbin/supervise /var/supervise/tcpserver-qmail /usr/local/bin/tcpserver -v -x /etc/tcp.smtp root 366 0.0 0.7 736 276? S N 12:43 0:00 qmail-lspawn./mailbox [dave@sparge dave]$ Avviando qmail o qmail-smtpd sotto supervise, come nell'esempio qui sopra, si dovrebbero vedere anche questi processi. E se qmail-smtpd è stato avviato sotto tcpserver, si dovrebbe avere un processo genitore tcpserver più un processo tcpserver per ogni connessione SMTP attiva in ingresso. Usando splogger (o multilog o cyclog) per gestire il logging, ci saranno uno o due processi splogger (o multilog o cyclog) avviat come utente qmaill. Inoltre, se qmail è occupato nella consegna di messaggi locali o remoti, saranno attivi dei processi concurrencylocal qmail-local o concurrencyremote qmail-remote. Logging Per verificare il log di qmail è possibile visualizzare il file di sistema syslog ed inoltre è disponibile la directory /var/qmail/log con file e directory svariate in funzione dei processi. Inoltre è possibile configurare il processo tcpserver affinché effettui tutto il log della connessione alla porta TCP 25 che abbiamo precedentemente effettuato a mano tramite il comando telnet. splogger splogger usa syslog come sistema di logging. Syslog è configurato in /etc/syslog.conf. I messaggi spediti a syslog possiedono una facility e una priorità. Le entrate in /etc/syslog.conf filtrano sulla base delle facility e della priorità per direzionare i messaggi ad un file di log desiderato, ad un host remoto o sulla console. splogger usa la facility mail, per default, così - 40 - qmail

filtrando con grep il file syslog.conf dovrebbero apparire le direttive di configurazione per i log di qmail. Tipiche locazione dei file di log sono: /var/log/syslog /var/adm/syslog /var/log/maillog Una entrata di un log syslog dovrebbe apparire di questo tipo: Jun 3 11:35:23 sparge qmail: 928424123.963558 delivery 153: success: did_1+0+0/ "Jun 3 11:35:23" è il timestamp. "sparge" è il nome del sistema che ha spedito il messaggio. "qmail:" è il tag che splogger inserisce in tutte le entrate qmail del log. "928424123.963558" è un timestamp TAI opzionale (vedi la prossima sezione). "delivery 153: success: did_1+0+0/" is the log message itself. multilog multilog, che fa parte dei daemontools, scrive i log su una serie di file specificati. La directory di log è specificata sulla linea di comando di multilog, quindi dando uno sguardo ai file di avvio di qmail dovresti trovarla facilmente. Il numero di file nella directory di log, e la grandezza massima di ciascun file, sono determinati dalle opzioni. I file di log sono nominati usando il timestamp TAI (Temps Atomique International) dell'ora di avvio. Il comando tai64nlocal, fra i daemontools, converte il timestamp TAI in quello usuale. Una riga di un log gestito da multilog dovrebbe apparire così: @4000000038c3eeb104a6ecf4 delivery 153: success: did_1+0+0/ "@4000000038c3eeb104a6ecf4" è il timestamp TAI, opzionale ma raccomandato. "delivery 153: success: did_1+0+0/" è il messaggio stesso. Messaggi di log Quella che segue è una sequenza di messaggi di log, per un messaggio spedito ad un sistema remoto dal sistema locale: 1 @4000000038c3eeb027f41c7c new msg 93869 2 @4000000038c3eeb027f6b0a4 info msg 93869: bytes 2343 from <dave@sill.org> qp 18695 uid 49491 3 @4000000038c3eeb02877ee94 starting delivery 2392: msg 93869 to remote lwq@w3.to 4 @4000000038c3eeb0287b55ac status: local 0/10 remote 1/20-41 - qmail

5 @4000000038c3eeb104a13804 delivery 2392: success: 209.85.127.177_accepted_message. /Remote_host_said:_250_CAA01516_Message_accepted_for_delivery/ 6 @4000000038c3eeb104a4492c status: local 0/10 remote 0/20 7 @4000000038c3eeb104a6ecf4 end msg 93869 La linea 1 indica che qmail ha ricevuto il nuovo messaggio, è il suo ID di coda è 93869. L'ID di coda non è il numero dell'i-node del file /var/qmail/queue/mess/nn/ --il file di coda che contiene il messaggio. L'ID di coda resta unico per tutto il tempo che un messaggio resta in coda. La linea 2 specifica l'utente che spedisce il messaggio dave@sill.org e la sua lunghezza 2343 bytes. La 3 avvisa che qmail-remote ha iniziato a consegnare il messaggio a lwq@w3.to, e che è stato assegnato l'id 2392 alla consegna. La 4 riporta lo status: 0 consegne locali ed 1 remota ancora da ultimare. La 5 registra il successo della consegna 2392, e ritorna la risposta del server remoto, che spesso contiene informazioni interessanti per seguire passo passo una consegna. In questo caso, "CAA01516" è l'id di consegna sul sistema remoto. La 6 riporta nuovamente lo status del server locale. La 7 notifica l'avvenuta consegna del messaggio e la sua rimozione dalla coda. A questo punto, l'id di coda, 93869, è riusabile per un'altra consegna. Configurazioni tipiche Sebbene ora sia chiaro quali siano le funzioni di un MTA, quest ultimo può essere inserito in un contesto più ampio di una rete di servizi ed agire quindi in diverse modalità. Modalità general purpose Questa è la modalità che abbiamo visto fino ad ora con le configurazioni effettuate in precedenza. Sostanzialmente in queste modalità le funzionalità dell MTA sono le seguenti: Accetta messaggi da altri server ed effettua delle consegne locali Invia messaggi ad altri server remoti Consegna messaggi per le mailbox locali e rigira (forward) messaggi ad altri server locali e remoti Modalità Backup Mail Exchanger Come sappiamo, è possibile definire degli MX record affinché alcuni MTA possano essere utilizzati come backup dei server principali. Supponiamo quindi di avere due server mail1 e mail2; il secondo è il backup del primo. Supponiamo che qualora mail1 non sia raggiungibile, un MX record nel DNS converge il flusso di - 42 - qmail

posta verso mail2, che dovrà trattenere quest ultima fino a quando mail1 non tornerà nuovamente ad essere disponibile. In questo caso dovremo modificare alcuni file posto sotto /var/qmail/controls: Configurare mail1 come MTA general purpose. Più precisamete supponendo che si voglia gestire posta del tipo utente@dominio.it sarà necessario inserire dominio.it nel file rcpthosts. Inoltre, poiché la posta sarà locale (le caselle postali risiedono su mail1) deve essere possibile gestire anche posta del tipo utente@mail1.dominio.it, per cui nel file locals deve essere inserito mail1.dominio.it; Creare due MX record per mail1 e mail2 con priorità maggiore per il primo Configurare mail2 come backup mail exchanger; La configurazione di mail2 implica l'inserimento del dominio nel file rcpthosts ma, poiché la consegna non deve essere locale, non si deve inserire il nome della macchina all interno del file locals. Modalità Null Client Un MTA configurato come null client ha funzionalità minime di MTA. Infatti un sistema di questo tipo si limita a rigirare tutto il flusso di posta elettronica verso un altro sistema (un MTA a tutti gli effetti). Supponiamo di avere una workstation di nome work.dominio.it. Inoltre si supponga che l'mta (o hub di posta) del dominio sia mail1.dominio.it. Si vuole che eventuali mail indirizzate a work o che partono da work siano indirizzate all MTA mail1. Per fare questo è necessario effettuare le seguenti configurazioni: Evitare su work di installare qmail-smtpd in quanto work non deve accettare posta elettronica. Creare un MX record per work che punti a mail1; Ciò eviterà posta esterna indirizzata verso work Su work, inserire nel file smtprouters la sintassi :mail1.dominio.it, indicando che tutta la posta uscente da se stessa (dagli utenti di work) siano automaticamente indirizzata a mail1. Lasciare il file locals vuoto in modo che non vengano effettuate consegne locali. Modalità Smart Host Uno smart host (conosciuto anche come mail hub o relay) è sostanzialmente un router di posta elettronica. Questo accetta mail remota o locale e la reindirizza verso altri domini remoti oppure MTA locali. Non effettua mail consegne su caselle postali locali. Questa configurazione viene utilizzata a d esempio quando si hanno più clienti ciascuno con il proprio dominio e relativo MTA. Per effettuare questo tipo di configurazione è necessario: Configurare la macchina come general purpose. Creare un MX record che punti alla macchina in questione per ciascuno dei domini. - 43 - qmail

Inserire nel file smtprouter il nomi degli MTA che hanno le caselle postali o altre regole di routing. Configurare il tcpserver in modo che accetti posta da tutte le reti dei clienti, o degli MTA dei clienti. Relativamente al primo punto sarà quindi necessario inserire nel file rcpthosts ad esempio il dominio del cliente cliente.it Il secondo punto definisce un MX per cliente.it che punta al nostro relay (ad esempio isp.dominio.it) Il terzo punto implica un file smtprouter del tipo cliente.it:mta.client.it supponendo che mta sia l'mta del cliente. Nel quarto punto inserire le classi degli utenti in tcp.smp, quindi ad esempio 192.168.:allow,RELAYCLIENT="" Modalità Mailbox Server Un mailbox server è un sistema che accetta posta eletronica ed effettua consegne locali nelle mailbox degli utenti. Le mailbox possono essere utilizzate tramite MUA locali (Pine, Mutt, ecc.) oppure tramite protocollo di accesso remoto quali POP3 o IMAP4. Per effettuare questa configurazione è necessario: Configurare l'mta come general purpose Installare qmail-pop3 oppure courier IMAP4 (vedere capitolo successivo per il POP3) Creare utente Unix e configurare le caselle come struttura./maildir Attivare in tcp.smtp il tcpserver in modo che accetti posta dai server locali. Modalità Client Dial-Up Non analizzeremo la configurazione di questo client. Può essere utili comunque sapere che è possibile configurare una workstation in modalità dial-up (sconnessa da internet e che si connette periodicamente con linea telefonica) in modo che questa trattenga la posta elettronica inviata dai suoi utenti, fino a che si stabilisce la connessione telefonica. In questo caso, invia la posta ad un MTA di cui conosce l'indirizzo. POP3 POP3 sta per terza versione del Post Office Protocol. Questo protocollo permette di accedere da remoto alla propria mailbox presente come utenza unix su un sistema. Tutte le mail nuove vengono scaricate sul PC dell utente tramite la porta 110. Le mail in uscita invece, vengono inviate come già visto in precedenza tramite la porta TCP 25. Si può decidere di mantenere le mail scaricate anche nella mailbox, oppure queste, dopo essere state scaricate, possono essere cancellate tramite il POP3. Normalmente viene utilizzata da browser di posta come Netscape, IE, oppure da Outlook di Microsoft. - 44 - qmail

Struttura del POP3 qmail POP3 è così strutturato: qmail-pop3d è il demone principale di POP3. qmail-popup che riceve username e password. checkpasswd che autentica username e password. qmail-popup è il demone che ascolta la porta 110 dove i client si connettono per accedere alla propria mailbox. Successivamente checkpasswd verifica ed autentica username e password e finalmente, qmail-pop3d permette e gestisce l'accesso alla mailbox. Installazione e configurazione di qmail-pop3 Utilizzando l'installazione tramite APT di Debian, il POP3 è già presente nel nostro sistema. In altri casi va appositamente installato. Tuttavia necessario effettuare ulteriori configurazioni prima di poterlo utilizzare. È necessario scaricare checkpassword da http://www.qmail.org/top.html#checkpassword. Lo standard checkpassword, http://cr.yp.to/checkpwd.html, è una buona scelta se non ha bisogno di qualcosa in particolare. Per installarlo digitare i comandi make e successivamente make setup check. Creare lo script /var/qmail/supervise/qmail-pop3d/run: \ #!/bin/sh exec /usr/local/bin/softlimit -m 2000000 \ /usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup FQDN /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1 dove FQDN è il fully qualified domain name del POP server, ad es., pop.example.net. Creare lo script /var/qmail/supervise/qmail-pop3d/log/run: #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \ /var/log/qmail/pop3d Effettuare i seguenti settagli: mkdir /var/log/qmail/pop3d chown qmaill /var/log/qmail/pop3d chmod 755 /var/qmail/supervise/qmail-pop3d/run chmod 755 /var/qmail/supervise/qmail-pop3d/log/run - 45 - qmail

ln -s /var/qmail/supervise/qmail-pop3d /service Aggiungre le seguenti righe alla sezione "start" di qmailctl: if svok /service/qmail-pop3d ; then svc -u /service/qmail-pop3d else echo qmail-pop3d supervise not running fi Queste alla sezione "stop" qmailctl: echo " qmail-pop3d" svc -d /service/qmail-pop3d Queste alla sezione "stat" qmailctl: svstat /service/qmail-pop3d svstat /service/qmail-pop3d/log Queste alla sezione "pause" qmailctl: echo "Pausing qmail-pop3d" svc -p /service/qmail-pop3d Queste alla sezione "cont" qmailctl: echo "Continuing qmail-pop3d" svc -c /service/qmail-pop3d Queste alla sezione "restart" qmailctl: echo "* Restarting qmail-pop3d." svc -t /service/qmail-pop3d Effettuare lo startup di qmail-pop3. Test di funzionalità di qmail-pop3 Per verificare che tutto sia corretto è possibile effettuare alcuni test. Simulare un accesso al POP3 con fallimento di username/password: # /var/qmail/bin/qmail-popup blah /bin/checkpassword pwd +OK <...@blah> user Frodo +OK pass Friend -ERR authorization failed Simulare poi un accesso con username e password corrette. Dopo aver acceduto, digitare il comando list. - 46 - qmail

Simulare una connessione con username e password corrette ma inserire id al posto di pwd nel comando iniziale. POP3 dovrebbe rispondere visualizzando UID e GID dell utente indicato. Virtualdomain e virtualusers I virtualdomain permettono la gestione di più domini sullo stesso MTA. È necessario effettuare alcune considerazioni. Supponendo di avere domini sullo stesso MTA, potrebbe essere un problema. Infatti inviando una mail a john@dominio1 ed a john@dominio2, si avrebbe un conflitto di mailbox, infatti john potrebbero essere due persone diverse. è possibile risolvere questo problema tramite la gestione di utenti virtuali. In parte abbiamo già visto come gestire i virtualdomain e come configurare utenti virtuali. Tuttavia qmail offre una gestione più avanzata tramite VMailMgr e VpopMail. Questi prodotti permettono ad un responsabile di dominio di gestire in modo autonomo il proprio dominio virtuale. Mailing-lists Una mailing-list è sostanzialmente un elenco di utenti con relativo indirizzo di posta elettronica. Inviando una mail all indirizzo della lista, tutti coloro che sono presenti in essa ricevono il messaggio. Esistono svariate mailing-list, statiche (in cui l'amministratore della lista è l'unico abilitato ad inserire gli utenti nella lista) e dinamiche (in cui gli utenti si possono inscrivere e cancellare automaticamente dalla lista). Normalmente in una lista dinamica l'iscrizione e la cancellazione avviene tramite l'invio da parte dell utente di mail ad programma che automaticamente effettua l'operazione. Vi sono infine le liste moderate. Un messaggio inviato alla lista, prima di essere ricevuta da tutti gli iscritti, viene inviata ad un moderatore, persona che ha l'incarico di analizzare il contenuto del messaggio e che se ritiene pertinente, autorizza l'invio all intera lista. qmail supporta l'utilizzo di mailing-list. Il modo più semplice per realizzare una mailing-list è quella di creare un dot-qmail file sotto la propria $HOME..qmail-friends con sintassi amico@dom1.it amico2@dom2.com Supponendo che l'utente sia john, sarà sufficiente inviare una mail a john-friends@dominio.it Questi tipo di mailing-list è ovviamente statico. Esistono dei sistemi di mailing-list dinamico molto evolute. Tra le più importanti c è ezmlm che è integrabile con qmail. Un sistema molto diffuso di mailing.list è majordomo. - 47 - qmail