Come inviare mail con Telnet

Oggi vi spiego come inviare un messaggio di posta elettronica utilizzando Telnet. Alcuni di voi si staranno chiedendo perchè mai dovremmo utilizzare Telnet quando possiamo benissimo accedere alla nostra webmail su Internet o attraverso programmi come Outlook. La risposta è semplice: può capitare che il browser dia problemi, può capitare che il servizio di webmail sia temporaneamente disabilitato, se abbiamo un computer vecchio ed una connessione 56K è più veloce utilizzare Telnet piuttosto che aprire delle pagine web piene di elementi grafici che ci rallentano la connessione, gli amministratori di sistema possono utilizzare Telnet per verificare se un server SMTP è attivo. Infine questa è una guida per tutti coloro che sono dannatamente curiosi e vogliono capire più a fondo come funziona l' invio di una mail.
Prima di partire, assicuratevi che le porte 23 (Telnet) e 25 (SMTP) siano aperte in uscita sul vostro computer.

Ci sono 2 cose importanti da dire sull' invio di mail tramite Telnet:

1) nella maggior parte dei casi non è possibile inviare mail tramite Telnet connettendomi al server SMTP di un provider (es. Libero) quando la mia connessione è con un altro provider (es. Alice). Questo è dovuto al fatto che se i server SMTP accettassero qualsiasi utente, anche non facente parte della propria rete, ci sarebbero migliaia di spammer che li utilizzerebbero per inviare mail.
2) anche se ci colleghiamo al server SMTP del provider con il quale ci stiamo connettendo, può capitare che non possiamo inviare mail a persone che non siano utenti del nostro provider. Per esempio la mia connessione è con Libero, mi collego con Telnet al server SMTP di Libero ma non posso inviare mail ad utenti di Alice (questo problema si risolve autenticandosi con AUTH ma non lo spiegherò in questo post).

Tratto da Wikipedia: Telnet è un protocollo di rete utilizzato su Internet. È solitamente utilizzato per fornire all'utente sessioni di login remoto di tipo linea di comando tra host su internet.

Telnet è già presente sia su Windows sia su Linux. Su Windows basta cliccare su Start, Esegui, scrivere cmd e si dovrebbe aprire il prompt dei comandi di Windows. Nel terminale scriviamo telnet ed il gioco è fatto. Dopo aver aperto Telnet su Windows, solitamente accade che quando scriviamo qualcosa non riusciamo a vedere niente perchè Telnet mostra solo i messaggi che riceviamo ma non mostra ciò che scriviamo noi. Per eliminare il problema possiamo scrivere set local echo oppure set localecho in Windows XP. Adesso dovremmo vedere ciò che scriviamo in Telnet.
Su Linux ovviamente non dobbiamo fare altro che entrare nel terminale e digitare telnet.
Ora che sappiamo come entrare in Telnet, dobbiamo collegarci al server SMTP del nostro provider. Per fare questo dobbiamo conoscere l' indirizzo di questo server. Il server di tin per esempio è smtp.tin.it mentre quello di libero è mail.libero.it. Per trovare l' indirizzo del server SMTP del nostro provider basta cercare su Google oppure cliccate qui per avere un elenco di server.
Ora che conosciamo l' indirizzo del server SMTP, siamo pronti ad inviare la mail. Io personalmente sono connesso con Alice e dopo aver fatto delle prove ho notato che posso inviare mail attraverso i server SMTP di Alice, Tin e Virgilio. Quindi apro il terminale, scrivo telnet e poi scrivo open smtp.tin.it 25 per potermi connettere al server di Tin. Il server mi risponde con le seguenti righe:



