/* $Id: //depot/Teapop/0.3/include/teapop.h#7 $ */
/*
* Copyright (c) 1999-2002 ToonTown Consulting
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the company nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __TEAPOP_H__
#define __TEAPOP_H__
/*
* The values in the section below may be of interest when tweaking Teapop.
* It is ok to change them and still have something close to supportable.
* But be warned; Bad values may cause funny behaviour or even crash your
* system.
*/
#define MAXTRIES 3 /* Failed login attempts allowed per sess */
#define POP3PORT 110 /* Port to listen to in standalone mode */
/*
* Anything below shouldn't be changed, unless you are doing hefty
* modifications to Teapop.
*/
#define BIGSTRING 255
#define SMALLSTRING 50
/* Locktypes */
#define LOCK_DOTLOCK 0x01
#define LOCK_FCNTL 0x02
#define LOCK_FLOCK 0x04
#define LOCK_LOCKF 0x08
/*
typedef struct _pop_auth_radius {
} POP_AUTH_RADIUS;
*/
typedef struct _pop_auth_sql {
char host[BIGSTRING];
char *port;
char db[SMALLSTRING];
char username[SMALLSTRING];
char password[SMALLSTRING];
char table[SMALLSTRING];
char userrow[SMALLSTRING];
char passrow[SMALLSTRING];
char mailrow[SMALLSTRING];
} POP_AUTH_SQL;
typedef struct _pop_auth_ldap {
char host[BIGSTRING];
int port;
char rootdn[BIGSTRING]; /* Root DN of tree */
char attributes[BIGSTRING]; /* Not used */
int authmethod; /* Type of authentication used */
int useTLS;
} POP_AUTH_LDAP;
typedef struct _pop_auth_text {
char file[BIGSTRING];
int max;
} POP_AUTH_TEXT;
typedef struct _pop_auth {
char domain[BIGSTRING];
char localip[16];
char maildrop[BIGSTRING];
char authmethod;
int hash;
char uid[SMALLSTRING];
char gid[SMALLSTRING];
void *extra;
struct _pop_auth *nextauth;
} POP_AUTH;
#define MSG_READ 0x01
#define MSG_DELETED 0x02
typedef struct _pop_msg {
unsigned long som; /* mbox only */
unsigned long offset; /* mbox only */
unsigned long realsize; /* mbox only */
unsigned long size;
unsigned long lines;
time_t created; /* Timestamp of creation date of mail */
int flags;
char uidl[SMALLSTRING];
char *file; /* Maildir only */
struct _pop_msg *nextmsg;
} POP_MSG;
typedef struct _pop_info {
int insck;
int outsck;
int autodelete;
int ignoreimap;
int timeout;
int locktimeout;
int nodns;
int useuidl;
int locktrack;
int mboxperm;
int expire;
int ssl;
int softlock;
unsigned short localport;
char drachost[BIGSTRING];
char apopstr[BIGSTRING];
char userid[BIGSTRING];
char domain[BIGSTRING];
char maildrop[BIGSTRING];
char dotlock[BIGSTRING+20];
char mboxtype; /* 0 = mbox, 1 = Maildir */
char chroot[BIGSTRING];
char localip[40];
char remoteip[40];
char remotehost[BIGSTRING];
FILE *lock;
FILE *mbox;
FILE *out;
POP_MSG *firstmsg;
POP_AUTH *firstauth;
void *smask;
} POP_INFO;
extern volatile int sigterm_seen;
#endif /* __TEAPOP_H__ */
syntax highlighted by Code2HTML, v. 0.9.1