sendmail.h
来自「< linux网络编程工具>>配套源码」· C头文件 代码 · 共 184 行
H
184 行
/*
* Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
*
* $Id: sendmail.h,v 8.34.4.5 2000/09/14 23:32:26 gshapiro Exp $
*/
/*
** SENDMAIL.H -- Global definitions for sendmail.
*/
#if SFIO
# include <sfio/stdio.h>
#else /* SFIO */
# include <stdio.h>
#endif /* SFIO */
#include <string.h>
#include "conf.h"
#include "sendmail/errstring.h"
#include "sendmail/useful.h"
/**********************************************************************
** Table sizes, etc....
** There shouldn't be much need to change these....
**********************************************************************/
#ifndef MAXMAILERS
# define MAXMAILERS 25 /* maximum mailers known to system */
#endif /* ! MAXMAILERS */
/*
** Data structure for bit maps.
**
** Each bit in this map can be referenced by an ascii character.
** This is 256 possible bits, or 32 8-bit bytes.
*/
#define BITMAPBITS 256 /* number of bits in a bit map */
#define BYTEBITS 8 /* number of bits in a byte */
#define BITMAPBYTES (BITMAPBITS / BYTEBITS) /* number of bytes in bit map */
/* internal macros */
#define _BITWORD(bit) ((bit) / (BYTEBITS * sizeof (int)))
#define _BITBIT(bit) ((unsigned int)1 << ((bit) % (BYTEBITS * sizeof (int))))
typedef unsigned int BITMAP256[BITMAPBYTES / sizeof (int)];
/* test bit number N */
#define bitnset(bit, map) ((map)[_BITWORD(bit)] & _BITBIT(bit))
/* set bit number N */
#define setbitn(bit, map) (map)[_BITWORD(bit)] |= _BITBIT(bit)
/* clear bit number N */
#define clrbitn(bit, map) (map)[_BITWORD(bit)] &= ~_BITBIT(bit)
/* clear an entire bit map */
#define clrbitmap(map) memset((char *) map, '\0', BITMAPBYTES)
/*
** Utility macros
*/
/* return number of bytes left in a buffer */
#define SPACELEFT(buf, ptr) (sizeof buf - ((ptr) - buf))
/*
** Flags passed to safefile/safedirpath.
*/
#define SFF_ANYFILE 0L /* no special restrictions */
#define SFF_MUSTOWN 0x00000001L /* user must own this file */
#define SFF_NOSLINK 0x00000002L /* file cannot be a symbolic link */
#define SFF_ROOTOK 0x00000004L /* ok for root to own this file */
#define SFF_RUNASREALUID 0x00000008L /* if no ctladdr, run as real uid */
#define SFF_NOPATHCHECK 0x00000010L /* don't bother checking dir path */
#define SFF_SETUIDOK 0x00000020L /* setuid files are ok */
#define SFF_CREAT 0x00000040L /* ok to create file if necessary */
#define SFF_REGONLY 0x00000080L /* regular files only */
#define SFF_SAFEDIRPATH 0x00000100L /* no writable directories allowed */
#define SFF_NOHLINK 0x00000200L /* file cannot have hard links */
#define SFF_NOWLINK 0x00000400L /* links only in non-writable dirs */
#define SFF_NOGWFILES 0x00000800L /* disallow world writable files */
#define SFF_NOWWFILES 0x00001000L /* disallow group writable files */
#define SFF_OPENASROOT 0x00002000L /* open as root instead of real user */
#define SFF_NOLOCK 0x00004000L /* don't lock the file */
#define SFF_NOGRFILES 0x00008000L /* disallow g readable files */
#define SFF_NOWRFILES 0x00010000L /* disallow o readable files */
#define SFF_NOTEXCL 0x00020000L /* creates don't need to be exclusive */
#define SFF_EXECOK 0x00040000L /* executable files are ok (E_SM_ISEXEC) */
#define SFF_NORFILES (SFF_NOGRFILES|SFF_NOWRFILES)
/* pseudo-flags */
#define SFF_NOLINK (SFF_NOHLINK|SFF_NOSLINK)
/* functions */
extern int safefile __P((char *, UID_T, GID_T, char *, long, int, struct stat *));
extern int safedirpath __P((char *, UID_T, GID_T, char *, long, int, int));
extern int safeopen __P((char *, int, int, long));
extern FILE *safefopen __P((char *, int, int, long));
extern int dfopen __P((char *, int, int, long));
extern bool filechanged __P((char *, int, struct stat *));
/*
** DontBlameSendmail options
**
** Hopefully nobody uses these.
*/
#define DBS_SAFE 0
#define DBS_ASSUMESAFECHOWN 1
#define DBS_GROUPWRITABLEDIRPATHSAFE 2
#define DBS_GROUPWRITABLEFORWARDFILESAFE 3
#define DBS_GROUPWRITABLEINCLUDEFILESAFE 4
#define DBS_GROUPWRITABLEALIASFILE 5
#define DBS_WORLDWRITABLEALIASFILE 6
#define DBS_FORWARDFILEINUNSAFEDIRPATH 7
#define DBS_MAPINUNSAFEDIRPATH 8
#define DBS_LINKEDALIASFILEINWRITABLEDIR 9
#define DBS_LINKEDCLASSFILEINWRITABLEDIR 10
#define DBS_LINKEDFORWARDFILEINWRITABLEDIR 11
#define DBS_LINKEDINCLUDEFILEINWRITABLEDIR 12
#define DBS_LINKEDMAPINWRITABLEDIR 13
#define DBS_LINKEDSERVICESWITCHFILEINWRITABLEDIR 14
#define DBS_FILEDELIVERYTOHARDLINK 15
#define DBS_FILEDELIVERYTOSYMLINK 16
#define DBS_WRITEMAPTOHARDLINK 17
#define DBS_WRITEMAPTOSYMLINK 18
#define DBS_WRITESTATSTOHARDLINK 19
#define DBS_WRITESTATSTOSYMLINK 20
#define DBS_FORWARDFILEINGROUPWRITABLEDIRPATH 21
#define DBS_INCLUDEFILEINGROUPWRITABLEDIRPATH 22
#define DBS_CLASSFILEINUNSAFEDIRPATH 23
#define DBS_ERRORHEADERINUNSAFEDIRPATH 24
#define DBS_HELPFILEINUNSAFEDIRPATH 25
#define DBS_FORWARDFILEINUNSAFEDIRPATHSAFE 26
#define DBS_INCLUDEFILEINUNSAFEDIRPATHSAFE 27
#define DBS_RUNPROGRAMINUNSAFEDIRPATH 28 /* Not used yet */
#define DBS_RUNWRITABLEPROGRAM 29
#define DBS_INCLUDEFILEINUNSAFEDIRPATH 30
#define DBS_NONROOTSAFEADDR 31
#define DBS_TRUSTSTICKYBIT 32
#define DBS_DONTWARNFORWARDFILEINUNSAFEDIRPATH 33
#define DBS_INSUFFICIENTENTROPY 34
#if _FFR_UNSAFE_SASL
# define DBS_GROUPREADABLESASLFILE 35
#endif /* _FFR_UNSAFE_SASL */
#if _FFR_UNSAFE_WRITABLE_INCLUDE
# define DBS_GROUPWRITABLEFORWARDFILE 36
# define DBS_GROUPWRITABLEINCLUDEFILE 37
# define DBS_WORLDWRITABLEFORWARDFILE 38
# define DBS_WORLDWRITABLEINCLUDEFILE 39
#endif /* _FFR_UNSAFE_WRITABLE_INCLUDE */
/* struct defining such things */
struct dbsval
{
char *dbs_name; /* name of DontBlameSendmail flag */
u_char dbs_flag; /* numeric level */
};
#if _FFR_DPRINTF
extern void dprintf __P((const char *, ...));
extern int dflush __P((void));
#else /* _FFR_DPRINTF */
#define dprintf printf
#define dflush() fflush(stdout)
#endif /* _FFR_DPRINTF */
extern int sm_snprintf __P((char *, size_t, const char *, ...));
extern int sm_vsnprintf __P((char *, size_t, const char *, va_list));
extern char *quad_to_string __P((QUAD_T));
extern size_t strlcpy __P((char *, const char *, size_t));
extern size_t strlcat __P((char *, const char *, size_t));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?