Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Mon, 26 Jan 2004 09:34:03 -0800
From: "Doug Jolley" <ddjolley@...mail.com>
To: popa3d-users@...ts.openwall.com
Subject: Compile Problems

Hi --

I have been tearing my hair out trying to re-compile popa3d from Slackware 
9.0 source code.
The compile process seems to go well.  My resultant executable is 22864 
bytes in size while
Slackware's is 22856.  (I'm not sure that means a whole lot; but, I just 
thought I'd toss it out.)
The real problem is that when I try to talk to the executable using nc (i.e. 
'nc localhost 110')
it talks to me when I use the Slackware version (i.e., I get a '+OK' 
response).  However, with
my version it just silently returns to the command prompt.

I'm appending my params.h and Makefile.  If anyone could offer a suggestion 
as to what I
might be doing wrong, I'd be eternally grateful.  Thanks for any input.

       ... doug
- - - - - - - - - - - - - - - - - - - - - - - - -
                   params.h
- - - - - - - - - - - - - - - - - - - - - - - - -
/*
* Global POP daemon parameters.
*/

#ifndef _POP_PARAMS_H
#define _POP_PARAMS_H

/*
* Our name to use when talking to various
interfaces.
*/
#define POP_SERVER			"popa3d"

/*
* Are we going to be a standalone server or start
via an inetd clone?
*/
#define POP_STANDALONE			1

#if POP_STANDALONE

/*
* Should the command line options be supported?
* If enabled, popa3d will default to inetd mode
and will require a -D
* to actually enable the standalone mode.
*/
#define POP_OPTIONS			1

/*
* The address and port to listen on.
*/
#define DAEMON_ADDR			"0.0.0.0"	/* INADDR_ANY */
#define DAEMON_PORT			110

/*
* Should libwrap be used?
*
* This may make things slower and also adds to
code running as root,
* so it is recommended that you use a packet
filter instead. This
* option is provided primarily as a way to meet
conventions of certain
* systems where all services obey libwrap access
controls.
*/
#define DAEMON_LIBWRAP			0

#if DAEMON_LIBWRAP
/*
* How do we talk to libwrap?
*/
#define DAEMON_LIBWRAP_IDENT		POP_SERVER
#endif

/*
* Limit the number of POP sessions we can handle
at a time to reduce
* the impact of connection flood DoS attacks.
*/
#define MAX_SESSIONS			100
#define MAX_SESSIONS_PER_SOURCE		10
#define MAX_BACKLOG			5
#define MIN_DELAY			10

#endif

/*
* Do we want to support virtual domains?
*/
#define POP_VIRTUAL			0

#if POP_VIRTUAL

/*
* VIRTUAL_HOME_PATH is where the virtual domain
root directories live.
*/
#define VIRTUAL_HOME_PATH		"/vhome"

/*
* Subdirectories within each virtual domain root
for the authentication
* information and mailboxes, respectively. These
defaults correspond to
* full pathnames of the form
"/vhome/IP/{auth,mail}/username".
*/
#define VIRTUAL_AUTH_PATH		"auth"
#define VIRTUAL_SPOOL_PATH		"mail"

/*
* Do we want to support virtual domains only?
Normally, if the connected
* IP address doesn't correspond to a directory in
VIRTUAL_HOME_PATH, the
* authentication will be done globally.
*/
#define VIRTUAL_ONLY			0

#else

/*
* We don't support virtual domains
(!POP_VIRTUAL), so we're definitely
* not virtual-only. Don't edit this.
*/
#define VIRTUAL_ONLY			0

#endif

/*
* A pseudo-user to run as before authentication.
The user and its UID
* must not be used for any other purpose.
*/
#define POP_USER			POP_SERVER

/*
* An empty directory to chroot to before
authentication. The directory
* and its parent directories must not be writable
by anyone but root.
*/
#define POP_CHROOT			"/var/empty"

/*
* Sessions will be closed if idle for longer than
POP_TIMEOUT seconds.
* RFC 1939 says that "such a timer MUST be of at
least 10 minutes'
* duration", so I've made 10 minutes the default.
In practice, you
* may want to reduce this to, say, 2 minutes.
*/
#define POP_TIMEOUT			(10 * 60)

/*
* Do we want to support the obsolete LAST
command, as defined in RFC
* 1460? It has been removed from the protocol in
1994 by RFC 1725,
* and isn't even mentioned in RFC 1939. Still,
some software doesn't
* work without it.
*/
#define POP_SUPPORT_LAST		1

/*
* Introduce some sane limits on the mailbox size
in order to prevent
* a single huge mailbox from stopping the entire
POP service.
*/
#define MAX_MAILBOX_MESSAGES		200000
#define MAX_MAILBOX_OPEN_BYTES		200000000
#define MAX_MAILBOX_WORK_BYTES		250000000

#if !VIRTUAL_ONLY

/*
* Choose the password authentication method your
system uses:
*
* AUTH_PASSWD		Use getpwnam(3) only, for *BSD or
readable passwd;
* AUTH_SHADOW		Use shadow passwords directly (not
via PAM);
* AUTH_PAM		Use PAM in the old-fashioned way;
* AUTH_PAM_USERPASS	Talk to pam_userpass via
Linux-PAM binary prompts.
*
* Note that there's no built-in password aging
support.
*/
#define AUTH_PASSWD			0
#define AUTH_SHADOW			1
#define AUTH_PAM			0
#define AUTH_PAM_USERPASS		0

#if AUTH_PAM || AUTH_PAM_USERPASS
#define AUTH_PAM_SERVICE		POP_SERVER
#endif

