sendmail.h revision 363466
1/* 2 * Copyright (c) 1998-2001 Proofpoint, Inc. and its suppliers. 3 * All rights reserved. 4 * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. 5 * Copyright (c) 1988, 1993 6 * The Regents of the University of California. All rights reserved. 7 * 8 * By using this file, you agree to the terms and conditions set 9 * forth in the LICENSE file which can be found at the top level of 10 * the sendmail distribution. 11 * 12 * 13 * $Id: sendmail.h,v 8.69 2013-11-22 20:51:30 ca Exp $ 14 */ 15 16/* 17** SENDMAIL.H -- Global definitions for sendmail. 18*/ 19 20#include <stdio.h> 21#include <sm/bitops.h> 22#include <sm/io.h> 23#include <sm/string.h> 24#include "conf.h" 25 26/********************************************************************** 27** Table sizes, etc.... 28** There shouldn't be much need to change these.... 29**********************************************************************/ 30#ifndef MAXMAILERS 31# define MAXMAILERS 25 /* maximum mailers known to system */ 32#endif 33 34/* 35** Flags passed to safefile/safedirpath. 36*/ 37 38#define SFF_ANYFILE 0L /* no special restrictions */ 39#define SFF_MUSTOWN 0x00000001L /* user must own this file */ 40#define SFF_NOSLINK 0x00000002L /* file cannot be a symbolic link */ 41#define SFF_ROOTOK 0x00000004L /* ok for root to own this file */ 42#define SFF_RUNASREALUID 0x00000008L /* if no ctladdr, run as real uid */ 43#define SFF_NOPATHCHECK 0x00000010L /* don't bother checking dir path */ 44#define SFF_SETUIDOK 0x00000020L /* set-user-ID files are ok */ 45#define SFF_CREAT 0x00000040L /* ok to create file if necessary */ 46#define SFF_REGONLY 0x00000080L /* regular files only */ 47#define SFF_SAFEDIRPATH 0x00000100L /* no writable directories allowed */ 48#define SFF_NOHLINK 0x00000200L /* file cannot have hard links */ 49#define SFF_NOWLINK 0x00000400L /* links only in non-writable dirs */ 50#define SFF_NOGWFILES 0x00000800L /* disallow world writable files */ 51#define SFF_NOWWFILES 0x00001000L /* disallow group writable files */ 52#define SFF_OPENASROOT 0x00002000L /* open as root instead of real user */ 53#define SFF_NOLOCK 0x00004000L /* don't lock the file */ 54#define SFF_NOGRFILES 0x00008000L /* disallow g readable files */ 55#define SFF_NOWRFILES 0x00010000L /* disallow o readable files */ 56#define SFF_NOTEXCL 0x00020000L /* creates don't need to be exclusive */ 57#define SFF_EXECOK 0x00040000L /* executable files are ok (E_SM_ISEXEC) */ 58#define SFF_NBLOCK 0x00080000L /* use a non-blocking lock */ 59#define SFF_NORFILES (SFF_NOGRFILES|SFF_NOWRFILES) 60 61/* pseudo-flags */ 62#define SFF_NOLINK (SFF_NOHLINK|SFF_NOSLINK) 63 64/* functions */ 65extern int safefile __P((char *, UID_T, GID_T, char *, long, int, struct stat *)); 66extern int safedirpath __P((char *, UID_T, GID_T, char *, long, int, int)); 67extern int safeopen __P((char *, int, int, long)); 68extern SM_FILE_T*safefopen __P((char *, int, int, long)); 69extern int dfopen __P((char *, int, int, long)); 70extern bool filechanged __P((char *, int, struct stat *)); 71 72/* 73** DontBlameSendmail options 74** 75** Hopefully nobody uses these. 76*/ 77 78#define DBS_SAFE 0 79#define DBS_ASSUMESAFECHOWN 1 80#define DBS_GROUPWRITABLEDIRPATHSAFE 2 81#define DBS_GROUPWRITABLEFORWARDFILESAFE 3 82#define DBS_GROUPWRITABLEINCLUDEFILESAFE 4 83#define DBS_GROUPWRITABLEALIASFILE 5 84#define DBS_WORLDWRITABLEALIASFILE 6 85#define DBS_FORWARDFILEINUNSAFEDIRPATH 7 86#define DBS_MAPINUNSAFEDIRPATH 8 87#define DBS_LINKEDALIASFILEINWRITABLEDIR 9 88#define DBS_LINKEDCLASSFILEINWRITABLEDIR 10 89#define DBS_LINKEDFORWARDFILEINWRITABLEDIR 11 90#define DBS_LINKEDINCLUDEFILEINWRITABLEDIR 12 91#define DBS_LINKEDMAPINWRITABLEDIR 13 92#define DBS_LINKEDSERVICESWITCHFILEINWRITABLEDIR 14 93#define DBS_FILEDELIVERYTOHARDLINK 15 94#define DBS_FILEDELIVERYTOSYMLINK 16 95#define DBS_WRITEMAPTOHARDLINK 17 96#define DBS_WRITEMAPTOSYMLINK 18 97#define DBS_WRITESTATSTOHARDLINK 19 98#define DBS_WRITESTATSTOSYMLINK 20 99#define DBS_FORWARDFILEINGROUPWRITABLEDIRPATH 21 100#define DBS_INCLUDEFILEINGROUPWRITABLEDIRPATH 22 101#define DBS_CLASSFILEINUNSAFEDIRPATH 23 102#define DBS_ERRORHEADERINUNSAFEDIRPATH 24 103#define DBS_HELPFILEINUNSAFEDIRPATH 25 104#define DBS_FORWARDFILEINUNSAFEDIRPATHSAFE 26 105#define DBS_INCLUDEFILEINUNSAFEDIRPATHSAFE 27 106#define DBS_RUNPROGRAMINUNSAFEDIRPATH 28 107#define DBS_RUNWRITABLEPROGRAM 29 108#define DBS_INCLUDEFILEINUNSAFEDIRPATH 30 109#define DBS_NONROOTSAFEADDR 31 110#define DBS_TRUSTSTICKYBIT 32 111#define DBS_DONTWARNFORWARDFILEINUNSAFEDIRPATH 33 112#define DBS_INSUFFICIENTENTROPY 34 113#define DBS_GROUPREADABLESASLDBFILE 35 114#define DBS_GROUPWRITABLESASLDBFILE 36 115#define DBS_GROUPWRITABLEFORWARDFILE 37 116#define DBS_GROUPWRITABLEINCLUDEFILE 38 117#define DBS_WORLDWRITABLEFORWARDFILE 39 118#define DBS_WORLDWRITABLEINCLUDEFILE 40 119#define DBS_GROUPREADABLEKEYFILE 41 120#define DBS_GROUPREADABLEAUTHINFOFILE 42 121 122/* struct defining such things */ 123struct dbsval 124{ 125 char *dbs_name; /* name of DontBlameSendmail flag */ 126 unsigned char dbs_flag; /* numeric level */ 127}; 128 129/* Flags for submitmode */ 130#define SUBMIT_UNKNOWN 0x0000 /* unknown agent type */ 131#define SUBMIT_MTA 0x0001 /* act like a message transfer agent */ 132#define SUBMIT_MSA 0x0002 /* act like a message submission agent */ 133 134