Bugfix: mail_date() mis-formatted negative time zone offsets
with fractional hours (-03-30 instead of -0330). Fix by
- Chad House, greyfirst.ca.
+ Chad House, greyfirst.ca. File: global/mail_date.c.
20011102
the result_attribute, but errored out when a DN didn't
exist. The behavior is now consistent: treat non-existant
DN's in a special result attribute expansion the same as
- DN's with no attribtue. LaMont Jones, HP.
+ DN's with no attribute. LaMont Jones, HP.
+
+20011104
+
+ Bugfix: the new smtp-sink -n option (terminate after the
+ specified number of deliveries) wasn't optional.
+
+ Portability: updated Mac OS X documentation and install
+ scripts by Gerben Wierda.
Open problems:
BSD/OS 2.x
BSD/OS 3.x
BSD/OS 4.x
+ Darwin 1.x
FreeBSD 2.x
FreeBSD 3.x
FreeBSD 4.x
Linux SuSE 5.x
Linux SuSE 6.x
Linux SuSE 7.x
- Mac OS X server
- Mac OS X Public Beta
+ Mac OS X
NEXTSTEP 3.x
NetBSD 1.x
OPENSTEP 4.x
--- /dev/null
+#!/bin/sh
+
+# Gerben Wierda, Oct 2001. Adapted from an existing example. I waive every
+# copyright on this and I also do not give any warranty.
+
+. /etc/rc.common
+
+##
+# Start mail server
+##
+
+if [ "$1" == "start" ]
+then
+ if [ "${MAILSERVER:=-NO-}" = "-YES-" ]
+ then
+ ConsoleMessage "Starting Postfix mail services"
+ /usr/sbin/postfix start
+ fi
+elif [ "$1" == "stop" ]
+then
+ ConsoleMessage "Stopping Postfix mail services"
+ /usr/sbin/postfix stop
+elif [ "$1" == "restart" ]
+then
+ if [ "${MAILSERVER:=-NO-}" = "-YES-" ]
+ then
+ ConsoleMessage "Reloading Postfix configuration"
+ /usr/sbin/postfix reload
+ else
+ ConsoleMessage "Stopping Postfix mail services"
+ /usr/sbin/postfix stop
+ fi
+fi
+
+
{
start = "Starting Postfix";
stop = "Stopping Postfix";
+ restart = "Reloading Postfix Configuration";
};
}
--- /dev/null
+# Adapted from an existing example by Gerben Wierda, Oct 2001. I waive every
+# copyright on this and I also do not give any warranty.
+
+Let's start with the important warning:
+
+DO NOT USE THE MULTIPLE USERS APPLICATION TO CREATE THE POSTFIX USER!
+
+Run the commands below in the order that they are presented
+
+A. INSTALLING POSTFIX for the first time and selecting it as the active
+ Mail Transfer Agent (MTA):
+
+ # All these commands are written to be run from this directory.
+
+ # this creates the necessary users & groups for proper operation
+ # of postfix:
+ sudo ./niscript
+
+ # Prepare for reactivating sendmail if you want to
+ sudo ./backup-sendmail-binaries
+
+ # Install postfix:
+ # When the script asks you for setgid (the default will be no) tell it
+ # maildrop
+ (cd ../..; sudo make install)
+
+ # Prepare for reactivating postfix if you want to
+ sudo ./backup-postfix-binaries
+
+ # edit /etc/postfix/main.cf to suit your requirements
+
+ ### add your own command here ###
+
+ # Install the startup item and move the existing sendmail startup item
+ # out of the way
+ sudo ./activate-postfix
+
+ # Restart your computer
+
+ # Test. Read INSTALL for a series of suggested tests.
+
+B. RESTORING Sendmail as the MTA when Postfix is the active MTA
+
+ # Stop postfix
+ # Restore the sendmail binaries
+ # Restore the Sendmail startup item and move the Postfix startup item
+ # out of the way
+ sudo ./activate-sendmail
+
+ # Restart your computer
+
+C. RESTORING postfix as the MTA when Sendmail is the active MTA
+
+ # The first time you have to follow the steps of A.
+
+ # Kill the running sendmail daemon if you know how
+
+ # Restore the postfix binaries
+ # Restore the Postfix startup item and move the Sendmail startup item
+ # out of the way
+ sudo ./activate-postfix
+
+ # Restart your computer
+++ /dev/null
-Before you do the build, make sure you run niscript (as root) to properly
-create a postfix user, and postfix & maildrop groups.
-
-DO NOT USE THE MULTIPLE USERS APPLICATION TO CREATE THE POSTFIX USER!
-
-1) su
-
-2) ./niscript
-
- this creates the necessary users & groups for proper operation
- of postfix
-
-3) ./stash-sendmail
-
- move your existing sendmail binaries somewhere safe
-
-4) make install
-
- When the script asks you for setgid (the default will be no) tell it
- maildrop
-
-5) edit /etc/postfix/main.cf to suit your requirements
-
-6) postfix start
-
-7) Test. Read INSTALL for a series of suggested tests.
-
-8) cp -R darwin-Postfix /System/Library/StartupItems/Postfix
-
-9) edit /System/Library/StartupItems/Sendmail. add "exit 0" as the
- first line
--- /dev/null
+#!/bin/sh
+
+# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
+# I also do not give any warranty.
+
+. ./defines
+
+if [ ! -e ${POSTFIXBACKUPDIR}/sendmail ]
+then
+ echo "Something is wrong: there is no existing postfix binary backup"
+ exit 1;
+else
+ echo "Restoring postfix versions of sendmail programs from backup..."
+ (cd ${POSTFIXBACKUPDIR}; tar cf - sendmail) | (cd /usr/sbin; tar xf -)
+ (cd ${POSTFIXBACKUPDIR}; tar cf - newaliases) | (cd /usr/bin; tar xf -)
+ (cd ${POSTFIXBACKUPDIR}; tar cf - mailq) | (cd /usr/bin; tar xf -)
+fi
+
+if [ -e "${PSI}" ]
+then
+ echo "Postfix StartupItem already exists."
+else
+ if [ -e "${PSIDISABLED}" ]
+ then
+ echo "Reinstating disabled Postfix StartupItem..."
+ mv "${PSIDISABLED}" "${PSI}"
+ else
+ echo "Installing new default Postfix StartupItem..."
+ cp -R Postfix.StartupItem "${PSI}"
+ fi
+fi
+
+if [ -e "${SSI}" ]
+then
+ if [ ! -d "${SIDISABLEDDIR}" ]
+ then
+ mkdir -p "${SIDISABLEDDIR}"
+ fi
+ echo "Moving existing Sendmail StartupItem to ${SIDISABLEDDIR}..."
+ if [ -e "${SSIDISABLED}" ]
+ then
+ echo "Something is wrong. A disabled Sendmail StartupItem already exists."
+ DATETIME=`date +"%Y%b%e-%H%M%S"`
+ echo "Moving Sendmail to Sendmail.${DATETIME}"
+ mv "${SSI}" "${SSIDISABLED}.${DATETIME}"
+ echo "You should have just one ${SSIDISABLED}"
+ else
+ mv "${SSI}" "${SSIDISABLED}"
+ fi
+fi
+
+. /etc/hostconfig
+
+if [ "${MAILSERVER:=-NO-}" = "-YES-" ]
+then
+ echo "Postfix will start on reboot"
+else
+ echo "Note: Postfix needs MAILSERVER set to -YES- in /etc/hostconfig"
+ echo "Postfix will NOT start on reboot"
+fi
+
--- /dev/null
+#!/bin/sh
+
+# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
+# I also do not give any warranty.
+
+. ./defines
+
+if [ ! -e ${SENDMAILBACKUPDIR}/sendmail ]
+then
+ echo "Something is wrong: there is no existing postfix binary backup"
+ exit 1;
+else
+ echo "Restoring sendmail versions of sendmail programs from backup..."
+ (cd ${SENDMAILBACKUPDIR}; tar cf - sendmail) | (cd /usr/sbin; tar xf -)
+ (cd ${SENDMAILBACKUPDIR}; tar cf - newaliases) | (cd /usr/bin; tar xf -)
+ (cd ${SENDMAILBACKUPDIR}; tar cf - mailq) | (cd /usr/bin; tar xf -)
+fi
+
+if [ -e "${SSI}" ]
+then
+ echo "Sendmail StartupItem already exists."
+else
+ if [ -e "${SSIDISABLED}" ]
+ then
+ echo "Reinstating disabled Sendmail StartupItem..."
+ mv "${SSIDISABLED}" "${SSI}"
+ else
+ echo "Something is wrong. I cannot find ${SSIDISABLED}"
+ echo "Postfix will be uninstalled, Sendmail not reinstalled."
+ fi
+fi
+
+if [ -e "${PSI}" ]
+then
+ if [ ! -d "${SIDISABLEDDIR}" ]
+ then
+ mkdir -p "${SIDISABLEDDIR}"
+ fi
+ echo "Moving existing Postfix StartupItem to ${SIDISABLEDDIR}..."
+ if [ -e "${PSIDISABLED}" ]
+ then
+ echo "Something is wrong. A disabled Postfix StartupItem already exists."
+ DATETIME=`date +"%Y%b%e-%H%M%S"`
+ echo "Moving Postfix to Postfix.${DATETIME}"
+ mv "${PSI}" "${PSIDISABLED}.${DATETIME}"
+ echo "You should have just one ${PSIDISABLED}"
+ else
+ mv "${PSI}" "${PSIDISABLED}"
+ fi
+fi
+
+. /etc/hostconfig
+
+if [ "${MAILSERVER:=-NO-}" = "-YES-" ]
+then
+ echo "Sendmail will start on reboot"
+else
+ echo "Note: Sendmail needs MAILSERVER set to -YES- in /etc/hostconfig"
+ echo "Sendmail will NOT start on reboot"
+fi
--- /dev/null
+#! /bin/sh
+
+# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
+# I also do not give any warranty.
+
+# We use tar, as we do not know beforehand if we are dealing with real
+# files or symbolic links. Since we use tar, we cannot change filenames
+# we need to create a directory to hold our backup binaries.
+
+. ./defines
+
+if [ ! -d ${POSTFIXBACKUPDIR} ]
+then
+ mkdir -p ${POSTFIXBACKUPDIR}
+fi
+
+(cd /usr/sbin; tar cf - sendmail) | (cd ${POSTFIXBACKUPDIR}; tar xf -)
+(cd /usr/bin; tar cf - newaliases) | (cd ${POSTFIXBACKUPDIR}; tar xf -)
+(cd /usr/bin; tar cf - mailq) | (cd ${POSTFIXBACKUPDIR}; tar xf -)
+
--- /dev/null
+#! /bin/sh
+
+# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
+# I also do not give any warranty.
+
+# We use tar, as we do not know beforehand if we are dealing with real
+# files or symbolic links. Since we use tar, we cannot change filenames
+# we need to create a directory to hold our backup binaries.
+
+. ./defines
+
+if [ ! -d ${SENDMAILBACKUPDIR} ]
+then
+ mkdir -p ${SENDMAILBACKUPDIR}
+fi
+
+(cd /usr/sbin; tar cf - sendmail) | (cd ${SENDMAILBACKUPDIR}; tar xf -)
+(cd /usr/bin; tar cf - newaliases) | (cd ${SENDMAILBACKUPDIR}; tar xf -)
+(cd /usr/bin; tar cf - mailq) | (cd ${SENDMAILBACKUPDIR}; tar xf -)
+
+++ /dev/null
-#!/bin/sh
-
-. /etc/rc.common
-
-##
-# Start mail server
-##
-
-if [ "${MAILSERVER:=-NO-}" = "-YES-" ]; then
-
- ConsoleMessage "Starting Postfix mail services"
- /usr/sbin/postfix start
-fi
--- /dev/null
+#! /bin/sh
+
+# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
+# I also do not give any warranty.
+
+SIDIR="/System/Library/StartupItems"
+SIDISABLEDDIR="/System/Library/DisabledStartupItems"
+
+PSI="${SIDIR}/Postfix"
+SSI="${SIDIR}/Sendmail"
+PSIDISABLED="${SIDISABLEDDIR}/Postfix"
+SSIDISABLED="${SIDISABLEDDIR}/Sendmail"
+
+POSTFIXBACKUPDIR=/usr/sbin/.postfixbackup
+SENDMAILBACKUPDIR=/usr/sbin/.sendmailbackup
-#! /bin/sh
-#
-# Written 9/20/00 by Joe Block <jpb@creol.ucf.edu>
-#
-# It shouldn't matter, but this script is GPL.
+#!/usr/bin/perl
+
+# niscript.pl by Gerben Wierda <gerben_wierda@rna.nl>
+
+# This little script is an adaptation of the original niscript sh script by
+# Joe Block <jpb@creol.ucf.edu>
+# instead of using fixed uid/gid and thus not robust if you run it on a
+# system where groups and/or users have been added, this script checks
+# if the users/groups are there and if not creates them with free id's.
+
+print <<_WARNING
-cat <<EOF
This script massages your netinfo database. This can severely break
your system. If your netinfo database breaks, you get to keep the parts.
-If you've already created a postfix user using Multiple Users, you'll need
-to edit this script. do:
-
- niutil -read / /users/postfix
-
-to find out what uid was assigned to postfix. Comment out the stanza in
-this script that creates the postfix user
-
-Also note that this script assumes that you are
- A) running MacOS X Public Beta
- B) have not added any groups to the base system
-
-If you've added groups or are not running Public Beta, you should
-make sure the gids in this script have not already been used.
-
-You'll need to edit the script to remove the exit statement before the first
-call to niutil to show you read the directions and understand the risks.
-
-EOF
-
-PFSHELL=/usr/bin/false
-PFUID=88
-PFGID=88
-PFHOME=/Users/postfix
-MDGID=99
-
-echo -n "shell for user postfix? [$PFSHELL]"
-read pfshell
-if ["$pfshell" = ""]
-then
- pfshell=$PFSHELL
-fi
-echo
-
-echo -n "uid for user postfix? [$PFUID]"
-read pfuid
-if ["$pfuid" = ""]
-then
- pfuid=$PFUID
-fi
-echo
-
-echo -n "gid for user postfix? [$PFGID]"
-read pfgid
-if ["$pfgid" = ""]
-then
- pfgid=$PFGID
-fi
-echo
-
-echo -n "Home directory for user postfix (we won't actually create it as postfix doesn't use it)? [$PFHOME]"
-read pfhome
-if ["$pfhome" = ""]
-then
- pfhome=$PFHOME
-fi
-echo
-
-echo -n "gid for maildrop group? [$MDGID]"
-read mdgid
-if ["$mdgid" = ""]
-then
- mdgid=$MDGID
-fi
-echo
-
-echo "postfix user: shell=$pfshell, uid=$pfuid, gid=$pfgid,home=$pfhome"
-echo "maildrop group: $mdgid"
-echo
-echo -n "You're sure you want to massage your netinfo database? [yes/NO]"
-read arewesure
-
-case $arewesure in
- yes|YES)
- echo "remember, you were warned"
- ;;
- *)
- echo "OK, exiting"
- exit 0
- ;;
-esac
-exit 0
-
-echo "Tweaking netinfo now"
-echo "Creating postfix user"
-niutil -create / /users/postfix
-niutil -createprop / /users/postfix realname "Postfix user"
-niutil -createprop / /users/postfix shell $pfshell
-niutil -createprop / /users/postfix uid $pfuid
-niutil -createprop / /users/postfix gid $pfgid
-niutil -createprop / /users/postfix home $pfhome
-niutil -createprop / /users/postfix _shadow_passwd
-passwd postfix
-
-echo "Creating postfix group"
-niutil -create / /groups/postfix
-niutil -createprop / /groups/postfix name postfix
-niutil -createprop / /groups/postfix gid $pfgid
-niutil -createprop / /groups/postfix passwd '*'
-echo "Adding postfix user to postfix group"
-niutil -appendprop / /groups/postfix users postfix
-
-echo "Creating maildrop group. Remember not to add any users to this group,"
-echo "or you might as well have made your maildrop directory world writable."
-niutil -create / /groups/maildrop
-niutil -createprop / /groups/maildrop name maildrop
-niutil -createprop / /groups/maildrop gid $mdgid
-niutil -createprop / /groups/maildrop passwd '*'
+No Warranty. Really.
+
+This script tries to create two groups (if they do not already exist):
+- postfix
+- maildrop
+and tries to create a user (if it does not already exist)
+- postfix
+which is member of group postfix.
+
+_WARNING
+;
+
+# The script starts to look at id 88 (both for user and group) and up to 65535
+# It dies if no free id is found.
+
+my $postfixgid = undef;
+my $maildropgid = undef;
+my $postfixuid = undef;
+
+# First create
+
+my @groups = readgroups();
+foreach $group (@groups) {
+ (my $groupname, undef, my $gid, undef) = split( ':', $group);
+ if ($groupname eq 'postfix') {
+ warn "You already have a postfix group (with gid $gid)\n";
+ $postfixgid = $gid;
+ }
+ if ($groupname eq 'maildrop') {
+ warn "You already have a maildrop group (with gid $gid)\n";
+ $maildropgid = $gid;
+ }
+}
+
+if (not defined $postfixgid) {
+ $postfixgid = creategroup( 'postfix');
+}
+
+if (not defined $maildropgid) {
+ $maildropgid = creategroup( 'maildrop');
+}
+
+my @users = readusers();
+foreach $user (@users) {
+ (my $username, undef, my $uid, undef) = split( ':', $user);
+ if ($username eq 'postfix') {
+ warn "You already have a postfix user (with uid $uid)\n";
+ $postfixuid = $uid;
+ }
+}
+
+if (not defined $postfixuid) {
+ $postfixuid = createuser( 'postfix', '"Postfix User"',
+ '/usr/bin/false', '/etc/postfix',
+ $postfixgid);
+ addusertogroup( 'postfix', 'postfix');
+}
+
+warn "\n";
+
+sub creategroup
+{
+ my $name = shift;
+ open( NIDUMP, "nidump group /|") or die "Cannot run nidump\n";
+ my @groups=<NIDUMP>;
+ close( NIDUMP);
+
+ my $tryno;
+ NEXTNO: for ($tryno = 88; $tryno <= 65535; $tryno++) {
+ foreach my $group (@groups) {
+ (my $groupname, undef, my $gid, undef) =
+ split( ':', $group);
+ next NEXTNO if $gid == $tryno;
+ }
+ last NEXTNO;
+ }
+ die "Cannot find free gid\n" if $tryno == 65536;
+ warn "Will create $name as gid $tryno\n";
+ system "niutil -create / /groups/$name";
+ system "niutil -createprop / /groups/$name name $name";
+ system "niutil -createprop / /groups/$name gid $tryno";
+ system "niutil -createprop / /groups/$name passwd '*'";
+ return $tryno;
+}
+
+sub addusertogroup
+{
+ my $user = shift;
+ my $group = shift;
+ system "niutil -appendprop / /groups/$group users $user";
+}
+
+sub readgroups
+{
+ open( NIDUMP, "nidump group /|") or die "Cannot run nidump\n";
+ my @groups=<NIDUMP>;
+ close( NIDUMP);
+ return @groups;
+}
+
+sub readusers
+{
+ my @passwd;
+ open( NIDUMP, "nidump passwd /|") or die "Cannot run nidump\n";
+ @passwd=<NIDUMP>;
+ close( NIDUMP);
+ return @passwd;
+}
+
+sub createuser
+{
+ my $name = shift;
+ my $realname = shift;
+ my $shell = shift;
+ my $home = shift;
+ my $gid = shift;
+
+ open( NIDUMP, "nidump passwd /|") or die "Cannot run nidump\n";
+ my @passwd=<NIDUMP>;
+ close( NIDUMP);
+
+ my $tryno;
+ NEXTNO: for ($tryno = 88; $tryno <= 65535; $tryno++) {
+ foreach my $passwd (@passwds) {
+ (my $passwdname, undef, my $uid, undef) =
+ split( ':', $passwd);
+ next NEXTNO if $uid == $tryno;
+ }
+ last NEXTNO;
+ }
+ die "Cannot find free uid\n" if $tryno == 65536;
+ warn "Will create $name as uid $tryno\n";
+ system "niutil -create / /users/$name";
+ system "niutil -createprop / /users/$name realname $realname";
+ system "niutil -createprop / /users/$name shell $shell";
+ system "niutil -createprop / /users/$name uid $tryno";
+ system "niutil -createprop / /users/$name gid $gid";
+ system "niutil -createprop / /users/$name home $home";
+ system "niutil -createprop / /users/$name _shadow_passwd";
+ system "niutil -createprop / /users/$name passwd '*'";
+ return $tryno;
+}
+
+++ /dev/null
-#! /bin/sh
-
-mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
-mv /usr/bin/newaliases /usr/bin/newaliases.OFF
-mv /usr/bin/mailq /usr/bin/mailq.OFF
-chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF /usr/bin/mailq.OFF
domain. Use the optional <a
href="#permit_mx_backup_networks">permit_mx_backup_networks</a>
parameter to also require that the primary MX hosts match a list
-of network blocks.
+of network blocks (Postfix versions 20011008 and later).
<li> Other UCE restrictions (e.g., SMTPD access maps) are not aware
of sender-provided routing information.
address, and appends no empty line.
<b>EXTERNAL</b> <b>FILE</b> <b>DELIVERY</b>
- The <b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b> configuration parameter restricts
- delivery to external files. The default setting (<b>alias,</b>
- <b>forward</b>) forbids file destinations in <b>:include:</b> files.
- Specify a pathname ending in <b>/</b> for <b>qmail</b>-compatible
- <b>maildir</b> delivery.
+ The delivery format depends on the destination filename
+ syntax. The default is to use UNIX-style mailbox format.
+ Specify a name ending in <b>/</b> for <b>qmail</b>-compatible <b>maildir</b>
+ delivery.
- The <b>local</b> daemon prepends a "<b>From</b> <i>sender</i> <i>time_stamp</i>" enve-
- lope header to each message, prepends an optional <b>Deliv-</b>
- <b>ered-To:</b> header with the recipient envelope address,
- prepends a > character to lines beginning with "<b>From</b> ",
- and appends an empty line. The envelope sender address is
- available in the <b>Return-Path:</b> header. When the destina-
- tion is a regular file, it is locked for exclusive access
- while delivery is in progress. In case of problems, an
- attempt is made to truncate a regular file to its original
- length.
+ The <b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b> configuration parameter restricts
+ delivery to external files. The default setting (<b>alias,</b>
+ <b>forward</b>) forbids file destinations in <b>:include:</b> files.
+
+ In the case of UNIX-style mailbox delivery, the <b>local</b> dae-
+ mon prepends a "<b>From</b> <i>sender</i> <i>time_stamp</i>" envelope header to
+ each message, prepends an optional <b>Delivered-To:</b> header
+ with the recipient envelope address, prepends a > charac-
+ ter to lines beginning with "<b>From</b> ", and appends an empty
+ line. The envelope sender address is available in the
+ <b>Return-Path:</b> header. When the destination is a regular
+ file, it is locked for exclusive access while delivery is
+ in progress. In case of problems, an attempt is made to
+ truncate a regular file to its original length.
In the case of <b>maildir</b> delivery, the local daemon prepends
an optional <b>Delivered-To:</b> header with the envelope recipi-
- ent address. The envelope sender address is available in
+ ent address. The envelope sender address is available in
the <b>Return-Path:</b> header.
<b>ADDRESS</b> <b>EXTENSION</b>
- The optional <b>recipient</b><i>_</i><b>delimiter</b> configuration parameter
- specifies how to separate address extensions from local
+ The optional <b>recipient</b><i>_</i><b>delimiter</b> configuration parameter
+ specifies how to separate address extensions from local
recipient names.
- For example, with "<b>recipient</b><i>_</i><b>delimiter</b> <b>=</b> <b>+</b>", mail for
- <i>name</i>+<i>foo</i> is delivered to the alias <i>name</i>+<i>foo</i> or to the
- alias <i>name</i>, to the destinations listed in ~<i>name</i>/.<b>for-</b>
+ For example, with "<b>recipient</b><i>_</i><b>delimiter</b> <b>=</b> <b>+</b>", mail for
+ <i>name</i>+<i>foo</i> is delivered to the alias <i>name</i>+<i>foo</i> or to the
+ alias <i>name</i>, to the destinations listed in ~<i>name</i>/.<b>for-</b>
<b>ward</b>+<i>foo</i> or in ~<i>name</i>/.<b>forward</b>, to the mailbox owned by the
user <i>name</i>, or it is sent back as undeliverable.
<b>ered-To:</b> <i>name</i>+<i>foo</i>' header line.
<b>DELIVERY</b> <b>RIGHTS</b>
- Deliveries to external files and external commands are
+ Deliveries to external files and external commands are
made with the rights of the receiving user on whose behalf
- the delivery is made. In the absence of a user context,
- the <b>local</b> daemon uses the owner rights of the <b>:include:</b>
+ the delivery is made. In the absence of a user context,
+ the <b>local</b> daemon uses the owner rights of the <b>:include:</b>
file or alias database. When those files are owned by the
superuser, delivery is made with the rights specified with
the <b>default</b><i>_</i><b>privs</b> configuration parameter.
<a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
<b>DIAGNOSTICS</b>
- Problems and transactions are logged to <b>syslogd</b>(8). Cor-
- rupted message files are marked so that the queue manager
+ Problems and transactions are logged to <b>syslogd</b>(8). Cor-
+ rupted message files are marked so that the queue manager
can move them to the <b>corrupt</b> queue afterwards.
- Depending on the setting of the <b>notify</b><i>_</i><b>classes</b> parameter,
- the postmaster is notified of bounces and of other trou-
+ Depending on the setting of the <b>notify</b><i>_</i><b>classes</b> parameter,
+ the postmaster is notified of bounces and of other trou-
ble.
<b>BUGS</b>
- For security reasons, the message delivery status of
- external commands or of external files is never check-
+ For security reasons, the message delivery status of
+ external commands or of external files is never check-
pointed to file. As a result, the program may occasionally
deliver more than once to a command or external file. Bet-
ter safe than sorry.
- Mutually-recursive aliases or ~/.<b>forward</b> files are not
- detected early. The resulting mail forwarding loop is
+ Mutually-recursive aliases or ~/.<b>forward</b> files are not
+ detected early. The resulting mail forwarding loop is
broken by the use of the <b>Delivered-To:</b> message header.
<b>CONFIGURATION</b> <b>PARAMETERS</b>
- The following <b>main.cf</b> parameters are especially relevant
- to this program. See the Postfix <b>main.cf</b> file for syntax
- details and for default values. Use the <b>postfix</b> <b>reload</b>
+ The following <b>main.cf</b> parameters are especially relevant
+ to this program. See the Postfix <b>main.cf</b> file for syntax
+ details and for default values. Use the <b>postfix</b> <b>reload</b>
command after a configuration change.
<b>Miscellaneous</b>
<b>alias</b><i>_</i><b>maps</b>
List of alias databases.
- <b>biff</b> Enable or disable notification of new mail via the
+ <b>biff</b> Enable or disable notification of new mail via the
<b>comsat</b> network service.
<b>expand</b><i>_</i><b>owner</b><i>_</i><b>alias</b>
When delivering to an alias that has an owner- com-
- panion alias, set the envelope sender address to
- the right-hand side of the owner alias, instead
+ panion alias, set the envelope sender address to
+ the right-hand side of the owner alias, instead
using of the left-hand side address.
<b>export</b><i>_</i><b>environment</b>
ject to <i>$name</i> expansion.
<b>local</b><i>_</i><b>command</b><i>_</i><b>shell</b>
- Shell to use for external command execution (for
- example, /some/where/smrsh -c). When a shell is
+ Shell to use for external command execution (for
+ example, /some/where/smrsh -c). When a shell is
specified, it is invoked even when the command con-
- tains no shell built-in commands or meta charac-
+ tains no shell built-in commands or meta charac-
ters.
<b>owner</b><i>_</i><b>request</b><i>_</i><b>special</b>
addresses.
<b>prepend</b><i>_</i><b>delivered</b><i>_</i><b>header</b>
- Prepend an optional <b>Delivered-To:</b> header upon
- external forwarding, delivery to command or file.
- Specify zero or more of: <b>command,</b> <b>file,</b> <b>forward</b>.
- Turning off <b>Delivered-To:</b> when forwarding mail is
+ Prepend an optional <b>Delivered-To:</b> header upon
+ external forwarding, delivery to command or file.
+ Specify zero or more of: <b>command,</b> <b>file,</b> <b>forward</b>.
+ Turning off <b>Delivered-To:</b> when forwarding mail is
not recommended.
<b>recipient</b><i>_</i><b>delimiter</b>
<b>require</b><i>_</i><b>home</b><i>_</i><b>directory</b>
Require that a recipient's home directory is acces-
- sible by the recipient before attempting delivery.
+ sible by the recipient before attempting delivery.
Defer delivery otherwise.
<b>Mailbox</b> <b>delivery</b>
<b>fallback</b><i>_</i><b>transport</b>
Message transport for recipients that are not found
- in the UNIX passwd database. This parameter over-
+ in the UNIX passwd database. This parameter over-
rides <b>luser</b><i>_</i><b>relay</b>.
<b>home</b><i>_</i><b>mailbox</b>
- Pathname of a mailbox relative to a user's home
+ Pathname of a mailbox relative to a user's home
directory. Specify a path ending in <b>/</b> for maildir-
style delivery.
<b>luser</b><i>_</i><b>relay</b>
- Destination (<i>@domain</i> or <i>address</i>) for non-existent
- users. The <i>address</i> is subjected to <i>$name</i> expan-
+ Destination (<i>@domain</i> or <i>address</i>) for non-existent
+ users. The <i>address</i> is subjected to <i>$name</i> expan-
sion.
<b>mail</b><i>_</i><b>spool</b><i>_</i><b>directory</b>
- Directory with UNIX-style mailboxes. The default
+ Directory with UNIX-style mailboxes. The default
pathname is system dependent.
<b>mailbox</b><i>_</i><b>command</b>
- External command to use for mailbox delivery. The
+ External command to use for mailbox delivery. The
command executes with the recipient privileges
- (exception: root). The string is subject to $name
+ (exception: root). The string is subject to $name
expansions.
<b>mailbox</b><i>_</i><b>command</b><i>_</i><b>maps</b>
- Lookup tables with per-recipient external commands
- to use for mailbox delivery. Behavior is as with
+ Lookup tables with per-recipient external commands
+ to use for mailbox delivery. Behavior is as with
<b>mailbox</b><i>_</i><b>command</b>.
<b>mailbox</b><i>_</i><b>transport</b>
- Message transport to use for mailbox delivery to
+ Message transport to use for mailbox delivery to
all local recipients, whether or not they are found
- in the UNIX passwd database. This parameter over-
- rides all other configuration parameters that con-
+ in the UNIX passwd database. This parameter over-
+ rides all other configuration parameters that con-
trol mailbox delivery, including <b>luser</b><i>_</i><b>relay</b>.
<b>Locking</b> <b>controls</b>
<b>deliver</b><i>_</i><b>lock</b><i>_</i><b>attempts</b>
- Limit the number of attempts to acquire an exclu-
+ Limit the number of attempts to acquire an exclu-
sive lock on a mailbox or external file.
<b>deliver</b><i>_</i><b>lock</b><i>_</i><b>delay</b>
- Time in seconds between successive attempts to
+ Time in seconds between successive attempts to
acquire an exclusive lock.
<b>stale</b><i>_</i><b>lock</b><i>_</i><b>time</b>
Limit the time after which a stale lock is removed.
<b>mailbox</b><i>_</i><b>delivery</b><i>_</i><b>lock</b>
- What file locking method(s) to use when delivering
- to a UNIX-style mailbox. The default setting is
- system dependent. For a list of available file
+ What file locking method(s) to use when delivering
+ to a UNIX-style mailbox. The default setting is
+ system dependent. For a list of available file
locking methods, use the <b>postconf</b> <b>-l</b> command.
<b>Resource</b> <b>controls</b>
<b>command</b><i>_</i><b>time</b><i>_</i><b>limit</b>
- Limit the amount of time for delivery to external
+ Limit the amount of time for delivery to external
command.
<b>duplicate</b><i>_</i><b>filter</b><i>_</i><b>limit</b>
- Limit the size of the duplicate filter for results
+ Limit the size of the duplicate filter for results
from alias etc. expansion.
<b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b>
- Limit the amount of memory used for processing a
+ Limit the amount of memory used for processing a
partial input line.
<b>local</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b>
Limit the number of parallel deliveries to the same
- user. The default limit is taken from the
+ user. The default limit is taken from the
<b>default</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b> parameter.
<b>local</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
- Limit the number of recipients per message deliv-
- ery. The default limit is taken from the
+ Limit the number of recipients per message deliv-
+ ery. The default limit is taken from the
<b>default</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b> parameter.
<b>mailbox</b><i>_</i><b>size</b><i>_</i><b>limit</b>
- Limit the size of a mailbox etc. file (any file
- that is written to upon delivery). Set to zero to
+ Limit the size of a mailbox etc. file (any file
+ that is written to upon delivery). Set to zero to
disable the limit.
<b>Security</b> <b>controls</b>
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>commands</b>
- Restrict the usage of mail delivery to external
- command. Specify zero or more of: <b>alias</b>, <b>forward</b>,
+ Restrict the usage of mail delivery to external
+ command. Specify zero or more of: <b>alias</b>, <b>forward</b>,
<b>include</b>.
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b>
- Restrict the usage of mail delivery to external
- file. Specify zero or more of: <b>alias</b>, <b>forward</b>,
+ Restrict the usage of mail delivery to external
+ file. Specify zero or more of: <b>alias</b>, <b>forward</b>,
<b>include</b>.
<b>command</b><i>_</i><b>expansion</b><i>_</i><b>filter</b>
- What characters are allowed to appear in $name
- expansions of mailbox_command. Illegal characters
+ What characters are allowed to appear in $name
+ expansions of mailbox_command. Illegal characters
are replaced by underscores.
<b>default</b><i>_</i><b>privs</b>
- Default rights for delivery to external file or
+ Default rights for delivery to external file or
command.
<b>forward</b><i>_</i><b>expansion</b><i>_</i><b>filter</b>
- What characters are allowed to appear in $name
- expansions of forward_path. Illegal characters are
+ What characters are allowed to appear in $name
+ expansions of forward_path. Illegal characters are
replaced by underscores.
<b>HISTORY</b>
- The <b>Delivered-To:</b> header appears in the <b>qmail</b> system by
+ The <b>Delivered-To:</b> header appears in the <b>qmail</b> system by
Daniel Bernstein.
- The <i>maildir</i> structure appears in the <b>qmail</b> system by
+ The <i>maildir</i> structure appears in the <b>qmail</b> system by
Daniel Bernstein.
<b>SEE</b> <b>ALSO</b>
<a href="qmgr.8.html">qmgr(8)</a> queue manager
<b>LICENSE</b>
- The Secure Mailer license must be distributed with this
+ The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>
RANLIB=echo
SYSLIBS="-lresolv -lsocket -lnsl"
;;
-Rhapsody.5*|Darwin.*)
+Rhapsody.5*|Darwin.1.*)
SYSTYPE=RHAPSODY5
# Use the native compiler by default
: ${CC=cc}
.nf
.ad
.fi
+The delivery format depends on the destination filename syntax.
+The default is to use UNIX-style mailbox format. Specify a name
+ending in \fB/\fR for \fBqmail\fR-compatible \fBmaildir\fR delivery.
+
The \fBallow_mail_to_files\fR configuration parameter restricts
delivery to external files. The default setting (\fBalias,
forward\fR) forbids file destinations in \fB:include:\fR files.
-Specify a pathname ending in \fB/\fR for \fBqmail\fR-compatible
-\fBmaildir\fR delivery.
-The \fBlocal\fR daemon prepends a "\fBFrom \fIsender time_stamp\fR"
+In the case of UNIX-style mailbox delivery,
+the \fBlocal\fR daemon prepends a "\fBFrom \fIsender time_stamp\fR"
envelope header to each message, prepends an
optional \fBDelivered-To:\fR
header with the recipient envelope address, prepends a \fB>\fR
* Version of this program.
*/
#define VAR_MAIL_VERSION "mail_version"
-#define DEF_MAIL_VERSION "Snapshot-20011103"
+#define DEF_MAIL_VERSION "Snapshot-20011104"
extern char *var_mail_version;
/* LICENSE
/* EXTERNAL FILE DELIVERY
/* .ad
/* .fi
+/* The delivery format depends on the destination filename syntax.
+/* The default is to use UNIX-style mailbox format. Specify a name
+/* ending in \fB/\fR for \fBqmail\fR-compatible \fBmaildir\fR delivery.
+/*
/* The \fBallow_mail_to_files\fR configuration parameter restricts
/* delivery to external files. The default setting (\fBalias,
/* forward\fR) forbids file destinations in \fB:include:\fR files.
-/* Specify a pathname ending in \fB/\fR for \fBqmail\fR-compatible
-/* \fBmaildir\fR delivery.
/*
-/* The \fBlocal\fR daemon prepends a "\fBFrom \fIsender time_stamp\fR"
+/* In the case of UNIX-style mailbox delivery,
+/* the \fBlocal\fR daemon prepends a "\fBFrom \fIsender time_stamp\fR"
/* envelope header to each message, prepends an
/* optional \fBDelivered-To:\fR
/* header with the recipient envelope address, prepends a \fB>\fR
/* with the recipient privileges (exception: root). The string is subject
/* to $name expansions.
/* .IP \fBmailbox_command_maps\fR
-/* Lookup tables with per-recipient external commands to use for mailbox
+/* Lookup tables with per-recipient external commands to use for mailbox
/* delivery. Behavior is as with \fBmailbox_command\fR.
/* .IP \fBmailbox_transport\fR
/* Message transport to use for mailbox delivery to all local
vstream_fclose(state->stream);
vstring_free(state->buffer);
myfree((char *) state);
- if (counter >= max_count)
+ if (max_count > 0 && counter >= max_count)
exit(0);
}