Miten saan tehtyä ohjelmaani sähköposti senderin ilman, että se tarvitsee esim serveriä(hotmailin serverit mx1.hotmail.com,mx2.hotmail.com,mx3.hotmail.com ja mx4.hotmail.com) tarkoitin siis, että se lähettää tietystä osoitteesta sähköpostin ja lähettäjän-osoite kirjotetaan vaikkapa nyt text1 ja text2 kirjoitetaan vastaan-ottajan email ja text3 viesti. Ja command1 toimii senderinä.
Jos nyt oikein ymmärsin, niin et mitenkään sillä sähköpostin lähettäminen vaatii aina jonkinlaisen palvelimen.
Jos tarkoitit että ilman ulkopuolista serveriä, niin sitten täytyy itse koodata serveri mukaan. Lähettäjän osoite kirjoitetaan viestin From-headeriin.
Joudut tekemään oman pienen SMTP-serverin, joka lähettää viestejä SMTP-protokollalla eteenpäin. SMTP-protokolla on erittäin yksinkertainen eikä sen tälläisen tekeminen vaadi kummoista koodimäärää. Tämän todistaa mm. se että monissa sähköpostiviruksissa on tälläinen mukana.
http://www.faqs.org/rfcs/rfc821.html
Viestin lähetäminen tapahtuu siis siten, että pyydät ensin kohdeosoitteen sähköpostipalvelimen DNS-palvelimilta (MX-tietue), ja sitten lähetät viestin SMTP-protokollalla sille palvelimelle.
Pelkkä from-käntän väärentäminen ei kuitenkaan täysin piilota lähettäjää. Viestin vastaanottava palvelin nimittäin yleensä tallentaa viesti lisäotsakkeisiin polun, jota pitkin viesti on saapunut palvelimelle, jolloin väärentäjän IP-osoite tai domain-nimi tulee näkyviin. Tämän piilottaminen onnistuu kyllä spammereilta aika helposti, mutta tämä jätetään harjoitustehtäväksi.
FooBat kirjoitti:
Joudut tekemään oman pienen SMTP-serverin, joka lähettää viestejä SMTP-protokollalla eteenpäin.
Eli SMTP-asiakasohjelman, ei serveriä.
Käytännössä pitää ensin etsiä tuon vastaanottajan isäntänimen MX-tietue, sen jälkeen selvittää sen IP. Jos MX-tietuetta ei ole, selvitetään vain isäntänimen IP ja yritetään sinne. Sen jälkeen onkin helppoa:
HELO <omaosoite>
MAIL FROM: <lähettäjäosoite>
RCPT TO: <vastaanottajaosoite>
DATA
<tähänviesti>
.
QUIT
Jos viestissä on piste omalla rivillään, se pitää käsitellä sitten erikseen. Ja viestissä pitää olla sopivat otsaketiedot. Mainittu RFC kertoo mitä kaikkea tarvitaan ja sähköpostiohjelmista voi katsoa itse mitä kaikkea ne sinne esimerkiksi laittavat.
Aihe on jo aika vanha, joten et voi enää vastata siihen.