
Introduction
CPopProxyMT
is a multi-threaded POP3 proxy server class that is a skeleton
for you to work on and modify to suite your own purposes. In its bare condition, it is
a simple POP3 proxy that can be installed and run on any Windows machine.
Obviously some of you might have further uses for it, in which case you can
expand on the class - for example you might want to filter out certain mails or
you might want to log every mail that's received.
Class structure
class CPopProxyMT
{
public:
CPopProxyMT(void);
~CPopProxyMT(void);
private:
SOCKET m_PopServerSocket;
HANDLE m_ServerThread;
static DWORD ServerThread(DWORD arg);
int m_port;
DWORD MServerThread(void);
static char* MakeCaps(char* str);
public:
int StartProxy(int port);
private:
BOOL bRunning;
static DWORD ClientThread(DWORD arg);
void StartClientThread(SOCKET sock);
static void StartDataThread(DWORD parm);
static DWORD DataThread(DWORD parm);
public:
BOOL IsRunning(void);
void StopProxy(void);
};
Sample usage
CPopProxyMT pop_proxy;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
if(pop_proxy.IsRunning())
{
pop_proxy.StopProxy();
SetDlgItemText(hwnd,IDOK,"Start");
SetDlgItemText(hwnd,IDC_EDIT1,"POP Proxy stopped");
}
else
{
pop_proxy.StartProxy(3110);
SetDlgItemText(hwnd,IDOK,"Stop");
SetDlgItemText(hwnd,IDC_EDIT1,"POP Proxy running");
}
return TRUE;
Features
- Multi-threaded (any number of POP clients can connect)
- No MFC required
POP client configuration
- POP3 server - This should be the domain name or IP address of your
POP3 proxy server
- Username - This should be the format :- username/POP3 server
- Password - Your POP3 password
A sample configuration is shown below for Outlook Express 6

Credits
Well I wouldn't have written this class if not for Colin Davies who had asked
me whether I'd mind writing such a class for him (he is a man with the most
amazing ideas and I reckon this one is for one such idea of his). Thanks Colin,
this one is for you :-)
History
- October 10th 2002 - Although most of the code was written somewhere in
mid-2001, this class was written only on 10-10-02
Nish Nishant is a Principal Software Architect based out of Columbus, Ohio. He has over 17 years of software industry experience in various roles including Lead Software Architect, Principal Software Engineer, and Product Manager. Nish was a Microsoft Visual C++ MVP between 2002 and 2015.
Nish is an industry acknowledged expert in the Microsoft technology stack. He authored C++/CLI in Action for Manning Publications in 2005, and had previously co-authored Extending MFC Applications with the .NET Framework for Addison Wesley in 2003. In addition, he has over 140 published technology articles on CodeProject.com and another 250+ blog articles on his WordPress blog. Nish is vastly experienced in team management, mentoring teams, and directing all stages of software development.
Contact Nish : If you are interested in hiring Nish as a consultant, you can reach him via his google email id
voidnish.
Company Website :
www.ganymedesoftwaresolutions.com