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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vpopbull.c

?? 相當(dāng)優(yōu)秀的 UNIX 進(jìn)程管理工具
?? C
字號:
/* * $Id: vpopbull.c,v 1.6 2004/01/11 09:16:53 mbowe Exp $ * Copyright (C) 1999-2003 Inter7 Internet Technologies, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <time.h>#include <pwd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <signal.h>#include "config.h"#include "vpopmail.h"#include "vauth.h"#define MAX_BUFF 256#define MSG_BUF_SIZE  32768#define TOKENS ":\r\n"static char EmailFile[MAX_BUFF];static char CurDir[MAX_BUFF];static char ExcludeFile[MAX_BUFF];static char Domain[MAX_BUFF];static char TmpBuf[MAX_BUFF];static char MsgBuf[MSG_BUF_SIZE];static int Verbose;static int DoNothing;#define COPY_IT          0#define HARD_LINK_IT     1#define SYMBOLIC_LINK_IT 2static int DeliveryMethod = COPY_IT;int InsertDate = 1;int EmailFileFlag = 0;int ExcludeFileFlag = 0;int process_domain(char *,  FILE *, FILE *);int copy_email( FILE *, char *, char *, struct vqpasswd *);int in_exclude_list( FILE *, char *, char *);void get_options(int argc,char **argv);void usage();int main(int argc, char *argv[]){ FILE *fsi = NULL; FILE *fsx = NULL; FILE *fsassign; char *domain; char *alias; char *domain_dir = NULL; char *tmpstr; static struct stat statbuf;  memset(TmpBuf,0,sizeof(TmpBuf));  memset(MsgBuf,0,sizeof(MsgBuf));  Verbose = 0;  DoNothing = 0;  if ( argc == 1 ) {    usage();    vexit(-1);  }  get_options(argc,argv);  getcwd(CurDir,sizeof(CurDir));  if ( EmailFileFlag == 1 ) {    if ( (fsi = fopen(EmailFile, "r")) == NULL ) {        fprintf(stderr, "Could not open file %s\n", EmailFile);        vexit(-1);    } else {        /* make sure the file size is not 0 */        stat(EmailFile, &statbuf);        if(statbuf.st_size == 0) {            fprintf(stderr, "Error: %s is empty\n", EmailFile);            vexit(-1);        }        /* check for existing date header */        while (fgets (TmpBuf, sizeof(TmpBuf), fsi) != NULL) {            /* check for end of headers (blank line) */            if (*TmpBuf == '\n') break;            if (strncasecmp ("Date: ", TmpBuf, 6) == 0) {                InsertDate = 0;                break;            }        }        rewind(fsi);    }  } else if (! DoNothing) {    /* require -f [email_file] */    fprintf(stderr, "Error: email_file not specified\n");    usage();    vexit(-1);  }  if ( ExcludeFileFlag == 1 ) {    if ( (fsx = fopen(ExcludeFile, "r")) == NULL ) {        fprintf(stderr, "Could not open file %s\n", ExcludeFile);        vexit(-1);    }  }  if (( EmailFile[0] != 0 || DoNothing == 1) && Domain[0] != 0 ) {    /* Process list of domains */    domain = strtok(Domain, " ");    while (domain != NULL ) {        if((vget_assign(domain, domain_dir, sizeof(domain_dir), NULL, NULL)) != NULL) {            process_domain(domain,  fsi, fsx );        } else {            fprintf(stderr, "Error: domain %s does not exist\n", domain);        }        domain = strtok(NULL, " ");    }    vexit(0);  } else if ( (EmailFile[0] != 0 || DoNothing == 1)  && Domain[0] == 0 ) {    /* Process ALL domains */    snprintf(TmpBuf, sizeof(TmpBuf), "%s/users/assign",  QMAILDIR);    if ( (fsassign = fopen(TmpBuf, "r")) == NULL ) {        perror("can not open assign file");        vexit(0);    }    while ( fgets(TmpBuf, sizeof(TmpBuf), fsassign) != NULL ) {      if ( (alias=strtok(TmpBuf, TOKENS)) == NULL ) continue;      if ( (domain=strtok(NULL, TOKENS)) == NULL ) continue;      if ( (tmpstr=strtok(NULL, TOKENS)) == NULL ) continue;      if ( (tmpstr=strtok(NULL, TOKENS)) == NULL ) continue;      if ( (domain_dir=strtok(NULL, TOKENS)) == NULL ) continue;      alias++;  /* point past leading + */      alias[strlen(alias)-1] = '\0';  /* remove trailing - */      if (strcmp (alias, domain) != 0) {        if (Verbose) {          fprintf (stderr, "skipping %s (alias of %s)\n", alias, domain);        }      } else {        chdir(domain_dir);        process_domain(domain,  fsi, fsx );      }    }    fclose(fsassign);  }  return(vexit(0));}int process_domain(domain, fsi, fsx ) char *domain; FILE *fsi; FILE *fsx;{ char filename[MAX_BUFF]; char hostname[MAX_BUFF]; static struct vqpasswd *pwent; time_t tm; int pid; int first = 1;	gethostname(hostname,sizeof(hostname));	pid=getpid();	time (&tm);	snprintf(filename, sizeof(filename), "%lu.%lu.%s",(long unsigned)tm,		(long unsigned)pid,hostname);	first = 1;	while( (pwent = vauth_getall(domain, first, 1)) != NULL )  {		first = 0;		if ( !in_exclude_list( fsx, domain, pwent->pw_name) ) {			if (DoNothing) {				printf("%s@%s\n", pwent->pw_name, domain);			} else {				if(copy_email( fsi, filename, domain, pwent) != 0) {					fprintf(stderr, "%s@%s: ERROR COPYING TO %s\n", pwent->pw_name, 						domain, pwent->pw_dir);				} else if (Verbose) {					printf("%s@%s\n", pwent->pw_name, domain);                		}			}		}	}		return(0);}int copy_email( fs_file, filename, domain, pwent) FILE *fs_file; char *filename; char *domain; struct vqpasswd *pwent;{ static char tmpbuf[MAX_BUFF]; static char tmpbuf1[MAX_BUFF]; FILE *fs; int count; struct stat mystatbuf; uid_t uid; gid_t gid;    /* At this point, we know that the user exists in the auth backend.     * Now we need to run some other checks before we can copy the     * bulletin into their maildir...     */    /* test to see if the user has been allocated a userdir yet.     * Some of the auth backends (eg MySQL) allow users to be inserted     * into authsystem while leaving their dir blank. The idea here is     * that this information will get allocated/updated the first time     * the user does an AUTH or receives a msg.     */    if ( pwent->pw_dir == NULL || pwent->pw_dir[0]==0 ) {       /* A dir hasnt been allocated to this user yet.        * Try and allocate one now        */       /* retrieve the domain's uid/gid        * (required for the call to make_user_dir()        */        if (vget_assign(domain, NULL, 0, &uid, &gid) == NULL) {            fprintf(stderr, "Failed to vget_assign() for %s\n", domain);            return (-1);        }        if ( make_user_dir(pwent->pw_name, domain, uid, gid) == NULL) {            fprintf(stderr, "Auto creation of maildir failed for %s@%s\n", pwent->pw_name, domain);            return(-1);        }        /* Re-read pwent, because we need to lookup the newly created         * pw_dir entry         */        if ((pwent=vauth_getpw(pwent->pw_name, domain)) == NULL ) {           fprintf(stderr, "Failed to vauth_getpw() for %s@%s\n", pwent->pw_name, domain);           return(-1);        }    }    /* At this point, a dir must have been allocated to the user     * in the auth backend. So the next thing to do is test to see     * if the dir exists on the filesystem or not. If the dir doesnt     * exist, then we will try and create it     */     if ( stat(pwent->pw_dir, &mystatbuf ) == -1 ) {        if ( vmake_maildir(domain, pwent->pw_dir )!= VA_SUCCESS ) {            fprintf(stderr, "Auto creation of maildir failed for %s@%s\n", pwent->pw_name, domain);            return(-1);        }    }	snprintf(tmpbuf, sizeof(tmpbuf), "%s/Maildir/new/%s", pwent->pw_dir, filename );		if ( DeliveryMethod == COPY_IT ) {		rewind(fs_file);		if ( (fs = fopen(tmpbuf, "w+")) == NULL ) {			return(-1);		}		fprintf(fs, "To: %s@%s\n", pwent->pw_name, domain); 		if (InsertDate) fprintf(fs, "%s", date_header());			while((count=fread(MsgBuf,sizeof(char),MSG_BUF_SIZE,fs_file)) 				!= 0 ) {			fwrite( MsgBuf, sizeof(char), count, fs );		}		fclose(fs);	} else if ( DeliveryMethod == HARD_LINK_IT ) {		if (*EmailFile == '/')			snprintf(tmpbuf1, sizeof(tmpbuf1), "%s", EmailFile);		else			snprintf(tmpbuf1, sizeof(tmpbuf1), "%s/%s", CurDir, EmailFile);		if ( link( tmpbuf1, tmpbuf) < 0 ) {			perror("link");		}	} else if ( DeliveryMethod == SYMBOLIC_LINK_IT ) {		if (*EmailFile == '/')			snprintf(tmpbuf1, sizeof(tmpbuf1), "%s", EmailFile);		else			snprintf(tmpbuf1, sizeof(tmpbuf1), "%s/%s", CurDir, EmailFile);		if ( symlink( tmpbuf1, tmpbuf) < 0 ) {			perror("symlink");		}	} else {		fprintf(stderr, "no delivery method set\n");		return -1;	}	/* fix permissions */	chown(tmpbuf, VPOPMAILUID, VPOPMAILGID);	chmod(tmpbuf, 0600);	return(0);}int in_exclude_list( FILE *fsx, char *domain, char *user ){ static char tmpbuf[MAX_BUFF]; static char emailaddr[MAX_BUFF]; int  i;	if ( fsx == NULL ) {		return(0);	}	rewind(fsx);	snprintf(emailaddr, sizeof(emailaddr), "%s@%s", user, domain);	while (fgets(tmpbuf, sizeof(tmpbuf), fsx) != NULL) {		for(i=0;tmpbuf[i]!=0;++i) if (tmpbuf[i]=='\n') tmpbuf[i]=0;		if ( strcmp( tmpbuf, emailaddr ) == 0 ) {			return(1);		}		}	return(0);}void get_options(int argc, char **argv){ int n = 0; int c; int errflag; extern char *optarg; extern int optind;    memset(Domain, 0, sizeof(Domain));    memset(EmailFile, 0, sizeof(EmailFile));    memset(ExcludeFile, 0, sizeof(ExcludeFile));    errflag = 0;    EmailFileFlag = 0;    ExcludeFileFlag = 0;    while( !errflag && (c=getopt(argc,argv,"Vvcshnf:e:")) != -1 ) {        switch(c) {            case 'v':                printf("version: %s\n", VERSION);                break;            case 'V':                Verbose = 1;                break;            case 's':                DeliveryMethod = SYMBOLIC_LINK_IT;                 break;            case 'c':                DeliveryMethod = COPY_IT;                 break;            case 'f':                EmailFileFlag = 1;		snprintf(EmailFile, sizeof(EmailFile), "%s", optarg);                break;            case 'e':                ExcludeFileFlag = 1;		snprintf(ExcludeFile, sizeof(ExcludeFile), "%s", optarg);                break;            case 'h':                DeliveryMethod = HARD_LINK_IT;                 break;            case 'n':                DoNothing = 1;                break;            default:                errflag = 1;                break;        }    }    if ( errflag > 0 ) {        usage();        vexit(-1);    }    n = 0;    while ( optind < argc ) {         if((n=1)) strncat(Domain, " ", sizeof(Domain)-strlen(Domain)-1);        strncat(Domain, argv[optind], sizeof(Domain)-strlen(Domain)-1);        n = 1;        ++optind;    }}void usage(){	printf("usage: vpopbull [options] -f [email_file] [virtual_domain] [...]\n");	printf("       -v (print version number)\n");	printf("       -V (verbose)\n");	printf("       -f email_file (file with message contents)\n");	printf("       -e exclude_email_addr_file (list of addresses to exclude)\n");	printf("       -n (don't mail. Use with -V to list accounts)\n");	printf("       -c (default, copy file)\n"); 	printf("       -h (use hard links)\n"); 	printf("       -s (use symbolic links)\n"); }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久婷婷色综合| 欧美日韩一级片在线观看| 久久嫩草精品久久久精品一| 久久精工是国产品牌吗| 精品福利一二区| 国产精品69久久久久水密桃| 欧美韩国日本不卡| 色94色欧美sute亚洲13| 亚洲一级不卡视频| 91精品婷婷国产综合久久竹菊| 免费在线看一区| 国产精品天美传媒| 欧美亚洲动漫精品| 免费成人av资源网| 欧美激情中文不卡| 欧美三区在线视频| 国产伦精品一区二区三区免费 | 欧美三区在线观看| 蜜桃在线一区二区三区| 国产情人综合久久777777| 成人av网在线| 日韩制服丝袜先锋影音| 国产日韩一级二级三级| 欧美日韩精品欧美日韩精品一| 日本不卡的三区四区五区| 国产日韩av一区| 欧美三级日韩三级国产三级| 久99久精品视频免费观看| 国产精品初高中害羞小美女文| 欧美日韩国产另类一区| 成人午夜电影久久影院| 亚洲va在线va天堂| 欧美高清在线一区| 91精品国产综合久久国产大片| 国产一区在线不卡| 亚洲国产精品一区二区久久| 久久综合色播五月| 在线精品视频免费播放| 国产美女视频一区| 奇米影视7777精品一区二区| 综合中文字幕亚洲| 久久久亚洲午夜电影| 欧美日韩在线综合| 91在线云播放| 国产91精品一区二区麻豆网站| 午夜久久电影网| 亚洲视频你懂的| 国产日韩欧美精品一区| 91精品在线一区二区| 91豆麻精品91久久久久久| 国产成人免费视频网站 | 久久爱另类一区二区小说| 亚洲三级在线观看| 国产无一区二区| xf在线a精品一区二区视频网站| 欧美日韩精品一区视频| 99视频在线观看一区三区| 国产精品18久久久久久久久 | 成人黄色av网站在线| 裸体歌舞表演一区二区| 亚洲综合免费观看高清完整版在线| 国产亚洲欧美色| 精品国产91亚洲一区二区三区婷婷| 欧美日韩国产欧美日美国产精品| 一本色道**综合亚洲精品蜜桃冫| 成人高清视频免费观看| 高潮精品一区videoshd| 国产大陆亚洲精品国产| 国内精品自线一区二区三区视频| 蜜芽一区二区三区| 全部av―极品视觉盛宴亚洲| 日本美女一区二区三区| 日韩 欧美一区二区三区| 午夜精品福利一区二区三区av| 一二三四社区欧美黄| 夜夜爽夜夜爽精品视频| 亚洲韩国精品一区| 亚欧色一区w666天堂| 午夜欧美视频在线观看| 日韩和欧美一区二区| 青青草97国产精品免费观看| 另类中文字幕网| 国产一区欧美日韩| 国产一区二区三区四| 国产成人一级电影| 风流少妇一区二区| 99久久精品费精品国产一区二区| 成年人国产精品| 91精彩视频在线| 5月丁香婷婷综合| 日韩免费一区二区| 国产午夜精品久久久久久久| 国产精品第一页第二页第三页 | 亚洲精品va在线观看| 亚洲最大成人网4388xx| 亚洲bt欧美bt精品| 久久91精品国产91久久小草 | 本田岬高潮一区二区三区| 91香蕉国产在线观看软件| 91久久精品一区二区三| 69p69国产精品| 久久精品一区二区三区不卡| 国产精品免费久久| 亚洲制服丝袜在线| 激情六月婷婷久久| 91麻豆swag| 欧美一级午夜免费电影| 日本一二三四高清不卡| 亚洲一二三专区| 国产一区二区三区四区五区美女| aaa亚洲精品一二三区| 欧美日本韩国一区二区三区视频| 精品欧美久久久| 亚洲蜜臀av乱码久久精品| 日韩av中文在线观看| 岛国精品在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 久久精品欧美日韩精品| 亚洲综合男人的天堂| 久久精品国产色蜜蜜麻豆| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲黄色性网站| 国产一区二区剧情av在线| 在线观看www91| 国产清纯在线一区二区www| 亚洲观看高清完整版在线观看| 国产成人综合精品三级| 欧美日韩久久不卡| 国产精品久久久久一区二区三区共| 日韩中文字幕不卡| 一本色道**综合亚洲精品蜜桃冫| 欧美α欧美αv大片| 亚洲综合色丁香婷婷六月图片| 国产一区二区三区黄视频| 欧美日韩在线三级| 国产精品色噜噜| 精品一区精品二区高清| 欧美性受xxxx| 国产精品美女久久久久高潮| 久久99精品视频| 欧美精品国产精品| 亚洲一区在线观看网站| 成人午夜视频在线观看| 精品欧美一区二区三区精品久久| 亚洲一区二区三区四区五区黄| av在线免费不卡| 欧美国产1区2区| 国产成人亚洲综合色影视| 欧美不卡一二三| 奇米精品一区二区三区四区| 欧洲一区在线电影| 成人欧美一区二区三区小说| 国产传媒欧美日韩成人| 26uuu国产日韩综合| 久久精品久久99精品久久| 欧美电影一区二区| 亚洲电影在线播放| 欧美性大战久久久| 亚洲精品v日韩精品| 色伊人久久综合中文字幕| 日韩一区在线免费观看| 99精品国产视频| 亚洲欧美另类在线| 色婷婷久久久综合中文字幕| 亚洲视频在线一区| 在线观看欧美日本| 亚洲综合视频网| 欧美日韩精品一二三区| 丝袜脚交一区二区| 91精品国产综合久久精品性色| 日日夜夜精品视频免费| 91麻豆精品91久久久久久清纯| 日本三级韩国三级欧美三级| 欧美一区二区三区在线电影| 日本不卡的三区四区五区| 欧美成人女星排名| 国产精一区二区三区| 国产精品三级视频| 色婷婷久久久亚洲一区二区三区| 悠悠色在线精品| 3d动漫精品啪啪| 久久国产日韩欧美精品| 久久精子c满五个校花| 97久久精品人人爽人人爽蜜臀| 亚洲精品日产精品乱码不卡| 欧美日韩亚洲综合在线 | 欧美日韩免费观看一区三区| 首页亚洲欧美制服丝腿| 欧美成人精品二区三区99精品| 国产一区二区三区在线看麻豆| 欧美激情资源网| 欧美三级资源在线| 国内精品伊人久久久久av一坑| 中文av一区二区| 欧美午夜片在线观看| 久久精品二区亚洲w码| 国产精品欧美一区二区三区| 91精品1区2区| 国产精品一区二区免费不卡| 国产精品国产三级国产普通话三级|