This commit is contained in:
Graeme Walker 2004-02-26 12:00:00 +00:00
parent def9081f44
commit 333cb6f46b
305 changed files with 4455 additions and 1528 deletions

View File

@ -2,10 +2,3 @@ AUTHORS
======= =======
Graeme Walker <graeme_walker@users.sourceforge.net> Graeme Walker <graeme_walker@users.sourceforge.net>
Credits
-------
The source in "glib/md5c.c" and "glib/md5.h" is "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" by incorporating
the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" which
is "Copyright (C) 1991, RSA Data Security, Inc. All rights reserved".

View File

@ -1,6 +1,19 @@
E-MailRelay Change Log E-MailRelay Change Log
====================== ======================
1.2 -> 1.3
----------
* Client protocol waits for a greeting from the server on startup [bug-id 842156].
* Fix for incorrect backslash normalisation on "--verifier" command-lines containing spaces [bug-id 890646].
* Verifier programs can now summarily abort a connection using an exit value of 100.
* New "--anonymous" switch that reduces information leakage to the SMTP client and disables "VRFY".
* Better validation of "MAIL-FROM" and "RCPT-TO" formatting.
* Rewrite of low-level MD5 code.
* Performance tuning.
* Template "emailrelay.conf" gets installed in "/etc".
* New switches for the "configure" script.
* More JavaScript example scripts.
1.1.2 -> 1.2 1.1.2 -> 1.2
------------ ------------
* The "--filter" and "--verifier" arguments interpreted as command-lines; spaces in executable paths now need escaping. * The "--filter" and "--verifier" arguments interpreted as command-lines; spaces in executable paths now need escaping.

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -18,7 +18,7 @@
## ##
# #
EXTRA_DIST = emailrelay.spec ChangeLog EXTRA_DIST = emailrelay.spec ChangeLog
SUBDIRS = src bin lib doc SUBDIRS = src bin lib doc etc
e_doc_DATA = NEWS README changelog.gz e_doc_DATA = NEWS README changelog.gz
CLEANFILES = changelog.gz CLEANFILES = changelog.gz
changelog.gz: ChangeLog changelog.gz: ChangeLog

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -108,6 +108,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -128,7 +129,7 @@ target_alias = @target_alias@
# #
# #
EXTRA_DIST = emailrelay.spec ChangeLog EXTRA_DIST = emailrelay.spec ChangeLog
SUBDIRS = src bin lib doc SUBDIRS = src bin lib doc etc
e_doc_DATA = NEWS README changelog.gz e_doc_DATA = NEWS README changelog.gz
CLEANFILES = changelog.gz CLEANFILES = changelog.gz
subdir = . subdir = .
@ -145,10 +146,9 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
all-recursive install-data-recursive install-exec-recursive \ all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \ installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive check-recursive installcheck-recursive
DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \ DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
COPYING ChangeLog INSTALL Makefile.am NEWS acinclude.m4 \ Makefile.in NEWS acinclude.m4 aclocal.m4 config.h.in configure \
aclocal.m4 config.h.in configure configure.ac depcomp \ configure.ac depcomp install-sh missing mkinstalldirs
install-sh missing mkinstalldirs
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
all: config.h all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive $(MAKE) $(AM_MAKEFLAGS) all-recursive
@ -482,7 +482,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -493,7 +493,6 @@ clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
dvi: dvi-recursive dvi: dvi-recursive
@ -517,7 +516,6 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache -rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive mostlyclean: mostlyclean-recursive

31
README
View File

@ -19,20 +19,21 @@ Distribution is under the GNU General Public License.
Quick start Quick start
----------- -----------
To run the program as a proxy use the "--as-proxy" command-line switch, followed by the To run the program as a proxy use the "--as-proxy" command-line switch followed
address of the target SMTP server. If you want to edit or filter e-mail as it passes by the address of the target SMTP server. If you want to edit or filter e-mail
through the proxy then specify your pre-processor program with the "--filter" switch. as it passes through the proxy then specify your pre-processor program with the
You can optionally change the listening port number using "--port" and the "--filter" switch. You can optionally change the listening port number using
spool directory using "--spool-dir". "--port" and the spool directory using "--spool-dir".
For example, to start up a local proxy which passes messages to some "addsig" script For example, to start up a local proxy that passes messages to some "addsig"
and then forwards them to an MTA running on "smarthost", use a command like this: script and then forwards them to an MTA running on "smarthost", use a command
like this:
emailrelay --as-proxy smarthost:smtp --filter $HOME/bin/addsig --spool-dir $HOME/tmp emailrelay --as-proxy smarthost:smtp --filter $HOME/bin/addsig --spool-dir $HOME/tmp
To use E-MailRelay as a store-and-forward MTA use the "--as-server" switch To use E-MailRelay as a store-and-forward MTA use the "--as-server" switch
to start the storage daemon in the background. And then trigger delivery of to start the storage daemon in the background. And then trigger delivery of
spooled messages by running emailrelay with the "--as-client" switch, followed spooled messages by running emailrelay with the "--as-client" switch followed
by the address of the target SMTP server. by the address of the target SMTP server.
For example, to start a storage daemon listening on port 10025 use a command For example, to start a storage daemon listening on port 10025 use a command
@ -44,6 +45,9 @@ And then to forward the spooled mail to "smarthost" run somthing like this:
emailrelay --as-client smarthost:smtp --spool-dir $HOME/tmp emailrelay --as-client smarthost:smtp --spool-dir $HOME/tmp
You can also have an E-MailRelay storage daemon forward spooled e-mails
periodically by using the "--poll" switch.
By default E-MailRelay will reject connections from remote machines. To By default E-MailRelay will reject connections from remote machines. To
allow connections from anywhere use the "--remote-clients" switch. allow connections from anywhere use the "--remote-clients" switch.
@ -57,7 +61,7 @@ Documentation
The following documentation is provided: The following documentation is provided:
* README -- this document * README -- this document
* COPYING -- the GNU General Public License * COPYING -- the GNU General Public License
* INSTALL -- build & install instructions (including the generic GNU text) * INSTALL -- build & install instructions (including the GNU text)
* AUTHORS -- authors, credits and additional copyrights * AUTHORS -- authors, credits and additional copyrights
* copyright -- main copyright and GPL reference * copyright -- main copyright and GPL reference
* userguide.txt -- user guide * userguide.txt -- user guide
@ -73,16 +77,15 @@ The code was originally developed on SuSE Linux 7.1 using:
* linux 2.4.10 * linux 2.4.10
* gcc 2.95.3 * gcc 2.95.3
* glibc 2.2.4 (libc.so.6) * glibc 2.2.4 (libc.so.6)
* gnu make 3.79.1
* autoconf 2.52 * autoconf 2.52
and ported to Windows 98 using: and ported to Windows 98 using:
* MSVC 6.0 * MSVC 6.0
Recent releases were developed on SuSE Linux 8.0 and Recent releases were developed on SuSE Linux 9.0 using:
RedHat Linux 8.0 using: * linux 2.4.22
* gcc 2.95.3 and gcc 3.2 * gcc 3.3.1
* autoconf 2.53 * autoconf 2.57
The code has also been built successfully on: The code has also been built successfully on:
* MacOS X * MacOS X

View File

@ -1,4 +1,4 @@
dnl Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> dnl Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
dnl dnl
dnl This program is free software; you can redistribute it and/or dnl This program is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU General Public License dnl modify it under the terms of the GNU General Public License
@ -139,6 +139,19 @@ then
fi fi
]) ])
dnl enable-fastbuild
dnl
AC_DEFUN([ENABLE_FASTBUILD],
[
if test "$enable_fastbuild" = "yes"
then
CXX="`pwd`/bin/fastbuild.sh"
chmod +x "$CXX"
AR="`pwd`/bin/fastbuild.sh"
RANLIB="true"
fi
])
dnl with-workshop dnl with-workshop
dnl dnl
AC_DEFUN([WITH_WORKSHOP], AC_DEFUN([WITH_WORKSHOP],
@ -151,6 +164,38 @@ then
fi fi
]) ])
dnl with-doxygen
dnl
AC_DEFUN([WITH_DOXYGEN],
[
if test "$with_doxygen" != ""
then
if test "$with_doxygen" = "yes" -a "$HAVE_DOXYGEN" != "yes"
then
echo ignoring --with-doxygen
else
HAVE_DOXYGEN="$with_doxygen"
AC_SUBST(HAVE_DOXYGEN)
fi
fi
])
dnl with-man2html
dnl
AC_DEFUN([WITH_MAN2HTML],
[
if test "$with_man2html" != ""
then
if test "$with_man2html" = "yes" -a "$HAVE_MAN2HTML" != "yes"
then
echo ignoring --with-man2html
else
HAVE_MAN2HTML="$with_man2html"
AC_SUBST(HAVE_MAN2HTML)
fi
fi
])
dnl enable-fhs dnl enable-fhs
dnl dnl
AC_DEFUN([ENABLE_FHS], AC_DEFUN([ENABLE_FHS],
@ -175,10 +220,10 @@ AC_DEFUN([FHS_COMPLIANCE],
localstatedir='/var' localstatedir='/var'
mandir='/usr/man' mandir='/usr/man'
datadir='/usr/share' datadir='/usr/share'
sysconfdir='/etc'
# #
# not used by emailrelay # not used by emailrelay
#bindir= #bindir=
#sysconfdir=
#sharedstatedir= #sharedstatedir=
#libdir= #libdir=
#includedir= #includedir=
@ -193,5 +238,6 @@ AC_DEFUN([FHS_COMPLIANCE],
e_spooldir="$localstatedir/spool/$PACKAGE" e_spooldir="$localstatedir/spool/$PACKAGE"
e_man1dir="$datadir/man/man1" e_man1dir="$datadir/man/man1"
e_examplesdir="$datadir/doc/$PACKAGE/examples" e_examplesdir="$datadir/doc/$PACKAGE/examples"
e_sysconfdir="$sysconfdir"
]) ])

54
aclocal.m4 vendored
View File

