亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qmail-qmtpd.c

?? linux下qmail的源碼 本人加了一些注釋
?? C
字號:
//接受遠程主機發來的qmtp連接請求

#include "stralloc.h"#include "substdio.h"#include "qmail.h"#include "now.h"#include "str.h"#include "fmt.h"#include "env.h"#include "sig.h"#include "rcpthosts.h"#include "auto_qmail.h"#include "readwrite.h"#include "control.h"#include "received.h"void badproto() { _exit(100); }void resources() { _exit(111); }int safewrite(fd,buf,len) int fd; char *buf; int len;{  int r;  r = write(fd,buf,len);  if (r <= 0) _exit(0);  return r;}char ssoutbuf[256];substdio ssout = SUBSTDIO_FDBUF(safewrite,1,ssoutbuf,sizeof ssoutbuf);int saferead(fd,buf,len) int fd; char *buf; int len;{  int r;  substdio_flush(&ssout);  r = read(fd,buf,len);  if (r <= 0) _exit(0);  return r;}char ssinbuf[512];substdio ssin = SUBSTDIO_FDBUF(saferead,0,ssinbuf,sizeof ssinbuf);unsigned long getlen(){  unsigned long len = 0;  char ch;  for (;;) {    substdio_get(&ssin,&ch,1);    if (ch == ':') return len;    if (len > 200000000) resources();    len = 10 * len + (ch - '0');  }}void getcomma(){  char ch;  substdio_get(&ssin,&ch,1);  if (ch != ',') badproto();}unsigned int databytes = 0;unsigned int bytestooverflow = 0;struct qmail qq;char buf[1000];char buf2[100];char *remotehost;char *remoteinfo;char *remoteip;char *local;stralloc failure = {0};char *relayclient;int relayclientlen;main(){  char ch;  int i;  unsigned long biglen;  unsigned long len;  int flagdos;  int flagsenderok;  int flagbother;  unsigned long qp;  char *result;  char *x;  unsigned long u;   sig_pipeignore();  sig_alarmcatch(resources);  alarm(3600);   if (chdir(auto_qmail) == -1) resources();   if (control_init() == -1) resources();  if (rcpthosts_init() == -1) resources();  relayclient = env_get("RELAYCLIENT");  relayclientlen = relayclient ? str_len(relayclient) : 0;   if (control_readint(&databytes,"control/databytes") == -1) resources();  x = env_get("DATABYTES");  if (x) { scan_ulong(x,&u); databytes = u; }  if (!(databytes + 1)) --databytes;   remotehost = env_get("TCPREMOTEHOST");  if (!remotehost) remotehost = "unknown";  remoteinfo = env_get("TCPREMOTEINFO");  remoteip = env_get("TCPREMOTEIP");  if (!remoteip) remoteip = "unknown";  local = env_get("TCPLOCALHOST");  if (!local) local = env_get("TCPLOCALIP");  if (!local) local = "unknown";   for (;;) {    if (!stralloc_copys(&failure,"")) resources();    flagsenderok = 1;     len = getlen();    if (len == 0) badproto();     if (databytes) bytestooverflow = databytes + 1;    if (qmail_open(&qq) == -1) resources();    qp = qmail_qp(&qq);     substdio_get(&ssin,&ch,1);    --len;    if (ch == 10) flagdos = 0;    else if (ch == 13) flagdos = 1;    else badproto();     received(&qq,"QMTP",local,remoteip,remotehost,remoteinfo,(char *) 0);     /* XXX: check for loops? only if len is big? */     if (flagdos)      while (len > 0) {        substdio_get(&ssin,&ch,1);        --len;        while ((ch == 13) && len) {          substdio_get(&ssin,&ch,1);          --len;          if (ch == 10) break;          if (bytestooverflow) if (!--bytestooverflow) qmail_fail(&qq);          qmail_put(&qq,"\015",1);        }        if (bytestooverflow) if (!--bytestooverflow) qmail_fail(&qq);        qmail_put(&qq,&ch,1);      }    else {      if (databytes)        if (len > databytes) {          bytestooverflow = 0;          qmail_fail(&qq);        }      while (len > 0) { /* XXX: could speed this up, obviously */        substdio_get(&ssin,&ch,1);        --len;        qmail_put(&qq,&ch,1);      }    }    getcomma();     len = getlen();     if (len >= 1000) {      buf[0] = 0;      flagsenderok = 0;      for (i = 0;i < len;++i)        substdio_get(&ssin,&ch,1);    }    else {      for (i = 0;i < len;++i) {        substdio_get(&ssin,buf + i,1);        if (!buf[i]) flagsenderok = 0;      }      buf[len] = 0;    }    getcomma();     flagbother = 0;    qmail_from(&qq,buf);    if (!flagsenderok) qmail_fail(&qq);     biglen = getlen();    while (biglen > 0) {      if (!stralloc_append(&failure,"")) resources();       len = 0;      for (;;) {        if (!biglen) badproto();        substdio_get(&ssin,&ch,1);        --biglen;        if (ch == ':') break;        if (len > 200000000) resources();        len = 10 * len + (ch - '0');      }      if (len >= biglen) badproto();      if (len + relayclientlen >= 1000) {        failure.s[failure.len - 1] = 'L';        for (i = 0;i < len;++i)          substdio_get(&ssin,&ch,1);      }      else {        for (i = 0;i < len;++i) {          substdio_get(&ssin,buf + i,1);          if (!buf[i]) failure.s[failure.len - 1] = 'N';        }        buf[len] = 0;         if (relayclient)          str_copy(buf + len,relayclient);        else          switch(rcpthosts(buf,len)) {            case -1: resources();            case 0: failure.s[failure.len - 1] = 'D';          }         if (!failure.s[failure.len - 1]) {          qmail_to(&qq,buf);          flagbother = 1;        }      }      getcomma();      biglen -= (len + 1);    }    getcomma();     if (!flagbother) qmail_fail(&qq);    result = qmail_close(&qq);    if (!flagsenderok) result = "Dunacceptable sender (#5.1.7)";    if (databytes) if (!bytestooverflow) result = "Dsorry, that message size exceeds my databytes limit (#5.3.4)";     if (*result)      len = str_len(result);    else {      /* success! */      len = 0;      len += fmt_str(buf2 + len,"Kok ");      len += fmt_ulong(buf2 + len,(unsigned long) now());      len += fmt_str(buf2 + len," qp ");      len += fmt_ulong(buf2 + len,qp);      buf2[len] = 0;      result = buf2;    }          len = fmt_ulong(buf,len);    buf[len++] = ':';    len += fmt_str(buf + len,result);    buf[len++] = ',';     for (i = 0;i < failure.len;++i)      switch(failure.s[i]) {        case 0:          substdio_put(&ssout,buf,len);          break;        case 'D':          substdio_puts(&ssout,"66:Dsorry, that domain isn't in my list of allowed rcpthosts (#5.7.1),");          break;        default:          substdio_puts(&ssout,"46:Dsorry, I can't handle that recipient (#5.1.3),");          break;      }     /* ssout will be flushed when we read from the network again */  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人高清视频免费观看| 成人一级片网址| 国产精品另类一区| 欧美精品一卡二卡| 粉嫩一区二区三区性色av| 亚洲国产视频a| 亚洲国产激情av| 91麻豆精品国产自产在线| 成人av在线一区二区| 久久激五月天综合精品| 亚洲综合色区另类av| 国产人妖乱国产精品人妖| 制服视频三区第一页精品| 99久精品国产| 国产一区二区三区四| 日韩不卡一区二区| 亚洲国产精品一区二区尤物区| 中文字幕精品在线不卡| 精品久久久久久久久久久久包黑料 | 国产大片一区二区| 日韩av中文在线观看| 亚洲一区二区av电影| 国产精品毛片a∨一区二区三区| 精品成人一区二区三区四区| 欧美一区二区三区影视| 欧美日韩精品一区视频| 色噜噜夜夜夜综合网| 99久久99精品久久久久久| 成人丝袜高跟foot| 高清视频一区二区| 国产精品91一区二区| 国产主播一区二区三区| 九九在线精品视频| 麻豆精品久久久| 七七婷婷婷婷精品国产| 日韩不卡免费视频| 奇米四色…亚洲| 奇米影视一区二区三区| 美女mm1313爽爽久久久蜜臀| 偷窥国产亚洲免费视频| 亚洲一区成人在线| 亚洲高清免费视频| 天天色天天操综合| 日韩精品一区第一页| 日韩不卡一区二区三区| 美女视频黄免费的久久| 精品在线观看视频| 国产成人综合在线播放| 国产suv精品一区二区6| 成人av网站大全| 99亚偷拍自图区亚洲| 91美女片黄在线| 在线精品观看国产| 欧美剧情片在线观看| 欧美一区二区在线不卡| 日韩你懂的电影在线观看| 精品久久久久久久久久久久久久久久久 | 国产一区二区三区四区五区入口 | 51久久夜色精品国产麻豆| 51精品视频一区二区三区| 日韩一区二区三区三四区视频在线观看 | 成人一区二区视频| 91啦中文在线观看| 欧美精品成人一区二区三区四区| 欧美一区二区黄| 久久亚洲综合色一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 欧美精彩视频一区二区三区| 亚洲免费三区一区二区| 日精品一区二区| 国产精品一区二区三区99| 99vv1com这只有精品| 欧美人与z0zoxxxx视频| 久久日一线二线三线suv| 国产精品传媒视频| 婷婷综合久久一区二区三区| 国产自产v一区二区三区c| 99re这里只有精品6| 欧美一区二区在线免费观看| 中文字幕欧美日韩一区| 亚洲一二三区不卡| 国产综合久久久久久久久久久久| av一区二区三区在线| 日韩一区二区在线看| 国产精品免费av| 日本成人在线视频网站| 成人深夜福利app| 欧美日韩中文另类| 国产精品视频看| 视频一区免费在线观看| 国产精品亚洲第一区在线暖暖韩国 | 综合久久久久久| 日韩电影免费在线看| 北条麻妃一区二区三区| 欧美一二三区在线观看| 亚洲美女免费视频| 国产麻豆精品95视频| 欧美日韩电影一区| 国产精品成人一区二区艾草| 色婷婷精品久久二区二区蜜臂av | 久久你懂得1024| 亚洲国产精品一区二区尤物区| 国产成人精品午夜视频免费| 欧美日韩国产免费| 国产精品国产馆在线真实露脸| 免费人成精品欧美精品| 91麻豆高清视频| 久久噜噜亚洲综合| 蜜桃av一区二区在线观看| 欧美性大战久久久| 亚洲人午夜精品天堂一二香蕉| 国产精品白丝jk白祙喷水网站| 91精品国产综合久久久蜜臀图片| 亚洲视频小说图片| 高清久久久久久| 久久青草国产手机看片福利盒子| 日日夜夜精品视频免费| 日本道精品一区二区三区| 国产精品三级电影| 国产精品综合一区二区三区| 日韩午夜激情免费电影| 午夜国产精品一区| 欧美视频在线一区二区三区 | 久久久久99精品国产片| 蜜桃视频第一区免费观看| 欧美日韩国产欧美日美国产精品| 亚洲欧美日韩在线| 99久久国产综合色|国产精品| 国产欧美va欧美不卡在线| 精品一区二区久久| 欧美不卡一区二区| 看片网站欧美日韩| 日韩精品一区二| 久久99精品国产.久久久久 | 日韩一区二区三| 日韩国产精品91| 制服视频三区第一页精品| 丝袜美腿一区二区三区| 欧美精品777| 日韩精品亚洲一区| 欧美精品tushy高清| 蜜桃一区二区三区在线| 日韩欧美一区电影| 国产毛片精品视频| 亚洲国产精品t66y| 91欧美激情一区二区三区成人| 亚洲欧洲日韩av| 色狠狠桃花综合| 亚洲国产精品麻豆| 91麻豆精品国产无毒不卡在线观看| 婷婷国产v国产偷v亚洲高清| 日韩欧美一区在线| 韩国理伦片一区二区三区在线播放 | 国内精品免费**视频| 久久综合狠狠综合| 国产露脸91国语对白| 中文字幕一区二区三区视频| 91美女精品福利| 亚洲成人先锋电影| 日韩欧美中文字幕公布| 国产呦精品一区二区三区网站| 精品国产一区久久| 国产剧情在线观看一区二区| 国产精品色在线| 色婷婷综合五月| 午夜精品视频一区| 久久无码av三级| 91丨九色丨蝌蚪丨老版| 亚洲chinese男男1069| 337p日本欧洲亚洲大胆精品| 成人免费看黄yyy456| 亚洲综合一区二区精品导航| 欧美一区二区女人| 成人综合在线观看| 亚洲午夜激情av| 欧美精品一区二区三区蜜桃视频| 国产91富婆露脸刺激对白| 一区二区三区在线视频播放| 欧美电视剧在线看免费| 99久久久无码国产精品| 石原莉奈在线亚洲三区| 国产精品网站一区| 欧美日韩三级一区二区| 国产精品资源在线| 亚洲成人激情社区| 国产欧美视频一区二区| 欧美中文字幕不卡| 国产精品一品二品| 99re视频这里只有精品| 美国欧美日韩国产在线播放| 国产精品久线在线观看| 日韩欧美一区二区在线视频| 91在线高清观看| 久久精品国产成人一区二区三区 | 欧美国产禁国产网站cc| 337p亚洲精品色噜噜| 成人91在线观看| 麻豆精品视频在线| 亚洲综合在线视频| 国产欧美日韩三区|