mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-30 21:55:20 +00:00
postfix-1.1.11-20021013
This commit is contained in:
committed by
Viktor Dukhovni
parent
16566b2c3d
commit
1f37e701d6
@@ -7032,6 +7032,32 @@ Apologies for any names omitted.
|
|||||||
result is dynamically allocated. Victor Duchovni. File:
|
result is dynamically allocated. Victor Duchovni. File:
|
||||||
smtpd/smtpd_check.c.
|
smtpd/smtpd_check.c.
|
||||||
|
|
||||||
|
20020929
|
||||||
|
|
||||||
|
Updated MacOSX support scripts from Gerben Wierda. Files:
|
||||||
|
auxiliary/MacOSX/*.
|
||||||
|
|
||||||
|
20021009
|
||||||
|
|
||||||
|
Bugfix: SIZE errors should be reported at MAIL FROM time,
|
||||||
|
and should not be postponed (with smtpd_delay_reject = yes)
|
||||||
|
until RCPT TO time. Reported by Jeroen Scheerder, Utrecht
|
||||||
|
University. Files: smtpd/smtpd.c smtpd/smtpd_check.c.
|
||||||
|
|
||||||
|
20021013
|
||||||
|
|
||||||
|
When Postfix development started, Linux mail delivery
|
||||||
|
software such as procmail did not use kernel locks, and
|
||||||
|
Postfix picked one that seemed plausible, namely, flock().
|
||||||
|
In the mean time, Linux mail delivery software seems to
|
||||||
|
have standardized on fcntl() locks. File: util/sys_defs.h.
|
||||||
|
|
||||||
|
Feature: body_checks_size_limit parameter to specify how much
|
||||||
|
of a message body segment (or attachment, if you prefer to
|
||||||
|
use that term) is subjected to body_checks inspection.
|
||||||
|
Default limit: 50 kbytes. Files: global/mime_state.c,
|
||||||
|
cleanup/cleanup_message.c.
|
||||||
|
|
||||||
Open problems:
|
Open problems:
|
||||||
|
|
||||||
Low: smtpd should log queue ID with reject/warn/hold/discard
|
Low: smtpd should log queue ID with reject/warn/hold/discard
|
||||||
|
@@ -12,6 +12,27 @@ snapshot release). Patches change the patchlevel and the release
|
|||||||
date. Snapshots change only the release date, unless they include
|
date. Snapshots change only the release date, unless they include
|
||||||
the same bugfixes as a patch release.
|
the same bugfixes as a patch release.
|
||||||
|
|
||||||
|
Incompatible changes with Postfix snapshot 1.1.11-20021013
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
The default Linux kernel lock style for mailbox delivery is changed
|
||||||
|
from flock() to fcntl(). This has no impact if your system uses
|
||||||
|
procmail for local delivery, if you use maildir-style mailboxes,
|
||||||
|
or when mailbox access software locks mailboxes with username.lock
|
||||||
|
files (which is usually the case with non-maildir mailboxes).
|
||||||
|
|
||||||
|
Major changes with Postfix snapshot 1.1.11-20021013
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
The body_checks_max_size parameter limits the amount of text per
|
||||||
|
message body segment (or attachment, if you prefer to use that
|
||||||
|
term) that is subjected to body_checks inspection. The default
|
||||||
|
limit is 50 kbytes. This speeds up the processing of mail with
|
||||||
|
large attachments.
|
||||||
|
|
||||||
|
Updated MacOS X support by Gerben Wierda. See the auxiliary/MacOSX
|
||||||
|
directory.
|
||||||
|
|
||||||
Incompatible changes with Postfix snapshot 1.1.11-20020923
|
Incompatible changes with Postfix snapshot 1.1.11-20020923
|
||||||
==========================================================
|
==========================================================
|
||||||
|
|
||||||
|
@@ -3,15 +3,26 @@
|
|||||||
# Gerben Wierda, Oct 2001. Adapted from an existing example. I waive every
|
# Gerben Wierda, Oct 2001. Adapted from an existing example. I waive every
|
||||||
# copyright on this and I also do not give any warranty.
|
# copyright on this and I also do not give any warranty.
|
||||||
|
|
||||||
|
# Updated Sepember 29, 2002
|
||||||
|
# To work properly, the POSTFIX variable needs to be set to -YES-
|
||||||
|
# in /etc/hostconfig
|
||||||
|
|
||||||
. /etc/rc.common
|
. /etc/rc.common
|
||||||
|
|
||||||
|
if [ "${POSTFIX:=-NO-}" = "-YES-" -a "${MAILSERVER:=-NO-}" = "-YES-" ]
|
||||||
|
then
|
||||||
|
ConsoleMessage "Cannot run concurrent postfix and sendmail"
|
||||||
|
sleep 2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
##
|
##
|
||||||
# Start mail server
|
# Start mail server
|
||||||
##
|
##
|
||||||
|
|
||||||
if [ "$1" == "start" ]
|
if [ "$1" == "start" ]
|
||||||
then
|
then
|
||||||
if [ "${MAILSERVER:=-NO-}" = "-YES-" ]
|
if [ "${POSTFIX:=-NO-}" = "-YES-" ]
|
||||||
then
|
then
|
||||||
ConsoleMessage "Starting Postfix mail services"
|
ConsoleMessage "Starting Postfix mail services"
|
||||||
/usr/sbin/postfix start
|
/usr/sbin/postfix start
|
||||||
@@ -22,7 +33,7 @@ then
|
|||||||
/usr/sbin/postfix stop
|
/usr/sbin/postfix stop
|
||||||
elif [ "$1" == "restart" ]
|
elif [ "$1" == "restart" ]
|
||||||
then
|
then
|
||||||
if [ "${MAILSERVER:=-NO-}" = "-YES-" ]
|
if [ "${POSTFIX:=-NO-}" = "-YES-" ]
|
||||||
then
|
then
|
||||||
ConsoleMessage "Reloading Postfix configuration"
|
ConsoleMessage "Reloading Postfix configuration"
|
||||||
/usr/sbin/postfix reload
|
/usr/sbin/postfix reload
|
||||||
|
@@ -5,6 +5,9 @@ Let's start with the important warning:
|
|||||||
|
|
||||||
DO NOT USE THE MULTIPLE USERS APPLICATION TO CREATE THE POSTFIX USER!
|
DO NOT USE THE MULTIPLE USERS APPLICATION TO CREATE THE POSTFIX USER!
|
||||||
|
|
||||||
|
NOTE: As of 29 September 2002, these instructions and the scripts have changed
|
||||||
|
to make the solution more robust for Apple updates.
|
||||||
|
|
||||||
Run the commands below in the order that they are presented
|
Run the commands below in the order that they are presented
|
||||||
|
|
||||||
A. INSTALLING POSTFIX for the first time and selecting it as the active
|
A. INSTALLING POSTFIX for the first time and selecting it as the active
|
||||||
@@ -12,52 +15,56 @@ A. INSTALLING POSTFIX for the first time and selecting it as the active
|
|||||||
|
|
||||||
# All these commands are written to be run from this directory.
|
# All these commands are written to be run from this directory.
|
||||||
|
|
||||||
|
# This repairs the previous Oct 2001 setup if any
|
||||||
|
sudo ./repair-oldsetup
|
||||||
|
|
||||||
|
# Prepare for reactivating sendmail
|
||||||
|
sudo ./backup-sendmail-binaries
|
||||||
|
|
||||||
# this creates the necessary users & groups for proper operation
|
# this creates the necessary users & groups for proper operation
|
||||||
# of postfix:
|
# of postfix:
|
||||||
sudo ./niscript
|
sudo ./niscript
|
||||||
|
|
||||||
# Prepare for reactivating sendmail if you want to
|
|
||||||
sudo ./backup-sendmail-binaries
|
|
||||||
|
|
||||||
# Install postfix:
|
# Install postfix:
|
||||||
# When the script asks you for setgid (the default will be no) tell it
|
# When the script asks you for setgid (the default will be no) tell it
|
||||||
# maildrop
|
# maildrop
|
||||||
(cd ../..; sudo make install)
|
(cd ../..; sudo make install)
|
||||||
|
|
||||||
# Prepare for reactivating postfix if you want to
|
# Prepare for reactivating postfix
|
||||||
sudo ./backup-postfix-binaries
|
sudo ./backup-postfix-binaries
|
||||||
|
|
||||||
# edit /etc/postfix/main.cf to suit your requirements
|
# edit /etc/postfix/main.cf to suit your requirements
|
||||||
|
### add your own commands here ###
|
||||||
|
|
||||||
### add your own command here ###
|
# Activate postfix startup at boot time. Deactivates sendmail.
|
||||||
|
|
||||||
# Install the startup item and move the existing sendmail startup item
|
|
||||||
# out of the way
|
|
||||||
sudo ./activate-postfix
|
sudo ./activate-postfix
|
||||||
|
|
||||||
# Restart your computer
|
|
||||||
|
|
||||||
# Test. Read INSTALL for a series of suggested tests.
|
# Test. Read INSTALL for a series of suggested tests.
|
||||||
|
|
||||||
B. RESTORING Sendmail as the MTA when Postfix is the active MTA
|
B. DEACTIVATING POSTFIX
|
||||||
|
|
||||||
|
# Deactivate postfix startup at boot time
|
||||||
|
sudo ./deactivate-postfix
|
||||||
|
|
||||||
|
C. RESTORING Sendmail as the MTA when Postfix is the active MTA
|
||||||
|
|
||||||
|
# This repairs the previous Oct 2001 setup if any
|
||||||
|
sudo ./repair-oldsetup
|
||||||
|
|
||||||
|
# Deactivate postfix startup at boot time
|
||||||
|
sudo ./deactivate-postfix
|
||||||
|
|
||||||
# Stop postfix
|
|
||||||
# Restore the sendmail binaries
|
|
||||||
# Restore the Sendmail startup item and move the Postfix startup item
|
|
||||||
# out of the way
|
|
||||||
sudo ./activate-sendmail
|
sudo ./activate-sendmail
|
||||||
|
|
||||||
# Restart your computer
|
# Restart your computer
|
||||||
|
|
||||||
C. RESTORING postfix as the MTA when Sendmail is the active MTA
|
D. RESTORING postfix as the MTA when Sendmail is the active MTA
|
||||||
|
|
||||||
# The first time you have to follow the steps of A.
|
# NOTE: The first time you activate postfix you have to follow
|
||||||
|
# the steps of A.
|
||||||
|
|
||||||
# Kill the running sendmail daemon if you know how
|
# This repairs the previous Oct 2001 setup if any
|
||||||
|
sudo ./repair-oldsetup
|
||||||
|
|
||||||
# Restore the postfix binaries
|
|
||||||
# Restore the Postfix startup item and move the Sendmail startup item
|
|
||||||
# out of the way
|
|
||||||
sudo ./activate-postfix
|
sudo ./activate-postfix
|
||||||
|
|
||||||
# Restart your computer
|
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
. ./defines
|
. ./defines
|
||||||
|
|
||||||
|
# Activate binaries
|
||||||
if [ ! -e ${POSTFIXBACKUPDIR}/sendmail ]
|
if [ ! -e ${POSTFIXBACKUPDIR}/sendmail ]
|
||||||
then
|
then
|
||||||
echo "Something is wrong: there is no existing postfix binary backup"
|
echo "Something is wrong: there is no existing postfix binary backup"
|
||||||
@@ -30,32 +31,13 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e "${SSI}" ]
|
# De-activate sendmail in /etc/hostconfig
|
||||||
then
|
/usr/bin/perl -pi -e 's/MAILSERVER=-YES-/MAILSERVER=-NO-/g' /etc/hostconfig
|
||||||
if [ ! -d "${SIDISABLEDDIR}" ]
|
# Activate postfix in /etc/hostconfig
|
||||||
then
|
if /usr/bin/grep '^POSTFIX=-NO-' /etc/hostconfig >/dev/null 2>&1; then
|
||||||
mkdir -p "${SIDISABLEDDIR}"
|
/usr/bin/perl -pi -e 's/POSTFIX=-NO-/POSTFIX=-YES-/g' /etc/hostconfig
|
||||||
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
|
else
|
||||||
echo "Note: Postfix needs MAILSERVER set to -YES- in /etc/hostconfig"
|
echo "POSTFIX=-YES-" >>/etc/hostconfig
|
||||||
echo "Postfix will NOT start on reboot"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
/usr/sbin/postfix start
|
||||||
|
@@ -5,9 +5,12 @@
|
|||||||
|
|
||||||
. ./defines
|
. ./defines
|
||||||
|
|
||||||
|
. ./deactivate-postfix
|
||||||
|
|
||||||
|
# Activate binaries
|
||||||
if [ ! -e ${SENDMAILBACKUPDIR}/sendmail ]
|
if [ ! -e ${SENDMAILBACKUPDIR}/sendmail ]
|
||||||
then
|
then
|
||||||
echo "Something is wrong: there is no existing postfix binary backup"
|
echo "Something is wrong: there is no existing sendmail binary backup"
|
||||||
exit 1;
|
exit 1;
|
||||||
else
|
else
|
||||||
echo "Restoring sendmail versions of sendmail programs from backup..."
|
echo "Restoring sendmail versions of sendmail programs from backup..."
|
||||||
@@ -16,45 +19,6 @@ else
|
|||||||
(cd ${SENDMAILBACKUPDIR}; tar cf - mailq) | (cd /usr/bin; tar xf -)
|
(cd ${SENDMAILBACKUPDIR}; tar cf - mailq) | (cd /usr/bin; tar xf -)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e "${SSI}" ]
|
# Activate sendmail in /etc/hostconfig
|
||||||
then
|
/usr/bin/perl -pi -e 's/MAILSERVER=-NO-/MAILSERVER=-YES-/g' /etc/hostconfig
|
||||||
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
|
|
||||||
|
16
postfix/auxiliary/MacOSX/deactivate-postfix
Executable file
16
postfix/auxiliary/MacOSX/deactivate-postfix
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Written by Gerben Wierda, Sep 2002. I waive every copyright on this and
|
||||||
|
# I also do not give any warranty.
|
||||||
|
|
||||||
|
. ./defines
|
||||||
|
|
||||||
|
if [ -e "${PSI}" ]
|
||||||
|
then
|
||||||
|
mv "${PSI}" "${PSIDISABLED}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# De-activate postfix in /etc/hostconfig
|
||||||
|
/usr/bin/perl -pi -e 's/POSTFIX=-YES-/POSTFIX=-NO-/g' /etc/hostconfig
|
||||||
|
|
||||||
|
/usr/sbin/postfix stop >/dev/null 2>&1
|
@@ -3,13 +3,10 @@
|
|||||||
# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
|
# Written by Gerben Wierda, Oct 2001. I waive every copyright on this and
|
||||||
# I also do not give any warranty.
|
# I also do not give any warranty.
|
||||||
|
|
||||||
SIDIR="/System/Library/StartupItems"
|
SIDIR="/Library/StartupItems"
|
||||||
SIDISABLEDDIR="/System/Library/DisabledStartupItems"
|
|
||||||
|
|
||||||
PSI="${SIDIR}/Postfix"
|
PSI="${SIDIR}/Postfix"
|
||||||
SSI="${SIDIR}/Sendmail"
|
PSIDISABLED="${PSI}.disabled"
|
||||||
PSIDISABLED="${SIDISABLEDDIR}/Postfix"
|
|
||||||
SSIDISABLED="${SIDISABLEDDIR}/Sendmail"
|
|
||||||
|
|
||||||
POSTFIXBACKUPDIR=/usr/sbin/.postfixbackup
|
POSTFIXBACKUPDIR=/usr/sbin/.postfixbackup
|
||||||
SENDMAILBACKUPDIR=/usr/sbin/.sendmailbackup
|
SENDMAILBACKUPDIR=/usr/sbin/.sendmailbackup
|
||||||
|
0
postfix/auxiliary/MacOSX/niscript
Normal file → Executable file
0
postfix/auxiliary/MacOSX/niscript
Normal file → Executable file
8
postfix/auxiliary/MacOSX/repair-oldsetup
Executable file
8
postfix/auxiliary/MacOSX/repair-oldsetup
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -d /System/Library/DisabledStartupItems/Sendmail ]
|
||||||
|
then
|
||||||
|
mv /System/Library/DisabledStartupItems/Sendmail /System/Library/StartupItems
|
||||||
|
rmdir /System/Library/DisabledStartupItems/Sendmail
|
||||||
|
rm -rf /System/Library/StartupItems/Postfix
|
||||||
|
fi
|
@@ -144,3 +144,12 @@ nested_header_checks = $header_checks
|
|||||||
# overrides the main.cf content_filter setting.
|
# overrides the main.cf content_filter setting.
|
||||||
#
|
#
|
||||||
body_checks = regexp:/etc/postfix/body_checks
|
body_checks = regexp:/etc/postfix/body_checks
|
||||||
|
|
||||||
|
# The body_checks_max_size parameter controls how much text in a
|
||||||
|
# message body segment (or attachment, if you prefer to use that
|
||||||
|
# term) is subjected to body_checks inspection.
|
||||||
|
#
|
||||||
|
# By default, only the first 50 kbytes of a message body segment are
|
||||||
|
# inspected with body_checks patterns.
|
||||||
|
#
|
||||||
|
body_checks_max_size = 51200
|
||||||
|
@@ -77,56 +77,60 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
lines. These filters see physical lines one at a
|
lines. These filters see physical lines one at a
|
||||||
time, in chunks of at most line_length_limit bytes.
|
time, in chunks of at most line_length_limit bytes.
|
||||||
|
|
||||||
|
<b>body</b><i>_</i><b>checks</b><i>_</i><b>size</b><i>_</i><b>limit</b>
|
||||||
|
The amount of content per message body segment that
|
||||||
|
is subjected to <b>$body</b><i>_</i><b>checks</b> filtering.
|
||||||
|
|
||||||
<b>header</b><i>_</i><b>checks</b>
|
<b>header</b><i>_</i><b>checks</b>
|
||||||
|
|
||||||
<b>mime</b><i>_</i><b>header</b><i>_</i><b>checks</b> (default: <b>$header</b><i>_</i><b>checks</b>)
|
<b>mime</b><i>_</i><b>header</b><i>_</i><b>checks</b> (default: <b>$header</b><i>_</i><b>checks</b>)
|
||||||
|
|
||||||
<b>nested</b><i>_</i><b>header</b><i>_</i><b>checks</b> (default: <b>$header</b><i>_</i><b>checks</b>)
|
<b>nested</b><i>_</i><b>header</b><i>_</i><b>checks</b> (default: <b>$header</b><i>_</i><b>checks</b>)
|
||||||
Lookup tables with content filters for message
|
Lookup tables with content filters for message
|
||||||
header lines: respectively, these are applied to
|
header lines: respectively, these are applied to
|
||||||
the primary message headers (not including MIME
|
the primary message headers (not including MIME
|
||||||
headers), to the MIME headers anywhere in the mes-
|
headers), to the MIME headers anywhere in the mes-
|
||||||
sage, and to the initial headers of attached mes-
|
sage, and to the initial headers of attached mes-
|
||||||
sages. These filters see logical headers one at a
|
sages. These filters see logical headers one at a
|
||||||
time, including headers that span multiple lines.
|
time, including headers that span multiple lines.
|
||||||
|
|
||||||
<b>MIME</b> <b>Processing</b>
|
<b>MIME</b> <b>Processing</b>
|
||||||
<b>disable</b><i>_</i><b>mime</b><i>_</i><b>input</b><i>_</i><b>processing</b>
|
<b>disable</b><i>_</i><b>mime</b><i>_</i><b>input</b><i>_</i><b>processing</b>
|
||||||
While receiving, give no special treatment to <b>Con-</b>
|
While receiving, give no special treatment to <b>Con-</b>
|
||||||
<b>tent-Type:</b> message headers; all text after the ini-
|
<b>tent-Type:</b> message headers; all text after the ini-
|
||||||
tial message headers is considered to be part of
|
tial message headers is considered to be part of
|
||||||
the message body.
|
the message body.
|
||||||
|
|
||||||
<b>mime</b><i>_</i><b>boundary</b><i>_</i><b>length</b><i>_</i><b>limit</b>
|
<b>mime</b><i>_</i><b>boundary</b><i>_</i><b>length</b><i>_</i><b>limit</b>
|
||||||
The amount of space that will be allocated for MIME
|
The amount of space that will be allocated for MIME
|
||||||
multipart boundary strings. The MIME processor is
|
multipart boundary strings. The MIME processor is
|
||||||
unable to distinguish between boundary strings that
|
unable to distinguish between boundary strings that
|
||||||
do not differ in the first <b>$mime</b><i>_</i><b>bound-</b>
|
do not differ in the first <b>$mime</b><i>_</i><b>bound-</b>
|
||||||
<b>ary</b><i>_</i><b>length</b><i>_</i><b>limit</b> characters.
|
<b>ary</b><i>_</i><b>length</b><i>_</i><b>limit</b> characters.
|
||||||
|
|
||||||
<b>mime</b><i>_</i><b>nesting</b><i>_</i><b>limit</b>
|
<b>mime</b><i>_</i><b>nesting</b><i>_</i><b>limit</b>
|
||||||
The maximal nesting level of multipart mail that
|
The maximal nesting level of multipart mail that
|
||||||
the MIME processor can handle. Refuse mail that is
|
the MIME processor can handle. Refuse mail that is
|
||||||
nested deeper.
|
nested deeper.
|
||||||
|
|
||||||
<b>strict</b><i>_</i><b>8bitmime</b>
|
<b>strict</b><i>_</i><b>8bitmime</b>
|
||||||
Turn on both <b>strict</b><i>_</i><b>7bit</b><i>_</i><b>headers</b> and <b>strict</b><i>_</i><b>8bit-</b>
|
Turn on both <b>strict</b><i>_</i><b>7bit</b><i>_</i><b>headers</b> and <b>strict</b><i>_</i><b>8bit-</b>
|
||||||
<b>mime</b><i>_</i><b>body</b>.
|
<b>mime</b><i>_</i><b>body</b>.
|
||||||
|
|
||||||
<b>strict</b><i>_</i><b>7bit</b><i>_</i><b>headers</b>
|
<b>strict</b><i>_</i><b>7bit</b><i>_</i><b>headers</b>
|
||||||
Reject mail with 8-bit text in message headers.
|
Reject mail with 8-bit text in message headers.
|
||||||
This blocks mail from poorly written applications.
|
This blocks mail from poorly written applications.
|
||||||
|
|
||||||
<b>strict</b><i>_</i><b>8bitmime</b><i>_</i><b>body</b>
|
<b>strict</b><i>_</i><b>8bitmime</b><i>_</i><b>body</b>
|
||||||
Reject mail with 8-bit text in content that claims
|
Reject mail with 8-bit text in content that claims
|
||||||
to be 7-bit, or in content that has no explicit
|
to be 7-bit, or in content that has no explicit
|
||||||
content encoding information. This blocks mail
|
content encoding information. This blocks mail
|
||||||
mail poorly written mail software. Unfortunately,
|
mail poorly written mail software. Unfortunately,
|
||||||
this also breaks majordomo approval requests when
|
this also breaks majordomo approval requests when
|
||||||
the included request contains valid 8-bit MIME
|
the included request contains valid 8-bit MIME
|
||||||
mail, and it breaks bounces from mailers that do
|
mail, and it breaks bounces from mailers that do
|
||||||
not properly encapsulate 8-bit content (for exam-
|
not properly encapsulate 8-bit content (for exam-
|
||||||
ple, bounces from qmail or from old versions of
|
ple, bounces from qmail or from old versions of
|
||||||
Postfix).
|
Postfix).
|
||||||
|
|
||||||
<b>strict</b><i>_</i><b>mime</b><i>_</i><b>domain</b><i>_</i><b>encoding</b>
|
<b>strict</b><i>_</i><b>mime</b><i>_</i><b>domain</b><i>_</i><b>encoding</b>
|
||||||
@@ -136,7 +140,7 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
|
|
||||||
<b>Miscellaneous</b>
|
<b>Miscellaneous</b>
|
||||||
<b>always</b><i>_</i><b>bcc</b>
|
<b>always</b><i>_</i><b>bcc</b>
|
||||||
Address to send a copy of each message that enters
|
Address to send a copy of each message that enters
|
||||||
the system.
|
the system.
|
||||||
|
|
||||||
<b>hopcount</b><i>_</i><b>limit</b>
|
<b>hopcount</b><i>_</i><b>limit</b>
|
||||||
@@ -149,8 +153,8 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
|
|
||||||
<b>Address</b> <b>transformations</b>
|
<b>Address</b> <b>transformations</b>
|
||||||
<b>empty</b><i>_</i><b>address</b><i>_</i><b>recipient</b>
|
<b>empty</b><i>_</i><b>address</b><i>_</i><b>recipient</b>
|
||||||
The destination for undeliverable mail from <>.
|
The destination for undeliverable mail from <>.
|
||||||
This substitution is done before all other address
|
This substitution is done before all other address
|
||||||
rewriting.
|
rewriting.
|
||||||
|
|
||||||
<b>canonical</b><i>_</i><b>maps</b>
|
<b>canonical</b><i>_</i><b>maps</b>
|
||||||
@@ -166,16 +170,16 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
header sender addresses.
|
header sender addresses.
|
||||||
|
|
||||||
<b>masquerade</b><i>_</i><b>classes</b>
|
<b>masquerade</b><i>_</i><b>classes</b>
|
||||||
List of address classes subject to masquerading:
|
List of address classes subject to masquerading:
|
||||||
zero or more of <b>envelope</b><i>_</i><b>sender</b>, <b>envelope</b><i>_</i><b>recipi-</b>
|
zero or more of <b>envelope</b><i>_</i><b>sender</b>, <b>envelope</b><i>_</i><b>recipi-</b>
|
||||||
<b>ent</b>, <b>header</b><i>_</i><b>sender</b>, <b>header</b><i>_</i><b>recipient</b>.
|
<b>ent</b>, <b>header</b><i>_</i><b>sender</b>, <b>header</b><i>_</i><b>recipient</b>.
|
||||||
|
|
||||||
<b>masquerade</b><i>_</i><b>domains</b>
|
<b>masquerade</b><i>_</i><b>domains</b>
|
||||||
List of domains that hide their subdomain struc-
|
List of domains that hide their subdomain struc-
|
||||||
ture.
|
ture.
|
||||||
|
|
||||||
<b>masquerade</b><i>_</i><b>exceptions</b>
|
<b>masquerade</b><i>_</i><b>exceptions</b>
|
||||||
List of user names that are not subject to address
|
List of user names that are not subject to address
|
||||||
masquerading.
|
masquerading.
|
||||||
|
|
||||||
<b>virtual</b><i>_</i><b>maps</b>
|
<b>virtual</b><i>_</i><b>maps</b>
|
||||||
@@ -184,7 +188,7 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
|
|
||||||
<b>Resource</b> <b>controls</b>
|
<b>Resource</b> <b>controls</b>
|
||||||
<b>duplicate</b><i>_</i><b>filter</b><i>_</i><b>limit</b>
|
<b>duplicate</b><i>_</i><b>filter</b><i>_</i><b>limit</b>
|
||||||
Limit the number of envelope recipients that are
|
Limit the number of envelope recipients that are
|
||||||
remembered.
|
remembered.
|
||||||
|
|
||||||
<b>header</b><i>_</i><b>size</b><i>_</i><b>limit</b>
|
<b>header</b><i>_</i><b>size</b><i>_</i><b>limit</b>
|
||||||
@@ -193,11 +197,11 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
|
|
||||||
<b>in</b><i>_</i><b>flow</b><i>_</i><b>delay</b>
|
<b>in</b><i>_</i><b>flow</b><i>_</i><b>delay</b>
|
||||||
Amount of time to pause before accepting a message,
|
Amount of time to pause before accepting a message,
|
||||||
when the message arrival rate exceeds the message
|
when the message arrival rate exceeds the message
|
||||||
delivery rate.
|
delivery rate.
|
||||||
|
|
||||||
<b>extract</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
|
<b>extract</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
|
||||||
Limit the amount of recipients extracted from mes-
|
Limit the amount of recipients extracted from mes-
|
||||||
sage headers.
|
sage headers.
|
||||||
|
|
||||||
<b>SEE</b> <b>ALSO</b>
|
<b>SEE</b> <b>ALSO</b>
|
||||||
@@ -212,7 +216,7 @@ CLEANUP(8) CLEANUP(8)
|
|||||||
/etc/postfix/virtual*, virtual mapping table
|
/etc/postfix/virtual*, virtual mapping table
|
||||||
|
|
||||||
<b>LICENSE</b>
|
<b>LICENSE</b>
|
||||||
The Secure Mailer license must be distributed with this
|
The Secure Mailer license must be distributed with this
|
||||||
software.
|
software.
|
||||||
|
|
||||||
<b>AUTHOR(S)</b>
|
<b>AUTHOR(S)</b>
|
||||||
|
@@ -81,6 +81,9 @@ a configuration change.
|
|||||||
Lookup tables with content filters for message body lines.
|
Lookup tables with content filters for message body lines.
|
||||||
These filters see physical lines one at a time, in chunks of
|
These filters see physical lines one at a time, in chunks of
|
||||||
at most line_length_limit bytes.
|
at most line_length_limit bytes.
|
||||||
|
.IP \fBbody_checks_size_limit\fP
|
||||||
|
The amount of content per message body segment that is
|
||||||
|
subjected to \fB$body_checks\fR filtering.
|
||||||
.IP \fBheader_checks\fR
|
.IP \fBheader_checks\fR
|
||||||
.IP "\fBmime_header_checks\fR (default: \fB$header_checks\fR)"
|
.IP "\fBmime_header_checks\fR (default: \fB$header_checks\fR)"
|
||||||
.IP "\fBnested_header_checks\fR (default: \fB$header_checks\fR)"
|
.IP "\fBnested_header_checks\fR (default: \fB$header_checks\fR)"
|
||||||
|
@@ -67,6 +67,9 @@
|
|||||||
/* Lookup tables with content filters for message body lines.
|
/* Lookup tables with content filters for message body lines.
|
||||||
/* These filters see physical lines one at a time, in chunks of
|
/* These filters see physical lines one at a time, in chunks of
|
||||||
/* at most line_length_limit bytes.
|
/* at most line_length_limit bytes.
|
||||||
|
/* .IP \fBbody_checks_size_limit\fP
|
||||||
|
/* The amount of content per message body segment that is
|
||||||
|
/* subjected to \fB$body_checks\fR filtering.
|
||||||
/* .IP \fBheader_checks\fR
|
/* .IP \fBheader_checks\fR
|
||||||
/* .IP "\fBmime_header_checks\fR (default: \fB$header_checks\fR)"
|
/* .IP "\fBmime_header_checks\fR (default: \fB$header_checks\fR)"
|
||||||
/* .IP "\fBnested_header_checks\fR (default: \fB$header_checks\fR)"
|
/* .IP "\fBnested_header_checks\fR (default: \fB$header_checks\fR)"
|
||||||
|
@@ -110,12 +110,14 @@ int var_extra_rcpt_limit; /* recipient extract limit */
|
|||||||
char *var_rcpt_witheld; /* recipients not disclosed */
|
char *var_rcpt_witheld; /* recipients not disclosed */
|
||||||
char *var_masq_classes; /* what to masquerade */
|
char *var_masq_classes; /* what to masquerade */
|
||||||
int var_qattr_count_limit; /* named attribute limit */
|
int var_qattr_count_limit; /* named attribute limit */
|
||||||
|
int var_body_check_len; /* when to stop body scan */
|
||||||
|
|
||||||
CONFIG_INT_TABLE cleanup_int_table[] = {
|
CONFIG_INT_TABLE cleanup_int_table[] = {
|
||||||
VAR_HOPCOUNT_LIMIT, DEF_HOPCOUNT_LIMIT, &var_hopcount_limit, 1, 0,
|
VAR_HOPCOUNT_LIMIT, DEF_HOPCOUNT_LIMIT, &var_hopcount_limit, 1, 0,
|
||||||
VAR_DUP_FILTER_LIMIT, DEF_DUP_FILTER_LIMIT, &var_dup_filter_limit, 0, 0,
|
VAR_DUP_FILTER_LIMIT, DEF_DUP_FILTER_LIMIT, &var_dup_filter_limit, 0, 0,
|
||||||
VAR_EXTRA_RCPT_LIMIT, DEF_EXTRA_RCPT_LIMIT, &var_extra_rcpt_limit, 0, 0,
|
VAR_EXTRA_RCPT_LIMIT, DEF_EXTRA_RCPT_LIMIT, &var_extra_rcpt_limit, 0, 0,
|
||||||
VAR_QATTR_COUNT_LIMIT, DEF_QATTR_COUNT_LIMIT, &var_qattr_count_limit, 1, 0,
|
VAR_QATTR_COUNT_LIMIT, DEF_QATTR_COUNT_LIMIT, &var_qattr_count_limit, 1, 0,
|
||||||
|
VAR_BODY_CHECK_LEN, DEF_BODY_CHECK_LEN, &var_body_check_len, 0, 0,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -344,7 +344,8 @@ static int cleanup_act(CLEANUP_STATE *state, char *context, const char *buf,
|
|||||||
/* cleanup_header_callback - process one complete header line */
|
/* cleanup_header_callback - process one complete header line */
|
||||||
|
|
||||||
static void cleanup_header_callback(void *context, int header_class,
|
static void cleanup_header_callback(void *context, int header_class,
|
||||||
HEADER_OPTS *hdr_opts, VSTRING *header_buf)
|
HEADER_OPTS *hdr_opts, VSTRING *header_buf,
|
||||||
|
off_t unused_offset)
|
||||||
{
|
{
|
||||||
CLEANUP_STATE *state = (CLEANUP_STATE *) context;
|
CLEANUP_STATE *state = (CLEANUP_STATE *) context;
|
||||||
const char *myname = "cleanup_header_callback";
|
const char *myname = "cleanup_header_callback";
|
||||||
@@ -581,7 +582,9 @@ static void cleanup_header_done_callback(void *context)
|
|||||||
|
|
||||||
/* cleanup_body_callback - output one body record */
|
/* cleanup_body_callback - output one body record */
|
||||||
|
|
||||||
static void cleanup_body_callback(void *context, int type, const char *buf, int len)
|
static void cleanup_body_callback(void *context, int type,
|
||||||
|
const char *buf, int len,
|
||||||
|
off_t offset)
|
||||||
{
|
{
|
||||||
CLEANUP_STATE *state = (CLEANUP_STATE *) context;
|
CLEANUP_STATE *state = (CLEANUP_STATE *) context;
|
||||||
|
|
||||||
@@ -591,7 +594,9 @@ static void cleanup_body_callback(void *context, int type, const char *buf, int
|
|||||||
* only in chunks of line_length_limit (2048) characters; it is easily
|
* only in chunks of line_length_limit (2048) characters; it is easily
|
||||||
* bypassed with encodings and other tricks.
|
* bypassed with encodings and other tricks.
|
||||||
*/
|
*/
|
||||||
if ((state->flags & CLEANUP_FLAG_FILTER) && cleanup_body_checks) {
|
if ((state->flags & CLEANUP_FLAG_FILTER)
|
||||||
|
&& cleanup_body_checks
|
||||||
|
&& (var_body_check_len == 0 || offset < var_body_check_len)) {
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
if ((value = maps_find(cleanup_body_checks, buf, 0)) != 0) {
|
if ((value = maps_find(cleanup_body_checks, buf, 0)) != 0) {
|
||||||
|
@@ -1004,6 +1004,10 @@ extern char *var_nesthdr_checks;
|
|||||||
#define DEF_BODY_CHECKS ""
|
#define DEF_BODY_CHECKS ""
|
||||||
extern char *var_body_checks;
|
extern char *var_body_checks;
|
||||||
|
|
||||||
|
#define VAR_BODY_CHECK_LEN "body_checks_size_limit"
|
||||||
|
#define DEF_BODY_CHECK_LEN (50*1024)
|
||||||
|
extern int var_body_check_len;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bounce service: truncate bounce message that exceed $bounce_size_limit.
|
* Bounce service: truncate bounce message that exceed $bounce_size_limit.
|
||||||
*/
|
*/
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
* Patches change the patchlevel and the release date. Snapshots change the
|
* Patches change the patchlevel and the release date. Snapshots change the
|
||||||
* release date only, unless they include the same bugfix as a patch release.
|
* release date only, unless they include the same bugfix as a patch release.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20020928"
|
#define MAIL_RELEASE_DATE "20021013"
|
||||||
|
|
||||||
#define VAR_MAIL_VERSION "mail_version"
|
#define VAR_MAIL_VERSION "mail_version"
|
||||||
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE
|
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
mime_state: warning: improper use of 8-bit data in message header: Header: f??bar
|
mime_state: warning: improper use of 8-bit data in message header: Header: f??bar
|
||||||
MAIN Header: f<><66>bar
|
MAIN 0 Header: f<><66>bar
|
||||||
HEADER END
|
HEADER END
|
||||||
BODY N
|
BODY N 0
|
||||||
mime_state: warning: improper use of 8-bit data in message body: b?dy
|
mime_state: warning: improper use of 8-bit data in message body: b?dy
|
||||||
BODY N b<>dy
|
BODY N 1 b<>dy
|
||||||
BODY END
|
BODY END
|
||||||
mime_state: warning: improper use of 8-bit data in message header
|
mime_state: warning: improper use of 8-bit data in message header
|
||||||
mime_state: warning: improper use of 8-bit data in message body
|
mime_state: warning: improper use of 8-bit data in message body
|
||||||
|
@@ -1,93 +1,93 @@
|
|||||||
MAIN mime-version: 1.0
|
MAIN 0 mime-version: 1.0
|
||||||
mime_state: header_token: text / plain
|
mime_state: header_token: text / plain
|
||||||
MAIN content-type: text/plain
|
MAIN 25 content-type: text/plain
|
||||||
mime_state: header_token: 8bit
|
mime_state: header_token: 8bit
|
||||||
MAIN Content-Transfer-Encoding: quoted-printable
|
MAIN 57 Content-Transfer-Encoding: quoted-printable
|
||||||
HEADER END
|
HEADER END
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N =20
|
BODY N 1 =20
|
||||||
BODY N x=20
|
BODY N 5 x=20
|
||||||
BODY N xx=20
|
BODY N 10 xx=20
|
||||||
BODY N xxx=20
|
BODY N 16 xxx=20
|
||||||
BODY N xxxx=20
|
BODY N 23 xxxx=20
|
||||||
BODY N xxxxx=20
|
BODY N 31 xxxxx=20
|
||||||
BODY N xxxxxx=20
|
BODY N 40 xxxxxx=20
|
||||||
BODY N xxxxxxx=20
|
BODY N 50 xxxxxxx=20
|
||||||
BODY N xxxxxxxx=20
|
BODY N 61 xxxxxxxx=20
|
||||||
BODY N xxxxxxxxx=20
|
BODY N 73 xxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxx=20
|
BODY N 86 xxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxx=20
|
BODY N 100 xxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxx=20
|
BODY N 115 xxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxx=20
|
BODY N 131 xxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxx=20
|
BODY N 148 xxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxx=20
|
BODY N 166 xxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxx=20
|
BODY N 185 xxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxx=20
|
BODY N 205 xxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxx=20
|
BODY N 226 xxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxx=20
|
BODY N 248 xxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxx=20
|
BODY N 271 xxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 295 xxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 320 xxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 346 xxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 373 xxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 401 xxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 430 xxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 460 xxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 491 xxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 523 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 556 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 590 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 625 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 661 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 698 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 736 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 775 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 815 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 856 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 898 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 941 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 985 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1030 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1076 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1123 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1171 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1220 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1270 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1321 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1373 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1426 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1535 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1591 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1648 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1706 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1765 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1825 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 1948 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2011 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2075 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2140 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2206 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2273 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2341 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2410 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2551 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2623 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2696 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2770 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
BODY N 2845 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 2921 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N =20
|
BODY N 2996 =20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3000 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N x=20
|
BODY N 3075 x=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3080 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xx=20
|
BODY N 3155 xx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3161 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxx=20
|
BODY N 3236 xxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3243 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxxx=20
|
BODY N 3318 xxxx=20
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3326 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxxxx=20
|
BODY N 3401 xxxxx=20
|
||||||
BODY END
|
BODY END
|
||||||
|
@@ -1,93 +1,93 @@
|
|||||||
MAIN mime-version: 1.0
|
MAIN 0 mime-version: 1.0
|
||||||
mime_state: header_token: text / plain
|
mime_state: header_token: text / plain
|
||||||
MAIN content-type: text/plain
|
MAIN 25 content-type: text/plain
|
||||||
mime_state: header_token: 8bit
|
mime_state: header_token: 8bit
|
||||||
MAIN Content-Transfer-Encoding: quoted-printable
|
MAIN 57 Content-Transfer-Encoding: quoted-printable
|
||||||
HEADER END
|
HEADER END
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N =09
|
BODY N 1 =09
|
||||||
BODY N x=09
|
BODY N 5 x=09
|
||||||
BODY N xx=09
|
BODY N 10 xx=09
|
||||||
BODY N xxx=09
|
BODY N 16 xxx=09
|
||||||
BODY N xxxx=09
|
BODY N 23 xxxx=09
|
||||||
BODY N xxxxx=09
|
BODY N 31 xxxxx=09
|
||||||
BODY N xxxxxx=09
|
BODY N 40 xxxxxx=09
|
||||||
BODY N xxxxxxx=09
|
BODY N 50 xxxxxxx=09
|
||||||
BODY N xxxxxxxx=09
|
BODY N 61 xxxxxxxx=09
|
||||||
BODY N xxxxxxxxx=09
|
BODY N 73 xxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxx=09
|
BODY N 86 xxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxx=09
|
BODY N 100 xxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxx=09
|
BODY N 115 xxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxx=09
|
BODY N 131 xxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxx=09
|
BODY N 148 xxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxx=09
|
BODY N 166 xxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxx=09
|
BODY N 185 xxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxx=09
|
BODY N 205 xxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxx=09
|
BODY N 226 xxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxx=09
|
BODY N 248 xxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxx=09
|
BODY N 271 xxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 295 xxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 320 xxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 346 xxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 373 xxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 401 xxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 430 xxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 460 xxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 491 xxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 523 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 556 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 590 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 625 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 661 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 698 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 736 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 775 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 815 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 856 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 898 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 941 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 985 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1030 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1076 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1123 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1171 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1220 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1270 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1321 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1373 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1426 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1535 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1591 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1648 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1706 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1765 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1825 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 1948 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2011 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2075 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2140 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2206 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2273 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2341 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2410 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2551 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2623 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2696 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2770 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
BODY N 2845 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 2921 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N =09
|
BODY N 2996 =09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3000 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N x=09
|
BODY N 3075 x=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3080 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xx=09
|
BODY N 3155 xx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3161 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxx=09
|
BODY N 3236 xxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3243 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxxx=09
|
BODY N 3318 xxxx=09
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3326 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxxxx=09
|
BODY N 3401 xxxxx=09
|
||||||
BODY END
|
BODY END
|
||||||
|
@@ -1,93 +1,93 @@
|
|||||||
MAIN mime-version: 1.0
|
MAIN 0 mime-version: 1.0
|
||||||
mime_state: header_token: text / plain
|
mime_state: header_token: text / plain
|
||||||
MAIN content-type: text/plain
|
MAIN 25 content-type: text/plain
|
||||||
mime_state: header_token: 8bit
|
mime_state: header_token: 8bit
|
||||||
MAIN Content-Transfer-Encoding: quoted-printable
|
MAIN 57 Content-Transfer-Encoding: quoted-printable
|
||||||
HEADER END
|
HEADER END
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N =01
|
BODY N 1 =01
|
||||||
BODY N x=01
|
BODY N 5 x=01
|
||||||
BODY N xx=01
|
BODY N 10 xx=01
|
||||||
BODY N xxx=01
|
BODY N 16 xxx=01
|
||||||
BODY N xxxx=01
|
BODY N 23 xxxx=01
|
||||||
BODY N xxxxx=01
|
BODY N 31 xxxxx=01
|
||||||
BODY N xxxxxx=01
|
BODY N 40 xxxxxx=01
|
||||||
BODY N xxxxxxx=01
|
BODY N 50 xxxxxxx=01
|
||||||
BODY N xxxxxxxx=01
|
BODY N 61 xxxxxxxx=01
|
||||||
BODY N xxxxxxxxx=01
|
BODY N 73 xxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxx=01
|
BODY N 86 xxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxx=01
|
BODY N 100 xxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxx=01
|
BODY N 115 xxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxx=01
|
BODY N 131 xxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxx=01
|
BODY N 148 xxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxx=01
|
BODY N 166 xxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxx=01
|
BODY N 185 xxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxx=01
|
BODY N 205 xxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxx=01
|
BODY N 226 xxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxx=01
|
BODY N 248 xxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxx=01
|
BODY N 271 xxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 295 xxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 320 xxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 346 xxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 373 xxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 401 xxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 430 xxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 460 xxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 491 xxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 523 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 556 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 590 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 625 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 661 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 698 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 736 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 775 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 815 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 856 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 898 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 941 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 985 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1030 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1076 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1123 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1171 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1220 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1270 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1321 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1373 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1426 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1535 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1591 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1648 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1706 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1765 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1825 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 1948 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2011 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2075 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2140 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2206 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2273 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2341 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2410 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2551 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2623 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2696 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2770 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
BODY N 2845 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 2921 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N =01
|
BODY N 2996 =01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3000 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N x=01
|
BODY N 3075 x=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3080 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xx=01
|
BODY N 3155 xx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3161 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxx=01
|
BODY N 3236 xxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3243 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxxx=01
|
BODY N 3318 xxxx=01
|
||||||
BODY N xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
BODY N 3326 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
|
||||||
BODY N xxxxx=01
|
BODY N 3401 xxxxx=01
|
||||||
BODY END
|
BODY END
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
mime_state: header_token: message / rfc822
|
mime_state: header_token: message / rfc822
|
||||||
MAIN content-type: message/rfc822
|
MAIN 0 content-type: message/rfc822
|
||||||
mime_state: header_token: base64
|
mime_state: header_token: base64
|
||||||
MAIN content-transfer-encoding: base64
|
MAIN 34 content-transfer-encoding: base64
|
||||||
HEADER END
|
HEADER END
|
||||||
mime_state: warning: invalid message/* or multipart/* encoding domain: base64
|
mime_state: warning: invalid message/* or multipart/* encoding domain: base64
|
||||||
BODY END
|
BODY END
|
||||||
|
@@ -1,142 +1,142 @@
|
|||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MAIN content-type: multipart/mixed; boundary=foobar
|
MAIN 0 content-type: multipart/mixed; boundary=foobar
|
||||||
HEADER END
|
HEADER END
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: PUSH boundary foobar
|
mime_state: PUSH boundary foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
mime_state: header_token: multipart / mixed
|
mime_state: header_token: multipart / mixed
|
||||||
mime_state: header_token: boundary = foobar
|
mime_state: header_token: boundary = foobar
|
||||||
mime_state: warning: MIME nesting exceeds safety limit: content-type: multipart/mixed; boundary=foobar
|
mime_state: warning: MIME nesting exceeds safety limit: content-type: multipart/mixed; boundary=foobar
|
||||||
MULT content-type: multipart/mixed; boundary=foobar
|
MULT 0 content-type: multipart/mixed; boundary=foobar
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N --foobar
|
BODY N 1 --foobar
|
||||||
BODY END
|
BODY END
|
||||||
mime_state: warning: MIME nesting exceeds safety limit
|
mime_state: warning: MIME nesting exceeds safety limit
|
||||||
mime_state: POP boundary foobar
|
mime_state: POP boundary foobar
|
||||||
|
@@ -11,12 +11,14 @@
|
|||||||
/* err_print, context)
|
/* err_print, context)
|
||||||
/* int flags;
|
/* int flags;
|
||||||
/* void (*head_out)(void *ptr, int header_class,
|
/* void (*head_out)(void *ptr, int header_class,
|
||||||
/* HEADER_OPTS *header_info, VSTRING *buf);
|
/* HEADER_OPTS *header_info,
|
||||||
|
/* VSTRING *buf, off_t offset);
|
||||||
/* void (*head_end)(void *ptr);
|
/* void (*head_end)(void *ptr);
|
||||||
/* void (*body_out)(void *ptr, int rec_type,
|
/* void (*body_out)(void *ptr, int rec_type,
|
||||||
/* const char *buf, int len);
|
/* const char *buf, int len,
|
||||||
|
/* off_t offset);
|
||||||
/* void (*body_end)(void *ptr);
|
/* void (*body_end)(void *ptr);
|
||||||
/* void (*err_print(void *ptr, int err_flag, const char *text)
|
/* void (*err_print)(void *ptr, int err_flag, const char *text)
|
||||||
/* void *context;
|
/* void *context;
|
||||||
/*
|
/*
|
||||||
/* int mime_state_update(state, rec_type, buf, len)
|
/* int mime_state_update(state, rec_type, buf, len)
|
||||||
@@ -152,6 +154,9 @@
|
|||||||
/* the last message header in the first header block is processed.
|
/* the last message header in the first header block is processed.
|
||||||
/* .IP len
|
/* .IP len
|
||||||
/* Length of non-VSTRING input buffer.
|
/* Length of non-VSTRING input buffer.
|
||||||
|
/* .IP offset
|
||||||
|
/* The offset in bytes from the start of the current block of message
|
||||||
|
/* headers or body lines. Line boundaries are counted as one byte.
|
||||||
/* .IP rec_type
|
/* .IP rec_type
|
||||||
/* The input record type as defined in rec_type(3h). State is
|
/* The input record type as defined in rec_type(3h). State is
|
||||||
/* updated for text records (REC_TYPE_NORM or REC_TYPE_CONT).
|
/* updated for text records (REC_TYPE_NORM or REC_TYPE_CONT).
|
||||||
@@ -274,6 +279,8 @@ struct MIME_STATE {
|
|||||||
HEADER_TOKEN token[MIME_MAX_TOKEN]; /* header token array */
|
HEADER_TOKEN token[MIME_MAX_TOKEN]; /* header token array */
|
||||||
VSTRING *token_buffer; /* header parser scratch buffer */
|
VSTRING *token_buffer; /* header parser scratch buffer */
|
||||||
int err_flags; /* processing errors */
|
int err_flags; /* processing errors */
|
||||||
|
off_t head_offset; /* offset in header block */
|
||||||
|
off_t body_offset; /* offset in body block */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Static members.
|
* Static members.
|
||||||
@@ -316,6 +323,18 @@ struct MIME_STATE {
|
|||||||
(ptr)->curr_stype = (stype); \
|
(ptr)->curr_stype = (stype); \
|
||||||
(ptr)->curr_encoding = (encoding); \
|
(ptr)->curr_encoding = (encoding); \
|
||||||
(ptr)->curr_domain = (domain); \
|
(ptr)->curr_domain = (domain); \
|
||||||
|
if ((state) == MIME_STATE_BODY) \
|
||||||
|
(ptr)->body_offset = 0; \
|
||||||
|
else \
|
||||||
|
(ptr)->head_offset = 0; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define SET_CURR_STATE(ptr, state) do { \
|
||||||
|
(ptr)->curr_state = (state); \
|
||||||
|
if ((state) == MIME_STATE_BODY) \
|
||||||
|
(ptr)->body_offset = 0; \
|
||||||
|
else \
|
||||||
|
(ptr)->head_offset = 0; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -364,6 +383,22 @@ static MIME_ENCODING mime_encoding_map[] = { /* RFC 2045 */
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Outputs and state changes are interleaved, so we must maintain separate
|
||||||
|
* offsets for header and body segments.
|
||||||
|
*/
|
||||||
|
#define HEAD_OUT(ptr, info) do { \
|
||||||
|
(ptr)->head_out((ptr)->app_context, (ptr)->curr_state, \
|
||||||
|
(info), (ptr)->output_buffer, (ptr)->head_offset); \
|
||||||
|
(ptr)->head_offset += (len) + 1; \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define BODY_OUT(ptr, rec_type, text, len) do { \
|
||||||
|
(ptr)->body_out((ptr)->app_context, (rec_type), \
|
||||||
|
(text), (len), (ptr)->body_offset); \
|
||||||
|
(ptr)->body_offset += (len) + 1; \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
/* mime_state_push - push boundary onto stack */
|
/* mime_state_push - push boundary onto stack */
|
||||||
|
|
||||||
static void mime_state_push(MIME_STATE *state, int def_ctype, int def_stype,
|
static void mime_state_push(MIME_STATE *state, int def_ctype, int def_stype,
|
||||||
@@ -635,9 +670,9 @@ static void mime_state_downgrade(MIME_STATE *state, int rec_type,
|
|||||||
if (LEN(state->output_buffer) > 72) {
|
if (LEN(state->output_buffer) > 72) {
|
||||||
VSTRING_ADDCH(state->output_buffer, '=');
|
VSTRING_ADDCH(state->output_buffer, '=');
|
||||||
VSTRING_TERMINATE(state->output_buffer);
|
VSTRING_TERMINATE(state->output_buffer);
|
||||||
state->body_out(state->app_context, REC_TYPE_NORM,
|
BODY_OUT(state, REC_TYPE_NORM,
|
||||||
STR(state->output_buffer),
|
STR(state->output_buffer),
|
||||||
LEN(state->output_buffer));
|
LEN(state->output_buffer));
|
||||||
VSTRING_RESET(state->output_buffer);
|
VSTRING_RESET(state->output_buffer);
|
||||||
}
|
}
|
||||||
/* Append the next character. */
|
/* Append the next character. */
|
||||||
@@ -662,9 +697,9 @@ static void mime_state_downgrade(MIME_STATE *state, int rec_type,
|
|||||||
QP_ENCODE(state->output_buffer, ch);
|
QP_ENCODE(state->output_buffer, ch);
|
||||||
}
|
}
|
||||||
VSTRING_TERMINATE(state->output_buffer);
|
VSTRING_TERMINATE(state->output_buffer);
|
||||||
state->body_out(state->app_context, REC_TYPE_NORM,
|
BODY_OUT(state, REC_TYPE_NORM,
|
||||||
STR(state->output_buffer),
|
STR(state->output_buffer),
|
||||||
LEN(state->output_buffer));
|
LEN(state->output_buffer));
|
||||||
VSTRING_RESET(state->output_buffer);
|
VSTRING_RESET(state->output_buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -770,8 +805,7 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
|| header_info->type != HDR_CONTENT_TRANSFER_ENCODING
|
|| header_info->type != HDR_CONTENT_TRANSFER_ENCODING
|
||||||
|| (state->static_flags & MIME_OPT_DOWNGRADE) == 0
|
|| (state->static_flags & MIME_OPT_DOWNGRADE) == 0
|
||||||
|| state->curr_domain == MIME_ENC_7BIT)
|
|| state->curr_domain == MIME_ENC_7BIT)
|
||||||
state->head_out(state->app_context, state->curr_state,
|
HEAD_OUT(state, header_info);
|
||||||
header_info, state->output_buffer);
|
|
||||||
state->prev_rec_type = 0;
|
state->prev_rec_type = 0;
|
||||||
VSTRING_RESET(state->output_buffer);
|
VSTRING_RESET(state->output_buffer);
|
||||||
}
|
}
|
||||||
@@ -821,8 +855,7 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
cp = CU_CHAR_PTR("quoted-printable");
|
cp = CU_CHAR_PTR("quoted-printable");
|
||||||
vstring_sprintf(state->output_buffer,
|
vstring_sprintf(state->output_buffer,
|
||||||
"Content-Transfer-Encoding: %s", cp);
|
"Content-Transfer-Encoding: %s", cp);
|
||||||
state->head_out(state->app_context, state->curr_state,
|
HEAD_OUT(state, (HEADER_OPTS *) 0);
|
||||||
0, state->output_buffer);
|
|
||||||
VSTRING_RESET(state->output_buffer);
|
VSTRING_RESET(state->output_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -862,9 +895,13 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
* agressive mode, examine headers of partial and external-body
|
* agressive mode, examine headers of partial and external-body
|
||||||
* messages. Otherwise, treat such headers as part of the "body". Set
|
* messages. Otherwise, treat such headers as part of the "body". Set
|
||||||
* the proper encoding information for the multipart prolog.
|
* the proper encoding information for the multipart prolog.
|
||||||
|
*
|
||||||
|
* XXX This changes state to MIME_STATE_NESTED and then outputs a body
|
||||||
|
* line, so that the body offset is not properly reset.
|
||||||
*/
|
*/
|
||||||
if (input_is_text) {
|
if (input_is_text) {
|
||||||
if (*text == 0) {
|
if (*text == 0) {
|
||||||
|
state->body_offset = 0; /* XXX */
|
||||||
if (state->curr_ctype == MIME_CTYPE_MESSAGE) {
|
if (state->curr_ctype == MIME_CTYPE_MESSAGE) {
|
||||||
if (state->curr_stype == MIME_STYPE_RFC822
|
if (state->curr_stype == MIME_STYPE_RFC822
|
||||||
|| (state->static_flags & MIME_OPT_RECURSE_ALL_MESSAGE))
|
|| (state->static_flags & MIME_OPT_RECURSE_ALL_MESSAGE))
|
||||||
@@ -872,13 +909,13 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
MIME_CTYPE_TEXT, MIME_STYPE_PLAIN,
|
MIME_CTYPE_TEXT, MIME_STYPE_PLAIN,
|
||||||
MIME_ENC_7BIT, MIME_ENC_7BIT);
|
MIME_ENC_7BIT, MIME_ENC_7BIT);
|
||||||
else
|
else
|
||||||
state->curr_state = MIME_STATE_BODY;
|
SET_CURR_STATE(state, MIME_STATE_BODY);
|
||||||
} else if (state->curr_ctype == MIME_CTYPE_MULTIPART) {
|
} else if (state->curr_ctype == MIME_CTYPE_MULTIPART) {
|
||||||
SET_MIME_STATE(state, MIME_STATE_BODY,
|
SET_MIME_STATE(state, MIME_STATE_BODY,
|
||||||
MIME_CTYPE_OTHER, MIME_STYPE_OTHER,
|
MIME_CTYPE_OTHER, MIME_STYPE_OTHER,
|
||||||
MIME_ENC_7BIT, MIME_ENC_7BIT);
|
MIME_ENC_7BIT, MIME_ENC_7BIT);
|
||||||
} else {
|
} else {
|
||||||
state->curr_state = MIME_STATE_BODY;
|
SET_CURR_STATE(state, MIME_STATE_BODY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -887,8 +924,8 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
* body state, leaving all other state alone.
|
* body state, leaving all other state alone.
|
||||||
*/
|
*/
|
||||||
else {
|
else {
|
||||||
state->body_out(state->app_context, REC_TYPE_NORM, "", 0);
|
SET_CURR_STATE(state, MIME_STATE_BODY);
|
||||||
state->curr_state = MIME_STATE_BODY;
|
BODY_OUT(state, REC_TYPE_NORM, "", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -896,7 +933,7 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
* This input is not text. Go to body state, unconditionally.
|
* This input is not text. Go to body state, unconditionally.
|
||||||
*/
|
*/
|
||||||
else {
|
else {
|
||||||
state->curr_state = MIME_STATE_BODY;
|
SET_CURR_STATE(state, MIME_STATE_BODY);
|
||||||
}
|
}
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
@@ -957,7 +994,7 @@ int mime_state_update(MIME_STATE *state, int rec_type,
|
|||||||
&& state->curr_domain != MIME_ENC_7BIT)
|
&& state->curr_domain != MIME_ENC_7BIT)
|
||||||
mime_state_downgrade(state, rec_type, text, len);
|
mime_state_downgrade(state, rec_type, text, len);
|
||||||
else
|
else
|
||||||
state->body_out(state->app_context, rec_type, text, len);
|
BODY_OUT(state, rec_type, text, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1013,15 +1050,15 @@ const char *mime_state_error(int error_code)
|
|||||||
#define REC_LEN 1024
|
#define REC_LEN 1024
|
||||||
|
|
||||||
static void head_out(void *context, int class, HEADER_OPTS *unused_info,
|
static void head_out(void *context, int class, HEADER_OPTS *unused_info,
|
||||||
VSTRING *buf)
|
VSTRING *buf, off_t offset)
|
||||||
{
|
{
|
||||||
VSTREAM *stream = (VSTREAM *) context;
|
VSTREAM *stream = (VSTREAM *) context;
|
||||||
|
|
||||||
vstream_fprintf(stream, "%s\t%s\n",
|
vstream_fprintf(stream, "%s %ld\t%s\n",
|
||||||
class == MIME_HDR_PRIMARY ? "MAIN" :
|
class == MIME_HDR_PRIMARY ? "MAIN" :
|
||||||
class == MIME_HDR_MULTIPART ? "MULT" :
|
class == MIME_HDR_MULTIPART ? "MULT" :
|
||||||
class == MIME_HDR_NESTED ? "NEST" :
|
class == MIME_HDR_NESTED ? "NEST" :
|
||||||
"ERROR", STR(buf));
|
"ERROR", (long) offset, STR(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void head_end(void *context)
|
static void head_end(void *context)
|
||||||
@@ -1031,11 +1068,12 @@ static void head_end(void *context)
|
|||||||
vstream_fprintf(stream, "HEADER END\n");
|
vstream_fprintf(stream, "HEADER END\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void body_out(void *context, int rec_type, const char *buf, int len)
|
static void body_out(void *context, int rec_type, const char *buf, int len,
|
||||||
|
off_t offset)
|
||||||
{
|
{
|
||||||
VSTREAM *stream = (VSTREAM *) context;
|
VSTREAM *stream = (VSTREAM *) context;
|
||||||
|
|
||||||
vstream_fprintf(stream, "BODY %c\t", rec_type);
|
vstream_fprintf(stream, "BODY %c %ld\t", rec_type, (long) offset);
|
||||||
vstream_fwrite(stream, buf, len);
|
vstream_fwrite(stream, buf, len);
|
||||||
if (rec_type == REC_TYPE_NORM)
|
if (rec_type == REC_TYPE_NORM)
|
||||||
VSTREAM_PUTC('\n', stream);
|
VSTREAM_PUTC('\n', stream);
|
||||||
|
@@ -25,8 +25,8 @@
|
|||||||
* External interface. All MIME_STATE structure members are private.
|
* External interface. All MIME_STATE structure members are private.
|
||||||
*/
|
*/
|
||||||
typedef struct MIME_STATE MIME_STATE;
|
typedef struct MIME_STATE MIME_STATE;
|
||||||
typedef void (*MIME_STATE_HEAD_OUT) (void *, int, HEADER_OPTS *, VSTRING *);
|
typedef void (*MIME_STATE_HEAD_OUT) (void *, int, HEADER_OPTS *, VSTRING *, off_t);
|
||||||
typedef void (*MIME_STATE_BODY_OUT) (void *, int, const char *, int);
|
typedef void (*MIME_STATE_BODY_OUT) (void *, int, const char *, int, off_t);
|
||||||
typedef void (*MIME_STATE_ANY_END) (void *);
|
typedef void (*MIME_STATE_ANY_END) (void *);
|
||||||
typedef void (*MIME_STATE_ERR_PRINT) (void *, int, const char *);
|
typedef void (*MIME_STATE_ERR_PRINT) (void *, int, const char *);
|
||||||
|
|
||||||
|
@@ -1,52 +1,52 @@
|
|||||||
MAIN subject: primary subject
|
MAIN 0 subject: primary subject
|
||||||
mime_state: header_token: multipart / mumble
|
mime_state: header_token: multipart / mumble
|
||||||
mime_state: header_token: boundary = abcd ef
|
mime_state: header_token: boundary = abcd ef
|
||||||
mime_state: PUSH boundary abcd ef
|
mime_state: PUSH boundary abcd ef
|
||||||
MAIN content-type: multipart/(co\m\)ment)mumble mumble; boundary = "ab\cd
|
MAIN 71 content-type: multipart/(co\m\)ment)mumble mumble; boundary = "ab\cd
|
||||||
ef" mumble
|
ef" mumble
|
||||||
HEADER END
|
HEADER END
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N abcdef prolog
|
BODY N 1 abcdef prolog
|
||||||
BODY N
|
BODY N 15
|
||||||
BODY N --abcd ef
|
BODY N 16 --abcd ef
|
||||||
mime_state: header_token: message / rfc822
|
mime_state: header_token: message / rfc822
|
||||||
MULT content-type: message/rfc822; mumble
|
MULT 0 content-type: message/rfc822; mumble
|
||||||
BODY N
|
BODY N 0
|
||||||
NEST subject: nested subject
|
NEST 0 subject: nested subject
|
||||||
mime_state: header_token: multipart / mumble
|
mime_state: header_token: multipart / mumble
|
||||||
mime_state: header_token: boundary = pqrs
|
mime_state: header_token: boundary = pqrs
|
||||||
mime_state: PUSH boundary pqrs
|
mime_state: PUSH boundary pqrs
|
||||||
NEST content-type: multipart/mumble; boundary(comment)="pqrs"
|
NEST 57 content-type: multipart/mumble; boundary(comment)="pqrs"
|
||||||
mime_state: header_token: base64
|
mime_state: header_token: base64
|
||||||
NEST content-transfer-encoding: base64
|
NEST 91 content-transfer-encoding: base64
|
||||||
mime_state: warning: invalid message/* or multipart/* encoding domain: base64
|
mime_state: warning: invalid message/* or multipart/* encoding domain: base64
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N pqrs prolog
|
BODY N 1 pqrs prolog
|
||||||
BODY N
|
BODY N 13
|
||||||
BODY N --pqrs
|
BODY N 14 --pqrs
|
||||||
MULT header: pqrs part 01
|
MULT 0 header: pqrs part 01
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N body pqrs part 01
|
BODY N 1 body pqrs part 01
|
||||||
BODY N
|
BODY N 19
|
||||||
BODY N --pqrs
|
BODY N 20 --pqrs
|
||||||
MULT header: pqrs part 02
|
MULT 0 header: pqrs part 02
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N body pqrs part 02
|
BODY N 1 body pqrs part 02
|
||||||
BODY N
|
BODY N 19
|
||||||
BODY N --bogus-boundary
|
BODY N 20 --bogus-boundary
|
||||||
BODY N header: wietse
|
BODY N 37 header: wietse
|
||||||
BODY N
|
BODY N 52
|
||||||
BODY N body asdasads
|
BODY N 53 body asdasads
|
||||||
BODY N
|
BODY N 67
|
||||||
mime_state: POP boundary pqrs
|
mime_state: POP boundary pqrs
|
||||||
BODY N --abcd ef
|
BODY N 68 --abcd ef
|
||||||
MULT header: abcdef part 02
|
MULT 0 header: abcdef part 02
|
||||||
BODY N
|
BODY N 0
|
||||||
BODY N body abcdef part 02
|
BODY N 1 body abcdef part 02
|
||||||
BODY N
|
BODY N 21
|
||||||
mime_state: POP boundary abcd ef
|
mime_state: POP boundary abcd ef
|
||||||
BODY N --abcd ef--
|
BODY N 0 --abcd ef--
|
||||||
BODY N
|
BODY N 12
|
||||||
BODY N epilog
|
BODY N 13 epilog
|
||||||
BODY END
|
BODY END
|
||||||
mime_state: warning: improper message/* or multipart/* encoding domain
|
mime_state: warning: improper message/* or multipart/* encoding domain
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
mime_state: warning: message header length exceeds safety limit: Header: ??garbage garbage garbage garbage garbage garbage garbage garbage garbage ??garbage garbage
|
mime_state: warning: message header length exceeds safety limit: Header: ??garbage garbage garbage garbage garbage garbage garbage garbage garbage ??garbage garbage
|
||||||
MAIN Header:
|
MAIN 0 Header:
|
||||||
garbage garbage garbage garbage garbage garbage garbage garbage garbage
|
garbage garbage garbage garbage garbage garbage garbage garbage garbage
|
||||||
garbage garbage garbage garbage garbage garbage garbage garbage garbage
|
garbage garbage garbage garbage garbage garbage garbage garbage garbage
|
||||||
garbage garbage garbage garbage garbage garbage garbage garbage garbage
|
garbage garbage garbage garbage garbage garbage garbage garbage garbage
|
||||||
|
@@ -288,7 +288,8 @@ int smtp_helo(SMTP_STATE *state)
|
|||||||
/* smtp_text_out - output one header/body record */
|
/* smtp_text_out - output one header/body record */
|
||||||
|
|
||||||
static void smtp_text_out(void *context, int rec_type,
|
static void smtp_text_out(void *context, int rec_type,
|
||||||
const char *text, int len)
|
const char *text, int len,
|
||||||
|
off_t unused_offset)
|
||||||
{
|
{
|
||||||
SMTP_STATE *state = (SMTP_STATE *) context;
|
SMTP_STATE *state = (SMTP_STATE *) context;
|
||||||
SMTP_SESSION *session = state->session;
|
SMTP_SESSION *session = state->session;
|
||||||
@@ -333,7 +334,8 @@ static void smtp_text_out(void *context, int rec_type,
|
|||||||
/* smtp_header_out - output one message header */
|
/* smtp_header_out - output one message header */
|
||||||
|
|
||||||
static void smtp_header_out(void *context, int unused_header_class,
|
static void smtp_header_out(void *context, int unused_header_class,
|
||||||
HEADER_OPTS *unused_info, VSTRING *buf)
|
HEADER_OPTS *unused_info, VSTRING *buf,
|
||||||
|
off_t offset)
|
||||||
{
|
{
|
||||||
char *start = vstring_str(buf);
|
char *start = vstring_str(buf);
|
||||||
char *line;
|
char *line;
|
||||||
@@ -342,7 +344,7 @@ static void smtp_header_out(void *context, int unused_header_class,
|
|||||||
for (line = start; line; line = next_line) {
|
for (line = start; line; line = next_line) {
|
||||||
next_line = split_at(line, '\n');
|
next_line = split_at(line, '\n');
|
||||||
smtp_text_out(context, REC_TYPE_NORM, line, next_line ?
|
smtp_text_out(context, REC_TYPE_NORM, line, next_line ?
|
||||||
next_line - line - 1 : strlen(line));
|
next_line - line - 1 : strlen(line), offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -799,7 +801,8 @@ int smtp_xfer(SMTP_STATE *state)
|
|||||||
if (downgrading == 0) {
|
if (downgrading == 0) {
|
||||||
smtp_text_out((void *) state, rec_type,
|
smtp_text_out((void *) state, rec_type,
|
||||||
vstring_str(state->scratch),
|
vstring_str(state->scratch),
|
||||||
VSTRING_LEN(state->scratch));
|
VSTRING_LEN(state->scratch),
|
||||||
|
(off_t) 0);
|
||||||
} else {
|
} else {
|
||||||
mime_errs =
|
mime_errs =
|
||||||
mime_state_update(state->mime_state, rec_type,
|
mime_state_update(state->mime_state, rec_type,
|
||||||
|
@@ -781,8 +781,7 @@ static int mail_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
|
|||||||
smtpd_chat_reply(state, "%s", err);
|
smtpd_chat_reply(state, "%s", err);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
if ((SMTPD_STAND_ALONE(state) || var_smtpd_delay_reject == 0)
|
if ((err = smtpd_check_size(state, state->msg_size)) != 0) {
|
||||||
&& (err = smtpd_check_size(state, state->msg_size)) != 0) {
|
|
||||||
smtpd_chat_reply(state, "%s", err);
|
smtpd_chat_reply(state, "%s", err);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
@@ -2983,8 +2983,7 @@ char *smtpd_check_rcpt(SMTPD_STATE *state, char *recipient)
|
|||||||
if (var_smtpd_delay_reject)
|
if (var_smtpd_delay_reject)
|
||||||
if ((err = smtpd_check_client(state)) != 0
|
if ((err = smtpd_check_client(state)) != 0
|
||||||
|| (err = smtpd_check_helo(state, state->helo_name)) != 0
|
|| (err = smtpd_check_helo(state, state->helo_name)) != 0
|
||||||
|| (err = smtpd_check_mail(state, state->sender)) != 0
|
|| (err = smtpd_check_mail(state, state->sender)) != 0)
|
||||||
|| (err = smtpd_check_size(state, state->msg_size)) != 0)
|
|
||||||
SMTPD_CHECK_RCPT_RETURN(err);
|
SMTPD_CHECK_RCPT_RETURN(err);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3165,6 +3164,7 @@ char *smtpd_check_size(SMTPD_STATE *state, off_t size)
|
|||||||
/*
|
/*
|
||||||
* Return here in case of serious trouble.
|
* Return here in case of serious trouble.
|
||||||
*/
|
*/
|
||||||
|
SMTPD_CHECK_RESET();
|
||||||
if ((status = setjmp(smtpd_check_buf)) != 0)
|
if ((status = setjmp(smtpd_check_buf)) != 0)
|
||||||
return (status == SMTPD_CHECK_REJECT ? STR(error_text) : 0);
|
return (status == SMTPD_CHECK_REJECT ? STR(error_text) : 0);
|
||||||
|
|
||||||
|
@@ -484,7 +484,7 @@ extern int initgroups(const char *, int);
|
|||||||
#define HAS_FLOCK_LOCK
|
#define HAS_FLOCK_LOCK
|
||||||
#define HAS_FCNTL_LOCK
|
#define HAS_FCNTL_LOCK
|
||||||
#define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
|
#define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
|
||||||
#define DEF_MAILBOX_LOCK "flock, dotlock"
|
#define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
|
||||||
#define HAS_FSYNC
|
#define HAS_FSYNC
|
||||||
#define HAS_DB
|
#define HAS_DB
|
||||||
#define DEF_DB_TYPE "hash"
|
#define DEF_DB_TYPE "hash"
|
||||||
@@ -512,7 +512,7 @@ extern int initgroups(const char *, int);
|
|||||||
#define HAS_FLOCK_LOCK
|
#define HAS_FLOCK_LOCK
|
||||||
#define HAS_FCNTL_LOCK
|
#define HAS_FCNTL_LOCK
|
||||||
#define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
|
#define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
|
||||||
#define DEF_MAILBOX_LOCK "flock, dotlock" /* unverified */
|
#define DEF_MAILBOX_LOCK "dotlock" /* verified RedHat 3.03 */
|
||||||
#define HAS_FSYNC
|
#define HAS_FSYNC
|
||||||
#define HAS_DB
|
#define HAS_DB
|
||||||
#define DEF_DB_TYPE "hash"
|
#define DEF_DB_TYPE "hash"
|
||||||
|
Reference in New Issue
Block a user