⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch_pop.c

📁 早期freebsd实现
💻 C
字号:
#include "util.h"#include "mmdf.h"#ifndef	POP/*  *			   C H _ B B O A R D S . C * *			   the new BBoards channel */#else	POP/*  *			       C H _ P O P . C * *			       the POP channel */#endif	POP/*  */#ifndef	POP/* *	This is the channel that is used to handle Internet BBoard *	distribution in an intelligent fashion.  In order to run it, you *	need the UCI BBoards facility installed.  This requires the *	establishment of a special login called ``bboards'', and the *	getbbent() package. * *	The idea is simple.  Distribution lists get aliased to go through *	this channel.  Suppose that the relay (or site) using ch_bboards *	subscribes to UNIX-WIZARDS.  The maintainer of the list is given *	the address ``dist-unix-wizards'' to send to for this relay and all *	sites that it serves.  The site manager then defines the following *	alias in the aliases file: * *		dist-unix-wizards:	unix-wizards@bboards * *	This channel (and this channel alone) is then defined to serve the *	``bboards'' host.  When it gets invoked, the channel does two *	things:  First, if the relay itself subscribes to the BBoard (the *	bb_file entry in the BBoards file is non-empty), then it delivers *	the message to the file.  Second, if other sites subscribe to the *	BBoard, then ch_bboards will enter the message back into the queue *	system using the ``bboards'' login as the sender. * *	This achieves two goals:  first, the incoming bandwidth of relays *	is not degraded by many sites subscribing to the same BBoard; *	second, if an address goes bad down the line, the relay's *	``bboards'' login gets the message back (not the originator).  Since *	the relay's PostMaster is assumed to monitor this mailbox, problems *	can be found and corrected. * *	Finally, ch_bboards can be run by a site that does not relay for *	other sites.  In this case, the bb_dist field is empty. *//* 	Unlike previous versions of ch_bboards, this version does not change *	the contents of the headers of the message being re-distributed. *	The following changes are made: * *	    Envelope:	The failure address is changed to				bboards@locname.locdomain *	    Headers:	Another Received: is added * *	The local copy going to the BBoard has two entries prepended to the *	headers: * *	    BBoard-ID: n *	    BB-Posted: RFC822 date/time */#else	POP/*  *	The POP channel is a subset of the BBoards channel, and just *	handles local mail delivery for remote users.  As such, it *	only needs to know how to store a maildrop locally, and doesn't *	have to mess around with .cnt files and remote delivery. */#endif	POP/*  */#include <signal.h>#include "ch.h"#include "phs.h"extern LLog chanlog;LLog   *logptr = &chanlog;extern char *logdfldir;/*  */main (argc, argv)int     argc;char  **argv;{    Chan    *chanptr;    char    *dupfpath ();    short   retval;    mmdf_init (argv[0]);#ifdef RUNALON    logptr -> ll_fd = 1;    ll_init (logptr);#endif    siginit ();    signal (SIGINT, SIG_IGN);    if ((chanptr = ch_nm2struct (argv[0])) == (Chan *) NOTOK)	err_abrt (RP_PARM, "unknown channel name '%s'", argv[0]);    ch_llinit (chanptr);    retval = ch_bboards (argc, argv, chanptr);    ll_close (logptr);    exit (retval);}/*  *//* ****************  (ch_) BBOARD DELIVERY **************** */ch_bboards (argc, argv, chanptr)int     argc;char  **argv;Chan  *chanptr;{#ifdef	DEBUG    ll_log (logptr, LLOGBTR, "ch_bboards(argc=%d,*argv='%s')", argc, *argv);#endif    if (rp_isbad (qu_init (argc, argv)))	return RP_NO;    if (rp_isbad (bb_init (chanptr)))	return RP_NO;    phs_note (chanptr, PHS_WRSTRT);        if (rp_isbad (qu2bb_send (chanptr)))	return RP_NO;    phs_note (chanptr, PHS_WREND);    qu_end (OK);    bb_end (OK);    return RP_OK;}/*  *//* VARARGS2 */err_abrt (code, fmt, b, c, d)short   code;char   *fmt,       *b,       *c,       *d;{    char    linebuf[LINESIZE];    qu_end (NOTOK);    bb_end (NOTOK);    sprintf (linebuf, "%s%s", "err [ ABEND (%s) ]\t", fmt);    ll_log (logptr, LLOGFAT, linebuf, rp_valstr (code), b, c, d);    ll_close (logptr);    exit (code);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -