Skip to content
Permalink
Browse files

First version of netqmail (1.04).

20031027 version: netqmail 1.04.
20031027 doc: INSTALL points to http://lifewithqmail.org/lwq.html
20031027 doc: qmail.7 identifies installation as netqmail and points to
         http://qmail.org/
20031027 doc: qmail-queue.8 adds explanation of $QMAILQUEUE
20031027 doc: qmail-log.5 adds reference to errors from $QMAILQUEUE script
20031027 doc: FAQ also points to http://cr.yp.to/qmail/faq.html and
         http://qmail.org/
20031027 code: qmail-smtpd identifies itself as netqmail
20031027 code: if $QMAILQUEUE is set, it's invoked instead of qmail-queue
20031024 code: changed errno from int to #include.
20031024 code: fixed .qmail parsing bug.
20031024 code: recognize 0.0.0.0 as a local address.
20031024 code: sendmail's -f flag now overrides environment variables.
  • Loading branch information...
schmonz committed Jul 15, 2017
1 parent 44e3c7a commit 4546c82380d4e3464af71dca82db7e93f8330e59
Showing with 103 additions and 101 deletions.
  1. +14 −0 CHANGES
  2. +3 −0 FAQ
  3. +1 −0 FILES
  4. +1 −84 INSTALL
  5. +2 −2 Makefile
  6. +9 −0 README
  7. +2 −2 UPGRADE
  8. +1 −1 VERSION
  9. +0 −1 cdb_seek.c
  10. +0 −2 dns.c
  11. +1 −2 error.3
  12. +1 −1 error.h
  13. +5 −0 ipme.c
  14. +1 −1 qmail-local.c
  15. +5 −0 qmail-log.5
  16. +6 −0 qmail-queue.8
  17. +1 −1 qmail-smtpd.c
  18. +5 −3 qmail.7
  19. +12 −1 qmail.c
  20. +33 −0 sendmail.c
14 CHANGES
@@ -1,3 +1,17 @@
20031027 version: netqmail 1.04.
20031027 doc: INSTALL points to http://lifewithqmail.org/lwq.html
20031027 doc: qmail.7 identifies installation as netqmail and points to
http://qmail.org/
20031027 doc: qmail-queue.8 adds explanation of $QMAILQUEUE
20031027 doc: qmail-log.5 adds reference to errors from $QMAILQUEUE script
20031027 doc: FAQ also points to http://cr.yp.to/qmail/faq.html and
http://qmail.org/
20031027 code: qmail-smtpd identifies itself as netqmail
20031027 code: if $QMAILQUEUE is set, it's invoked instead of qmail-queue
20031024 code: changed errno from int to #include.
20031024 code: fixed .qmail parsing bug.
20031024 code: recognize 0.0.0.0 as a local address.
20031024 code: sendmail's -f flag now overrides environment variables.
19980615 version: qmail 1.03.
19980614 doc: eliminated BIN.setup in favor of a web page.
19980614 code: added other auto* to qmail-showctl output.
3 FAQ
@@ -1,3 +1,6 @@
See http://cr.yp.to/qmail/faq.html for newer FAQs not included in this
document, and http://qmail.org/ for qmail community contributions.

1. Controlling the appearance of outgoing messages
1.1. How do I set up host masquerading?
1.2. How do I set up user masquerading?
1 FILES
@@ -10,6 +10,7 @@ INSTALL.ctl
INSTALL.ids
INSTALL.maildir
INSTALL.mbox
INSTALL-1.03
INSTALL.vsm
REMOVE.sendmail
REMOVE.binmail
85 INSTALL
@@ -1,84 +1 @@
SAVE COPIES OF YOUR OUTGOING MAIL! Like any other piece of software (and
information generally), the qmail system comes with NO WARRANTY. It's
much more secure and reliable than sendmail, but that's not saying much.


Things you have to decide before starting:

* The qmail home directory, normally /var/qmail. To change this
directory, edit conf-qmail now.

* The names of the qmail users and the qmail groups. To change these
names, edit conf-users and conf-groups now.


