Laboratori Nazionali di Frascati Posta Elettronica Laboratori Nazionali di Frascati INFN Dael.Maselli@lnf.infn.it http://www.lnf.infn.it/~dmaselli/
Indirizzi e-mail Indirizzo di posta elettronica o e-mail e’ composto di due parti, separate da @ La prima indica il nome di un utente La seconda il nodo su cui trovare l’utente e la sua inbox L’inbox o casella di posta e’ repository dei messaggi inviati presso un determinato utente su un determinato nodo. Tramite l’impostazione di un record MX per un dominio e’ possibile delegare ad un mail server predefinito i mail destinati a un indirizzo nella forma utente@dominio anziche’ utente@nodo.dominio
Struttura di un messaggio Il singolo messaggio e’ costituito da 2 parti Header: contenente informazioni come Mittente, Destinatario, Data, Mail server, Id unico, ecc… Body: il contenuto vero e proprio del messaggio le 2 parti sono separate dalla prima riga vuota. Un semplice e-mail puo’ contenere solo caratteri alfanumerici (7 bit), per l’inserimento di allegati binari e’ quindi necessario l’uso del formato MIME
Formato MIME E’ un metodo per inserire nel body, oltre al semplice testo, anche un numero indefinito di allegati. Prima di tutto va dichiarato nell’header che il messaggio contiene informazioni mime: Content-Type: multipart/mixed; boundary=“--separatore allegati--” A questo punto anche la semplice parte di testo diventa un allegato. All’inizio di ogni allegato viene descritto il tipo di dati: Content-Type: text/plain; charset=UTF-8 Oppure Content-Type: image/jpg; I dati binari vengono poi rappresentati convertendoli da 8 a 7 bit in modo che possano essere trasportati attraverso smtp
Componenti di un sistema di posta elettronica MTA (Mail Transfer Agent): E’ il server che si occupa di smistare i messaggi di posta elettronica in una rete; Utilizza il protocollo SMTP. MDA (Mail Delivery Agent) Si occupa di memorizzare i messaggi nelle caselle degli utenti. MUA (Mail User Agent) E’ l’applicazione utilizzata dall’utente per accedere alla casella e leggere la posta elettronica. (es. Outlook, Mozilla Thunderbird, ecc.) MUA Interface E’ il server che permette di leggere la posta da remoto attraverso un MUA; Generalmente utilizza i protocolli IMAP o POP3.
Struttura tipica della posta elettronica INBOX Storage MTA (SMTP Server) MDA INTERNET File System MUA MUA Interface (POP3 Server) MUA Interface (IMAP Server) WebMail Server Local Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client Client
MTA – Ricezione L’MTA puo’ ricevere un messaggio: Da un client di posta (MUA) Da un altro MTA Generalmente il primo passo avviene inviando un messaggio da un MUA al MTA della rete di cui si fa parte Nel caso in cui la casella di destinazione sia conosciuta l’MTA invia il messaggio al MDA per consegnarlo nella casella dell’utente destinatario. Nel caso l’utente di destinazione non sia conosciuto dal MTA contattato questo lo girera’ al MTA competente. Questo meccanismo viene chiamato RELAY.
MTA – Relay Gli MTA hanno bisogno di identificare quali nodi fanno parte della rete di cui gestisce la posta. Per questioni di sicurezza vengono configurati in modo che effettuino il relay solo in determinate situazioni: Da un nodo esterno ad un indirizzo interno Da un nodo interno ad un indirizzo interno Da un nodo interno ad un indirizzo esterno NON da un nodo esterno ad un indirizzo esterno Questo contribuisce ad evitare contraffazioni ed a garantire la tracciabilita’ del messaggio. L’MTA piu’ utilizzato in ambiente unix e’ Sendmail, ed e’ quello su cui si baseranno i successivi esempi di configurazione.
MUA Interface Per consentire di leggere i messaggi senza essere localmente sulla macchina che contiene le INBOX (caselle di posta) vengono utilizzati dei protocolli di rete: IMAP (Internet Mail Tranfer Protocol): E’ un sistema che permette di leggere la posta ed organizzare folder lavorando direttamente sul server dove effettivamente rimarranno tutti i messaggi. POP3 Consente di effettuare il download di tutti i messaggi nella inbox in modo da poterli leggere off-line; Non permette la creazione di folder; E’ meno impegnativo lato server.
MUA Interface – Configurazione I pacchetti come IMAPd e POP3d generalmente non hanno bisogno di configurazione. Conoscono gli utenti locali e sono in grado di controllarne la password utilizzando le funzioni di sistema. Dipendono da xinetd, il tcp wrapper standard di Linux ed e’ sufficiente attivarli in /etc/xinetd.d/(ipop3d|imapd) e facendo il restart di xinetd. Leggeranno le inbox nella posizione di default (/var/spool/mail/<nome-utente>) Ulteriori folder (imap) risiedono nelle home dir degli utenti
Sendmail – Aliases Dato che gli indirizzi e-mail devono essere relativi a utenti locali alla macchina che funge da mail server, a volte potrebbe essere necessario creare degli alias piu’ mnemonici per i singoli utenti Questi sono definiti nel file /etc/aliases nella forma: Dael.Maselli: dmaselli Quando arrivera' un e-mail sulla macchina mail.infn.it con indirizzo Dael.Maselli@mail.infn.it questo verra’ tradotto in dmaselli@mail.infn.it per rintracciarne il destinatario reale. Ogni volta che si cambia il file /etc/aliases e’ necessario eseguire `newaliases`.
Sendmail – Forward Ogni utente puo’ definire per la propria casella di posta un forward, ovvero un indirizzo dove girare la posta ad essa destinata Viene definito nel file .forward nella home directory dell’utente, all’interno e’ sufficiente scrivere l’indirizzo di destinazione.
Sendmail – Configurazione La configurazione di Sendmail avviene tramite il file /etc/mail/sendmail.cf Il sendmail.cf tuttavia ha una sintassi estremamente complessa e di conseguenza viene usato il file /etc/mail/sendmail.mc che compilato tramite m4 genera il sendmail.cf Il file sendmail.mc e’ strutturato in una serie di istruzioni che definiscono variabili ed includono segmenti di codice nel sendmail.cf Per compilare il sendmail.cf dopo aver editato semdial.mc: cd /etc/mail m4 /usr/share/sendmail-cf/m4/cf.m4 sendmail.mc > sendmail.cf
Sendmail – sendmail.mc di base divert(-1)dnl include(`/usr/share/sendmail-cf/m4/cf.m4')dnl OSTYPE(`linux')dnl FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access')dnl MAILER(procmail)dnl MAILER(smtp)dnl Ulteriori possibilita’ di configurazione possono essere trovate nel file /usr/share/sendmail-cf/README
Sendmail – access.db Per gestire gli accessi al mail server si utilizza il file /etc/mail/access Da qui e’ possibile indicare i nodi da cui si accetta il relay: nodo.dominio RELAY domino RELAY ed i nodi dai quali non si accetta alcun mail: nodo.dominio REJECT domino REJECT
Protocollo SMTP – Test del server (1) Per simulare una richiesta SMTP e possibile eseguire telnet verso l’SMTP server sulla porta 25 (smtp) Esempio di un dialogo SMTP: [dmaselli@lxcalc1:~]> telnet millenniumfalcon.lnf.infn.it 25 Trying 193.206.84.29... Connected to millenniumfalcon.lnf.infn.it (193.206.84.29). Escape character is '^]'. 220 millenniumfalcon.lnf.infn.it ESMTP Sendmail 8.13.1/8.13.1; Fri, 16 Sep 2005 17:44:17 +0200 helo lxcalc1.lnf.infn.it 250 millenniumfalcon.lnf.infn.it Hello lxcalc1.lnf.infn.it [193.206.84.96], pleased to meet you mail from: tizio@pongo101.it 250 2.1.0 tizio@pongo101.it... Sender ok rcpt to: dael@millenniumfalcon.lnf.infn.it 250 2.1.5 dael@millenniumfalcon.lnf.infn.it... Recipient ok data 354 Enter mail, end with "." on a line by itself Subject: prova008 ciao . 250 2.0.0 j8GFiHYn003237 Message accepted for delivery quit 221 2.0.0 millenniumfalcon.lnf.infn.it closing connection Connection closed by foreign host.
Protocollo SMTP – Test del server (2) Se si sono impostate delle regole in access.db, provando con un destinatario esterno: rcpt to: dael@pongo101.it 550 5.7.1 dael@pongo101.it... Relaying denied Per inviare il messaggio a piu’ destinatari sara’ necessario inserire piu’ righe rctp to. Non vengono considerati gli header to e cc, verranno interpretati solo dal MUA nella lettura. L’indirizzo in mail from verra’ trascritto come return-path nell’header del mail e verra’ usato per comunicare problemi nella consegna del messaggio, non e’ quello visualizzato dal MTA che viene invece letto dall’header To del mail.
Sendmail – Funzionamento (1) Sendmail e’ un servizio unix stand-alone e viene fatto partire tramite lo script /etc/init.d/sendmail Quando arriva un messaggio al servizio questo puo’ essere processato in modo sincrono: Viene consegnato immediatamente, durante il dialogo smtp o asincrono: Il messaggio viene inserito in una coda che viene processata ad intervalli prefissati (modalita’ standard) I messaggi in coda risiedono sul disco generalmente in /var/spool/mqueue, separando i metadati di sendmail dal messaggio vero e proprio Per una lista dei messaggi in coda si puo’ usare il comando mailq Per approfondimenti consultare /usr/share/doc/sendmail/doc/op/op.ps
Sendmail – Funzionamento (2) Il mail verra’ alla fine consegnato nella inbox dell’utente in /var/spool/mail/<nomeutente>. Dal sorgente del mail e’ possibile capire molte cose in particolare dalle righe Received che vengono inserite ogni volta che il mail passa da un MTA Le righe Received si leggono dal basso verso l’alto E’ possibile ad esempio sapere l’IP del nodo che ha inviato la richiesta al primo MTA e tracciare i tempi e la rotta Spesso in questo modo si scovano hacker o macchine infette e insicure.
Sendmail – Sorgente di un mail (1) Return-Path: <mario.masciarelli@lnf.infn.it> Received: from sophos1.lnf.infn.it (sophos1.lnf.infn.it [193.206.84.245]) by imap0.lnf.infn.it (8.12.10/8.12.10) with ESMTP id j8FHpK0p027679; Thu, 15 Sep 2005 19:51:20 +0200 Received: from smtp20.libero.it (smtp20.libero.it [193.70.192.147]) by sophos1.lnf.infn.it (8.13.3/8.12.11) with ESMTP id j8FHp7eS024616 for <Calcolo@lnf.infn.it>; Thu, 15 Sep 2005 19:51:08 +0200 (envelope-from mario.masciarelli@lnf.infn.it) Received: from localhost (172.16.1.17) by smtp20.libero.it (7.0.027-DD01) id 431C3C6200A741D1 for Calcolo@lnf.infn.it; Thu, 15 Sep 2005 19:51:12 +0200 Received: from smtp2.libero.it ([172.16.1.97]) by localhost (asav12.libero.it [193.70.192.95]) (amavisd-new, port 10024) with ESMTP id 28671-07-2 for <Calcolo@lnf.infn.it>; Thu, 15 Sep 2005 19:51:12 +0200 (CEST) Received: from [151.80.10.243] (unknown [151.80.10.243]) by smtp2.libero.it (Postfix) with ESMTP id 2E75CA8C1E for <Calcolo@lnf.infn.it>; Thu, 15 Sep 2005 19:50:28 +0200 (MEST) From: mario.masciarelli@lnf.infn.it Reply-to: mario.masciarelli@lnf.infn.it To: Calcolo Mail list <Calcolo@lnf.infn.it> Subject: buona! Date: Thu, 15 Sep 2005 19:50:26 +0300 Message-ID: <F56lYcfmF32S.7dCKwb2T@mail.inwind.it> X-Mailer: Symbian OS Email Version 7.0 MIME-Version: 1.0 Content-Language: i-default Content-Type: multipart/mixed; boundary="EPOC32-sTHHRXFD45-3LLF8qd1bmFb6Fl_cx55hKz4h0kStPfdSYk,-" ( continua … )
Sendmail – Sorgente di un mail (2) X-Scanned: with antispam and antivirus automated system at libero.it X-PMX-Version: 4.7.1.128075, Antispam-Engine: 2.0.3.1, Antispam-Data: 2005.9.15.19 X-PMX-Sender-IP: 193.70.192.147 X-PMX-Spam: 7% X-PMX-Spam-report: The following antispam rules were triggered by this message: Rule Score Description NO_REAL_NAME 0.000 From: does not include a real name This is a MIME Message --EPOC32-sTHHRXFD45-3LLF8qd1bmFb6Fl_cx55hKz4h0kStPfdSYk,- Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable EMail sent via mobile phone. Please reply to: Mario.Masciarelli@lnf.infn.it Content-Type: application/octet-stream Content-Disposition: attachment; filename="Argentario20050910(006).jpg" Content-Transfer-Encoding: base64 <MIME Encoded Attachment>
Antivirus & Antispam Data la grande concentrazione di mail “cattivi” nelle nostre inbox, stanno prendendo piede sempre di piu’ i sistemi di antivirus ed antispam centralizzati su mail server; Entrambi controllano il messaggio nella fase di transizione in un MTA, in sendmail tramite un meccanismo chiamato MILTER; I milter sono dei programmi che vengono eseguiti da sendmail al momento dell’arrivo di un messaggio; Il mail viene passato al milter che lo analizza come vuole e restituisce ACCEPT o REJECT, in quest’ultimo caso si puo’ aggiungere un motivo per il rifiuto; I milter possono essere in grado anche di modificare il messaggio ad esempio eliminando un allegato infetto e continuare la consegna con le informazioni rimanenti.
Fine Servizio di Calcolo Laboratori Nazionali di Frascati Istituto Nazionale di Fisica Nucleare