发信人: xiaojb (jieer@bjsing.net), 信区: BBSDev
标 题: POP3身份验证的一部分代码
发信站: 南京大学小百合站 (Sat Apr 27 21:34:34 2002), 站内信件
//////////////////////////////////////////////////
// POP3验证 jieer@bjsing.net //
/////////////////////////////////////////////////
#include "/home/bbssrc/include/bbs.h"
#include "netdb.h"
#include "sys/types.h"
int check_pop3_mail(char email[],char *pass)
{
struct sockaddr_in pop3host;
struct hostent * site;
int fd;
char *buf,*host;
host=strstr(email,"@")+1;
buf=strstr(email,"@");
*buf=0;
// prints("POP3 Server: %s\n",host);
// prints("POP3 User : %s\n",email);
site=gethostbyname(host);
if(site==NULL) return -1;
pop3host.sin_family=AF_INET;
// memset(&pop3host,0,sizeof(struct sockaddr_in));
memcpy(&pop3host.sin_addr,site->h_addr_list[0],site->h_length);
pop3host.sin_port=htons(110);
fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(connect(fd,(struct sockaddr *)&pop3host,16)<0)
{//printf("can not connect to mail server\n");
return -1;
}
bzero(buf,100);
read(fd,buf,100);
//printf("%s\n",buf);
sprintf(buf,"user %s\r\n",email);
write(fd,buf,strlen(buf));
bzero(buf,100);
if(read(fd,buf,100)<0)
{//printf("read from mail server error!\n");
return -1;
}
buf[strlen(buf)-1]=0;
if(strncmp(buf,"+OK",3)!=0)
{//printf("-ERR\n");
return -1;
}
// printf("%s\n",buf);
bzero(buf,100);
sprintf(buf,"pass %s\r\n",pass);
write(fd,buf,strlen(buf));
if(read(fd,buf,100)<0)
{//printf("read from mail server error!\n");
return -1;
}
buf[strlen(buf)-1]=0;
if(strncmp(buf,"+OK",3)!=0)
{//printf("password error\n");
return -1;
}
// printf("%s\n",buf);
bzero(buf,100);
sprintf(buf,"quit\r\n");
write(fd,buf,strlen(buf));
close(fd);
return 1;
}
--
修改:jieer FROM 61.167.120.130
FROM 61.167.120.130