Ora che siamo connessi al server, dobbiamo identificarci scrivendo HELO tin.it. In tutti i server SMTP dobbiamo identificarci scrivendo HELO nomedominio dove nomedominio è il dominio del nostro provider ma in linea generale possiamo scrivere anche un nostro nickname. Dopo essermi identificato, il server risponde con la riga 250 vsmtp7.tin.it che indica la corretta identificazione. A questo punto indichiamo l' indirizzo del mittente della mail che vogliamo inviare scrivendo MAIL FROM: seguito dall' indirizzo del mittente posto tra i segni <>.



Qualcuno di voi potrà pensare che possiamo scrivere un indrizzo a caso per inviare delle mail false ma sarebbe da sciocchi perchè il server SMTP logga anche il nostro IP durante la fase di identificazione. Ora dobbiamo indicare l' indirizzo del destinatario scrivendo RCPT TO: seguito dall' indirizzo del destinatario posto tra i segni <>.



Sull' indirizzo destinatario devo spendere 2 parole: personalmente connettendomi con Alice ho notato che il server SMTP di Tin non permette di inviare la mail ad utenti di altri provider (es. Libero). Quindi, se mi connetto con Alice e voglio utilizzare il server di Tin posso solo inviare mail ad utenti Tin. Invece se mi connetto sul server SMTP di Virgilio posso inviare mail anche ad altri utenti.
Dopo aver scritto l' indirizzo del destinatario, dobbiamo scrivere il messaggio della mail. Scriviamo quindi il comando DATA e premiamo invio: consiglio di inziare a scrivere subito il soggetto della mail perchè alcuni server SMTP non inviano mail senza soggetto. Scriviamo Subject: soggetto della mail e premiamo invio 2 volte. Scriviamo il testo della mail e quando abbiamo finito dobbiamo premere INVIO PUNTO INVIO. In pratica dobbiamo premere il tasto Invio, premere il tasto del punto e ripremere il tasto Invio. Se tutto va bene il server ci risponderà con un messaggio del tipo 250 <******> Mail accepted oppure 250 <******> Queued mail for delivery. Per uscire definitivamente scriviamo quit.

Se non avete capito qualcosa ecco un' immagine che riassume tutto quello che ho detto. Nell' immagine vi mostro una tipica sessione Telnet sul server SMTP di Alice su porta 25. Ricordatevi che la mia connessione era con Alice durante la sessione Telnet.




Questa è una guida che ho scritto basandomi su decine di prove che ho personalmente eseguito nel mio terminale, con la mia connessione e su vari server SMTP. Ognuno può avere una connessione diversa dalla mia e può connettersi ad un server SMTP che io non ho mai testato. Il mio consiglio quindi è quello di fare delle prove, per capire cosa siamo in grado di fare, con quale connessione e su quali server. Ogni server SMTP può essere stato configurato con determinati filtri che cercano di bloccare azioni di spam, quindi l' unica cosa da fare è sperimentare fino a quando si è padroni di ciò che si sta facendo.

NOTA IMPORTANTE: fare delle prove con Telnet è importante per comprendere pienamente il meccanismo di invio delle mail, però non abusate troppo dei server SMTP dei provider. Per spiegarci bene, non collegatevi 10000 volte in 3 minuti ad uno stesso server, perchè potrebbe capitare che il provider inserisca il vostro IP in una blacklist e non vi permetta di inviare mail senza autenticazione.