@ -1,4 +1,4 @@
# generated automatically by aclocal 1.7.8 -*- Autoconf -*- # generated automatically by aclocal 1.7.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@ -11,7 +11,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
dnl Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> dnl Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
dnl dnl
dnl This program is free software; you can redistribute it and/or dnl This program is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU General Public License dnl modify it under the terms of the GNU General Public License
@ -152,6 +152,19 @@ then
fi fi
]) ])
dnl enable-fastbuild
dnl
AC_DEFUN([ENABLE_FASTBUILD],
[
if test "$enable_fastbuild" = "yes"
then
CXX="`pwd`/bin/fastbuild.sh"
chmod +x "$CXX"
AR="`pwd`/bin/fastbuild.sh"
RANLIB="true"
fi
])
dnl with-workshop dnl with-workshop
dnl dnl
AC_DEFUN([WITH_WORKSHOP], AC_DEFUN([WITH_WORKSHOP],
@ -164,6 +177,38 @@ then
fi fi
]) ])
dnl with-doxygen
dnl
AC_DEFUN([WITH_DOXYGEN],
[
if test "$with_doxygen" != ""
then
if test "$with_doxygen" = "yes" -a "$HAVE_DOXYGEN" != "yes"
then
echo ignoring --with-doxygen
else
HAVE_DOXYGEN="$with_doxygen"
AC_SUBST(HAVE_DOXYGEN)
fi
fi
])
dnl with-man2html
dnl
AC_DEFUN([WITH_MAN2HTML],
[
if test "$with_man2html" != ""
then
if test "$with_man2html" = "yes" -a "$HAVE_MAN2HTML" != "yes"
then
echo ignoring --with-man2html
else
HAVE_MAN2HTML="$with_man2html"
AC_SUBST(HAVE_MAN2HTML)
fi
fi
])
dnl enable-fhs dnl enable-fhs
dnl dnl
AC_DEFUN([ENABLE_FHS], AC_DEFUN([ENABLE_FHS],
@ -188,10 +233,10 @@ AC_DEFUN([FHS_COMPLIANCE],
localstatedir='/var' localstatedir='/var'
mandir='/usr/man' mandir='/usr/man'
datadir='/usr/share' datadir='/usr/share'
sysconfdir='/etc'
# #
# not used by emailrelay # not used by emailrelay
#bindir= #bindir=
#sysconfdir=
#sharedstatedir= #sharedstatedir=
#libdir= #libdir=
#includedir= #includedir=
@ -206,6 +251,7 @@ AC_DEFUN([FHS_COMPLIANCE],
e_spooldir="$localstatedir/spool/$PACKAGE" e_spooldir="$localstatedir/spool/$PACKAGE"
e_man1dir="$datadir/man/man1" e_man1dir="$datadir/man/man1"
e_examplesdir="$datadir/doc/$PACKAGE/examples" e_examplesdir="$datadir/doc/$PACKAGE/examples"
e_sysconfdir="$sysconfdir"
]) ])
@ -361,7 +407,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
# Call AM_AUTOMAKE_VERSION so it can be traced. # Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.7.8])]) [AM_AUTOMAKE_VERSION([1.7.6])])
# Helper functions for option handling. -*- Autoconf -*- # Helper functions for option handling. -*- Autoconf -*-

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -18,14 +18,14 @@
## ##
# #
EXTRA_DIST = emailrelay-doxygen-filter.sh_ emailrelay-test.sh_ emailrelay-soak.sh_ emailrelay.sh_ txt2html.sh_ txt2mu.sh_ mu2html.sh_ expand.sh_ emailrelay-notify.sh_ emailrelay-resubmit.sh_ emailrelay-deliver.sh_ emailrelay-process.sh_ emailrelay-runperl.js EXTRA_DIST = emailrelay-doxygen-filter.sh_ emailrelay-test.sh_ emailrelay-soak.sh_ emailrelay.sh_ txt2html.sh_ txt2mu.sh_ mu2html.sh_ expand.sh_ emailrelay-notify.sh_ emailrelay-resubmit.sh_ emailrelay-deliver.sh_ emailrelay-process.sh_ emailrelay-runperl.js emailrelay-resubmit.js fastbuild.sh
noinst_cleanup = emailrelay-doxygen-filter.sh emailrelay-test.sh emailrelay-soak.sh
noinst_SCRIPTS = emailrelay-doxygen-filter.sh emailrelay-test.sh emailrelay-soak.sh noinst_SCRIPTS = emailrelay-doxygen-filter.sh emailrelay-test.sh emailrelay-soak.sh emailrelay-runperl.js emailrelay-resubmit.js
e_init_SCRIPTS = emailrelay e_init_SCRIPTS = emailrelay
e_examples_DATA = emailrelay-process.sh emailrelay-notify.sh emailrelay-deliver.sh emailrelay-resubmit.sh emailrelay-runperl.js e_examples_DATA = emailrelay-process.sh emailrelay-notify.sh emailrelay-deliver.sh emailrelay-resubmit.sh
work_scripts = txt2mu.sh mu2html.sh expand.sh txt2html.sh emailrelay.sh work_scripts = txt2mu.sh mu2html.sh expand.sh txt2html.sh emailrelay.sh
CLEANFILES = $(noinst_SCRIPTS) $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts) CLEANFILES = $(noinst_cleanup) $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts)
TESTS = emailrelay-test.sh TESTS = emailrelay-test.sh
@ -44,7 +44,6 @@ install-data-local: install-e_examplesDATA install-e_initSCRIPTS
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-resubmit.sh chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-resubmit.sh
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-deliver.sh chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-deliver.sh
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-process.sh chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-process.sh
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-runperl.js
uninstall-local: uninstall-local:
-rmdir $(DESTDIR)$(e_examplesdir) 2>/dev/null -rmdir $(DESTDIR)$(e_examplesdir) 2>/dev/null

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -111,6 +111,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -128,14 +129,14 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
EXTRA_DIST = emailrelay-doxygen-filter.sh_ emailrelay-test.sh_ emailrelay-soak.sh_ emailrelay.sh_ txt2html.sh_ txt2mu.sh_ mu2html.sh_ expand.sh_ emailrelay-notify.sh_ emailrelay-resubmit.sh_ emailrelay-deliver.sh_ emailrelay-process.sh_ emailrelay-runperl.js EXTRA_DIST = emailrelay-doxygen-filter.sh_ emailrelay-test.sh_ emailrelay-soak.sh_ emailrelay.sh_ txt2html.sh_ txt2mu.sh_ mu2html.sh_ expand.sh_ emailrelay-notify.sh_ emailrelay-resubmit.sh_ emailrelay-deliver.sh_ emailrelay-process.sh_ emailrelay-runperl.js emailrelay-resubmit.js fastbuild.sh
noinst_cleanup = emailrelay-doxygen-filter.sh emailrelay-test.sh emailrelay-soak.sh
noinst_SCRIPTS = emailrelay-doxygen-filter.sh emailrelay-test.sh emailrelay-soak.sh noinst_SCRIPTS = emailrelay-doxygen-filter.sh emailrelay-test.sh emailrelay-soak.sh emailrelay-runperl.js emailrelay-resubmit.js
e_init_SCRIPTS = emailrelay e_init_SCRIPTS = emailrelay
e_examples_DATA = emailrelay-process.sh emailrelay-notify.sh emailrelay-deliver.sh emailrelay-resubmit.sh emailrelay-runperl.js e_examples_DATA = emailrelay-process.sh emailrelay-notify.sh emailrelay-deliver.sh emailrelay-resubmit.sh
work_scripts = txt2mu.sh mu2html.sh expand.sh txt2html.sh emailrelay.sh work_scripts = txt2mu.sh mu2html.sh expand.sh txt2html.sh emailrelay.sh
CLEANFILES = $(noinst_SCRIPTS) $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts) CLEANFILES = $(noinst_cleanup) $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts)
TESTS = emailrelay-test.sh TESTS = emailrelay-test.sh
@ -150,7 +151,7 @@ SCRIPTS = $(e_init_SCRIPTS) $(noinst_SCRIPTS)
DIST_SOURCES = DIST_SOURCES =
DATA = $(e_examples_DATA) DATA = $(e_examples_DATA)
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@ -337,7 +338,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -347,7 +348,7 @@ clean: clean-am
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-am: clean-am distclean-generic
dvi: dvi-am dvi: dvi-am
@ -370,7 +371,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am mostlyclean: mostlyclean-am
@ -413,7 +414,6 @@ install-data-local: install-e_examplesDATA install-e_initSCRIPTS
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-resubmit.sh chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-resubmit.sh
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-deliver.sh chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-deliver.sh
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-process.sh chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-process.sh
chmod ugo+x $(DESTDIR)$(e_examplesdir)/emailrelay-runperl.js
uninstall-local: uninstall-local:
-rmdir $(DESTDIR)$(e_examplesdir) 2>/dev/null -rmdir $(DESTDIR)$(e_examplesdir) 2>/dev/null

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@ -156,6 +156,7 @@ PostFilter()
${awk} ' ${awk} '
{ {
if( match( $0 , "^[[:space:]]*class[[:space:]][^/]*//" ) || if( match( $0 , "^[[:space:]]*class[[:space:]][^/]*//" ) ||
match( $0 , "^[[:space:]]*union[[:space:]][^/]*//" ) ||
match( $0 , "^[[:space:]]*struct[[:space:]][^/]*//" ) ) match( $0 , "^[[:space:]]*struct[[:space:]][^/]*//" ) )
{ {
class = substr( $0 , 1 , RLENGTH-2 ) class = substr( $0 , 1 , RLENGTH-2 )
@ -180,7 +181,11 @@ name="`basename \"${1}\"`"
type="`echo \"${name}\" | ${awk} -F . '{print $NF}'`" type="`echo \"${name}\" | ${awk} -F . '{print $NF}'`"
classes="`fgrep '// Class:' \"${1}\" | wc -l`" classes="`fgrep '// Class:' \"${1}\" | wc -l`"
if test "${name}" = "gdef.h" -o "${name}" = "gnet.h" if test "${name}" = "md5.h" -o "${name}" = "md5.cpp"
then
cat "${1}"
elif test "${name}" = "gdef.h" -o "${name}" = "gnet.h"
then then
cat "${1}" | BasicFilter cat "${1}" | BasicFilter

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

100
bin/emailrelay-resubmit.js Normal file
View File

@ -0,0 +1,100 @@
//
// Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// ===
//
// emailrelay-resubmit.js
//
// Looks for all failed e-mails in the E-MailRelay spool directory
// and resubmits them. However, if an e-mail has been retried five
// times already then it is not resubmitted again.
//
// usage: cscript //nologo emailrelay-resubmit.js [<spool-dir>]
//
// configuration
//
var cfg_store = "__SPOOL_DIR__" ;
var cfg_retry_limit = 5 ;
var cfg_debug = true ;
// parse the command line
//
var args = WScript.Arguments
if( args.length >= 1 )
{
cfg_store = args(0) ;
}
// debugging
//
function debug( line )
{
if( cfg_debug )
{
WScript.Echo( "debug: " + line ) ;
}
}
// check the spool directory
//
var fso = WScript.CreateObject( "Scripting.FileSystemObject" ) ;
if( ! fso.FolderExists( cfg_store ) )
{
WScript.Echo( "invalid spool directory: \"" + cfg_store + "\"" ) ;
WScript.Quit( 1 ) ;
}
// for each file...
//
var folder = fso.GetFolder( cfg_store ) ;
var re_reason = new RegExp( "MailRelay-Reason: " , "" ) ;
var re_bad = new RegExp( ".*\.bad" , "i" ) ;
var iter = new Enumerator( folder.Files ) ;
for( ; ! iter.atEnd() ; iter.moveNext() )
{
// if a failed envelope file...
var path = new String(iter.item()) ;
debug( "path: " + path ) ;
if( path.match(re_bad) )
{
// count the failure lines
var stream = fso.OpenTextFile( path , 1 ) ;
var failures = 0 ;
while( !stream.AtEndOfStream )
{
var line = stream.ReadLine() ;
debug( "line: " + line ) ;
if( line.match(re_reason) )
{
failures++ ;
}
}
stream.Close() ;
debug( "failures: " + failures ) ;
if( failures < cfg_retry_limit )
{
// remove the ".bad" suffix
var new_path = path.substr( 0 , path.length-4 ) ;
debug( "rename: " + path + " -> " + new_path ) ;
fso.MoveFile( path , new_path ) ;
}
}
}
WScript.Quit( 0 ) ;

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -20,20 +20,25 @@
// //
// emailrelay-runperl.js // emailrelay-runperl.js
// //
// An example JavaScript wrapper that runs a perl script // An example JavaScript wrapper that runs a perl script for E-MailRelay.
// for E-MailRelay. The perl script's standard input // The name of the perl script is hard-coded below: edit as necessary.
// will the be the e-mail's content file. The perl script //
// should process this to its standard output, and // This JavaScript can be installed as an E-MailRelay "--filter" program
// using an E-MailRelay command-line something like this:
//
// emailrelay --as-server --filter "c:/winnt/system32/cscript.exe //nologo c:/program\ files/emailrelay/emailrelay-runperl.js"
//
// Note the use of "cscript.exe" to execute the JavaScript, and the backslash
// to escape the space in the path.
//
// The e-mail's content file is fed to the perl script's standard input.
// The perl code is expected to process this to its standard output and then
// terminate with a zero exit code. // terminate with a zero exit code.
// //
// Eg: // The implementation of this JavaScript makes use of "CMD.EXE", which may be
// emailrelay --as-server --filter "cscript.exe //nologo emailrelay-runperl.js" // not be available on some versions of Windows.
//
// Uses CMD.EXE which may be not be available on some
// versions of Windows.
//
// Edit the next two lines as necessary, but avoid spaces in paths.
// //
// Edit the next two lines as necessary, but avoid spaces in paths:
var cfg_perl="perl -S -T -w" var cfg_perl="perl -S -T -w"
var cfg_perl_script="spamassassin" var cfg_perl_script="spamassassin"
@ -82,4 +87,3 @@ else
WScript.Quit( rc ) WScript.Quit( rc )
} }

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@ -23,12 +23,15 @@
# #
# Soak tests the E-MailRelay system. # Soak tests the E-MailRelay system.
# #
# usage: emailrelay-soak.sh [<exe>]
#
# (As a side-effect it does "killall emailrelay".) # (As a side-effect it does "killall emailrelay".)
# #
# configuration # configuration
# #
exe="`dirname $0`/../src/main/emailrelay" exe="`dirname $0`/../src/main/emailrelay"
test -z "${1}" || exe="${1}"
content="/etc/services" content="/etc/services"
pp="1001" # port prefix pp="1001" # port prefix

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@ -39,71 +39,83 @@
# -n no cleanup # -n no cleanup
# #
# parse the command line
#
opt_use_valgrind="0" ; if test "${1}" = "-v" ; then opt_use_valgrind="1" ; shift ; fi
opt_debug="0" ; if test "${1}" = "-d" ; then opt_debug="1" ; shift ; fi
opt_no_cleanup="0" ; if test "${1}" = "-n" ; then opt_no_cleanup="1" ; shift ; fi
opt_exe_dir="${1}"
# configuration # configuration
# #
use_valgrind="0" ; if test "${1}" = "-v" ; then use_valgrind="1" ; shift ; fi cfg_sw_debug="" ; test "${opt_debug}" -eq 0 || cfg_sw_debug="--debug"
debug="" ; if test "${1}" = "-d" ; then debug="--debug" ; shift ; fi cfg_sw_extra="" ; test "${opt_use_valgrind}" -eq 0 || cfg_sw_extra="--no-daemon"
no_cleanup="0" ; if test "${1}" = "-n" ; then no_cleanup="1" ; shift ; fi cfg_exe_dir="../src/main" ; test -z "${opt_exe_dir}" || cfg_exe_dir="${opt_exe_dir}"
exe_dir="../src/main" ; if test "${1}" != "" ; then exe_dir="${1}" ; fi cfg_main_exe="${cfg_exe_dir}/emailrelay"
exe="${exe_dir}/emailrelay" cfg_poke_exe="${cfg_exe_dir}/emailrelay-poke"
poke="${exe_dir}/emailrelay-poke" cfg_null_filter="/bin/touch" ; test -f ${cfg_null_filter} || cfg_null_filter="/usr/bin/touch"
null_filter="/bin/touch" cfg_content_file="/etc/services"
content_file="/etc/services" cfg_pp="201" # port-prefix
pp="201" # port-prefix cfg_base_dir="/tmp/`basename $0`.$$.tmp"
cfg_summary_log="/tmp/`basename $0`.out"
cfg_sw_valgrind="--logfile=${cfg_base_dir}/valgrind --trace-children=yes --num-callers=40 --leak-check=yes"
cfg_run="" ; test "${opt_use_valgrind}" -eq 0 || cfg_run="valgrind ${cfg_sw_valgrind}"
# configuration fallback Init()
#
if test \! -f ${null_filter}
then
null_filter="/usr/bin/touch"
fi
# initialisation
#
base_dir="/tmp/`basename $0`.$$.tmp"
summary_log="/tmp/`basename $0`.out"
exit_code="1"
watchdog_pid=""
MALLOC_CHECK_="2"
export MALLOC_CHECK_
ulimit -c 1000000
if test "${use_valgrind}" -eq 1
then
exe="valgrind --logfile=${base_dir}/valgrind --trace-children=yes --num-callers=40 --leak-check=yes ${exe} --no-daemon"
fi
Cleanup()
{ {
${poke} ${pp}11 terminate MALLOC_CHECK_="2"
${poke} ${pp}12 terminate export MALLOC_CHECK_
${poke} ${pp}13 terminate ulimit -c 1000000
${poke} ${pp}14 terminate trap "Trap 1 ; exit 1" 1 2 3 13 15
${poke} ${pp}15 terminate trap "e=\$? ; Trap 0 ; exit \$e" 0
${poke} ${pp}16 terminate
sleep 2
kill `cat ${base_dir}/pid-* 2>/dev/null` 2>/dev/null
if test -d ${base_dir}
then
grep "MailRelay-Reason" ${base_dir}/*/*envelope*bad > "${summary_log}" 2>/dev/null
grep "." ${base_dir}/log-? >> "${summary_log}" 2>/dev/null
if test "${use_valgrind}" -eq 1
then
grep "." ${base_dir}/valgrind.* >> "${summary_log}" 2>/dev/null
fi
ls -lR ${base_dir} >> "${summary_log}" 2>/dev/null
if test "${no_cleanup}" -eq 0
then
rm -rf ${base_dir} 2>/dev/null
fi
fi
} }
Trap() Trap()
{ {
Cleanup trap 0 1 2 3 13 15
exit ${exit_code} if test "$1" -ne 0
then
echo `basename $0`: cleaning up >&2
fi
Cleanup > /dev/null 2>&1
}
Cleanup()
{
${cfg_poke_exe} ${cfg_pp}11 terminate
${cfg_poke_exe} ${cfg_pp}12 terminate
${cfg_poke_exe} ${cfg_pp}13 terminate
${cfg_poke_exe} ${cfg_pp}14 terminate
${cfg_poke_exe} ${cfg_pp}15 terminate
${cfg_poke_exe} ${cfg_pp}16 terminate
sleep 2
kill `cat ${cfg_base_dir}/pid-* 2>/dev/null`
if test -d ${cfg_base_dir}
then
grep "MailRelay-Reason" ${cfg_base_dir}/*/*envelope*bad > "${cfg_summary_log}"
grep "." ${cfg_base_dir}/log-? >> "${cfg_summary_log}"
if test "${opt_use_valgrind}" -eq 1
then
grep "." ${cfg_base_dir}/valgrind.* >> "${cfg_summary_log}"
fi
ls -lR ${cfg_base_dir} >> "${cfg_summary_log}"
if test "${opt_no_cleanup}" -eq 0
then
rm -rf ${cfg_base_dir}
fi
fi
}
SanityChecks()
{
if test "`${cfg_main_exe} --help | grep \"^Copyright\" | wc -l`" -ne 1
then
echo `basename $0`: cannot even run \"${cfg_main_exe} --help\" >&2
trap 0
exit 1
fi
} }
RunServer() RunServer()
@ -115,10 +127,15 @@ RunServer()
pidfile_="${5}" pidfile_="${5}"
extra_="${6}" extra_="${6}"
mkdir -p ${base_dir}/${spool_} mkdir -p ${cfg_base_dir}/${spool_}
${exe} ${debug} --log --verbose --no-syslog --port ${port_} --spool-dir ${base_dir}/${spool_} \ ${cfg_run} ${cfg_main_exe} ${cfg_sw_extra} ${cfg_sw_debug} \
--admin ${admin_port_} --admin-terminate \ --log --verbose --no-syslog \
--pid-file ${base_dir}/${pidfile_} ${extra_} 2> ${base_dir}/${log_} & --port ${cfg_pp}${port_} \
--spool-dir ${cfg_base_dir}/${spool_} \
--admin ${cfg_pp}${admin_port_} \
--admin-terminate \
--pid-file ${cfg_base_dir}/${pidfile_} \
${extra_} 2> ${cfg_base_dir}/${log_} &
} }
RunClient() RunClient()
@ -128,9 +145,11 @@ RunClient()
log_="${3}" log_="${3}"
pidfile_="${4}" pidfile_="${4}"
${exe} ${debug} --forward --no-daemon --dont-serve --log --verbose --no-syslog \ ${cfg_run} ${cfg_main_exe} ${cfg_sw_extra} ${cfg_sw_debug} \
--pid-file ${base_dir}/${pidfile_} \ --forward --no-daemon --dont-serve --log --verbose --no-syslog \
--forward-to ${to_} --spool-dir ${base_dir}/${spool_} 2> ${base_dir}/${log_} --pid-file ${cfg_base_dir}/${pidfile_} \
--forward-to ${to_} \
--spool-dir ${cfg_base_dir}/${spool_} 2> ${cfg_base_dir}/${log_}
} }
RunPoke() RunPoke()
@ -138,7 +157,7 @@ RunPoke()
port_="${1}" port_="${1}"
log_="${2}" log_="${2}"
${poke} ${port_} > ${base_dir}/${log_} ${cfg_poke_exe} ${cfg_pp}${port_} > ${cfg_base_dir}/${log_}
} }
Content() Content()
@ -147,7 +166,7 @@ Content()
echo "Subject: test message 1" echo "Subject: test message 1"
echo "From: sender" echo "From: sender"
echo " " echo " "
cat "${content_file}" cat "${cfg_content_file}"
} }
Envelope() Envelope()
@ -168,99 +187,109 @@ CrLf()
sed 's/$/£/' | tr '£' '\r' sed 's/$/£/' | tr '£' '\r'
} }
CheckResults() TestDone()
{ {
store="${1}" store_="${1}"
if test "`ls -1 ${base_dir}/${store}/emailrelay.*.content 2>/dev/null | wc -l`" -eq 2 -a \ test \
"`ls -1 ${base_dir}/${store}/emailrelay.*.envelope 2>/dev/null | wc -l`" -eq 2 "`ls -1 ${cfg_base_dir}/${store_}/emailrelay.*.content 2>/dev/null | wc -l`" -eq 2 -a \
then "`ls -1 ${cfg_base_dir}/${store_}/emailrelay.*.envelope 2>/dev/null | wc -l`" -eq 2
exit_code="0"
echo `basename $0`: succeeded
else
false
fi
} }
StartWatchdog() ReportResults()
{ {
sleep 10 && kill `cat ${base_dir}/pid-* 2>/dev/null` 2>/dev/null & ok_="${1}"
watchdog_pid=$! if test "${ok_}" -eq 1
then
echo `basename $0`: succeeded
else
echo `basename $0`: failed: see ${cfg_summary_log} >&2
fi
} }
CreateMessages() CreateMessages()
{ {
mkdir -p ${base_dir}/store-1 mkdir -p ${cfg_base_dir}/store-1
Content | CrLf > ${base_dir}/store-1/emailrelay.0.1.content Content | CrLf > ${cfg_base_dir}/store-1/emailrelay.0.1.content
Envelope | CrLf > ${base_dir}/store-1/emailrelay.0.1.envelope Envelope | CrLf > ${cfg_base_dir}/store-1/emailrelay.0.1.envelope
Content | CrLf > ${base_dir}/store-1/emailrelay.0.2.content Content | CrLf > ${cfg_base_dir}/store-1/emailrelay.0.2.content
Envelope | CrLf > ${base_dir}/store-1/emailrelay.0.2.envelope Envelope | CrLf > ${cfg_base_dir}/store-1/emailrelay.0.2.envelope
} }
CreateAuth() CreateAuth()
{ {
mkdir -p "${base_dir}" mkdir -p "${cfg_base_dir}"
# encrypted version "joes_password" provided by emailrelay-passwd # encrypted version "joes_password" provided by emailrelay-passwd
key="2168297042.2818429713.1297528852.2023008371.2713943401.1997919265.1829599518.235099638" key="2168297042.2818429713.1297528852.2023008371.2713943401.1997919265.1829599518.235099638"
file="${base_dir}/server.auth" file="${cfg_base_dir}/server.auth"
echo "# server.auth" > ${file} echo "# server.auth" > ${file}
echo "LOGIN server fred freds_password" >> ${file} echo "LOGIN server fred freds_password" >> ${file}
echo "CRAM-MD5 server joe ${key}" >> ${file} echo "CRAM-MD5 server joe ${key}" >> ${file}
echo "CRAM-MD5 server brian 1.1.1.1.2.2.2.2" >> ${file} echo "CRAM-MD5 server brian 1.1.1.1.2.2.2.2" >> ${file}
file="${base_dir}/client-fred.auth" file="${cfg_base_dir}/client-fred.auth"
echo "# client-fred.auth" > ${file} echo "# client-fred.auth" > ${file}
echo "LOGIN client fred freds_password" >> ${file} echo "LOGIN client fred freds_password" >> ${file}
file="${base_dir}/client-joe.auth" file="${cfg_base_dir}/client-joe.auth"
echo "# client-joe.auth" > ${file} echo "# client-joe.auth" > ${file}
echo "CRAM-MD5 client joe ${key}" >> ${file} echo "CRAM-MD5 client joe ${key}" >> ${file}
} }
CreateFilter() CreateFilter()
{ {
cat <<EOF | sed 's/^_//' > ${base_dir}/filter.sh cat <<EOF | sed 's/^ *_//' > ${cfg_base_dir}/filter.sh
_#!/bin/sh _#!/bin/sh
_# filter.sh _# filter.sh
_tmp="/tmp/`basename $0`.\$\$.tmp" _tmp="/tmp/`basename $0`.\$\$.tmp"
_tr 'a-z' 'A-Z' < \$1 > \$tmp && mv \$tmp \$1 _tr 'a-z' 'A-Z' < \$1 > \$tmp && mv \$tmp \$1
_exit 0 _exit 0
EOF EOF
chmod +x ${base_dir}/filter.sh chmod +x ${cfg_base_dir}/filter.sh
} }
trap "Trap ; exit" 1 2 3 13 15 Sleep()
trap "Trap 0 ; exit" 0 {
if test "${opt_use_valgrind}" -eq 1
then
sleep 30
else
sleep 5
fi
}
#StartWatchdog Main()
CreateAuth {
CreateFilter Init
SanityChecks
CreateAuth
CreateFilter
CreateMessages
RunServer ${pp}01 ${pp}10 store-2 log-1 pid-1 RunServer 01 10 store-2 log-1 pid-1
RunServer ${pp}02 ${pp}12 store-2 log-2 pid-2 "--forward-to localhost:${pp}03 --client-auth ${base_dir}/client-joe.auth" RunServer 02 12 store-2 log-2 pid-2 "--forward-to localhost:${cfg_pp}03 --client-auth ${cfg_base_dir}/client-joe.auth"
RunServer ${pp}03 ${pp}13 store-3 log-3 pid-3 "--immediate --forward-to localhost:${pp}04 --filter ${null_filter} --client-auth ${base_dir}/client-fred.auth --server-auth ${base_dir}/server.auth" RunServer 03 13 store-3 log-3 pid-3 "--immediate --forward-to localhost:${cfg_pp}04 --filter ${cfg_null_filter} --client-auth ${cfg_base_dir}/client-fred.auth --server-auth ${cfg_base_dir}/server.auth"
RunServer ${pp}04 ${pp}14 store-4 log-4 pid-4 "--server-auth ${base_dir}/server.auth" RunServer 04 14 store-4 log-4 pid-4 "--server-auth ${cfg_base_dir}/server.auth"
RunServer ${pp}05 ${pp}15 store-4 log-5 pid-5 "--poll 1 --forward-to localhost:${pp}06" RunServer 05 15 store-4 log-5 pid-5 "--poll 1 --forward-to localhost:${cfg_pp}06"
RunServer ${pp}06 ${pp}16 store-6 log-6 pid-6 "--filter ${base_dir}/filter.sh" RunServer 06 16 store-6 log-6 pid-6 "--filter ${cfg_base_dir}/filter.sh"
CreateMessages sleep 1
RunClient localhost:${pp}01 store-1 log-c pid-7 RunClient localhost:${cfg_pp}01 store-1 log-c pid-7
RunPoke ${pp}12 log-p RunPoke 12 log-p
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 success="0"
do for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
if test "${use_valgrind}" -eq 1 ; then sleep 50 ; fi do
sleep 10 Sleep
CheckResults store-6 if TestDone store-6
if test $? -eq 0 ; then break ; fi then
done success="1"
if test "${watchdog_pid}" != "" break
then fi
kill "${watchdog_pid}" done
fi ReportResults "${success}"
if test ${exit_code} -ne 0 }
then
echo `basename $0`: failed: see ${summary_log} >&2 Main
fi

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

