martedì 24 ottobre 2017

Domande SMTP (e risposte)

  1. Il protocollo SMTP richiede di identificarsi tramite il comando HELO prima di poter usare qualsiasi altro comando. Non mi è chiaro quale sia l’argomento da fornire al comando. Nell’esempio delle slide, viene eseguito il comando HELO abc.com seguito da MAIL FROM: <elinor@abc.com>. Posso concludere che l’argomento del comando sia equivalente al dominio e-mail dell’indirizzo e-mail elinor@abc.com?
Ogni mail client è associato ad un dominio email. Se è un mail client in esecuzione su un dispositivo dell'utente, allora è il dominio email in cui si trova la mailbox dell'utente; se invece è un mail server che opera da client, allora è il dominio email di cui il mail server è responsabile.

L'argomento del comando HELO è il dominio email con cui è associato il mail client.

Nell'esempio a cui si riferisce l'argomento di HELO è identico al dominio email del mittente, ma in molti casi pratici (che non abbiamo approfondito) non è così. Ad esempio nel caso delle mailing list: l'argomento di HELO sarà il dominio email a cui appartiene la mailing list ma il mittente dell'email può essere diverso da quel dominio (è esattamente ciò che accade per questo email che state leggendo).
  1. Abbiamo detto che di rado il proprio mail client invia un’e-mail direttamente al mail server del destinatario. Invece, il mail client invia l’e-mail in questione al mail server dell’organizzazione, il quale la inoltra al mail server del destinatario. Ho però provato ad usare un client SMTP per mandare un’e-mail a me stesso; ero in università e non ho utilizzato il mail server universitario, ho invece inviato l’e-mail direttamente e non ho avuto problemi. Più in specifico, ho inviato un’e-mail alla mia mailbox di dominio e-mail gmail.com, utilizzando la configurazione consigliata da Google su https://support.google.com/a/answer/176600, cioè host smtp.gmail.com, porta 465, con SSL ed autenticazione. Come mai l’invio della mail ha funzionato senza problemi?
Se ho capito bene ha usato un mail client dall'interno dell'università.

Se è così allora significa che l'università permette il collegamento verso la porta 465 da parte di qualsiasi indirizzo IP interno (cosa che non sapevo). Mi confermi per favore.
  1. Qualora dovessi mandare l’e-mail tramite il mail server dell’organizzazione, l’argomento del comando HELO cambierebbe? E qualora dovessi mandare l’e-mail utilizzando i server di Google?
