mam takie pytanie gdybym napisał serwer POP3 (najpierw musze sie nauczyć ale pytam na zapas :) ) to jaki był by mój adres "e-mail" ?? czy to by było coś w stylu
COŚTAM@MÓJ_IP ?? a moze macie jakieś informacje gdzie moge sie dowiedzieć coś o serwerach pop3 lub znacie jakieś już gotowe ??
Poczytaj RFC, poszukaj w internecie, http://google.pl, dużo tego jest.
Żeby serwer odebrał poczte potrzebujesz znać protokół SMTP. POP3 lub IMAP są używane przez klientów pocztowych do odbioru poczty.
dzieki poszukam ale <ort>zaŁÓżmy</ort> że stworze ten serwer to jaki wtedy bedzie adres e-mail ?? a może to też w RFC pisze ??
Znak @ to to samo, co "at". Czyli jak masz cośtam@cośtam.pl, to oznacza to tyle, co użytkownik cośtam na serwerze cośtam.pl. Wnioskuję więc, że jak sobie założysz serwer, to adresem pocztowym będzie właśnie użytkownik@twój_ip.
dziękuje :) o to chodziło :) najpierw sobie ściągne jakiś już gotowy serwer "pobawie" sie nim troche a potem wezme sie za czytanie RFC
a mam takie pytanie bo przeczytałem w RFC że na początku serwer do klienta wysyła powitanie (geeting) wie ktoś może jak wygląda to powitanie ?? bo nie znalazłem tego w RFC :(
A to nie jest przypadkiem coś takiego, jak się połączysz z jakimś serwerem na porcie poczty (czyli zdaje się porcie 25) ?
no właśnie nie...<ort>na razie</ort> zrobiłem takie coś że jest serwer ustawiony na port 110 (Pop3) i nasłuchuje. Włączam ten programik i Outlooka...w outlooku ustawiam nowe konto i próbuje sie połączyć...wtedy pisze że sie łączy a na serwerku wyświetla że nawiązał połączenie...i teraz właśnie chyba serwer powinien coś wysłać...a potem klient ma wysłać nazwe uzytkownika i hasło :/ aha próbuje wysłać takie powitanie "+OK dewey POP3 server ready" a w OnClientRead dałem ShowMessage(Socket->RecitiveText()); żeby wiedzieć czy klient coś odpowie...ale nic nie odpowiada :( ale sie rozpisałem :p mam nadzieje że ktoś mi pomoże :)
a) z tego co k<ort>ojaze</ort> to faktycznie byl by to jego ip, chyba ze ma wpis MX w jakiejs domenie wskazujacy na jego kompa
b)
http://www.faqs.org/rfcs/rfc1939.html ;>>>
tam masz wszystko...
lacznie z przykladami etc ;>
c) poza tym uzyj telneta ;>
telnet poczta.onet.pl 110
i sprobuj sie sie zalogowac or sth, patrz co serv ci odpisuje etc
klient po nawiazaniu polaczenia powinien wyslac tekst "HELO", dopiero jak serwer odpowie, to mozna wysylac dalsze polecenia do serva.
PS. te jedno L to nie blad, tak musi byc...
hmmm tylko gdy sprawdzam OnClientRead to jest tak jak by klient nic nie wysyłał... serwer wykrywa beza problemu nowe połączenie z serwerem :/
hmmm tylko gdy sprawdzam OnClientRead to jest tak jak by klient nic nie wysyłał... serwer wykrywa beza problemu nowe połączenie z serwerem :/
A czego używasz? Send/ReceiveText, czy Send/ReceiveBuf?
no używam Send/ReceiveText... pewnie mi teraz powiecie że to powinno być Send/ReceiveBuf :/ czy mam racje ??
no używam Send/ReceiveText... pewnie mi teraz powiecie że to powinno być Send/ReceiveBuf :/ czy mam racje ??
<font color="darkred">[DOPISANE]</span>
Umieszczam tu swój kod (port w ClientSocket ustawiony jest na 110)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ServerSocket1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ServerSocket1->Active=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Nawiązano nowe połączenie: "+Socket->RemoteAddress);
Socket->SendText("+OK POP3 server ready");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
Może tu robie coś źle ??
sprobuj tak
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Nawiązano nowe połączenie: "+Socket->RemoteAddress);
Socket->SendText("+OK POP3 server ready" + "\\r\\n"); //nie pamietam jak to sie dodaje w cpp
}
no używam Send/ReceiveText... pewnie mi teraz powiecie że to powinno być Send/ReceiveBuf :/ czy mam racje ??
Masz całkowitą rację :). Nie wiedzieć czemu, Send/ReceiveText nie działa z serwerami/klientami, które nie stosują tej samej metody. Pewnie SendText wysyła jeszcze jakieś dodatkowe dane, których nie ma przy wysyłaniu bufora, a których ReceiveText się spodziewa. A kiedy ich nie dostanie, to ignoruje cały pakiet. Tak mi się wydaje.
sprobuj tak
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Nawiązano nowe połączenie: "+Socket->RemoteAddress);
Socket->SendText("+OK POP3 server ready" + "\\r\\n"); //nie pamietam jak to sie dodaje w cpp
}
Dziękuje :) to działa...a w pewnym momencie byłem juz tak blisko bo dodałem "\n"
Wszystkim dziękuje za pomoc :)
Prosze o nie zamykanie na razie tego tematu bo w razie nowych kłopotów bede pisał tutaj :)
No i mam kolejne pytanie :) chociaż pewnie sie nim totalnie skompromituje ale gdy klient wysyła STAT serwer musi odpowiedziec np tak:
+OK 2 200 i ta ostatnia liczba (200) jest to rozmiar wiadomości wyrażony w oktetach i to jest moje pytanie Co to są te oktety ?? :)
nie wyzywajcie jak to bedzie banalne pytanie ale jak szukałem na ggogle to mi tylko znajdywało informacje o zespołach ludowych ;-)
Może chodzi o rozmiar wiadomości wyrazony ósemkowo :P [OCT]
Co to są te oktety ??
Ja wiem, może po prostu chodzi o ilość znaków... 1 znak = 1 bajt = 8 bitów = oktet :)