108
bin/fastbuild.sh Normal file
View File

@ -0,0 +1,108 @@
#!/bin/sh
#
# Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# ===
#
# fastbuild.sh
#
# A complier stub for doing fastbuilds, where each executable
# is compiled from a single source-file containing a long
# list of source-file includes.
#
# This script will probably not work on weird o/s's. It
# was developed on SUSE 9.0.
#
Ar()
{
echo fastbuild: creating empty library "${2}"
touch "${2}"
}
ReallyCompile()
{
source_="${1}"
new_="${2}"
shift
shift
echo fastbuild: compiling "${new_}" instead of "${source_}"
g++ `echo $@ | sed "s/${source_}/${new_}/g"`
}
OutputFilter()
{
tr '\t' ' ' | sed 's/.* -o //' | sed 's/ .*//'
}
Skip()
{
source_="${1}"
shift
output_="`echo $@ | OutputFilter`"
echo fastbuild: skipping "${source}"
touch "${output_}"
}
Compile()
{
source="`echo $@ | sed 's/.* //'`"
case "${source}" in
main.cpp) ReallyCompile "${source}" emailrelay-fastbuild.cpp "$@" ;;
passwd.cpp) ReallyCompile "${source}" passwd-fastbuild.cpp "$@" ;;
submit.cpp) ReallyCompile "${source}" submit-fastbuild.cpp "$@" ;;
*) Skip "${source}" "$@" ;;
esac
}
ReallyLink()
{
echo fastbuild: linking $2 into $1
g++ -o "${1}" "${2}"
}
Link()
{
output_="`echo $@ | OutputFilter`"
output_name_="`basename \"${output_}\"`"
echo fastbuild: linking "${output_name_}"
case "${output_name_}" in
emailrelay) ReallyLink ${output_} main.o ;;
emailrelay-submit) ReallyLink ${output_} submit.o ;;
emailrelay-passwd) ReallyLink ${output_} passwd.o ;;
*) echo fastbuild: error: unrecognised target binary >&2 ;;
esac
}
if test "${1}" = "cru"
then
Ar "$@"
:
elif test "`echo $@ | grep '\.cpp *$' | wc -l`" -ne 0
then
Compile "$@"
:
elif test "`echo $@ | grep -- '-o *[-a-z][-a-z]* ' | wc -l`" -ne 0
then
Link "$@"
:
else
echo fastbuild: unrecognised command line
g++ "$@"
fi

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> # Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

70
configure vendored
View File

@ -308,7 +308,7 @@ ac_includes_default="\
# include <unistd.h> # include <unistd.h>
#endif" #endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB MAKE AR GZIP HAVE_DOXYGEN HAVE_MAN2HTML COMPILER_VERSION CPP EGREP e_sbindir e_libexecdir e_docdir e_initdir e_spooldir e_man1dir e_examplesdir LIBOBJS LTLIBOBJS' ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB MAKE AR GZIP HAVE_DOXYGEN HAVE_MAN2HTML COMPILER_VERSION CPP EGREP e_sbindir e_libexecdir e_sysconfdir e_docdir e_initdir e_spooldir e_man1dir e_examplesdir LIBOBJS LTLIBOBJS'
ac_subst_files='' ac_subst_files=''
# Initialize some variables set by options. # Initialize some variables set by options.
@ -855,6 +855,8 @@ Optional Features:
--disable-dependency-tracking Speeds up one-time builds --disable-dependency-tracking Speeds up one-time builds
--enable-dependency-tracking Do not reject slow dependency extractors --enable-dependency-tracking Do not reject slow dependency extractors
--enable-debug enable extra debug messages at compile-time --enable-debug enable extra debug messages at compile-time
--enable-fastbuild enable experimental faster building; requires
--disable-dependency-tracking
--enable-fhs force FHS-compliant directories, ignoring --prefix --enable-fhs force FHS-compliant directories, ignoring --prefix
etc etc
@ -862,6 +864,8 @@ Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-workshop use Sun WorkShop 'CC -xar' as the 'ar' tool --with-workshop use Sun WorkShop 'CC -xar' as the 'ar' tool
--with-doxygen generate source code documentation with doxygen
--with-man2html convert man pages to html using man2html
Some influential environment variables: Some influential environment variables:
CC C compiler command CC C compiler command
@ -1553,7 +1557,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE=emailrelay PACKAGE=emailrelay
VERSION=1.2 VERSION=1.3
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -5263,6 +5267,21 @@ _ACEOF
fi fi
# Check whether --enable-fastbuild or --disable-fastbuild was given.
if test "${enable_fastbuild+set}" = set; then
enableval="$enable_fastbuild"
fi;
if test "$enable_fastbuild" = "yes"
then
CXX="`pwd`/bin/fastbuild.sh"
chmod +x "$CXX"
AR="`pwd`/bin/fastbuild.sh"
RANLIB="true"
fi
# Check whether --with-workshop or --without-workshop was given. # Check whether --with-workshop or --without-workshop was given.
if test "${with_workshop+set}" = set; then if test "${with_workshop+set}" = set; then
@ -5278,6 +5297,44 @@ then
fi fi
# Check whether --with-doxygen or --without-doxygen was given.
if test "${with_doxygen+set}" = set; then
withval="$with_doxygen"
fi;
if test "$with_doxygen" != ""
then
if test "$with_doxygen" = "yes" -a "$HAVE_DOXYGEN" != "yes"
then
echo ignoring --with-doxygen
else
HAVE_DOXYGEN="$with_doxygen"
fi
fi
# Check whether --with-man2html or --without-man2html was given.
if test "${with_man2html+set}" = set; then
withval="$with_man2html"
fi;
if test "$with_man2html" != ""
then
if test "$with_man2html" = "yes" -a "$HAVE_MAN2HTML" != "yes"
then
echo ignoring --with-man2html
else
HAVE_MAN2HTML="$with_man2html"
fi
fi
# Check whether --enable-fhs or --disable-fhs was given. # Check whether --enable-fhs or --disable-fhs was given.
if test "${enable_fhs+set}" = set; then if test "${enable_fhs+set}" = set; then
enableval="$enable_fhs" enableval="$enable_fhs"
@ -5288,6 +5345,8 @@ if test "$e_sbindir" = "" ; then e_sbindir="$sbindir" ; fi
if test "$e_libexecdir" = "" ; then e_libexecdir="$libexecdir" ; fi if test "$e_libexecdir" = "" ; then e_libexecdir="$libexecdir" ; fi
if test "$e_sysconfdir" = "" ; then e_sysconfdir="$sysconfdir" ; fi
if test "$e_docdir" = "" ; then e_docdir="$datadir/$PACKAGE/doc" ; fi if test "$e_docdir" = "" ; then e_docdir="$datadir/$PACKAGE/doc" ; fi
if test "$e_initdir" = "" ; then e_initdir="$libexecdir" ; fi if test "$e_initdir" = "" ; then e_initdir="$libexecdir" ; fi
@ -5311,10 +5370,10 @@ then
localstatedir='/var' localstatedir='/var'
mandir='/usr/man' mandir='/usr/man'
datadir='/usr/share' datadir='/usr/share'
sysconfdir='/etc'
# #
# not used by emailrelay # not used by emailrelay
#bindir= #bindir=
#sysconfdir=
#sharedstatedir= #sharedstatedir=
#libdir= #libdir=
#includedir= #includedir=
@ -5329,13 +5388,14 @@ then
e_spooldir="$localstatedir/spool/$PACKAGE" e_spooldir="$localstatedir/spool/$PACKAGE"
e_man1dir="$datadir/man/man1" e_man1dir="$datadir/man/man1"
e_examplesdir="$datadir/doc/$PACKAGE/examples" e_examplesdir="$datadir/doc/$PACKAGE/examples"
e_sysconfdir="$sysconfdir"
fi fi
SET_MAKE="" SET_MAKE=""
ac_config_files="$ac_config_files Makefile src/Makefile src/glib/Makefile src/gnet/Makefile src/gsmtp/Makefile src/main/Makefile src/win32/Makefile lib/Makefile lib/gcc2.95/Makefile lib/msvc6.0/Makefile lib/sunpro5/Makefile bin/Makefile doc/Makefile" ac_config_files="$ac_config_files Makefile src/Makefile src/glib/Makefile src/gnet/Makefile src/gsmtp/Makefile src/main/Makefile src/win32/Makefile lib/Makefile lib/gcc2.95/Makefile lib/msvc6.0/Makefile lib/sunpro5/Makefile bin/Makefile doc/Makefile etc/Makefile"
cat >confcache <<\_ACEOF cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure # This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure # tests run on this system so they can be shared between configure
@ -5904,6 +5964,7 @@ do
"lib/sunpro5/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sunpro5/Makefile" ;; "lib/sunpro5/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sunpro5/Makefile" ;;
"bin/Makefile" ) CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; "bin/Makefile" ) CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;;
"doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"etc/Makefile" ) CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;;
"depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
@ -6044,6 +6105,7 @@ s,@CPP@,$CPP,;t t
s,@EGREP@,$EGREP,;t t s,@EGREP@,$EGREP,;t t
s,@e_sbindir@,$e_sbindir,;t t s,@e_sbindir@,$e_sbindir,;t t
s,@e_libexecdir@,$e_libexecdir,;t t s,@e_libexecdir@,$e_libexecdir,;t t
s,@e_sysconfdir@,$e_sysconfdir,;t t
s,@e_docdir@,$e_docdir,;t t s,@e_docdir@,$e_docdir,;t t
s,@e_initdir@,$e_initdir,;t t s,@e_initdir@,$e_initdir,;t t
s,@e_spooldir@,$e_spooldir,;t t s,@e_spooldir@,$e_spooldir,;t t

View File