To create /var/qmail and configure qmail (won't interfere with sendmail):

1. Create the qmail home directory:
# mkdir /var/qmail

2. Read INSTALL.ids. You must set up the qmail group and the qmail
users before compiling the programs.

3. Compile the programs and create the qmail directory tree:
# make setup check

4. Read INSTALL.ctl and FAQ. Minimal survival command:
# ./config

5. Read INSTALL.alias. Minimal survival command:
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
# chmod 644 ~alias/.qmail*

6. Read INSTALL.mbox and INSTALL.vsm.

7. Read INSTALL.maildir.

8. Copy /var/qmail/boot/home (or proc) to /var/qmail/rc.


To test qmail deliveries (won't interfere with sendmail):

9. Enable deliveries of messages injected into qmail:
# csh -cf '/var/qmail/rc &'

10. Read TEST.deliver.


To upgrade from sendmail to qmail:

11. Read SENDMAIL. This is what your users will want to know about the
switch from sendmail to qmail.

12. Read REMOVE.sendmail. You must remove sendmail before installing
qmail.

13. Read REMOVE.binmail.

14. Add
csh -cf '/var/qmail/rc &'
to your boot scripts, so that the qmail daemons are restarted
whenever your system reboots. Make sure you include the &.

15. Make qmail's ``sendmail'' wrapper available to MUAs:
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
/usr/sbin might not exist on your system.

16. Set up qmail-smtpd in /etc/inetd.conf (all on one line):
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env
tcp-env /var/qmail/bin/qmail-smtpd

17. Reboot. (Or kill -HUP your inetd and make sure the qmail daemons
are running.)

18. Read TEST.receive.



That's it! To report success:
% ( echo 'First M. Last'; cat `cat SYSDEPS` ) | mail djb-qst@cr.yp.to
Replace First M. Last with your name.

If you have questions about qmail, join the qmail mailing list; see
http://pobox.com/~djb/qmail.html.
See http://lifewithqmail.org/lwq.html
@@ -1483,12 +1483,12 @@ load qmail-send.o qsutil.o control.o constmap.o newfield.o prioq.o \
trigger.o fmtqfn.o quote.o now.o readsubdir.o qmail.o date822fmt.o \
datetime.a case.a ndelay.a getln.a wait.a seek.a fd.a sig.a open.a \
lock.a stralloc.a alloc.a substdio.a error.a str.a fs.a auto_qmail.o \
auto_split.o
auto_split.o env.a
./load qmail-send qsutil.o control.o constmap.o newfield.o \
prioq.o trigger.o fmtqfn.o quote.o now.o readsubdir.o \
qmail.o date822fmt.o datetime.a case.a ndelay.a getln.a \
wait.a seek.a fd.a sig.a open.a lock.a stralloc.a alloc.a \
substdio.a error.a str.a fs.a auto_qmail.o auto_split.o
substdio.a error.a str.a fs.a auto_qmail.o auto_split.o env.a

qmail-send.0: \
qmail-send.8
9 README
@@ -3,6 +3,15 @@ qmail 1.03
Copyright 1998
D. J. Bernstein, qmail@pobox.com

netqmail 1.04
20031024
No copyright claimed for changes from qmail 1.03 to netqmail 1.04
Russell Nelson, nelson@qmail.org
NOTE: netqmail 1.04 is a community-assembled distribution of qmail from
the official qmail-1.03.tar.gz and patches approved by the community.
D. J. Bernstein did not participate in, nor has he been asked to
approve of this distribution.

qmail is a secure, reliable, efficient, simple message transfer agent.
It is meant as a replacement for the entire sendmail-binmail system on
typical Internet-connected UNIX hosts. See BLURB, BLURB2, BLURB3, and
@@ -3,7 +3,7 @@ information generally), the qmail system comes with NO WARRANTY. It's
much more secure and reliable than sendmail, but that's not saying much.


Here's how to upgrade to qmail 1.03. This procedure will overwrite the
Here's how to upgrade to netqmail 1.04. This procedure will overwrite the
old qmail binaries. Furthermore, it may begin delivering messages from
the queue before you have had a chance to test it.

@@ -17,7 +17,7 @@ mechanism has been expanded to support virtual users.


Before starting, compare conf* to your old conf*, and make any necessary
changes. You can copy conf* from 1.02.
changes. You can copy conf* from 1.02 or 1.03.


How to install:
@@ -1 +1 @@
qmail 1.03
netqmail 1.04
@@ -1,6 +1,5 @@
#include <sys/types.h>
#include <errno.h>
extern int errno;
#include "cdb.h"

#ifndef SEEK_SET
2 dns.c
@@ -7,8 +7,6 @@
#include <errno.h>
extern int res_query();
extern int res_search();
extern int errno;
extern int h_errno;
#include "ip.h"
#include "ipalloc.h"
#include "fmt.h"
@@ -3,8 +3,7 @@
error \- syscall error codes
.SH SYNTAX
.B #include <error.h>

extern int \fBerrno\fP;
.B #include <errno.h>

extern int \fBerror_intr\fP;
.br
@@ -1,7 +1,7 @@
#ifndef ERROR_H
#define ERROR_H

extern int errno;
#include <errno.h>

extern int error_intr;
extern int error_nomem;
5 ipme.c
@@ -46,6 +46,11 @@ int ipme_init()
ipme.len = 0;
ix.pref = 0;

/* 0.0.0.0 is a special address which always refers to
* "this host, this network", according to RFC 1122, Sec. 3.2.1.3a.
*/
byte_copy(&ix.ip,4,"\0\0\0\0");
if (!ipalloc_append(&ipme,&ix)) { return 0; }
if ((s = socket(AF_INET,SOCK_STREAM,0)) == -1) return -1;

len = 256;
@@ -645,7 +645,7 @@ char **argv;
{
cmds.s[j] = 0;
k = j;
while ((k > i) && (cmds.s[k - 1] == ' ') || (cmds.s[k - 1] == '\t'))
while ((k > i) && ((cmds.s[k - 1] == ' ') || (cmds.s[k - 1] == '\t')))
cmds.s[--k] = 0;
switch(cmds.s[i])
{
@@ -232,6 +232,11 @@ It will try again later.
is unable to queue a bounce message,
usually because the machine is almost out of memory.
It will try again later.
This can also be caused by incorrect settings of
.B $QMAILQUEUE
or errors in a program or script which
.B $QMAILQUEUE
points to.
.TP
.B unable to stat ...
.B qmail-send
@@ -40,6 +40,12 @@ and does not enforce any restrictions on its contents.
However, the recipients probably expect to see a proper header,
as described in
.BR qmail-header(5) .

Programs included with qmail which invoke
.B qmail-queue
will invoke the contents of
.B $QMAILQUEUE
instead, if that environment variable is set.
.SH "FILESYSTEM RESTRICTIONS"
.B qmail-queue
imposes two constraints on the queue structure:
@@ -69,7 +69,7 @@ void smtp_greet(code) char *code;
}
void smtp_help()
{
out("214 qmail home page: http://pobox.com/~djb/qmail.html\r\n");
out("214 netqmail home page: http://qmail.org/netqmail\r\n");
}
void smtp_quit()
{
@@ -55,12 +55,14 @@ Miscellaneous documentation includes
and
.BR qmail-pop3d (8).

This documentation describes version
1.03
This documentation describes netqmail version
1.04
of
.BR qmail .
See
.B http://pobox.com/~djb/qmail.html
for other
.BR qmail -related
software.
software, and
.B http://qmail.org/
for other qmail community contributions.
13 qmail.c
@@ -6,15 +6,26 @@
#include "fd.h"
#include "qmail.h"
#include "auto_qmail.h"
#include "env.h"

static char *binqqargs[2] = { "bin/qmail-queue", 0 } ;
static char *binqqargs[2] = { 0, 0 } ;

static void setup_qqargs()
{
if(!binqqargs[0])
binqqargs[0] = env_get("QMAILQUEUE");
if(!binqqargs[0])
binqqargs[0] = "bin/qmail-queue";
}

int qmail_open(qq)
struct qmail *qq;
{
int pim[2];
int pie[2];

setup_qqargs();

if (pipe(pim) == -1) return -1;
if (pipe(pie) == -1) { close(pim[0]); close(pim[1]); return -1; }

@@ -45,6 +45,38 @@ void mailq()
_exit(111);
}

void do_sender(s)
const char *s;
{
char *x;
int n;
int a;
int i;

env_unset("QMAILNAME");
env_unset("MAILNAME");
env_unset("NAME");
env_unset("QMAILHOST");
env_unset("MAILHOST");

n = str_len(s);
a = str_rchr(s, '@');
if (a == n)
{
env_put2("QMAILUSER", s);
return;
}
env_put2("QMAILHOST", s + a + 1);

x = (char *) alloc((a + 1) * sizeof(char));
if (!x) nomem();
for (i = 0; i < a; i++)
x[i] = s[i];
x[i] = 0;
env_put2("QMAILUSER", x);
alloc_free(x);
}

int flagh;
char *sender;

@@ -118,6 +150,7 @@ char **argv;
if (sender) {
*arg++ = "-f";
*arg++ = sender;
do_sender(sender);
}
*arg++ = "--";
for (i = 0;i < argc;++i) *arg++ = argv[i];

0 comments on commit 4546c82

Please sign in to comment.
You can’t perform that action at this time.