In entrambi i casi lei dovrebbe utilizzare come argomento il dominio email a cui appartiene la sua mailbox.
  1. Perché Google consiglia di utilizzare smtp.gmail.com come server SMTP? Facendo una richiesta DNS di tipo MX per gmail.com, smtp.gmail.com non è tra la lista di nomi di mail server restituito dalla risposta DNS (https://www.digwebinterface.com/?hostnames=gmail.com&type=MX&colorize=on&ns=resolver&useresolver=8.8.4.4&nameservers=). Non porei inviare e-mail direttamente usando questi ultimi mail server o, al limite, utilizzando il mail server dell’organizzazione il quale reindirizzerà le e-mail a questi server?
Complicato.

Per quello che abbiamo visto noi, il mail server è il server che contiene le mailbox ed il server al quale si collegano i mail client dell'organizzazione. Nella realtà questi due ruoli potrebbero essere realizzati da due server diversi (rifletteteci un momento e ve ne rendete conto abbastanza facilmente: il DNS deve contenere un record MX che identifica il mail server dove stanno le mailbox e i mail client dell'organizzazione devono essere configurati per collegarsi con l'altro server). Il motivo per cui ciò può accadere lasciamolo perdere.

Google è un caso di questi.
  1. Ho qualche dubbio sulla differenza tra programma client SMTP e programma server SMTP. Mi è ben chiara la differenza tra client e server, nonostante ciò mi è sorto questo dubbio, svolgendo entrambi il compito di inviare e-mail. Chiaramente, il server SMTP memorizza le e-mail fino a quando non vengono prelevate tramite POP o IMAP, ed inoltre effettua l’inoltro quando e-mail quando dovuto. A parte questi due fattori, ci sono altre differenze?
La differenza è enorme. Un programma client SMTP è un programma concepito per essere usato da un utente per gestire la propria mailbox. Quindi ha un'interfaccia grafica per gestire e comporre i messaggi etc etc etc. Le app sui cellulari sono programmi client SMTP. Sui PC non si vedono quasi più; questo è un esempio: https://www.pcmag.com/article2/0,2817,2488072,00.asp

Un programma server SMTP invece è concepito per scopi completamente diversi. La sua interfaccia grafica serve all'amministratore del server per configurarlo, non per gestire una particolare mailbox.
  1. Senza considerare l’obbligatoria autenticazione, cosa dovrei fare se volessi inviare un’e-mail tramite il mail server dell’organizzazione, specificando però di utilizzare il mail server smtp.google.com?
Non può farlo. Se si collega al mail server dell'organizzazione allora lui inoltrerà l'email secondo le informazioni che trova nei record MX del DNS.
  1. Meta-domanda: la terminologia utilizzata nelle domande precedenti è corretta? Se non lo fosse, o non lo fosse in parte, quale sarebbe stato il modo corretto per porle?
Lo stile è perfetto (niente mescolanza tra motivazioni, esempi etc e testo limitato a cosa vuole sapere; quando ho scritto https://bartoli-alberto.blogspot.it/2016/10/come-si-formula-una-domanda.html volevo incoraggiare proprio questo stile).

La terminologia mi pare ok ma non escludo mi sia scappato qualcosina...la cosa fondamentale è evitare ambiguità o errori macroscopici, poi nella pratica è inevitabile introdurre piccole ambiguità o imprecisioni che si capiscono dal contesto (ad esempio io ho scritto che l'argomento di HELO è un dominio email, in realtà è il nome di un dominio email).


giovedì 19 ottobre 2017

Tentare l'esame più e più volte

Premessa: non leggete questo post con l'atteggiamento "il solito docente noiosissimo che ci dice cose inapplicabili e lontanissime dal modo con il quale ragionano gli studenti"; leggetelo con l'atteggiamento "se questa persona che fa questo lavoro da più di vent'anni ed il cui stipendio non dipende dal tempo che sta impiegando nello spiegare gli errori agli studenti, allora forse ha ragione lui e dovrei cercare di capire cosa intende dirmi".

Alcuni studenti si presentano all'esame senza avere studiato tutto il programma approfonditamente, sperando in un colpo di fortuna o una amnistia generale. Altri studenti studiano in maniera pattern-based: prendono gli esercizi svolti, studiano le soluzioni, di fronte ad un nuovo esercizio cercano di ricondurlo ad uno degli esercizi già visti.

Sconsiglio fortemente di usare approcci di questo genere perché la probabilità di successo è molto bassa.

In Reti di Calcolatori basta modificare di un epsilon la formulazione di un esercizio per ottenere uno scenario radicalmente diverso da quello originario. Di conseguenza, cercare di applicare una soluzione già vista in precedenza per un esercizio apparentemente simile, comporta l'enorme rischio di scrivere una stupidaggine. Costruire la soluzione richiesta nel caso specifico senza avere capito la cosiddetta "teoria" è molto difficile.

Inoltre, in Reti di Calcolatori ci sono forti dipendenze tra numerosi argomenti diversi. Lo svolgimento di un esercizio tipicamente richiede la conoscenza di molti argomenti. Riuscire a svolgere gli esercizi proposti avendo buio completo su alcuni argomenti è possibile ma occorre davvero molta fortuna.

Oltre ad avere bassa probabilità di successo, l'approccio "studio un pò e provo / studio sugli esami precedenti" ha il rischio di entrare in una spirale dalla quale è molto difficile uscire:
  1. si fraintendono alcuni concetti di base, si fraintende il modo di ragionare richiesto dalla materia, si fraintende l'approccio da usare negli esercizi;
  2. l'esito dell'esame è fortemente negativo;
  3. la materia diventa sempre più noiosa e studiarla diventa sempre più faticoso;
  4. i fraintendimenti si consolidano e diventano sempre più difficili da rimuovere;
  5. si prova e si riprova l'esame senza successo: talvolta senza avere studiato molto e tanto per provare, ogni volta facendo sempre più fatica.
Purtroppo ho visto molti casi di persone entrate in questa spirale: il superamento dell'esame ha richiesto molti tentativi ed un grande dispendio di tempo ed energie.

Quando un esame non viene superato dopo un certo numero di tentativi, bisogna modificare radicalmente il modo di studiare o la preparazione; provare e riprovare senza modifiche radicali è una strategia sbagliata.

Suggerimenti di una studentessa che ha avuto difficoltà con l'esame di Reti di Calcolatori sono disponibili a questo link. 

Questi suggerimenti possono essere utili per tentare di risolvere il problema. Ma la cosa di gran lunga migliore è cercare di prevenirlo. Quindi, ripeto, sconsiglio caldamente l'approccio "studio un pò e provo / studio sugli esami precedenti".

Suggerimento specifico per chi si presenta alla prima provetta avendo seguito e studiato assiduamente ma ha avuto un esito insufficiente: non smettere di seguire e studiare.

Se uno non è riuscito a superare la provetta nonostante abbia studiato molto allora significa che questo insegnamento, per qualche motivo, gli crea problemi particolari. E' proprio in questi casi che bisogna persistere nell'impegno e non mettere da parte questa materia. Se un esame su parte del programma ha creato problemi pur avendo frequentato le lezioni, è ovvio che un esame su tutto il programma senza avere frequentato tutte le lezioni creerà ancora più problemi. Il rischio di entrare nella spirale sopra descritta, tra l'altro, diventa più grande.