@ -1,4 +1,4 @@
dnl Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> dnl Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
dnl dnl
dnl This program is free software; you can redistribute it and/or dnl This program is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU General Public License dnl modify it under the terms of the GNU General Public License
@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl dnl
AC_INIT(src/gsmtp/gsmtp.h) AC_INIT(src/gsmtp/gsmtp.h)
AM_INIT_AUTOMAKE(emailrelay,1.2) AM_INIT_AUTOMAKE(emailrelay,1.3)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
dnl === dnl ===
@ -68,12 +68,30 @@ dnl
AC_ARG_ENABLE(debug,AC_HELP_STRING([--enable-debug],[enable extra debug messages at compile-time])) AC_ARG_ENABLE(debug,AC_HELP_STRING([--enable-debug],[enable extra debug messages at compile-time]))
ENABLE_DEBUG ENABLE_DEBUG
dnl ===
dnl "--enable-fastbuild"
dnl
AC_ARG_ENABLE(fastbuild,AC_HELP_STRING([--enable-fastbuild],[enable experimental faster building; requires --disable-dependency-tracking]))
ENABLE_FASTBUILD
dnl === dnl ===
dnl "--with-workshop" dnl "--with-workshop"
dnl dnl
AC_ARG_WITH(workshop,AC_HELP_STRING([--with-workshop],[use Sun WorkShop 'CC -xar' as the 'ar' tool])) AC_ARG_WITH(workshop,AC_HELP_STRING([--with-workshop],[use Sun WorkShop 'CC -xar' as the 'ar' tool]))
WITH_WORKSHOP WITH_WORKSHOP
dnl ===
dnl "--with-doxygen"
dnl
AC_ARG_WITH(doxygen,AC_HELP_STRING([--with-doxygen],[generate source code documentation with doxygen]))
WITH_DOXYGEN
dnl ===
dnl "--with-man2html"
dnl
AC_ARG_WITH(man2html,AC_HELP_STRING([--with-man2html],[convert man pages to html using man2html]))
WITH_MAN2HTML
dnl === dnl ===
dnl directory tweaking and "--enable-fhs" ... dnl directory tweaking and "--enable-fhs" ...
dnl dnl
@ -83,6 +101,8 @@ AC_SUBST(e_sbindir)
if test "$e_sbindir" = "" ; then e_sbindir="$sbindir" ; fi if test "$e_sbindir" = "" ; then e_sbindir="$sbindir" ; fi
AC_SUBST(e_libexecdir) AC_SUBST(e_libexecdir)
if test "$e_libexecdir" = "" ; then e_libexecdir="$libexecdir" ; fi if test "$e_libexecdir" = "" ; then e_libexecdir="$libexecdir" ; fi
AC_SUBST(e_sysconfdir)
if test "$e_sysconfdir" = "" ; then e_sysconfdir="$sysconfdir" ; fi
AC_SUBST(e_docdir) AC_SUBST(e_docdir)
if test "$e_docdir" = "" ; then e_docdir="$datadir/$PACKAGE/doc" ; fi if test "$e_docdir" = "" ; then e_docdir="$datadir/$PACKAGE/doc" ; fi
AC_SUBST(e_initdir) AC_SUBST(e_initdir)
@ -103,5 +123,5 @@ SET_MAKE=""
dnl === dnl ===
dnl generate files... dnl generate files...
dnl dnl
AC_OUTPUT(Makefile src/Makefile src/glib/Makefile src/gnet/Makefile src/gsmtp/Makefile src/main/Makefile src/win32/Makefile lib/Makefile lib/gcc2.95/Makefile lib/msvc6.0/Makefile lib/sunpro5/Makefile bin/Makefile doc/Makefile) AC_OUTPUT(Makefile src/Makefile src/glib/Makefile src/gnet/Makefile src/gsmtp/Makefile src/main/Makefile src/win32/Makefile lib/Makefile lib/gcc2.95/Makefile lib/msvc6.0/Makefile lib/sunpro5/Makefile bin/Makefile doc/Makefile etc/Makefile)

31
depcomp
View File

@ -1,7 +1,7 @@
#! /bin/sh #! /bin/sh
# depcomp - compile a program generating dependencies as side-effects # depcomp - compile a program generating dependencies as side-effects
# Copyright 1999, 2000, 2003 Free Software Foundation, Inc. # Copyright 1999, 2000 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -172,25 +172,19 @@ sgi)
aix) aix)
# The C for AIX Compiler uses -M and outputs the dependencies # The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the # in a .u file. This file always lives in the current directory.
# current directory. Also, the AIX compiler puts `$object:' at the # Also, the AIX compiler puts `$object:' at the start of each line;
# start of each line; $object doesn't have directory information. # $object doesn't have directory information.
# Version 6 uses the directory in both cases. stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u" tmpdepfile="$stripped.u"
outname="$stripped.o"
if test "$libtool" = yes; then if test "$libtool" = yes; then
"$@" -Wc,-M "$@" -Wc,-M
else else
"$@" -M "$@" -M
fi fi
stat=$? stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then : if test $stat -eq 0; then :
else else
rm -f "$tmpdepfile" rm -f "$tmpdepfile"
@ -198,7 +192,6 @@ aix)
fi fi
if test -f "$tmpdepfile"; then if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'. # Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to # Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'. # `$object: dependent.h' and one to simply `dependent.h:'.
@ -285,8 +278,8 @@ tru64)
fi fi
if test -f "$tmpdepfile"; then if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the []. # That's a space and a tab in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else else
echo "#dummy" > "$depfile" echo "#dummy" > "$depfile"
fi fi
@ -299,7 +292,7 @@ tru64)
dashmstdout) dashmstdout)
# Important note: in order to support this mode, a compiler *must* # Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o. # always write the proprocessed file to stdout, regardless of -o.
"$@" || exit $? "$@" || exit $?
# Remove the call to Libtool. # Remove the call to Libtool.
@ -395,7 +388,7 @@ makedepend)
cpp) cpp)
# Important note: in order to support this mode, a compiler *must* # Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout. # always write the proprocessed file to stdout.
"$@" || exit $? "$@" || exit $?
# Remove the call to Libtool. # Remove the call to Libtool.
@ -437,7 +430,7 @@ cpp)
msvisualcpp) msvisualcpp)
# Important note: in order to support this mode, a compiler *must* # Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o, # always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool. # because we must use -o when running libtool.
"$@" || exit $? "$@" || exit $?
IFS=" " IFS=" "

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -73,7 +73,7 @@ $(converter_helper3): $(converter_helper3_src)
if test "$(HAVE_DOXYGEN)" = "yes" ; then cat $(top_srcdir)/src/main/doxygen.cfg | sed "s:__TOP_SRC__:$(top_srcdir):g" | sed "s:__TOP_BUILD__:$(top_builddir):g" | doxygen - && touch .dox ; else echo no doxygen ; fi if test "$(HAVE_DOXYGEN)" = "yes" ; then cat $(top_srcdir)/src/main/doxygen.cfg | sed "s:__TOP_SRC__:$(top_srcdir):g" | sed "s:__TOP_BUILD__:$(top_builddir):g" | doxygen - && touch .dox ; else echo no doxygen ; fi
emailrelay-man.html: emailrelay.1 emailrelay-man.html: emailrelay.1
if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html emailrelay.1 > emailrelay-man.html ; fi if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html emailrelay.1 < /dev/null > emailrelay-man.html.tmp && mv emailrelay-man.html.tmp emailrelay-man.html ; fi
developer.html reference.html userguide.html: $(converter) developer.html reference.html userguide.html: $(converter)

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -111,6 +111,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -165,7 +166,7 @@ SCRIPTS = $(noinst_SCRIPTS)
DIST_SOURCES = DIST_SOURCES =
DATA = $(e_doc_DATA) $(e_man1_DATA) DATA = $(e_doc_DATA) $(e_man1_DATA)
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@ -276,7 +277,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -286,7 +287,7 @@ clean: clean-am
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-am: clean-am distclean-generic
dvi: dvi-am dvi: dvi-am
@ -308,7 +309,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am mostlyclean: mostlyclean-am
@ -365,7 +366,7 @@ $(converter_helper3): $(converter_helper3_src)
if test "$(HAVE_DOXYGEN)" = "yes" ; then cat $(top_srcdir)/src/main/doxygen.cfg | sed "s:__TOP_SRC__:$(top_srcdir):g" | sed "s:__TOP_BUILD__:$(top_builddir):g" | doxygen - && touch .dox ; else echo no doxygen ; fi if test "$(HAVE_DOXYGEN)" = "yes" ; then cat $(top_srcdir)/src/main/doxygen.cfg | sed "s:__TOP_SRC__:$(top_srcdir):g" | sed "s:__TOP_BUILD__:$(top_builddir):g" | doxygen - && touch .dox ; else echo no doxygen ; fi
emailrelay-man.html: emailrelay.1 emailrelay-man.html: emailrelay.1
if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html emailrelay.1 > emailrelay-man.html ; fi if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html emailrelay.1 < /dev/null > emailrelay-man.html.tmp && mv emailrelay-man.html.tmp emailrelay-man.html ; fi
developer.html reference.html userguide.html: $(converter) developer.html reference.html userguide.html: $(converter)

View File

@ -271,4 +271,4 @@ to reassign a std::auto_ptr<>.
Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.

View File