#endif

#if POP_VIRTUAL || AUTH_PASSWD || AUTH_SHADOW

/*
* A salt used to waste some CPU time on dummy
crypt(3) calls and make
* it harder (but still far from impossible, on
most systems) to check
* for valid usernames. Adjust it for your
crypt(3).
*/
#define AUTH_DUMMY_SALT			"xx"

#endif

/*
* Message to return to the client when
authentication fails. You can
* #undef this for no message.
*/
#define AUTH_FAILED_MESSAGE		"Authentication
failed (bad password?)"

#if !VIRTUAL_ONLY

/*
* Your mail spool directory. Note: only local
(non-NFS) mode 775 mail
* spools are currently supported.
*
* #undef this for qmail-style $HOME/Mailbox
mailboxes.
*/
#define MAIL_SPOOL_PATH			"/var/mail"

#ifndef MAIL_SPOOL_PATH
/*
* The mailbox file name relative to the user's
home directory.
*/
#define HOME_MAILBOX_NAME		"Mailbox"
#endif

#endif

/*
* Locking method your system uses for user
mailboxes. It is important
* that you set this correctly.
*
* *BSDs use flock(2), others typically use
fcntl(2).
*/
#define LOCK_FCNTL			1
#define LOCK_FLOCK			0

/*
* How do we talk to syslogd? These should be fine
for most systems.
*/
#define SYSLOG_IDENT			POP_SERVER
#define SYSLOG_OPTIONS			LOG_PID
#define SYSLOG_FACILITY			LOG_DAEMON
#define SYSLOG_PRI_LO			LOG_INFO
#define SYSLOG_PRI_HI			LOG_NOTICE
#define SYSLOG_PRI_ERROR		LOG_CRIT

/*
* There's probably no reason to touch anything
below this comment.
*/

/*
* According to RFC 1939: "Keywords and arguments
are each separated by
* a single SPACE character. Keywords are three or
four characters long.
* Each argument may be up to 40 characters long."
We're only processing
* up to two arguments, so it is safe to truncate
after this length.
*/
#define POP_BUFFER_SIZE			0x80

/*
* There's no reason to change this one either.
Making this larger would
* waste memory, and smaller values could make the
authentication fail.
*/
#define AUTH_BUFFER_SIZE		(2 * POP_BUFFER_SIZE)

#if POP_VIRTUAL

/*
* Buffer size for reading entire per-user
authentication files.
*/
#define VIRTUAL_AUTH_SIZE		0x100

#endif

/*
* File buffer sizes to use while parsing the
mailbox and retrieving a
* message, respectively. Can be changed.
*/
#define FILE_BUFFER_SIZE		0x10000
#define RETR_BUFFER_SIZE		0x8000

/*
* The mailbox parsing code isn't allowed to
truncate lines earlier than
* this length. Keep this at least as large as the
longest header field
* name we need to check for, but not too large
for performance reasons.
*/
#define LINE_BUFFER_SIZE		0x20

#endif

- - - - - - - - - - - - - - - - - - - - - - - - -
                      Makefile
- - - - - - - - - - - - - - - - - - - - - - - - -
CC = gcc
LD = gcc
RM = rm -f
MKDIR = mkdir -p
INSTALL = install
CFLAGS = -c -Wall -O2 -fomit-frame-pointer
# You may use OpenSSL's MD5 routines instead of
the ones supplied here
#CFLAGS += -DHAVE_OPENSSL
LDFLAGS = -s
LIBS =
# Linux with glibc, FreeBSD, NetBSD
LIBS += -lcrypt
# HP-UX trusted system
#LIBS += -lsec
# Solaris (POP_STANDALONE, POP_VIRTUAL)
#LIBS += -lsocket -lnsl
# PAM
#LIBS += -lpam
# TCP wrappers
LIBS += -lwrap
# libwrap may also want this
LIBS += -lnsl
# OpenSSL (-DHAVE_OPENSSL)
#LIBS += -lcrypto

DESTDIR =
PREFIX = /usr/local
SBINDIR = $(PREFIX)/sbin
MANDIR = $(PREFIX)/man

PROJ = popa3d
OBJS = 	version.o 	startup.o 	standalone.o
virtual.o 	auth_passwd.o auth_shadow.o auth_pam.o
pop_root.o pop_auth.o pop_trans.o 	protocol.o
database.o mailbox.o 	misc.o 	md5/md5.o

all: $(PROJ)

popa3d: $(OBJS)
$(LD) $(LDFLAGS) $(OBJS) $(LIBS) -o popa3d

md5/md5.o: md5/md5.c md5/md5.h
$(CC) $(CFLAGS) md5/md5.c -o md5/md5.o

.c.o:
$(CC) $(CFLAGS) $*.c

install: $(PROJ)
$(MKDIR) -m 755 $(DESTDIR)$(SBINDIR)
$(DESTDIR)$(MANDIR)/man8
$(INSTALL) -m 700 popa3d $(DESTDIR)$(SBINDIR)/
$(INSTALL) -m 644 popa3d.8
$(DESTDIR)$(MANDIR)/man8/

remove:
$(RM) $(DESTDIR)$(SBINDIR)/popa3d
$(DESTDIR)$(MANDIR)/man8/popa3d.8

clean:
$(RM) $(PROJ) $(OBJS)

_________________________________________________________________
High-speed users—be more efficient online with the new MSN Premium Internet 
Software. http://join.msn.com/?pgmarket=en-us&page=byoa/prem&ST=1

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.