17 commenti:

    On 18 ottobre 2007 alle ore 22:09 Anonimo ha detto...

    Mi riprometto di rileggerlo con calma, giuro. In realtà è roba che ho già studiato ma la mia memoria non è delle migliori quindi una ripassata ci vuole.
    Ciao

    On 20 ottobre 2007 alle ore 02:22 Anonimo ha detto...

    ciao molto interessante, ho già fatto diverse prove abbastanza riuscite ma da quando ho cambiato provider ho problemi con la spedizione ad utenti che non siano con lo stesso mio provider, quindi, mi piacerebbe saper qualcosa sul comando auth:)
    grazie

    @ anonimo:
    1) collegati al server SMTP con telnet
    2) invece di scrivere "HELO dominio", per autenticarti scrivi "ELHO dominio"
    3) poi scrivi AUTH LOGIN e premi invio
    4) devi immettere il tuo username codificato in base 64. Per codificare il tuo username vai sul sito http://ostermiller.org/calc/encode.html
    5) dopo aver scritto il tuo username codificato, premi invio
    6) ora devi scrivere la tua password sempre codificata in base 64 e premi invio.
    7) se il server SMTP è abilitato per autenticare gli utenti e se tutto ha funzionato bene, il server dovrebbe risponderti con un messaggio del tipo "Authentication Successfull"
    8) a questo punto scrivi tutte le istruzioni che già cononsci, come il mittente, il destinatario ed il corpo del messaggio...

    Ricordati che a volte capita che il server SMTP del tuo provider non ti permetta lo stesso di inviare mail ad altri utenti. Ciò capita perchè il server è configurato con dei particolari filtri anti-spam che non possono essere bypassati.

    On 20 ottobre 2007 alle ore 16:42 Anonimo ha detto...

    grazie per la veloce e preziosa informazione, mi chiedevo spesso a cosa servisse il comando che avevo visto diverse volte nell'HELP su telnet. ho già provveduto a codificare user id e pswd ed ho fatto diversi tentativi.
    mi sono fatto due idee:
    1)non tutti i server hanno inplementato il comando ELHO;
    2)devo utilizzare il tool nslookup
    set type=mx per trovare un numero elevato di servers a cui domandare il servizio.

    giusto un chiarimento: ho già utilizzato telnet con successo per fare dei piccoli scherzi innocenti; non sono ne in grado, ne interessato a fare "danni" da lamer. Va contro i miei principi. E poi sappiamo bene che usando questo protocollo ci si identifica automaticamente.
    mi potresti suggerire un server che sicuramente implementi il comando ELHO? se non una informazione diretta, potresti darmi una dritta? sono sicuro che hai capito sia la direzione che gli ostacoli. ti sarei molto grato.
    ciao, spero a presto e complimenti per il sito e gli argomenti trattati.

    Prima di tutto volevo sottolineare una cosa che non so se si è capita dal mio commento: se vuoi utilizzare il comando ELHO per autenticarti su un server SMTP, vuol dire che sei cliente del possessore di quel server SMTP.
    Esempio: se vuoi autenticarti sul server SMTP di Alice, vuol dire che sei cliente di Alice (e quindi hai un username e password).

    Dopo questo chiarimento, ti posso dire che buona parte dei server SMTP dei provider importanti ricevono il comando ELHO. Un esempio: i server SMTP di Tin e Alice.

    On 20 ottobre 2007 alle ore 18:52 Anonimo ha detto...

    grazie per la precisazione.
    Sono un po confuso perchè fino ad un annetto fa quando cercavo di imparare queste cose ed usavo una distribuzione linux, riuscivo a concludere positivamente un numero discreto di invii a prescindere dall'essere cliente di un provider o di un altro. da qualche parte avevo letto della possibilità di utilizzare dei server mx adatti allo scopo.. o questa era la sensazione, per fare un'esempio: con un'account alice riuscivo a mandare una mail usando il servizio smtp di di un altro server ad un destinatario con un account su yahoo. questo mi ha creato molta confusione e tanta curiosità. Girando sulla rete ho visto il tuo blog ed ho voluto rispolverare le cose. per il momento riesco ad inviare con tiscali (mio provider) a destinatario@tiscali.it; senza necessità chiaramente di auth login.
    ma sto cercando..in realtà.. di inviare una mail ad un gruppo su yahoo ma non ci riesco. A questo punto un tutorial adatto sarebbe una soluzione. se hai info su dove cliccare dimmi pure, ti sarei grato.
    sono una persona curiosa.
    grazie di tutto!

    @ anonimo: si hai ragione, qualche anno fa erano diffusissimi gli "open relay server", cioè server SMTP che non avevano praticamente filtri anti-spam...

    attualmente è difficilissimo trovare degli open relay. Ho fatto io stesso delle ricerche e non ho trovato nulla. Questo accade perchè sono stati creati dei database che contengono un elenco degli open relay server; quando un server SMTP riceve una mail proveniente da uno di questi open relay, la mail viene automaticamente scartata.

    quindi anche se trovassi qualche server open relay, le mail che invierei verrebbero subito cestinate...

    On 21 ottobre 2007 alle ore 22:08 Anonimo ha detto...

    maledetto lo spam:) comunque molto interessante, grazie.
    Riprendendo un discorso legato a privacy ed all'uso di sistemi che la tutelino, (in qualche maniera), vedi tor o l'uso di tools similari, ti ringrazio ulteriormente per tutto ciò che posterai su questo blog.
    personalmente, se non sono tanto importante da essere spiato con un sat quando prendo la moto per fare una gita, ritengo di dover avere la stessa libertà quando navigo in rete, quando scambio una informazione.
    Sappiamo bene che la tutela assoluta non esiste, ma almeno rendiamo la vita difficile alle macchine che ci spiano. Sembrano le parole di un paranoico, ma in realtà sappiamo bene cosa succede, con le carte di credito, con i forms da compilare e via dicendo, per non parlare del nostro "numero di serie" che ci portiamo appresso.
    Quelli attenti vivono nel costante tentativo di non farsi vedere e per farlo, in un certo senso, devono diventare spioni a loro volta.
    Sembra quasi che si tolga la libertà agli altri per guadagnare il propio spazio, virtuale e materiale. Io invece credo profondamente nel diritto di essere ovunque senza dover dire nulla a nessuno. Nei limiti delle leggi che regolano la circolazione delle persone fisiche attraverso i posti di frontiera naturalmente! Un pacchetto che viaggia sulla rete però è cosa facile da spiare illegalmente, troppo facile. La libertà personale materiale viene tutelata molto di più dalla legge rispetto al diritto alla privacy digitale. In campo informatico chi conosce è avvantaggiato, chi passeggia ignaro non sa cosa accade invece, crede di essere solo anche se la maggior parte delle volte, la sua privacy non trova nessuna tutela soprattutto perchè non si accorge che essa viene violata.

    Quindi, grazie, i tuoi posts sono una dimostrazione che la condivisione non deve far paura e serve a tutti.

    Ma dopo il tedio dei discorsi seri, ecco qui una chicca, qualcuno mi ha detto che all'utilizzo del termine Spam (in realtà una carne pressata tipo patè che in inghilterra mettono ovunque perchè non stona mai) avrebbe contribuito questa genialata di monty phyton
    http://www.youtube.com/watch?v=wZ7YedEopp4

    come dire..a volte lo spam è propio una ossessione:)

    Non si scrive ELHO, ma EHLO...

    @ omar: si, hai ragione. Errore di battitura...

    IL COMANDO CORRETTO E' EHLO

    chi lo sa perchè mi sono fissato con elho!


    @ anonimo: si anche io sapevo questa storia! :)

    Super! Io questa cosa proprio no la sapevo. Prima o poi ripasso di qui e lo rileggo con calma!

    On 3 novembre 2009 alle ore 03:04 Anonimo ha detto...

    good start

    On 6 novembre 2009 alle ore 07:27 Anonimo ha detto...

    necessita di verificare:)

    On 6 novembre 2009 alle ore 23:55 Anonimo ha detto...

    Si, probabilmente lo e

    On 6 novembre 2009 alle ore 23:55 Anonimo ha detto...

    La ringrazio per Blog intiresny

    On 6 novembre 2009 alle ore 23:56 Anonimo ha detto...

    quello che stavo cercando, grazie

    On 7 novembre 2009 alle ore 00:00 Anonimo ha detto...

    imparato molto