@ -1,6 +1,23 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>E-MailRelay: $title</title> <title>E-MailRelay: $title</title>
<meta name="robots" content="noindex,nofollow"> <meta name="robots" content="noindex,nofollow">
<link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff"> <style type="text/css">
<!--
h1 { text-align: center; font-family: veranda, arial, helvetica, sans-serif; color: #09c ; }
h2 { font-family: veranda, geneva, arial, helvetica, sans-serif; color: #09c ; }
h3 { font-family: veranda, geneva, arial, helvetica, sans-serif; color: #09c ; }
a { color: #09c }
a.qindex { color: #09c }
a.qindex:visited { color: #09c }
a.qindex:hover { background-color: #ccf }
a.qindexHL { color: #09c ; background-color: #eeeeff ; }
a.qindexHL:visited { color: #09c ; background-color: #eeeeff ; }
a.qindexHL:hover { color: #09c ; background-color: #ccf; }
-->
</style>
</head>
<body bgcolor="#ffffff">

View File

@ -74,6 +74,10 @@ Enables the administration interface and specifies its listening port number.
<DD> <DD>
Enables the terminate command on the admin interface. Enables the terminate command on the admin interface.
<DT><B>-A,--anonymous </B>
<DD>
Disables the smtp vrfy command and sends less verbose smtp responses.
<DT><B>-q,--as-client </B><I>host:port</I> <DT><B>-q,--as-client </B><I>host:port</I>
<DD> <DD>
@ -129,7 +133,7 @@ Forwards stored mail on startup (requires <I>--forward-to</I>).
<DT><B>-o,--forward-to </B><I>host:port</I> <DT><B>-o,--forward-to </B><I>host:port</I>
<DD> <DD>
Specifies the remote smtp server (required by <I>--forward</I> and <I>--admin</I>). Specifies the remote smtp server (required by <I>--forward</I>, <I>--poll</I>, <I>--immediate</I> and <I>--admin</I>).
<DT><B>-h,--help </B> <DT><B>-h,--help </B>
<DD> <DD>
@ -173,7 +177,7 @@ Specifies the smtp listening port number.
<DT><B>-P,--postmaster </B> <DT><B>-P,--postmaster </B>
<DD> <DD>
Deliver to postmaster and reject all other local mailbox addresses. Allow delivery to postmaster but reject all other local mailbox addresses.
<DT><B>-r,--remote-clients </B> <DT><B>-r,--remote-clients </B>
<DD> <DD>
@ -213,6 +217,9 @@ Displays version information and exits.
GNU style... GNU style...
<BR> <BR>
/usr/local/etc/emailrelay.conf
<BR>
/usr/local/libexec/emailrelay /usr/local/libexec/emailrelay
<BR> <BR>
@ -228,9 +235,18 @@ GNU style...
/usr/local/libexec/emailrelay-process.sh /usr/local/libexec/emailrelay-process.sh
<BR> <BR>
/usr/local/libexec/emailrelay-resubmit.js
<BR>
/usr/local/libexec/emailrelay-resubmit.sh /usr/local/libexec/emailrelay-resubmit.sh
<BR> <BR>
/usr/local/libexec/emailrelay-runperl.js
<BR>
/usr/local/man/man1/emailrelay.1.gz
<BR>
/usr/local/man/man1/emailrelay-passwd.1.gz /usr/local/man/man1/emailrelay-passwd.1.gz
<BR> <BR>
@ -240,9 +256,6 @@ GNU style...
/usr/local/man/man1/emailrelay-submit.1.gz /usr/local/man/man1/emailrelay-submit.1.gz
<BR> <BR>
/usr/local/man/man1/emailrelay.1.gz
<BR>
/usr/local/sbin/emailrelay /usr/local/sbin/emailrelay
<BR> <BR>
@ -252,12 +265,6 @@ GNU style...
/usr/local/sbin/emailrelay-submit /usr/local/sbin/emailrelay-submit
<BR> <BR>
/usr/local/share/emailrelay/doc/NEWS
<BR>
/usr/local/share/emailrelay/doc/README
<BR>
/usr/local/share/emailrelay/doc/changelog.gz /usr/local/share/emailrelay/doc/changelog.gz
<BR> <BR>
@ -273,9 +280,21 @@ GNU style...
/usr/local/share/emailrelay/doc/emailrelay.css /usr/local/share/emailrelay/doc/emailrelay.css
<BR> <BR>
/usr/local/share/emailrelay/doc/emailrelay-man.html
<BR>
/usr/local/share/emailrelay/doc/index.html /usr/local/share/emailrelay/doc/index.html
<BR> <BR>
/usr/local/share/emailrelay/doc/NEWS
<BR>
/usr/local/share/emailrelay/doc/*.png
<BR>
/usr/local/share/emailrelay/doc/README
<BR>
/usr/local/share/emailrelay/doc/readme.html /usr/local/share/emailrelay/doc/readme.html
<BR> <BR>
@ -306,6 +325,9 @@ GNU style...
FHS style... FHS style...
<BR> <BR>
/etc/emailrelay.conf
<BR>
/etc/init.d/emailrelay /etc/init.d/emailrelay
<BR> <BR>
@ -321,12 +343,6 @@ FHS style...
/usr/sbin/emailrelay-submit /usr/sbin/emailrelay-submit
<BR> <BR>
/usr/share/doc/emailrelay/NEWS
<BR>
/usr/share/doc/emailrelay/README
<BR>
/usr/share/doc/emailrelay/changelog.gz /usr/share/doc/emailrelay/changelog.gz
<BR> <BR>
@ -342,6 +358,9 @@ FHS style...
/usr/share/doc/emailrelay/emailrelay.css /usr/share/doc/emailrelay/emailrelay.css
<BR> <BR>
/usr/share/doc/emailrelay/emailrelay-man.html
<BR>
/usr/share/doc/emailrelay/examples/emailrelay-deliver.sh /usr/share/doc/emailrelay/examples/emailrelay-deliver.sh
<BR> <BR>
@ -357,6 +376,15 @@ FHS style...
/usr/share/doc/emailrelay/index.html /usr/share/doc/emailrelay/index.html
<BR> <BR>
/usr/share/doc/emailrelay/NEWS
<BR>
/usr/share/doc/emailrelay/*.png
<BR>
/usr/share/doc/emailrelay/README
<BR>
/usr/share/doc/emailrelay/readme.html /usr/share/doc/emailrelay/readme.html
<BR> <BR>
@ -378,6 +406,9 @@ FHS style...
/usr/share/doc/emailrelay/windows.txt /usr/share/doc/emailrelay/windows.txt
<BR> <BR>
/usr/share/man/man1/emailrelay.1.gz
<BR>
/usr/share/man/man1/emailrelay-passwd.1.gz /usr/share/man/man1/emailrelay-passwd.1.gz
<BR> <BR>
@ -387,9 +418,6 @@ FHS style...
/usr/share/man/man1/emailrelay-submit.1.gz /usr/share/man/man1/emailrelay-submit.1.gz
<BR> <BR>
/usr/share/man/man1/emailrelay.1.gz
<BR>
/var/spool/emailrelay/emailrelay.*.content /var/spool/emailrelay/emailrelay.*.content
<BR> <BR>
@ -436,7 +464,7 @@ Graeme Walker, mailto:<A HREF="mailto:graeme_walker@users.sourceforge.net">graem
This document was created by This document was created by
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>, <A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR> using the manual pages.<BR>
Time: 21:06:55 GMT, November 06, 2003 Time: 20:53:37 GMT, February 26, 2004
</BODY> </BODY>
</HTML> </HTML>
<!-- Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. --> <!-- Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->

View File

@ -1,4 +1,4 @@
.\" Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> .\" Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
.\" .\"
.\" This program is free software; you can redistribute it and/or .\" This program is free software; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License .\" modify it under the terms of the GNU General Public License
@ -22,12 +22,26 @@ emailrelay-passwd \- a password encoding utility for E-MailRelay
.B emailrelay-passwd .B emailrelay-passwd
.SH DESCRIPTION .SH DESCRIPTION
.I emailrelay-passwd .I emailrelay-passwd
is a utility which reads a plaintext password from the standard is a utility which reads a single plaintext password from the standard
input, and writes it out in an encoded form onto the standard input, and writes out an encoded form onto the standard
output. The encoded form is suitable for pasting into a CRAM-MD5 output. The encoded form is suitable for pasting into a CRAM-MD5
line in an line in an
.B emailrelay .B emailrelay
secrets file. secrets file.
.LP
A secrets file containing two CRAM-MD5 passwords might look like
this:
.LP
#
.br
# emailrelay.auth
.br
#
.br
server cram-md5 bob 1465267825.1002706143.2005162520.2739353706.4126076156.3423185672.2674269368.3056934447
.br
server cram-md5 alice 4039336516.3719314525.4148590512.4209236927.1897255360.1012201638.2279588408.1076355329
.br
.SH SEE ALSO .SH SEE ALSO
.BR emailrelay (1), .BR emailrelay (1),
.BR emailrelay-submit (1), .BR emailrelay-submit (1),

View File

@ -1,4 +1,4 @@
.\" Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> .\" Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
.\" .\"
.\" This program is free software; you can redistribute it and/or .\" This program is free software; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License .\" modify it under the terms of the GNU General Public License

View File

@ -1,4 +1,4 @@
.\" Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> .\" Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
.\" .\"
.\" This program is free software; you can redistribute it and/or .\" This program is free software; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License .\" modify it under the terms of the GNU General Public License

View File

@ -1,4 +1,4 @@
.\" Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> .\" Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
.\" .\"
.\" This program is free software; you can redistribute it and/or .\" This program is free software; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License .\" modify it under the terms of the GNU General Public License
@ -59,6 +59,9 @@ Enables the administration interface and specifies its listening port number.
.B \-Q,--admin-terminate .B \-Q,--admin-terminate
Enables the terminate command on the admin interface. Enables the terminate command on the admin interface.
.TP .TP
.B \-A,--anonymous
Disables the smtp vrfy command and sends less verbose smtp responses.
.TP
.B \-q,--as-client \fIhost:port\fR .B \-q,--as-client \fIhost:port\fR
Runs as a client, forwarding spooled mail to <host>: equivalent to \fI--log\fR \fI--no-syslog\fR \fI--no-daemon\fR \fI--dont-serve\fR \fI--forward\fR \fI--forward-to\fR. Runs as a client, forwarding spooled mail to <host>: equivalent to \fI--log\fR \fI--no-syslog\fR \fI--no-daemon\fR \fI--dont-serve\fR \fI--forward\fR \fI--forward-to\fR.
.TP .TP
@ -99,7 +102,7 @@ Defines a mail processor program for when storing.
Forwards stored mail on startup (requires \fI--forward-to\fR). Forwards stored mail on startup (requires \fI--forward-to\fR).
.TP .TP
.B \-o,--forward-to \fIhost:port\fR .B \-o,--forward-to \fIhost:port\fR
Specifies the remote smtp server (required by \fI--forward\fR and \fI--admin\fR). Specifies the remote smtp server (required by \fI--forward\fR, \fI--poll\fR, \fI--immediate\fR and \fI--admin\fR).
.TP .TP
.B \-h,--help .B \-h,--help
Displays help text and exits. Displays help text and exits.
@ -132,7 +135,7 @@ Enables polling with the specified period (requires \fI--forward-to\fR).
Specifies the smtp listening port number. Specifies the smtp listening port number.
.TP .TP
.B \-P,--postmaster .B \-P,--postmaster
Deliver to postmaster and reject all other local mailbox addresses. Allow delivery to postmaster but reject all other local mailbox addresses.
.TP .TP
.B \-r,--remote-clients .B \-r,--remote-clients
Allows remote clients to connect. Allows remote clients to connect.
@ -160,6 +163,8 @@ Displays version information and exits.
.SH FILES .SH FILES
GNU style... GNU style...
.br .br
/usr/local/etc/emailrelay.conf
.br
/usr/local/libexec/emailrelay /usr/local/libexec/emailrelay
.br .br
/usr/local/libexec/emailrelay-deliver.sh /usr/local/libexec/emailrelay-deliver.sh
@ -170,26 +175,26 @@ GNU style...
.br .br
/usr/local/libexec/emailrelay-process.sh /usr/local/libexec/emailrelay-process.sh
.br .br
/usr/local/libexec/emailrelay-resubmit.js
.br
/usr/local/libexec/emailrelay-resubmit.sh /usr/local/libexec/emailrelay-resubmit.sh
.br .br
/usr/local/libexec/emailrelay-runperl.js
.br
/usr/local/man/man1/emailrelay.1.gz
.br
/usr/local/man/man1/emailrelay-passwd.1.gz /usr/local/man/man1/emailrelay-passwd.1.gz
.br .br
/usr/local/man/man1/emailrelay-poke.1.gz /usr/local/man/man1/emailrelay-poke.1.gz
.br .br
/usr/local/man/man1/emailrelay-submit.1.gz /usr/local/man/man1/emailrelay-submit.1.gz
.br .br
/usr/local/man/man1/emailrelay.1.gz
.br
/usr/local/sbin/emailrelay /usr/local/sbin/emailrelay
.br .br
/usr/local/sbin/emailrelay-passwd /usr/local/sbin/emailrelay-passwd
.br .br
/usr/local/sbin/emailrelay-submit /usr/local/sbin/emailrelay-submit
.br .br
/usr/local/share/emailrelay/doc/NEWS
.br
/usr/local/share/emailrelay/doc/README
.br
/usr/local/share/emailrelay/doc/changelog.gz /usr/local/share/emailrelay/doc/changelog.gz
.br .br
/usr/local/share/emailrelay/doc/changelog.html /usr/local/share/emailrelay/doc/changelog.html
@ -200,8 +205,16 @@ GNU style...
.br .br
/usr/local/share/emailrelay/doc/emailrelay.css /usr/local/share/emailrelay/doc/emailrelay.css
.br .br
/usr/local/share/emailrelay/doc/emailrelay-man.html
.br
/usr/local/share/emailrelay/doc/index.html /usr/local/share/emailrelay/doc/index.html
.br .br
/usr/local/share/emailrelay/doc/NEWS
.br
/usr/local/share/emailrelay/doc/*.png
.br
/usr/local/share/emailrelay/doc/README
.br
/usr/local/share/emailrelay/doc/readme.html /usr/local/share/emailrelay/doc/readme.html
.br .br
/usr/local/share/emailrelay/doc/reference.html /usr/local/share/emailrelay/doc/reference.html
@ -222,6 +235,8 @@ GNU style...
.LP .LP
FHS style... FHS style...
.br .br
/etc/emailrelay.conf
.br
/etc/init.d/emailrelay /etc/init.d/emailrelay
.br .br
/usr/lib/emailrelay/emailrelay-poke /usr/lib/emailrelay/emailrelay-poke
@ -232,10 +247,6 @@ FHS style...
.br .br
/usr/sbin/emailrelay-submit /usr/sbin/emailrelay-submit
.br .br
/usr/share/doc/emailrelay/NEWS
.br
/usr/share/doc/emailrelay/README
.br
/usr/share/doc/emailrelay/changelog.gz /usr/share/doc/emailrelay/changelog.gz
.br .br
/usr/share/doc/emailrelay/changelog.html /usr/share/doc/emailrelay/changelog.html
@ -246,6 +257,8 @@ FHS style...
.br .br
/usr/share/doc/emailrelay/emailrelay.css /usr/share/doc/emailrelay/emailrelay.css
.br .br
/usr/share/doc/emailrelay/emailrelay-man.html
.br
/usr/share/doc/emailrelay/examples/emailrelay-deliver.sh /usr/share/doc/emailrelay/examples/emailrelay-deliver.sh
.br .br
/usr/share/doc/emailrelay/examples/emailrelay-notify.sh /usr/share/doc/emailrelay/examples/emailrelay-notify.sh
@ -256,6 +269,12 @@ FHS style...
.br .br
/usr/share/doc/emailrelay/index.html /usr/share/doc/emailrelay/index.html
.br .br
/usr/share/doc/emailrelay/NEWS
.br
/usr/share/doc/emailrelay/*.png
.br
/usr/share/doc/emailrelay/README
.br
/usr/share/doc/emailrelay/readme.html /usr/share/doc/emailrelay/readme.html
.br .br
/usr/share/doc/emailrelay/reference.html /usr/share/doc/emailrelay/reference.html
@ -270,14 +289,14 @@ FHS style...
.br .br
/usr/share/doc/emailrelay/windows.txt /usr/share/doc/emailrelay/windows.txt
.br .br
/usr/share/man/man1/emailrelay.1.gz
.br
/usr/share/man/man1/emailrelay-passwd.1.gz /usr/share/man/man1/emailrelay-passwd.1.gz
.br .br
/usr/share/man/man1/emailrelay-poke.1.gz /usr/share/man/man1/emailrelay-poke.1.gz
.br .br
/usr/share/man/man1/emailrelay-submit.1.gz /usr/share/man/man1/emailrelay-submit.1.gz
.br .br
/usr/share/man/man1/emailrelay.1.gz
.br
/var/spool/emailrelay/emailrelay.*.content /var/spool/emailrelay/emailrelay.*.content
.br .br
/var/spool/emailrelay/emailrelay.*.envelope /var/spool/emailrelay/emailrelay.*.envelope

View File

@ -21,4 +21,4 @@
</div> </div>
</body> </body>
</html> </html>
<!-- Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. --> <!-- Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->

View File

@ -19,6 +19,9 @@ where <switch> is:
# --admin-terminate (-Q) # --admin-terminate (-Q)
Enables the terminate command on the admin interface. Enables the terminate command on the admin interface.
# --anonymous (-A)
Disables the smtp vrfy command and sends less verbose smtp responses.
# --as-client (-q) # --as-client (-q)
Runs as a client, forwarding spooled mail to <host>: equivalent to "--log --no-syslog --no-daemon --dont-serve --forward --forward-to". Runs as a client, forwarding spooled mail to <host>: equivalent to "--log --no-syslog --no-daemon --dont-serve --forward --forward-to".
@ -59,7 +62,7 @@ where <switch> is:
Forwards stored mail on startup (requires --forward-to). Forwards stored mail on startup (requires --forward-to).
# --forward-to (-o) # --forward-to (-o)
Specifies the remote smtp server (required by --forward and --admin). Specifies the remote smtp server (required by --forward, --poll, --immediate and --admin).
# --help (-h) # --help (-h)
Displays help text and exits. Displays help text and exits.
@ -92,7 +95,7 @@ where <switch> is:
Specifies the smtp listening port number. Specifies the smtp listening port number.
# --postmaster (-P) # --postmaster (-P)
Deliver to postmaster and reject all other local mailbox addresses. Allow delivery to postmaster but reject all other local mailbox addresses.
# --remote-clients (-r) # --remote-clients (-r)
Allows remote clients to connect. Allows remote clients to connect.
@ -130,13 +133,12 @@ behaviour is:
* disable the administration interface * disable the administration interface
* generate no logging or diagnostic messages * generate no logging or diagnostic messages
The "--as-server" switch makes sure that logging is enabled and that Adding the "--as-server" switch makes sure that logging is enabled and that the
the standard error stream is closed. standard error stream is closed.
To foward spooled messages to the ISP the command-line switch "--as-client" To forward spooled messages the "--as-client" switch is provided to run the program
is provided to run the program...
* in foreground, exiting when all spooled mail has been processed * in foreground, exiting when all spooled mail has been processed
* forwarding spooled mail from "/usr/local/var/spool/emailrelay" or "/var/spool/emailrelay" * taking spooled mail from "/usr/local/var/spool/emailrelay" or "/var/spool/emailrelay"
* without listening on any port * without listening on any port
* with error, warning and information messages sent to stderr * with error, warning and information messages sent to stderr
* without using syslog * without using syslog
@ -231,9 +233,9 @@ command to an E-MailRelay server. For example:
To use the "flush" command the next SMTP server address must have been defined To use the "flush" command the next SMTP server address must have been defined
on the "emailrelay" command line at start-up using the "--forward-to" switch. on the "emailrelay" command line at start-up using the "--forward-to" switch.
Also, the "list" command lists the messages in the spool directory, the "info" Also, the "list" command lists the messages in the spool directory, "info"
command provides network status information and activity statistics, and the provides network status information and activity statistics, and "notify"
"notify" command enables asynchronous event notification. enables asynchronous event notification.
Mail processing Mail processing
--------------- ---------------
@ -319,21 +321,24 @@ For Windows this example can be rewritten in JavaScript:
} }
WScript.Quit( 0 ) ; WScript.Quit( 0 ) ;
Pre-processor programs written in JavaScript can be run with "cscript", using an Windows pre-processor programs written in JavaScript can be run using "cscript",
E-MailRelay command line with a "--filter" switch something like this (V1.1.3 with an E-MailRelay "--filter" switch something like this (V1.1.3 or later):
or later):
--filter "c:/winnt/system32/cscript.exe \\nologo c:/program\ files/emailrelay/filter.js" --filter "c:/winnt/system32/cscript.exe //nologo c:/program\ files/emailrelay/filter.js"
A more complex example script which does rot-13 masking is also provided in the Note how the space character in the path is escaped with a backslash.
distribution ("emailrelay-process.sh"). This does some simple MIME encoding, and
could be used as a template for more sophisticated message encryption.
There also a "--client-filter" switch that enables pre-processing of messages As an example of more complex processing there is a "--filter" script included in
just before they are forwarded, rather then when stored. But note that by then the distribution ("emailrelay-process.sh") that does rot-13 masking of messages.
it is too late to notify the SMTP client of any processing failures. This script also does some simple MIME encoding, so that the masked message
appears as an attachment within a plaintext bearer message.
Some points to note when writing "--filter" programs: E-MailRelay also has a "--client-filter" switch that enables pre-processing of
messages just before they are forwarded, rather then after they are stored. The
problem is that by then it is too late to notify the SMTP client of any
processing failures, so in many applications using "--filter" is more useful.
Bear in mind the following points when writing "--filter" programs:
* The standard input and output are not used; the content filename is passed on the command line. * The standard input and output are not used; the content filename is passed on the command line.
* Programs run with a reduced set of environment variables. * Programs run with a reduced set of environment variables.
* The E-MailRelay process is completely blocked while the "--filter" program runs. * The E-MailRelay process is completely blocked while the "--filter" program runs.
@ -344,21 +349,24 @@ Some points to note when writing "--filter" programs:
Address verification Address verification
-------------------- --------------------
In proxy mode all addresses supplied to the SMTP commands "RCPT" and "VRFY" are In proxy mode all addresses supplied to the SMTP commands "RCPT" and "VRFY" are
accepted by E-MailRelay as valid. In server mode (or more accurately when accepted by E-MailRelay as valid. But in server mode (or more accurately when
"--postmater" is in effect) addresses are accepted if they contain an at sign "--postmater" is in effect) addresses are only accepted if they contain an at
or if they are some sort of local "postmaster" address, as described in the SMTP sign ("@") or if they are some sort of local "postmaster" address: "postmaster",
section above. "postmaster@localhost" or "postmaster@<fqdn>".
However, this behaviour can be modified by using an external verifier program, However, this behaviour can be modified by using an external verifier program,
using the "--verifier" command-line switch. specified with the "--verifier" command-line switch.
The verifier program is passed a command-line containing: (1) the full The external verifier program is passed a command-line containing: (1) the full
address, (2) the user-name part of the address, (3) the host-name part, (4) the address, (2) the user-name part of the address in upper-case, (3) the host-name
local host's fully qualified domain name, (5) the current "MAIL" command's "FROM:" part in upper-case, (4) the local host's fully qualified domain name, (5) the
address or the empty string for the "VRFY" command, (6) the IP address of the current "MAIL" command's "FROM:" address or the empty string for the "VRFY"
client connection, (7) the authentication mechanism used by the client ("NONE" command, (6) the IP address of the client connection, (7) the authentication
if trusted), and (8) either the authentication name or the fourth field from mechanism used by the client ("NONE" if trusted), and (8) either the
authentication secrets file if a trusted IP address. authentication name or the fourth field from authentication secrets file if a
trusted IP address:
myverifier me@myhost.mydomain ME MYHOST.MYDOMAIN MYHOST.MYDOMAIN bob@other.net 192.168.0.1 LOGIN bob
For valid local mailbox addresses the verifier is expected to write two lines to For valid local mailbox addresses the verifier is expected to write two lines to
the standard output -- the full name associated with the mailbox, and the the standard output -- the full name associated with the mailbox, and the
@ -367,19 +375,17 @@ addresses the first line of output should be empty, the second line should be
copied from the first command-line argument, and the exit value should be one. copied from the first command-line argument, and the exit value should be one.
For invalid addresses the exit value should be greater than one, and anything For invalid addresses the exit value should be greater than one, and anything
written to the standard output is taken as the failure reason. (Only the few written to the standard output is taken as the failure reason. (Only the few
few thousand characters are read from the verifier's standard output stream; few thousand characters are read from the verifier's standard output stream; any
any more is thrown away.) more is thrown away.) If the exit code is 100 then the connection is aborted
immediately.
In this simple example script all addresses are accepted as long as they contain In this simple example script all addresses are accepted as long as they contain
an at sign. This is equivalent to removing the "--postmaster" command-line an at sign:
switch:
#!/bin/sh #!/bin/sh
# verifier.sh # verifier.sh
address="${1}" address="$1"
user="${2}" expr "${address}" : ".*@" > /dev/null || exit 2
host="${3}"
if test "${address}" != "${user}@${host}" ; then exit 2 ; fi
echo "${address}" echo "${address}"
echo "${address}" # again echo "${address}" # again
exit 1 # accept exit 1 # accept
@ -390,7 +396,7 @@ by connecting on a trusted IP address:
#!/bin/sh #!/bin/sh
# verifier.sh # verifier.sh
address="${1}" address="$1"
host="$3" host="$3"
local_domain="$4" local_domain="$4"
auth_mechanism="$7" auth_mechanism="$7"
@ -475,15 +481,24 @@ plaintext passwords, and the "CRAM-MD5" mechanism, as defined in RFC2195.
Authentication is enabled with the "--auth-client" and "--auth-server" Authentication is enabled with the "--auth-client" and "--auth-server"
command-line switches. The switch parameter is the name of a "secrets" file, command-line switches. The switch parameter is the name of a "secrets" file,
containing usernames and passwords. containing usernames and passwords:
emailrelay --as-server --auth-server /etc/client-secrets.txt
emailrelay --as-client myisp.net:smtp --auth-client /etc/myisp-secret.txt
The secrets file has a line-based format: blank lines are ignored and the hash The secrets file has a line-based format: blank lines are ignored and the hash
character (#) is used for comments. Lines have four white-space delimited character (#) is used for comments.
fields: "mechanism", "client-or-server", "userid", and "secret". The "mechanism"
field must be "LOGIN" or "CRAM-MD5" (case-insensitive); the "client-or-server" Lines have four white-space delimited fields:
field must be "client" or "server"; the "userid" field is xtext-encoded user * "mechanism"
identifier; and the "secret" field is the xtext-encoded "LOGIN" password or * "client-or-server"
"CRAM-MD5" key. * "userid"
* "secret"
The "mechanism" field must be "LOGIN" or "CRAM-MD5" (case-insensitive); the
"client-or-server" field must be "client" or "server"; the "userid" field is
xtext-encoded user identifier; and the "secret" field is the xtext-encoded
"LOGIN" password or "CRAM-MD5" key.
The "xtext" encoding scheme is defined properly in RFC1891, but basically it The "xtext" encoding scheme is defined properly in RFC1891, but basically it
says that non alphanumeric characters should be represented in hexadecimal as says that non alphanumeric characters should be represented in hexadecimal as
@ -526,7 +541,7 @@ A "CRAM-MD5" version would look like this:
When using the LOGIN mechanism you have to store plaintext passwords in a file When using the LOGIN mechanism you have to store plaintext passwords in a file
and then send them unencypted over a network. This is a bad thing. You should at and then send them unencypted over a network. This is a bad thing. You should at
least make sure that the secrets file has tight permissions, and that the least make sure that the secrets file has tight permissions, and that the
passwords in it are not also used for anything important (such as root access). passwords in it are not also used for anything important.
On the server side authentication is advertised by E-MailRealy in the response On the server side authentication is advertised by E-MailRealy in the response
to the SMTP "EHLO" command if the "--auth-server" command-line switch is used. to the SMTP "EHLO" command if the "--auth-server" command-line switch is used.
@ -541,7 +556,7 @@ the third field, and an arbitrary keyword in the fourth field. The keyword
is passed to any external address verifier program specified by the "--verifier" is passed to any external address verifier program specified by the "--verifier"
command-line switch. command-line switch.
For example this secrets file allows any client connecting from the 192.168.0.0 For example this secrets file allows any client connecting from the 192.168.0.0/24
domain to connect without authentication desipte the "--auth-server" switch: domain to connect without authentication desipte the "--auth-server" switch:
# #
@ -567,27 +582,32 @@ Files and directories
--------------------- ---------------------
Following a normal build from source, a "make install" puts files in the Following a normal build from source, a "make install" puts files in the
following locations: following locations:
* /usr/local/etc/emailrelay.conf
* /usr/local/libexec/emailrelay * /usr/local/libexec/emailrelay
* /usr/local/libexec/emailrelay-deliver.sh * /usr/local/libexec/emailrelay-deliver.sh
* /usr/local/libexec/emailrelay-notify.sh * /usr/local/libexec/emailrelay-notify.sh
* /usr/local/libexec/emailrelay-poke * /usr/local/libexec/emailrelay-poke
* /usr/local/libexec/emailrelay-process.sh * /usr/local/libexec/emailrelay-process.sh
* /usr/local/libexec/emailrelay-resubmit.js
* /usr/local/libexec/emailrelay-resubmit.sh * /usr/local/libexec/emailrelay-resubmit.sh
* /usr/local/libexec/emailrelay-runperl.js
* /usr/local/man/man1/emailrelay.1.gz
* /usr/local/man/man1/emailrelay-passwd.1.gz * /usr/local/man/man1/emailrelay-passwd.1.gz
* /usr/local/man/man1/emailrelay-poke.1.gz * /usr/local/man/man1/emailrelay-poke.1.gz
* /usr/local/man/man1/emailrelay-submit.1.gz * /usr/local/man/man1/emailrelay-submit.1.gz
* /usr/local/man/man1/emailrelay.1.gz
* /usr/local/sbin/emailrelay * /usr/local/sbin/emailrelay
* /usr/local/sbin/emailrelay-passwd * /usr/local/sbin/emailrelay-passwd
* /usr/local/sbin/emailrelay-submit * /usr/local/sbin/emailrelay-submit
* /usr/local/share/emailrelay/doc/NEWS
* /usr/local/share/emailrelay/doc/README
* /usr/local/share/emailrelay/doc/changelog.gz * /usr/local/share/emailrelay/doc/changelog.gz
* /usr/local/share/emailrelay/doc/changelog.html * /usr/local/share/emailrelay/doc/changelog.html
* /usr/local/share/emailrelay/doc/developer.html * /usr/local/share/emailrelay/doc/developer.html
* /usr/local/share/emailrelay/doc/developer.txt * /usr/local/share/emailrelay/doc/developer.txt
* /usr/local/share/emailrelay/doc/emailrelay.css * /usr/local/share/emailrelay/doc/emailrelay.css
* /usr/local/share/emailrelay/doc/emailrelay-man.html
* /usr/local/share/emailrelay/doc/index.html * /usr/local/share/emailrelay/doc/index.html
* /usr/local/share/emailrelay/doc/NEWS
* /usr/local/share/emailrelay/doc/*.png
* /usr/local/share/emailrelay/doc/README
* /usr/local/share/emailrelay/doc/readme.html * /usr/local/share/emailrelay/doc/readme.html
* /usr/local/share/emailrelay/doc/reference.html * /usr/local/share/emailrelay/doc/reference.html
* /usr/local/share/emailrelay/doc/reference.txt * /usr/local/share/emailrelay/doc/reference.txt
@ -604,23 +624,26 @@ than the Filesystem Hierarchy Standard (FHS).
To force FHS compliance you can use the "--enable-fhs" switch when running To force FHS compliance you can use the "--enable-fhs" switch when running
"configure", as is done for the RPMs. This results in the following file "configure", as is done for the RPMs. This results in the following file
locations: locations:
* /etc/emailrelay.conf
* /etc/init.d/emailrelay * /etc/init.d/emailrelay
* /usr/lib/emailrelay/emailrelay-poke * /usr/lib/emailrelay/emailrelay-poke
* /usr/sbin/emailrelay * /usr/sbin/emailrelay
* /usr/sbin/emailrelay-passwd * /usr/sbin/emailrelay-passwd
* /usr/sbin/emailrelay-submit * /usr/sbin/emailrelay-submit
* /usr/share/doc/emailrelay/NEWS
* /usr/share/doc/emailrelay/README
* /usr/share/doc/emailrelay/changelog.gz * /usr/share/doc/emailrelay/changelog.gz
* /usr/share/doc/emailrelay/changelog.html * /usr/share/doc/emailrelay/changelog.html
* /usr/share/doc/emailrelay/developer.html * /usr/share/doc/emailrelay/developer.html
* /usr/share/doc/emailrelay/developer.txt * /usr/share/doc/emailrelay/developer.txt
* /usr/share/doc/emailrelay/emailrelay.css * /usr/share/doc/emailrelay/emailrelay.css
* /usr/share/doc/emailrelay/emailrelay-man.html
* /usr/share/doc/emailrelay/examples/emailrelay-deliver.sh * /usr/share/doc/emailrelay/examples/emailrelay-deliver.sh
* /usr/share/doc/emailrelay/examples/emailrelay-notify.sh * /usr/share/doc/emailrelay/examples/emailrelay-notify.sh
* /usr/share/doc/emailrelay/examples/emailrelay-process.sh * /usr/share/doc/emailrelay/examples/emailrelay-process.sh
* /usr/share/doc/emailrelay/examples/emailrelay-resubmit.sh * /usr/share/doc/emailrelay/examples/emailrelay-resubmit.sh
* /usr/share/doc/emailrelay/index.html * /usr/share/doc/emailrelay/index.html
* /usr/share/doc/emailrelay/NEWS
* /usr/share/doc/emailrelay/*.png
* /usr/share/doc/emailrelay/README
* /usr/share/doc/emailrelay/readme.html * /usr/share/doc/emailrelay/readme.html
* /usr/share/doc/emailrelay/reference.html * /usr/share/doc/emailrelay/reference.html
* /usr/share/doc/emailrelay/reference.txt * /usr/share/doc/emailrelay/reference.txt
@ -628,10 +651,10 @@ locations:
* /usr/share/doc/emailrelay/userguide.txt * /usr/share/doc/emailrelay/userguide.txt
* /usr/share/doc/emailrelay/windows.html * /usr/share/doc/emailrelay/windows.html
* /usr/share/doc/emailrelay/windows.txt * /usr/share/doc/emailrelay/windows.txt
* /usr/share/man/man1/emailrelay.1.gz
* /usr/share/man/man1/emailrelay-passwd.1.gz * /usr/share/man/man1/emailrelay-passwd.1.gz
* /usr/share/man/man1/emailrelay-poke.1.gz * /usr/share/man/man1/emailrelay-poke.1.gz
* /usr/share/man/man1/emailrelay-submit.1.gz * /usr/share/man/man1/emailrelay-submit.1.gz
* /usr/share/man/man1/emailrelay.1.gz
* /var/spool/emailrelay/emailrelay.*.content * /var/spool/emailrelay/emailrelay.*.content
* /var/spool/emailrelay/emailrelay.*.envelope * /var/spool/emailrelay/emailrelay.*.envelope
@ -641,6 +664,7 @@ can be specified on the "configure" command-line (but note that the
* e_sbindir * e_sbindir
* e_libexecdir * e_libexecdir
* e_docdir * e_docdir
* e_sysconfdir
* e_initdir * e_initdir
* e_spooldir * e_spooldir
* e_man1dir * e_man1dir
@ -674,4 +698,4 @@ if the directory exists, or in "/tmp" otherwise.
Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.

View File

@ -44,29 +44,33 @@ E-MailRelay is designed to be policy-free, so that you can implement your own
policies for message retries, bounces, local mailbox delivery, spam filtering policies for message retries, bounces, local mailbox delivery, spam filtering
etc. through external scripts. etc. through external scripts.
It has no dependencies on third-party libraries or run-time environments, so it
is easy to build and install.
Typical applications of E-MailRelay include: Typical applications of E-MailRelay include:
* spam filtering and virus checking incoming mail * spam filtering and virus checking incoming mail
* adding digital signatures or legal disclaimers to outgoing mail * adding digital signatures or legal disclaimers to outgoing mail
* doing store-and-forward for outgoing mail across a dial-up internet connection * doing store-and-forward for outgoing mail across a dial-up Internet connection
* adding authentication where the existing infrastructure does not support it * adding authentication where the existing infrastructure does not support it
* simple proxying on a firewall host or DMZ * simple proxying on a firewall host or DMZ
Running E-MailRelay Running E-MailRelay
------------------- -------------------
To run the program as a proxy use the "--as-proxy" command-line switch, followed by the To run the program as a proxy use the "--as-proxy" command-line switch followed
address of the target SMTP server. If you want to edit or filter e-mail as it passes by the address of the target SMTP server. If you want to edit or filter e-mail
through the proxy then specify your pre-processor program with the "--filter" switch. as it passes through the proxy then specify your pre-processor program with the
You can optionally change the listening port number using "--port" and the "--filter" switch. You can optionally change the listening port number using
spool directory using "--spool-dir". "--port" and the spool directory using "--spool-dir".
For example, to start up a local proxy which passes messages to some "addsig" script For example, to start up a local proxy that passes messages to some "addsig"
and then forwards them to an MTA running on "smarthost", use a command like this: script and then forwards them to an MTA running on "smarthost", use a command
like this:
emailrelay --as-proxy smarthost:smtp --filter $HOME/bin/addsig --spool-dir $HOME/tmp emailrelay --as-proxy smarthost:smtp --filter $HOME/bin/addsig --spool-dir $HOME/tmp
To use E-MailRelay as a store-and-forward MTA use the "--as-server" switch To use E-MailRelay as a store-and-forward MTA use the "--as-server" switch
to start the storage daemon in the background. And then trigger delivery of to start the storage daemon in the background. And then trigger delivery of
spooled messages by running emailrelay with the "--as-client" switch, followed spooled messages by running emailrelay with the "--as-client" switch followed
by the address of the target SMTP server. by the address of the target SMTP server.
For example, to start a storage daemon listening on port 10025 use a command For example, to start a storage daemon listening on port 10025 use a command
@ -78,6 +82,9 @@ And then to forward the spooled mail to "smarthost" run somthing like this:
emailrelay --as-client smarthost:smtp --spool-dir $HOME/tmp emailrelay --as-client smarthost:smtp --spool-dir $HOME/tmp
You can also have an E-MailRelay storage daemon forward spooled e-mails
periodically by using the "--poll" switch.
By default E-MailRelay will reject connections from remote machines. To By default E-MailRelay will reject connections from remote machines. To
allow connections from anywhere use the "--remote-clients" switch. allow connections from anywhere use the "--remote-clients" switch.
@ -109,7 +116,7 @@ script in the parent directory, using a "S" prefix for the starting link, and a
the order in which the links are called. the order in which the links are called.
So the goal is to set up symbolic links to the "emailrelay" start/stop script So the goal is to set up symbolic links to the "emailrelay" start/stop script
(not the binary) which "make install" will have put in "/etc/init.d" or (not the binary) which "make install" should have put in "/etc/init.d" or
"/usr/local/libexec". "/usr/local/libexec".
Before you start you will need to know where your "init.d" directory can be Before you start you will need to know where your "init.d" directory can be
@ -125,7 +132,7 @@ there):
$ cp /usr/local/libexec/emailrelay /etc/init.d $ cp /usr/local/libexec/emailrelay /etc/init.d
Then determine an appropriate numeric value for the link names by looking at Then determine an appropriate numeric value for the link names by looking at
the "sendmail" links: similar server programs like "sendmail":
$ cd /etc/init.d/rc5.d $ cd /etc/init.d/rc5.d
$ ls *sendmail* $ ls *sendmail*
@ -137,8 +144,8 @@ the "emailrelay" links in the same format:
$ ln -s ../emailrelay S10emailrelay $ ln -s ../emailrelay S10emailrelay
$ ln -s ../emailrelay K10emailrelay $ ln -s ../emailrelay K10emailrelay
And finally remove sendmail from the run-level (otherwise both And finally remove any incomatible SMTP servers from the run-level that might
daemons compete for the standard SMTP listening port): otherwise compete for the same SMTP listening port:
$ cd /etc/init.d/rc5.d $ cd /etc/init.d/rc5.d
$ rm *sendmail $ rm *sendmail
@ -146,12 +153,12 @@ daemons compete for the standard SMTP listening port):
Triggering onward delivery Triggering onward delivery
-------------------------- --------------------------
If you are using E-MailRelay to store and forward e-mail over a dial-up link to If you are using E-MailRelay to store and forward e-mail over a dial-up link to
the internet, then you will need to set things up so that the dialler tells the Internet, then you will need to set things up so that the dialler tells
E-MailRelay when to start forwarding. E-MailRelay when to start forwarding.
This section assumes that you are using "pppd" to establish your dial-up This section assumes that you are using "pppd" to establish your dial-up
Internet connection. (Note that KDE's "kppp" and Red Hat's "rp3" are graphical Internet connection. (KDE's "kppp" and Red Hat's "rp3" are graphical
front-ends to the underlying "pppd" daemon.) front-ends to an underlying "pppd" daemon.)
The ppp daemon calls the script "/etc/ppp/ip-up" when it has successfully The ppp daemon calls the script "/etc/ppp/ip-up" when it has successfully
established a dial-up link to your ISP. This script will probably set up IP established a dial-up link to your ISP. This script will probably set up IP
@ -208,8 +215,8 @@ too many times already.
Logging Logging
------- -------
If the "--log" switch is used then E-MailRelay program issues warnings and error If the "--log" switch is used then E-MailRelay program issues warnings and error
messages to the "syslog" system using the "LOG_MAIL" facility. Under Windows NT messages to the "syslog" system using the "LOG_MAIL" facility. Under Windows it
it writes to the "Application" event log. writes to the "Application" event log.
The "syslog" system is configured through the "/etc/syslog.conf" file (try The "syslog" system is configured through the "/etc/syslog.conf" file (try
"man syslog.conf"), and in most cases you will find that "LOG_MAIL" warnings and "man syslog.conf"), and in most cases you will find that "LOG_MAIL" warnings and
@ -232,13 +239,12 @@ remote server and drive the SMTP protocol manually. Telnet can be told to
connect to the remote SMTP port by putting the port number (25) on the command connect to the remote SMTP port by putting the port number (25) on the command
line after the remote hostname, for example: "telnet smtp.myisp.net 25". line after the remote hostname, for example: "telnet smtp.myisp.net 25".
Once connected you should get a startup banner from the server, which will Once connected you should get a startup banner from the server, which may tell
probably tell you what server software you have connected to. From there you you what server software you have connected to. From there you should type
should type something like "EHLO myhost.mydomain". The response to the EHLO something like "EHLO myhost.mydomain". The response to the EHLO command should
command should contain a list of SMTP extensions which the server software contain a list of SMTP extensions which the server software supports. If this
supports. If this includes the AUTH extension then the set of supported includes the AUTH extension then the set of supported authentication mechanisms
authentication mechanisms (such as LOGIN, CRAM-MD5 etc.) will be listed on the (such as LOGIN, CRAM-MD5 etc.) will be listed on the same line.
same line.
After the EHLO response you should type "MAIL FROM:<myhost.mydomain>", retaining After the EHLO response you should type "MAIL FROM:<myhost.mydomain>", retaining
the angle brackets but substituing your own address. If this is accepted then the angle brackets but substituing your own address. If this is accepted then
@ -253,8 +259,8 @@ to do things properly you should have at least a "To:" line, a "From:" line and
a "Subject:" line in the header. a "Subject:" line in the header.
At the end of the message text type a "." on a line of its own. At that point the At the end of the message text type a "." on a line of its own. At that point the
message should get dispatched, and end up in your in-box in the usual way message should get dispatched, and eventually end up in your in-box in the usual
(assuming you put your own address in the "RCPT TO" command). way (assuming you put your own address in the "RCPT TO" command).
The following is an example SMTP dialogue, with ">>" and "<<" marks added to The following is an example SMTP dialogue, with ">>" and "<<" marks added to
show what was typed and what was received: show what was typed and what was received:
@ -331,9 +337,9 @@ not authenticated. Again, refer to the reference guide for further details.
SpamAssassin SpamAssassin
------------ ------------
The E-MailRelay server can use *Spam Assassin* [http://spamassassin.org] to mark The E-MailRelay server can use *Spam Assassin* [http://spamassassin.org] to mark
potential spam by having a small shell script which calls "spamassassin" potential spam. To do this you will need to have a small shell script to call
installed as the E-MailRelay mail pre-processor using the "--filter" command-line "spamassassin", and pass the name of this script to E-MailRelay using the
switch. "--filter" command-line switch.
Your "--filter" shell script could look something like this: Your "--filter" shell script could look something like this:
@ -364,13 +370,18 @@ to the exit code:
exit 0 exit 0
On Windows there is less of a problem with carriage returns, but because On Windows there is less of a problem with carriage returns, but because
"spamassassin" is a perl script it takes a bit of work to call it correctly. "spamassassin" is a perl script it takes a bit of work to call it correctly: on
Windows only ".exe" and ".bat" files can be executed directly by the operating
system. One solution is to have E-MailRelay run some JavaScript using
"cscript.exe", and the JavaScript can then run perl/spamassassin and pass the
results back to E-MailRelay.
An example JavaScript wrapper called "emailrelay-runperl.js" is included in An example JavaScript wrapper called "emailrelay-runperl.js" is included in
the distribution that by default calls "spamassassin". the distribution that by default calls "spamassassin".
Try an E-MailRelay command line like this: Try an E-MailRelay command line like this:
emailrelay --as-server --filter "cscript //nologo c:/program\ files/emailrelay/emailrelay-runperl.js" emailrelay --as-server --filter "c:/winnt/system32/cscript.exe //nologo c:/program\ files/emailrelay/emailrelay-runperl.js"
But note that you may have to add explicit paths if perl or spamassassin are not But note that you may have to add explicit paths if perl or spamassassin are not
on your path. on your path.
@ -378,4 +389,4 @@ on your path.
Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.

View File

@ -6,21 +6,21 @@ Introduction
E-MailRelay was originally developed on Linux and so most of the documentation E-MailRelay was originally developed on Linux and so most of the documentation
relates to Unix-like operating systems rather than Microsoft Windows. This relates to Unix-like operating systems rather than Microsoft Windows. This
document provides some help on installing and setting up E-MailRelay as a document provides some help on installing and setting up E-MailRelay as a
store-and-forward MTA on Windows. store-and-forward MTA on Windows 98.
Quick start Quick start
------------ ------------
In summary, the Windows installation process is as follows: In summary, the Windows installation process is as follows:
* Unpack the zip file to "Program Files\emailrelay". * Unpack the zip file to "Program Files\emailrelay".
* Create a shortcut to the E-MailRelay executable in "Start->Programs->StartUp".
* Add "storage-daemon" configuration options (if any) to the "StartUp" shortcut's command line.
* Create a shortcut to the executable on the taskbar and/or desktop.
* Add "forwarding-client" configuration options to the taskbar/desktop shortcut's command line. These configuration options will normally include something like "--as-client smtp.myisp.com:smtp".
* Create a spool directory under "<windir>\spool", eg. "c:\win98\spool\emailrelay". * Create a spool directory under "<windir>\spool", eg. "c:\win98\spool\emailrelay".
* Create a shortcut to the E-MailRelay executable in "Start->Programs->StartUp".
* Add "storage-daemon" configuration options such as "--as-server" to the "StartUp" shortcut's command line.
* Create a shortcut to the executable on the taskbar and/or desktop.
* Add "forwarding-client" configuration options such as "--as-client smtp.myisp.com:smtp" to the taskbar/desktop shortcut's command line.
* Configure your e-mail client (eg. Outlook) to use SMTP on the local machine for outgoing e-mail. * Configure your e-mail client (eg. Outlook) to use SMTP on the local machine for outgoing e-mail.
* Run the forwarding client from the taskbar/desktop shortcut once connected to the Internet. * Run the forwarding client from the taskbar/desktop shortcut once connected to the Internet.
These steps are explained in more detail below. These steps are described in more detail below.
On versions of Windows that support services you could also try using Microsoft's On versions of Windows that support services you could also try using Microsoft's
"srvany.exe" utility to run emailrelay as a service; you will need to add the "srvany.exe" utility to run emailrelay as a service; you will need to add the
@ -102,4 +102,4 @@ taskbar, desktop or "Start->Programs->StartUp" shortcuts.
Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.

View File

@ -1,14 +1,12 @@
Summary: Simple e-mail message transfer agent using SMTP Summary: Simple e-mail message transfer agent using SMTP
Name: emailrelay Name: emailrelay
Version: 1.2 Version: 1.3
Release: 1 Release: 1
Copyright: GPL Copyright: GPL
Group: System Environment/Daemons Group: System Environment/Daemons
Source: http://emailrelay.sourceforge.net/.../emailrelay-src-1.2.tar.gz Source: http://emailrelay.sourceforge.net/.../emailrelay-src-1.3.tar.gz
BuildRoot: /tmp/emailrelay-install BuildRoot: /tmp/emailrelay-install
%define prefix /usr
%description %description
E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent
(MTA). When running as a proxy all e-mail messages can be passed through a (MTA). When running as a proxy all e-mail messages can be passed through a
@ -28,11 +26,11 @@ Distribution is under the GNU General Public License.
%setup %setup
%build %build
./configure --enable-fhs ./configure --enable-fhs --without-man2html --without-doxygen
make HAVE_DOXYGEN=no HAVE_MAN2HTML=no make
%install %install
make install-strip destdir=$RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT HAVE_DOXYGEN=no HAVE_MAN2HTML=no make install-strip destdir=$RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT
%post %post
test -f /usr/lib/lsb/install_initd && cd /etc/init.d && /usr/lib/lsb/install_initd emailrelay || true test -f /usr/lib/lsb/install_initd && cd /etc/init.d && /usr/lib/lsb/install_initd emailrelay || true
@ -41,38 +39,41 @@ test -f /usr/lib/lsb/install_initd && cd /etc/init.d && /usr/lib/lsb/install_ini
test $1 -eq 0 && test -f /usr/lib/lsb/remove_initd && cd /etc/init.d && /usr/lib/lsb/remove_initd emailrelay || true test $1 -eq 0 && test -f /usr/lib/lsb/remove_initd && cd /etc/init.d && /usr/lib/lsb/remove_initd emailrelay || true
%clean %clean
rm -rf $RPM_BUILD_ROOT test "$RPM_BUILD_ROOT" = "/" || rm -rf "$RPM_BUILD_ROOT"
%files %files
%config /etc/emailrelay.conf
/etc/init.d/emailrelay /etc/init.d/emailrelay
%{prefix}/lib/emailrelay/emailrelay-poke /usr/lib/emailrelay/emailrelay-poke
%{prefix}/sbin/emailrelay /usr/sbin/emailrelay
%{prefix}/sbin/emailrelay-passwd /usr/sbin/emailrelay-passwd
%{prefix}/sbin/emailrelay-submit /usr/sbin/emailrelay-submit
%{prefix}/share/doc/emailrelay/NEWS /usr/share/doc/emailrelay/changelog.gz
%{prefix}/share/doc/emailrelay/README /usr/share/doc/emailrelay/changelog.html
%{prefix}/share/doc/emailrelay/changelog.gz /usr/share/doc/emailrelay/developer.html
%{prefix}/share/doc/emailrelay/changelog.html /usr/share/doc/emailrelay/developer.txt
%{prefix}/share/doc/emailrelay/developer.html /usr/share/doc/emailrelay/emailrelay.css
%{prefix}/share/doc/emailrelay/developer.txt /usr/share/doc/emailrelay/emailrelay-man.html
%{prefix}/share/doc/emailrelay/emailrelay.css /usr/share/doc/emailrelay/examples/emailrelay-deliver.sh
%{prefix}/share/doc/emailrelay/examples/emailrelay-deliver.sh /usr/share/doc/emailrelay/examples/emailrelay-notify.sh
%{prefix}/share/doc/emailrelay/examples/emailrelay-notify.sh /usr/share/doc/emailrelay/examples/emailrelay-process.sh
%{prefix}/share/doc/emailrelay/examples/emailrelay-process.sh /usr/share/doc/emailrelay/examples/emailrelay-resubmit.sh
%{prefix}/share/doc/emailrelay/examples/emailrelay-resubmit.sh /usr/share/doc/emailrelay/index.html
%{prefix}/share/doc/emailrelay/index.html /usr/share/doc/emailrelay/NEWS
%{prefix}/share/doc/emailrelay/readme.html /usr/share/doc/emailrelay/*.png
%{prefix}/share/doc/emailrelay/reference.html /usr/share/doc/emailrelay/README
%{prefix}/share/doc/emailrelay/reference.txt /usr/share/doc/emailrelay/readme.html
%{prefix}/share/doc/emailrelay/userguide.html /usr/share/doc/emailrelay/reference.html
%{prefix}/share/doc/emailrelay/userguide.txt /usr/share/doc/emailrelay/reference.txt
%{prefix}/share/doc/emailrelay/windows.html /usr/share/doc/emailrelay/userguide.html
%{prefix}/share/doc/emailrelay/windows.txt /usr/share/doc/emailrelay/userguide.txt
%{prefix}/share/man/man1/emailrelay-passwd.1.gz /usr/share/doc/emailrelay/windows.html
%{prefix}/share/man/man1/emailrelay-poke.1.gz /usr/share/doc/emailrelay/windows.txt
%{prefix}/share/man/man1/emailrelay-submit.1.gz /usr/share/man/man1/emailrelay.1.gz
%{prefix}/share/man/man1/emailrelay.1.gz /usr/share/man/man1/emailrelay-passwd.1.gz
/usr/share/man/man1/emailrelay-poke.1.gz
/usr/share/man/man1/emailrelay-submit.1.gz
/var/spool/emailrelay/ /var/spool/emailrelay/
%changelog %changelog

21
etc/Makefile.am Normal file
View File

@ -0,0 +1,21 @@
#
## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License
## as published by the Free Software Foundation; either
## version 2 of the License, or (at your option) any later
## version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
#
EXTRA_DIST = emailrelay.conf
e_sysconf_DATA = emailrelay.conf

292
etc/Makefile.in Normal file
View File

@ -0,0 +1,292 @@
# Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
COMPILER_VERSION = @COMPILER_VERSION@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GZIP = @GZIP@
HAVE_DOXYGEN = @HAVE_DOXYGEN@
HAVE_MAN2HTML = @HAVE_MAN2HTML@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKE = @MAKE@
MAKEINFO = @MAKEINFO@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
bindir = @bindir@
build_alias = @build_alias@
datadir = @datadir@
e_docdir = @e_docdir@
e_examplesdir = @e_examplesdir@
e_initdir = @e_initdir@
e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
#
#
EXTRA_DIST = emailrelay.conf
e_sysconf_DATA = emailrelay.conf
subdir = etc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
DIST_SOURCES =
DATA = $(e_sysconf_DATA)
DIST_COMMON = Makefile.am Makefile.in
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu etc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
uninstall-info-am:
e_sysconfDATA_INSTALL = $(INSTALL_DATA)
install-e_sysconfDATA: $(e_sysconf_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(e_sysconfdir)
@list='$(e_sysconf_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \
echo " $(e_sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(e_sysconfdir)/$$f"; \
$(e_sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(e_sysconfdir)/$$f; \
done
uninstall-e_sysconfDATA:
@$(NORMAL_UNINSTALL)
@list='$(e_sysconf_DATA)'; for p in $$list; do \
f="`echo $$p | sed -e 's|^.*/||'`"; \
echo " rm -f $(DESTDIR)$(e_sysconfdir)/$$f"; \
rm -f $(DESTDIR)$(e_sysconfdir)/$$f; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = ..
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
$(mkinstalldirs) $(DESTDIR)$(e_sysconfdir)
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
info: info-am
info-am:
install-data-am: install-e_sysconfDATA
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-e_sysconfDATA uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic distclean \
distclean-generic distdir dvi dvi-am info info-am install \
install-am install-data install-data-am install-e_sysconfDATA \
install-exec install-exec-am install-info install-info-am \
install-man install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
uninstall-am uninstall-e_sysconfDATA uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

136
etc/emailrelay.conf Normal file
View File

@ -0,0 +1,136 @@
#
# emailrelay.conf
#
# This is a configuration file for emailrelay (http://emailrelay.sf.net).
# It is used by the emailrelay init.d script when it starts up an emailrelay
# server.
#
# The init.d script constructs an emailrelay command-line by starting
# with "--as-server --pid-file ..." and then contatenating uncommented lines
# from this file, prefixing each with "--".
#
# To enable one of the configuration switches below remove the '#' character
# on the last line in the block.
#
# Name: remote-clients
# Format: remote-clients
# Description: Allows remote clients to connect.
#
#remote-clients
# Name: spool-dir
# Format: spool-dir <dir>
# Description: Specifies the spool directory. The default is compiled into the
# program, but it is typically /var/spool/emailrelay.
#
#spool-dir /var/spool/emailrelay
# Name: interface
# Format: interface <ip-address>
# Description: Specifies an interface to listen on.
#
#interface 192.168.0.10
# Name: filter
# Format: filter <program>
# Description: Defines a mail processor program which is run as each message is stored.
#
#filter /usr/local/bin/emailrelay-filter
# Name: server-auth
# Format: server-auth <file>
# Description: Enables authentication of remote clients, using the given secrets file.
#
#server-auth /etc/emailrelay.auth
# Name: admin
# Format: admin <admin-port>
# Description: Enables the administration interface and specifies its listening port number.
#
#admin 10026
# Name: client-auth
# Format: client-auth <file>
# Description: Enables authentication with the remote server, using the given secrets file.
#
#client-auth /etc/emailrelay.auth
# Name: connection-timeout
# Format: connection-timeout <time>
# Description: Sets the timeout (in seconds) when connecting to a remote server. The default is 40.
#
#connection-timeout 10
# Name: domain
# Format: domain <fqdn>
# Description: Sets an override for this host's fully qualified domain name.
#
#domain myhost.mydomain.net
# Name: forward
# Format: forward
# Description: Forwards stored mail on startup. Requires --forward-to.
#
#forward
# Name: forward-to
# Format: forward-to <host:port>
# Description: Specifies the remote SMTP server when using --forward or --admin.
#
#forward-to smarthost.mydomain.net
# Name: immediate
# Format: immediate
# Description: Forwards each message as soon as it is received. Requires --forward-to.
#
#immediate
# Name: log-time
# Format: log-time
# Description: Adds a timestamp to the logging output.
#
#log-time
# Name: no-syslog
# Format: no-syslog
# Description: Disables syslog output.
#
#no-syslog
# Name: poll
# Format: poll <period>
# Description: Enables polling with the specified period. Requires --forward-to.
#
#poll 120
# Name: port
# Format: port <port>
# Description: Specifies the SMTP listening port number.
#
#port 587
# Name: response-timeout
# Format: response-timeout <time>
# Description: Sets the response timeout (in seconds) when talking to a remote server. The default is 1800.
#
#response-timeout 60
# Name: user
# Format: user <username>
# Description: Names the effective user to switch to when started as root (default is "daemon").
#
#user nobody
# Name: verbose
# Format: verbose
# Description: Generates more verbose logging output.
#
#verbose
# Name: verifier
# Format: verifier <program>
# Description: Defines an external address verifier program.
#
#verifier /usr/local/bin/emailrelay-verifier

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -108,6 +108,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -140,7 +141,7 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
all-recursive install-data-recursive install-exec-recursive \ all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \ installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive check-recursive installcheck-recursive
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
all: all-recursive all: all-recursive
@ -345,7 +346,7 @@ mostlyclean-generic:
clean-generic: clean-generic:
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -355,7 +356,7 @@ clean: clean-recursive
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive dvi: dvi-recursive
@ -377,7 +378,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive mostlyclean: mostlyclean-recursive

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -111,6 +111,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -135,7 +136,7 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
DIST_SOURCES = DIST_SOURCES =
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@ -207,7 +208,7 @@ mostlyclean-generic:
clean-generic: clean-generic:
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -217,7 +218,7 @@ clean: clean-am
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-am: clean-am distclean-generic
dvi: dvi-am dvi: dvi-am
@ -239,7 +240,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am mostlyclean: mostlyclean-am

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -18,5 +18,5 @@
## ##
# #
EXTRA_DIST = cstdio cstdlib cstring ctime cmath EXTRA_DIST = cstdio cstdlib cstring ctime cmath cstddef

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -111,6 +111,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -128,14 +129,14 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
EXTRA_DIST = cstdio cstdlib cstring ctime cmath EXTRA_DIST = cstdio cstdlib cstring ctime cmath cstddef
subdir = lib/msvc6.0 subdir = lib/msvc6.0
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
DIST_SOURCES = DIST_SOURCES =
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@ -207,7 +208,7 @@ mostlyclean-generic:
clean-generic: clean-generic:
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -217,7 +218,7 @@ clean: clean-am
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-am: clean-am distclean-generic
dvi: dvi-am dvi: dvi-am
@ -239,7 +240,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am mostlyclean: mostlyclean-am

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

35
lib/msvc6.0/cstddef Normal file
View File

@ -0,0 +1,35 @@
//
// Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// ===
//
// cstddef
//
#ifndef G_PORT_CSTDDEF_H
#define G_PORT_CSTDDEF_H
#include <stddef.h>
namespace std
{
using ::size_t ;
}
#endif

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -25,6 +25,7 @@
#define G_PORT_CSTDIO_H #define G_PORT_CSTDIO_H
#include <stdio.h> #include <stdio.h>
namespace std namespace std
{ {
using ::remove ; using ::remove ;

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -24,7 +24,8 @@
#ifndef G_PORT_CSTDLIB_H #ifndef G_PORT_CSTDLIB_H
#define G_PORT_CSTDLIB_H #define G_PORT_CSTDLIB_H
#include "stdlib.h" #include <stdlib.h>
namespace std namespace std
{ {
using ::rand ; using ::rand ;

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -24,7 +24,8 @@
#ifndef G_PORT_CSTRING_H #ifndef G_PORT_CSTRING_H
#define G_PORT_CSTRING_H #define G_PORT_CSTRING_H
#include "string.h" #include <string.h>
namespace std namespace std
{ {
using ::strlen ; using ::strlen ;

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -25,6 +25,7 @@
#define G_PORT_CTIME_H #define G_PORT_CTIME_H
#include <time.h> #include <time.h>
namespace std namespace std
{ {
using ::time_t ; using ::time_t ;

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -108,6 +108,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -134,7 +135,7 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
DIST_SOURCES = DIST_SOURCES =
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@ -206,7 +207,7 @@ mostlyclean-generic:
clean-generic: clean-generic:
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -216,7 +217,7 @@ clean: clean-am
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-am: clean-am distclean-generic
dvi: dvi-am dvi: dvi-am
@ -238,7 +239,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am mostlyclean: mostlyclean-am

View File

@ -1,5 +1,24 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# ===
#
# xar # xar
# #
# A replacement for 'ar' that does 'CC -xar' ignoring # A replacement for 'ar' that does 'CC -xar' ignoring

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Common stub for a few missing GNU programs while installing. # Common stub for a few missing GNU programs while installing.
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@ -165,7 +165,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
WARNING: \`$1' is needed, and you do not seem to have it handy on your WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the system. You might have modified some files without having the
proper tools for further handling them. proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU You can get \`$1Help2man' as part of \`Autoconf' from any GNU
archive site." archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
@ -326,7 +326,7 @@ WARNING: I can't seem to be able to run \`tar' with the given arguments.
WARNING: \`$1' is needed, and you do not seem to have it handy on your WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the system. You might have modified some files without having the
proper tools for further handling them. Check the \`README' file, proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program." some other package would contain this missing \`$1' program."
exit 1 exit 1

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -17,5 +17,5 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## ##
# #
SUBDIRS = glib gnet gsmtp main win32
EXTRA_DIST = mingw.mak mingw-common.mak EXTRA_DIST = mingw.mak mingw-common.mak
SUBDIRS = glib gnet gsmtp main win32

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -108,6 +108,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -127,8 +128,8 @@ target_alias = @target_alias@
# #
# #
SUBDIRS = glib gnet gsmtp main win32
EXTRA_DIST = mingw.mak mingw-common.mak EXTRA_DIST = mingw.mak mingw-common.mak
SUBDIRS = glib gnet gsmtp main win32
subdir = src subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -141,7 +142,7 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
all-recursive install-data-recursive install-exec-recursive \ all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \ installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive check-recursive installcheck-recursive
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
all: all-recursive all: all-recursive
@ -346,7 +347,7 @@ mostlyclean-generic:
clean-generic: clean-generic:
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -356,7 +357,7 @@ clean: clean-recursive
clean-am: clean-generic mostlyclean-am clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive dvi: dvi-recursive
@ -378,7 +379,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive mostlyclean: mostlyclean-recursive

View File

@ -1,5 +1,5 @@
# #
## Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> ## Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -31,12 +31,12 @@ EXTRA_DIST=\
gfile_win32.cpp \ gfile_win32.cpp \
gregistry_win32.cpp \ gregistry_win32.cpp \
gregistry.h \ gregistry.h \
md5c.c \
md5.h \
mingw.mak mingw.mak
INCLUDES = -I$(top_srcdir)/lib/$(COMPILER_VERSION) INCLUDES = -I$(top_srcdir)/lib/$(COMPILER_VERSION)
noinst_LIBRARIES = libglib.a noinst_LIBRARIES = libglib.a
libglib_a_SOURCES = \ libglib_a_SOURCES = \
md5.cpp \
md5.h \
garg.cpp \ garg.cpp \
garg.h \ garg.h \
garg_unix.cpp \ garg_unix.cpp \
@ -74,7 +74,7 @@ libglib_a_SOURCES = \
glogoutput.cpp \ glogoutput.cpp \
glogoutput.h \ glogoutput.h \
glogoutput_unix.cpp \ glogoutput_unix.cpp \
gmd5_rsa.cpp \ gmd5_native.cpp \
gmd5.h \ gmd5.h \
gmemory.h \ gmemory.h \
gnoncopyable.h \ gnoncopyable.h \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am. # Makefile.in generated by automake 1.7.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@ -108,6 +108,7 @@ e_libexecdir = @e_libexecdir@
e_man1dir = @e_man1dir@ e_man1dir = @e_man1dir@
e_sbindir = @e_sbindir@ e_sbindir = @e_sbindir@
e_spooldir = @e_spooldir@ e_spooldir = @e_spooldir@
e_sysconfdir = @e_sysconfdir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host_alias = @host_alias@ host_alias = @host_alias@
includedir = @includedir@ includedir = @includedir@
@ -141,13 +142,13 @@ EXTRA_DIST = \
gfile_win32.cpp \ gfile_win32.cpp \
gregistry_win32.cpp \ gregistry_win32.cpp \
gregistry.h \ gregistry.h \
md5c.c \
md5.h \
mingw.mak mingw.mak
INCLUDES = -I$(top_srcdir)/lib/$(COMPILER_VERSION) INCLUDES = -I$(top_srcdir)/lib/$(COMPILER_VERSION)
noinst_LIBRARIES = libglib.a noinst_LIBRARIES = libglib.a
libglib_a_SOURCES = \ libglib_a_SOURCES = \
md5.cpp \
md5.h \
garg.cpp \ garg.cpp \
garg.h \ garg.h \
garg_unix.cpp \ garg_unix.cpp \
@ -185,7 +186,7 @@ libglib_a_SOURCES = \
glogoutput.cpp \ glogoutput.cpp \
glogoutput.h \ glogoutput.h \
glogoutput_unix.cpp \ glogoutput_unix.cpp \
gmd5_rsa.cpp \ gmd5_native.cpp \
gmd5.h \ gmd5.h \
gmemory.h \ gmemory.h \
gnoncopyable.h \ gnoncopyable.h \
@ -216,14 +217,14 @@ LIBRARIES = $(noinst_LIBRARIES)
libglib_a_AR = $(AR) cru libglib_a_AR = $(AR) cru
libglib_a_LIBADD = libglib_a_LIBADD =
am_libglib_a_OBJECTS = garg.$(OBJEXT) garg_unix.$(OBJEXT) \ am_libglib_a_OBJECTS = md5.$(OBJEXT) garg.$(OBJEXT) garg_unix.$(OBJEXT) \
gcleanup_unix.$(OBJEXT) gdaemon_unix.$(OBJEXT) gdate.$(OBJEXT) \ gcleanup_unix.$(OBJEXT) gdaemon_unix.$(OBJEXT) gdate.$(OBJEXT) \
gdatetime.$(OBJEXT) gdatetime_unix.$(OBJEXT) \ gdatetime.$(OBJEXT) gdatetime_unix.$(OBJEXT) \
gdirectory.$(OBJEXT) gdirectory_unix.$(OBJEXT) \ gdirectory.$(OBJEXT) gdirectory_unix.$(OBJEXT) \
gexception.$(OBJEXT) gexe.$(OBJEXT) gfile.$(OBJEXT) \ gexception.$(OBJEXT) gexe.$(OBJEXT) gfile.$(OBJEXT) \
gfile_unix.$(OBJEXT) gfs_unix.$(OBJEXT) ggetopt.$(OBJEXT) \ gfile_unix.$(OBJEXT) gfs_unix.$(OBJEXT) ggetopt.$(OBJEXT) \
gidentity_unix.$(OBJEXT) glog.$(OBJEXT) glogoutput.$(OBJEXT) \ gidentity_unix.$(OBJEXT) glog.$(OBJEXT) glogoutput.$(OBJEXT) \
glogoutput_unix.$(OBJEXT) gmd5_rsa.$(OBJEXT) gpath.$(OBJEXT) \ glogoutput_unix.$(OBJEXT) gmd5_native.$(OBJEXT) gpath.$(OBJEXT) \
gpidfile.$(OBJEXT) gprocess_unix.$(OBJEXT) groot.$(OBJEXT) \ gpidfile.$(OBJEXT) gprocess_unix.$(OBJEXT) groot.$(OBJEXT) \
gslot.$(OBJEXT) gstr.$(OBJEXT) gtime.$(OBJEXT) gslot.$(OBJEXT) gstr.$(OBJEXT) gtime.$(OBJEXT)
libglib_a_OBJECTS = $(am_libglib_a_OBJECTS) libglib_a_OBJECTS = $(am_libglib_a_OBJECTS)
@ -244,11 +245,11 @@ am__depfiles_maybe = depfiles
@AMDEP_TRUE@ ./$(DEPDIR)/gidentity_unix.Po ./$(DEPDIR)/glog.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/gidentity_unix.Po ./$(DEPDIR)/glog.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/glogoutput.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/glogoutput.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/glogoutput_unix.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/glogoutput_unix.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/gmd5_rsa.Po ./$(DEPDIR)/gpath.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/gmd5_native.Po ./$(DEPDIR)/gpath.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/gpidfile.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/gpidfile.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/gprocess_unix.Po ./$(DEPDIR)/groot.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/gprocess_unix.Po ./$(DEPDIR)/groot.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/gslot.Po ./$(DEPDIR)/gstr.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/gslot.Po ./$(DEPDIR)/gstr.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/gtime.Po @AMDEP_TRUE@ ./$(DEPDIR)/gtime.Po ./$(DEPDIR)/md5.Po
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX) CXXLD = $(CXX)
@ -259,7 +260,7 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
CCLD = $(CC) CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
DIST_SOURCES = $(libglib_a_SOURCES) DIST_SOURCES = $(libglib_a_SOURCES)
DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_COMMON = Makefile.am Makefile.in
SOURCES = $(libglib_a_SOURCES) SOURCES = $(libglib_a_SOURCES)
all: all-am all: all-am
@ -304,7 +305,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glog.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glogoutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glogoutput.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glogoutput_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glogoutput_unix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmd5_rsa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmd5_native.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpath.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpath.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpidfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpidfile.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gprocess_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gprocess_unix.Po@am__quote@
@ -312,6 +313,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gslot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gslot.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
distclean-depend:
-rm -rf ./$(DEPDIR)
.cpp.o: .cpp.o:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
@ -445,7 +450,7 @@ mostlyclean-generic:
clean-generic: clean-generic:
distclean-generic: distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES) -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -455,10 +460,9 @@ clean: clean-am
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile distclean-am: clean-am distclean-compile distclean-depend \
distclean-am: clean-am distclean-compile distclean-generic \ distclean-generic distclean-tags
distclean-tags
dvi: dvi-am dvi: dvi-am
@ -479,8 +483,7 @@ install-man:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am mostlyclean: mostlyclean-am
@ -499,13 +502,14 @@ uninstall-am: uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-noinstLIBRARIES ctags distclean distclean-compile \ clean-noinstLIBRARIES ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am info \ distclean-depend distclean-generic distclean-tags distdir dvi \
info-am install install-am install-data install-data-am \ dvi-am info info-am install install-am install-data \
install-exec install-exec-am install-info install-info-am \ install-data-am install-exec install-exec-am install-info \
install-man install-strip installcheck installcheck-am \ install-info-am install-man install-strip installcheck \
installdirs maintainer-clean maintainer-clean-generic \ installcheck-am installdirs maintainer-clean \
mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ maintainer-clean-generic mostlyclean mostlyclean-compile \
ps ps-am tags uninstall uninstall-am uninstall-info-am mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -107,7 +107,7 @@ public:
void removeAt( size_t sw_index , size_t sw_args = 0U ) ; void removeAt( size_t sw_index , size_t sw_args = 0U ) ;
// Removes the given argument and the // Removes the given argument and the
// following <sw_args> ones. // following 'sw_args' ones.
Arg & operator=( const Arg & ) ; Arg & operator=( const Arg & ) ;
// Assignment operator. // Assignment operator.

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -26,6 +26,7 @@
#include "gdebug.h" #include "gdebug.h"
#include <ctime> #include <ctime>
#include <iomanip> #include <iomanip>
#include <sstream>
//static //static
int G::Date::yearUpperLimit() int G::Date::yearUpperLimit()

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -37,7 +37,7 @@ namespace G
// Class: G::Date // Class: G::Date
// Description: A date (dd/mm/yyyy) class. // Description: A date (dd/mm/yyyy) class.
// See also: Time, DateTime // See also: G::Time, G::DateTime
// //
class G::Date class G::Date
{ {

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -145,6 +145,10 @@
#endif #endif
#endif #endif
// Pull some std types into the global namespace
//
using std::size_t ;
// Modify compiler error handling // Modify compiler error handling
// //
#if defined(G_COMPILER_IS_MICROSOFT) #if defined(G_COMPILER_IS_MICROSOFT)

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -41,7 +41,7 @@ namespace G
// Description: An encapsulation of a file system directory // Description: An encapsulation of a file system directory
// which allows for iterating through the set of contained // which allows for iterating through the set of contained
// files. // files.
// See also: Path, FileSystem, File // See also: G::Path, G::FileSystem, G::File
// //
class G::Directory class G::Directory
{ {
@ -119,7 +119,7 @@ public:
std::string sizeString() const ; std::string sizeString() const ;
// Returns the file size as a decimal string. The value // Returns the file size as a decimal string. The value
// may be more than 32 bits. See also class Number. // may be more than 32 bits. See also class G::Number.
Path filePath() const ; Path filePath() const ;
// Returns the path of the current item. // Returns the path of the current item.

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License
@ -37,7 +37,7 @@ namespace G
// Class: G::File // Class: G::File
// Description: A simple static class for dealing with files. // Description: A simple static class for dealing with files.
// See also: Path, FileSystem, Directory // See also: G::Path, G::FileSystem, G::Directory
// //
class G::File class G::File
{ {

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

View File

@ -1,5 +1,5 @@
// //
// Copyright (C) 2001-2003 Graeme Walker <graeme_walker@users.sourceforge.net> // Copyright (C) 2001-2004 Graeme Walker <graeme_walker@users.sourceforge.net>
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License // modify it under the terms of the GNU General Public License

Some files were not shown because too many files have changed in this diff Show More