SMTP
| |
Data
documento:
20 Febbraio 2003 |
SMTP
(Simple Mail Transfer Protocol)
Il
protocollo SMTP, descritto nella RFC
821, è un protocollo ad alto livello, e quindi molto semplice, per
la gestione della posta elettronica. Si intrappone tra l'utente e il server
di posta e il suo funzionamento è alla base di tutte le e-mail che viaggiano
nella rete, essendo un metodo standard, tutti i client di posta più diffusi
lo utilizzano.
Questo protocollo è formato da semplici comandi che
rappresentano un vero e proprio colloquio tra l'utente (o il client di posta
per lui) e il server di posta (normalmente in ascolto sulla porta 25), vediamoli
in dettaglio :
HELO dominio.it
- (Hello) E' la presentazione al server al quale ci stiamo
collegando, dominio.it è il nome del nostro server;
Messaggi
di risposta |
| 250 dominio.it |
Il server di posta risponde con un ok e il
nome del nostro server |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Il servizio non è disponibile |
500 Syntax error, command unrecognized
|
Errore - Il comando è sconosciuto |
| 501 Failure reply |
Errore - Errore di connessione |
| 504 Command parameter not implemented |
Errore - Parametro del comando non implementato |
MAIL FROM:<mittente@server.it> - (Mail) Questo
comando indica al server di posta che siamo intenzionati a spedire un messaggio,
il campo mittente@server.it è l'indirizzo di posta di chi stà
inviando il messaggio;
Messaggi
di risposta |
| 250 OK |
Il mittente è stato accettato |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Servizio non disponibile, viene
interrotta la connessione |
451 Requested action aborted: error
in processing
|
Errore - Errore nel processo |
452 Requested action not taken: insufficient
system storage
|
Errore - La richiesta non può essere
esaudita per spazio di archiviazione insufficiente |
500 Syntax error, command unrecognized
|
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or
arguments |
Errore - Errore di sintassi o nei parametri |
552 Requested mail action aborted:
exceeded storage allocation
|
Errore - Superato il limite di spazio di
archiviazione disponibile |
RCPT TO:<destinatario@server.it> - (Recipient)
Indica al server che vogliamo spedire il messaggio all'indirizzo destinatario@server.it,
questo campo può essere ripetuto più volte qualora il messaggio
debba essere inviato a più destinatari;
Messaggi
di risposta |
| 250 OK |
Il destinatario esiste ed è stato
accettato |
| 251 User not local;
will forward to <forward@server.it> |
Il destinatario non è presente,
ma siccome è conosciuto l'email verrà inoltrata al indirizzo
forward@server.it, serve ad avvisare il mittente che la prossima volta
può utilizzare il nuovo indirizzo |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Il servizio non è disponibile |
450 Requested mail action not taken:
mailbox unavailable
|
Errore - La casella richiesta è al
momento non disponibile |
| 451 Requested action aborted: error
in processing |
Errore - Errore nel processo |
| 452 Requested action not taken: insufficient
system storage |
Errore - La richiesta non può essere
esaudita per spazio di archiviazione insufficiente |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or
arguments |
Errore - Errore di sintassi o nei parametri |
503 Bad sequence of commands
|
Errore - Errore nella sequenza dei comandi |
| 550 Failure reply |
Il destinatario non è presente
nel server e quindi il messaggio non può essere inviato |
|
551 User not local; please
try <forward@server.it> |
Il destinatario non è presente,
l'indirizzo dove può essere trovato e forward@server.it, ma l'email
non verrà inoltrata, dovrà essere cura del mittente inviarla
al nuovo indirizzo |
552 Requested mail action aborted:
exceeded storage allocation
|
Errore - Superato il limite di spazio di
archiviazione disponibile |
| 553 Requested action not taken: mailbox
name not allowed |
Errore - Il nome fornito non è permesso |
DATA
- (Data) Con questo comando diciamo al server che tutto ciò
che verrà scritto in seguito sarà il corpo dell'e-mail, cioè
il messaggio vero e proprio, per terminare il blocco di testo da inviare,
è necessario inserire <CRLF>.<CRLF> (un invio, un punto
e un altro invio);
Messaggi
di risposta |
| 250 OK |
Il messaggio è stato recepito
correttamente (al termine del invio del messaggio dopo il <CRLF>.<CRLF> |
| 354 Intermediate reply |
Dopo aver inserito il
comando data, il server indica con questo messaggio che è in
attesa del corpo del messaggio. |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Il servizio non è disponibile |
| 451 Requested action aborted: error
in processing |
Errore - Errore nel processo |
| 452 Requested action not taken: insufficient
system storage |
Errore - La richiesta non può essere
esaudita per spazio di archiviazione insufficiente |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or
arguments |
Errore - Errore di sintassi o nei parametri |
503 Bad sequence of commands
|
Errore - Errore nella sequenza dei comandi |
552 Requested mail action aborted:
exceeded storage allocation
|
Errore - Superato il limite di spazio di
archiviazione disponibile |
554 Transaction failed
|
Errore - Fallimento |
VRFY Nome - (Verify) Verifica se il nome inserito
è presente nel server a cui è stata formulata la richiesta,
in caso affermativo viene fornita l'e-mail;
Messaggi
di risposta |
| 250 Nome Cognome <email@server.it> |
Al nome richiesto corrisponde l'indirizzo
email@server.it |
| 251 User not local; will forward
to <email@server.it> |
Il nome esiste, ma è
in un altro server con l'indirizzo email@server.it |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Il servizio non è disponibile |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or
arguments |
Errore - Errore di sintassi o nei parametri |
502 Command not implemented
|
Errore - Comando non implementato |
| 504 Command parameter not implemented |
Errore - Parametro del comando non implementato |
| 550 String does not match anything |
Il nome richiesto non è presente in
questo server |
| 551 User not local; please try <email@server.it> |
Il nome esiste, ma è in un
altro server con l'indirizzo email@server.it |
| 553 User ambiguous |
Esistono più utenti simili al nome
fornito |
EXPN Gruppo - (Expand) Chiede che vengano elencati
tutti gli appartenenti al gruppo richiesto, se il gruppo esiste vengono forniti
i nomi e i relativi indirizzi e-mail;
Messaggi di
risposta |
250 Nome1 Cognome1 <email1@server.it>
250 Nome2 Cognome2 <email2@server.it> |
Elenco dei componenti del gruppo richiesto
con relative e-mail |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Il servizio non è disponibile |
| 550 Access Denied to You |
Non si ha il permesso
di visualizzare i componenti del gruppo richiesto |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or arguments |
Errore - Errore di sintassi o nei parametri |
502 Command not implemented
|
Errore - Comando non implementato |
| 504 Command parameter not implemented |
Errore - Parametro del comando non implementato |
SEND
FROM:<mittente@server.it>
- (Send) Indica che vogliamo mandare un messaggio che dovrà
essere inoltrato solo se l'utente con email specificata è attivo in quel
momento e accetta messaggi terminale, utilizzato quindi come una rudimentale
chat;
Messaggi di
risposta |
250 OK
|
Il comando è stato
accettato |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Servizio non disponibile, viene interrotta
la connessione |
| 451 Requested action aborted: error
in processing |
Errore - Errore nel processo |
| 452 Requested action not taken: insufficient
system storage |
Errore - La richiesta non può essere
esaudita per spazio di archiviazione insufficiente |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or arguments |
Errore - Errore di sintassi o nei parametri |
502 Command not implemented
|
Errore - Comando non implementato |
552 Requested mail action aborted:
exceeded storage allocation
|
Errore - Superato il limite di spazio di archiviazione
disponibile |
SOML
FROM:<mittente@server.it> - (Send or Mail) E'
simile al comando Send, solo che in questo caso qualora l'utente non fosse attivo,
il messaggio verrebbe postato come una normale mail;
Messaggi di
risposta |
250 OK
|
Il comando è stato
accettato |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Servizio non disponibile, viene interrotta
la connessione |
| 451 Requested action aborted: error
in processing |
Errore - Errore nel processo |
| 452 Requested action not taken: insufficient
system storage |
Errore - La richiesta non può essere
esaudita per spazio di archiviazione insufficiente |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or arguments |
Errore - Errore di sintassi o nei parametri |
502 Command not implemented
|
Errore - Comando non implementato |
552 Requested mail action aborted:
exceeded storage allocation
|
Errore - Superato il limite di spazio di archiviazione
disponibile |
SAML FROM:<mittente@server.it>
- (Send and Mail) Invia il messaggio all'utente attivo, in ogni caso
viene anche postato il messaggio come una normale mail;
Messaggi di
risposta |
250 OK
|
Il comando è stato
accettato |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Servizio non disponibile, viene interrotta
la connessione |
| 451 Requested action aborted: error
in processing |
Errore - Errore nel processo |
| 452 Requested action not taken: insufficient
system storage |
Errore - La richiesta non può essere
esaudita per spazio di archiviazione insufficiente |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or arguments |
Errore - Errore di sintassi o nei parametri |
502 Command not implemented
|
Errore - Comando non implementato |
552 Requested mail action aborted:
exceeded storage allocation
|
Errore - Superato il limite di spazio di archiviazione
disponibile |
RSET - (Reset) Cancella i comandi precedentemente inviati
ritornando allo stato di semplice collegamento;
Messaggi di risposta |
250 Nome1 Cognome1 <email1@server.it>
250 Nome2 Cognome2 <email2@server.it> |
Elenco dei componenti del gruppo richiesto
con relative e-mail |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or arguments |
Errore - Errore di sintassi o nei parametri |
| 504 Command parameter not implemented |
Errore - Parametro del comando non implementato |
| 550 Access Denied to You |
Non si ha il permesso
di visualizzare i componenti del gruppo richiesto |
HELP [Command] - (Help) Senza nessun comando visualizza
la lista dei comandi, con il comando ne spiega la funzione e l'utilizzo;
Messaggi di
risposta |
| 211 System status, or system help reply |
Informazioni sul comando richiesto |
| 214 Help message |
Informazioni sui comandi |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
| 501 Syntax error in parameters or arguments |
Errore - Errore di sintassi o nei parametri |
502 Command not implemented
|
Errore - Comando non implementato |
| 504 Command parameter not implemented |
Errore - Parametro del comando non implementato |
NOOP - (No Operation) Mantiene la connessione attiva,
non eseguendo però alcuna operazione;
Messaggi di
risposta |
| 250 OK |
Messaggio accettato |
421 dominio.it Service not available,
closing transmission channel
|
Errore - Servizio non disponibile, viene interrotta
la connessione |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
TURN - (Turn) Questo comando inverte le parti tra client
e server, se il client invierà tale comando diventerà server e
il server client, se il server invierà tale comando diventerà
client e il client server, può essere rifiutato;
Messaggi di
risposta |
| 250 OK |
Comando accettato |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
502 NO
|
Comando non accettato |
503 Bad sequence of commands
|
Errore - Errore nella sequenza dei comandi |
QUIT - Termina la connessione attiva con il
server.
Messaggi di
risposta |
| 221 dominio.it Service closing transmission
channel |
Conferma la chiusura |
| 500 Syntax error, command unrecognized |
Errore - Il comando è sconosciuto |
Elencati i comandi vediamo un semplice dialogo per l'invio di una mail:
| Server: |
220 server.it
Simple Mail Transfer Service Ready |
| Client: |
HELO client.it |
| Server: |
250 server.it |
| Client: |
MAIL FROM:<mail@client.it> |
| Server: |
250 OK |
| Client: |
RCPT TO:<mail@server.it> |
| Server: |
250 OK |
| Client: |
RCPT TO:<nomail@server.it> |
| Server: |
550 No such user here |
| Client: |
DATA |
| Server: |
354 Start mail input;
end with <CRLF>.<CRLF> |
| Client: |
Corpo del messaggio |
| Client: |
. |
| Server: |
250 OK |
| Client: |
QUIT |
| Server: |
221 server.it Service
closing transmission channel |
In questo modo è stato mandato il messaggio "Corpo del messaggio"
dal mittente mail@client.it ai destinatari mail@server.it e nomail@server.it,
ma il secondo destinatario è sconosciuto dal sistema, quindi verrà
inoltrato solo al primo.
Nel corpo del messaggio è possibile mettere del testo
formattato in HTML o dei campi particolari quali Subject: o To: che spesso i
client capiscono ed interpretano visualizzandoli poi in appositi campi all'utente.
|