diff options
author | Wichert Akkerman <wakkerma@debian.org> | 1999-12-07 02:32:22 +0100 |
---|---|---|
committer | Andreas Beckmann <debian@abeckmann.de> | 2012-10-01 19:58:39 +0200 |
commit | 4e2c4cdcd62c4ab1d5e884e8afaa0bbe1b981e42 (patch) | |
tree | 3735b995048d3eccbfa7e5095e00d483c2549225 | |
parent | 7b9056b97dd10ee7b6b02f88a239f9f99cfa38f8 (diff) | |
download | sendmail-4e2c4cdcd62c4ab1d5e884e8afaa0bbe1b981e42.tar.gz |
Imported Debian patch 8.9.3-3slink1debian/8.9.3-3slink1
76 files changed, 1449 insertions, 8558 deletions
diff --git a/cf/m4/proto.m4 b/cf/m4/proto.m4 index 863b42c..2d7eb1d 100644 --- a/cf/m4/proto.m4 +++ b/cf/m4/proto.m4 @@ -1111,11 +1111,28 @@ R<$+> $* $#error $@ 5.7.1 $: $1', `dnl') ifdef(`_RBL_', `dnl # DNS based IP address spam lists R$* $: $&{client_addr} -R$-.$-.$-.$- $: $(host $4.$3.$2.$1._RBL_. $: OK $) -ROK $@ OK -R$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _RBL_"', +R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $) +R<?>OK $: OKSOFAR +R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _RBL_"', `dnl') +ifdef(`_ORBS_', `dnl +# ORBS project checks -- http://www.dorkslayers.com/orbs/ +R$* $: $&{client_addr} +R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._ORBS_. $: OK $) +R<?>OK $: OKSOFAR +R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://www.orbs.org/"', +`dnl') + +ifdef(`_ORCA_', `dnl +# ORCA project checks -- http://www.orca.bc.ca/dul/ +R$* $: $&{client_addr} +R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._ORCA_. $: OK $) +R<?>OK $: OKSOFAR +R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://www.orca.bc.ca/dul/"', +`dnl') + + ###################################################################### ### check_mail -- check SMTP ``MAIL FROM:'' command argument ###################################################################### diff --git a/contrib/passwd-to-alias.pl b/contrib/passwd-to-alias.pl index b571927..05a51b9 100755 --- a/contrib/passwd-to-alias.pl +++ b/contrib/passwd-to-alias.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/bin/perl # # Convert GECOS information in password files to alias syntax. diff --git a/debian/README.Debian b/debian/README.Debian deleted file mode 100644 index 6bbc72c..0000000 --- a/debian/README.Debian +++ /dev/null @@ -1,67 +0,0 @@ - -This Debian package includes an automatic configuration utility -`sendmailconfig' which can be run at any time to modify the current sendmail -configuration. - -Most mail-related configuration files are kept in the /etc/mail directory. - -Specialized configurations can be accomplished by editing the file -/etc/mail/sendmail.mc by hand and then running `sendmailconfig' to generate -and use the appropriate corresponding sendmail.cf file. Such configurations -can make use of the m4 configuration macros kept in the /usr/lib/sendmail.cf -directory. See also the other documentation in this directory. - -Finally, the file /etc/aliases holds a text representation of the current mail -aliases. See the aliases(5) man page for more information. If you edit this -file, be sure to run `newaliases' to update the corresponding binary database. - -The Debian sendmail package includes Miquel's patch: - - - PREVENT UNAUTHORIZED USE OF YOUR HOSTS AS SMTP RELAY - - Miquel van Smoorenburg <miquels@cistron.nl> 23-Aug-1997 - -The patch at the end of this file adds a new option to sendmail, -`W' or `TcpWrappers'. This makes it possible for precompiled distributions -to ship binaries compiled with -DTCPWRAPPERS without any unexpected -side-effects, since the option is off by default. - -However that's not the main reason for this patch. The new code also -adds a new map type to sendmail-8.8.7, called "ismx". That maps checks if -we (all names in class 'w') are an MX for a certain domain. If so, the -input hostname is replaced by our hostname, or TEMPFAIL if the DNS -lookup failed. - -This can be used together with the "check_rcpt" rule to deny relaying for -domains for which we are officially not an MX, without listing all domains -in a configuration file. This prevents that your host is being used as -a spam relay. However your host will still relay for hosts that it is -officially an MX for, without any extra administration. - -Ofcourse you can put a list of IP numbers/networks in the file "LocalIP" -to list hosts that may use your host as relay or smarthost. This is -useful for a machine that is used internally as SMTP relay, for e.g. -Eudora or Pegasus mail clients. - -The sendmail rules are: (LOCAL_* included for m4 file) - - -LOCAL_CONFIG -Kismx ismx -F{LocalIP} /etc/mail/LocalIP - -LOCAL_RULESETS -Scheck_rcpt -# first: get client addr -R$+ $: $(dequote "" $&{client_addr} $) $| $1 -R0 $| $* $@ ok no client addr: directly invoked -R$={LocalIP}$* $| $* $@ ok from here -# See if we are MX for this host -R$*<$+@$+>$* $: $1 < $2 @ $(ismx $3 $: NOMX $) > $4 -R$*<$+@NOMX>$* $#error $@ 5.7.1 $: 571 I don't relay for that address. -R$*<$+@TEMPFAIL>$* $#error $@ 4.5.1 $: "451 Cannot resolve. Retry later." - - -Note that if the MX lookup fails, a temporary rather than a fatal error -code is returned so that the message will not get lost. diff --git a/debian/aliases b/debian/aliases index fcfa35f..8e99427 100644 --- a/debian/aliases +++ b/debian/aliases @@ -6,6 +6,10 @@ # Required aliases postmaster: root -MAILER-DAEMON: root +MAILER-DAEMON: postmaster + +# Common aliases +abuse: postmaster +spam: postmaster # Other aliases diff --git a/debian/changelog b/debian/changelog index 4d9bfce..a0427a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,24 +1,348 @@ -sendmail (8.8.8-20) frozen; urgency=high, closes=23774 +sendmail (8.9.3-3slink1) stable; urgency=high - * Patch collect.c to prevent segfaults in mime8->mime7 (#23774) + * Non-maintainer upload by security team + * Patch to only allow root and trusted users update the aliases database + + -- Wichert Akkerman <wakkerma@debian.org> Tue, 7 Dec 1999 02:32:22 +0100 + +sendmail (8.9.3-3) stable unstable; urgency=low, closes=35357 + + * group writable home, .forward (closes: bug#35357) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Sun, 18 Apr 1999 21:00:00 -0500 + +sendmail (8.9.3-2) unstable; urgency=low, closes=33656 33602 33405 + + * sendmail.postrm not doing suidunregister (closes: bug#33656) + Well, actually it tried... it was just in the wrong spot + + * /etc/init.d/sendmail runs even after sendmail removed (closes: bug#33602) + Since policy calls for all MTAs to supply /usr/sbin/sendmail, and + /etc/mail/sendmail.cf was only deleted upon purge, I'm following + the suggestion of checking for /usr/doc/sendmail + + * add purgestat to /usr/doc/sendmail/examples/ip-up.d (closes: bug#33405) + This will allow all mail to be delivered - this is only an example + file, however, so you'll have to edit you're /etc/ppp/ip-up.d/sendmail + file yourself + + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 22 Feb 1999 13:14:21 -0500 + +sendmail (8.9.3-1) frozen unstable; urgency=high, closes=33152 32872 + + * Refit Debian changes + -- debian/site.config.m4 -- new defines for DOS fix + -- debian/debian.m4 -- new defines for DOS fix, bump version + -- debian/sendmail.postinst -- bump version to coerce sendmailconfig run + + * New upstream version - bugfix only (closes: bug#33152) + -- New version of DOS patch + -- preserve order of MIME headers, correcting PGP signature problems + + * FHS & Debian policy 5.5: move /bin/rmail to /sbin/rmail (closes: bug#32872) + sigh... This time, create a symlink so both exist + -- debian/rules + + -- Richard A Nelson (Rick) <cowboy@debian.org> Wed, 10 Feb 1999 13:14:21 -0500 + +sendmail (8.9.2-4) unstable; urgency=low + + * debian/site.config.m4 + -- link with -ldb2 (sigh) why did glibc let me get away with + this obvious error? glibc-2.1 doesn't... + + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 25 Jan 1999 15:00:00 -0500 + +sendmail (8.9.2-3) frozen unstable; urgency=high + + * Yet another DOS attack from BugTraq -- patch from sendmail.org + -- debian/site.config.m4 -- + -- debian/debian.m4 -- + -- src/conf.h -- + -- src/collect.c -- + -- src/sendmail.h -- + -- src/readcf.c -- + -- src/conf.c -- + -- cf/m4/proto.m4 -- + + * Correct orca (ORBS) address to relays.orbs.org + -- debian/orbs.m4 -- relays.orbs.org + -- cf/m4/proto.m4 -- http://www.orbs.org + + -- Richard A Nelson (Rick) <cowboy@debian.org> Thu, 21 Jan 1999 15:00:00 -0500 + +sendmail (8.9.2-2) frozen unstable; urgency=high + + * Re upload to make both frozen and unstable. + The DOS update and nullclient (open relay) problems are severe + enough that I, and others, think this should make frozen. + + -- Richard A Nelson (Rick) <cowboy@debian.org> Wed, 20 Jan 1999 14:00:00 -0500 + +sendmail (8.9.2-1) unstable; urgency=high, closes=30292 + + * New upstream source, bug fixes and a DOS fix + -- syslog filling/DOS (#30292) + -- libdb2 (Berkeley DB 2.6.4 API change) + -- upstream inclusion of proto.m4 patches already in Debian + -- upstream fixes for FHS issue wrt /etc/mail + + * Update debproto.m4 for 8.9.2 + + * Drop Debian support of nullclient - it turns one into an unchecked relay! + current nullclients are converted to smarthosts with no loss of function- + ality. + -- sendmailconfig + + * See changelog for the unreleased 8.9.1-16 changes contained herein + + -- Richard A Nelson (Rick) <cowboy@debian.org> Tue, 05 Jan 1999 12:00:00 -0500 +sendmail (8.9.1-16) unstable; urgency=low, closes=27355 28410 28931 29420 30447 + + * Correct HACK(nodns) (#30447) + + * Compile with new libc6 to remove versioned depends (#28931) + + * add feature(orca): Dial User List + at the request of Paul Haggart <ph@bsfh.org> + + * Correct README.Debian reference (#29613) + /usr/lib/sendmail.cf -> /usr/share/sendmail.cf + + * Correct include library path for libdb2 + + * Update debproto.m4 for 8.9.1a, add proper diversion tags to + sendmailconfig + + * Add MapInUnsafeDirPath to DontBlameSendmail (#27355) + so access.db may be in group writable directory + + * FHS: Move FEATURE(xxx) databases from /etc/ to /etc/mail/: (#29420) + bitdomain.m4, domaintable.m4, genericstable.m4, mailertable.m4, + uucpdomain.m4, virtusertable.m4 + -- IMPORTANT -- + sendmailconfig can't automagically move all this for you, you'll + have to move the datasets and any update script by hand + + * make the postinst actually wait for enter (#28410) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 30 Nov 1998 12:00:00 -0500 + +sendmail (8.9.1-15) unstable; urgency=high, closes=28410 + + * The change to libdb2 requires that *all* sendmail databases be + rebuilt before sendmail restarts. A warning is now issued to + inform the user of this change. (#28410) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Fri, 23 Oct 1998 12:00:00 -0500 + +sendmail (8.9.1-14) unstable; urgency=low, closes=28279 - -- Richard Nelson <cowboy@debian.org> Tue, 23 Jun 1998 10:00:00 -0500 + * sendmail: adds multiple Content-Transfer-Encoding headers (#28279) + patch sent by Miquel van Smoorenburg <miquels@cistron.nl> -sendmail (8.8.8-19) frozen; urgency=high, closes=23000 + -- Richard A Nelson (Rick) <cowboy@debian.org> Tue, 20 Oct 1998 18:00:00 -0500 + +sendmail (8.9.1-13) unstable; urgency=low + + * add feature(orbs): Open Relay Blocking System + at the request of Paul Haggart <ph@bsfh.org> + + * patch for sendmail stalls on 2.0.x kernels + from Ben Gertzfield <che@debian.org> + + * Build with libdb2 instead of libdb. This chanage is mentioned as being + important in the sendmail documentation, and has been requested by both + i386 and sparc folks. + + -- Richard A Nelson (Rick) <cowboy@debian.org> Tue, 20 Oct 1998 12:00:00 -0500 - * sensible-mda now ignores non-suid MDAs (#23000) +sendmail (8.9.1-12) unstable; urgency=high, closes=28226 - -- Richard Nelson <cowboy@debian.org> Tue, 16 Jun 1998 15:00:00 -0500 + * erf... remove sendmail.real from sendmail.postinst (#28226) + I have to remember to test on the machine w/o socks as well ;-{ + ('twould be nice to have the source in a neutral CVS repository + so I could access from home and work) -sendmail (8.8.8-18) frozen; urgency=high - * Repackaged to apply only to frozen, and bump the severity - because this problem (22747) has sufficient consequences - to warrant a change in hamm - only the alias file is changed, - and it will impact primarily *NEW* installations of sendmail. + -- Richard A Nelson (Rick) <cowboy@debian.org> Tue, 20 Oct 1998 10:00:00 -0500 + +sendmail (8.9.1-11) unstable; urgency=high + + * Correct /etc/init.d/sendmail + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 19 Oct 1998 11:00:00 -0500 + +sendmail (8.9.1-10) unstable; urgency=high, closes=28034 27106 26855 27218 + + * Remove socks wrapper - need a wrapper program, not script as sendmail -F + doesn't work going from the socks wrapper, the runsocks wrapper, and then + finally to sendmail (#28034 and also #27106) + + * sendmail wrapper requires bash for exec -a (#26855) + + * sendmail wrapper was suid-root (#27218) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Sun, 18 Oct 1998 12:00:00 -0500 + +sendmail (8.9.1-9) unstable; urgency=high, closes=26803 + + * correct the socks wrapper for non-socks case - I pulled + the wrong copy (#26803) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Thu, 17 Sep 1998 12:00:00 -0500 + +sendmail (8.9.1-8) unstable; urgency=high, closes=26801 + + * sigh... restore rmail to /usr/bin, even though its presence + therein is a very longstanding bug (#26801) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Thu, 17 Sep 1998 11:00:00 -0500 + +sendmail (8.9.1-7) unstable; urgency=high, closes=26610 26399 26106 + + * Remove dontinitgroups (#26610) + This change updates debian.m4 so you'll have to run sendmailconfig + to actually get the update enabled. + + * update /etc/hosts.allow automagically (#26399) + sendmailconfig checks for sendmail in /etc/hosts.allow and + adds a leading sendmail: all line if needed + + * sendmailconfig is now tolerant of warnings (#26106) + + * socks5 support - /usr/sbin/sendmail is a wrapper that calls + /usr/sbin/sendmail.real if needed when runsocks is executable + + * change checksendmail to a+x + + * more cleanup of debian/rules + + * FHS changes: + move /usr/lib/sendmail.cf/ to /usr/share/sendmail.cf/ + move /usr/lib/sendmail.hf to /usr/share/misc/sendmail.hf + update sendmailconf, debian.m4 + + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 14 Sep 1998 10:00:00 -0500 + +sendmail (8.9.1-6) unstable; urgency=high + + * Sigh... I will not leave extraneous blanks in a .m4 file + + -- Richard A Nelson (Rick) <cowboy@debian.org> Wed, 14 Aug 1998 10:00:00 -0500 + +sendmail (8.9.1-5) unstable; urgency=high, closes=25639 + + * Apply sendmail 8.9.1a security patch to protect the various MUAs + This patch updates debian.m4 so you'll have to run sendmailconfig + to actually get the protection enabled. + + * Apply two proto.m4 patches from Claus: + - bug wrt overriding the RBL + - bug wrt prevention of unauthorized relay attempts + + * Remove -Y from sensible-mda's invocation of procmail (#25639) + + * sensible-mda now checks for /etc/procmailrc/<user> and if so, + calls procmail with the -m option... This allows one to deliver mail + to pseudo users without having to create entries in /etc/aliases + + -- Richard A Nelson (Rick) <cowboy@debian.org> Thu, 13 Aug 1998 10:00:00 -0500 + +sendmail (8.9.1-4) unstable; urgency=med, closes=24456 + + * Correct sendmail.cf path in /usr/sbin/etrn (#24456) + also in /usr/sbin/checkmail + + -- Richard A Nelson (Rick) <cowboy@debian.org> Thu, 06 Aug 1998 17:00:00 -0500 + +sendmail (8.9.1-3) unstable; urgency=high + + * Cleanup debian/rules a bit... + + * Correct /bin /sbin problem created with the reinstall of rmail + + -- Richard A Nelson (Rick) <cowboy@debian.org> Wed, 08 Jun 1998 12:00:00 -0500 + +sendmail (8.9.1-2) unstable; urgency=high + + * change /usr/doc/changelog to be RELEASE_NOTES + + * add rmail back... + + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 06 Jun 1998 12:00:00 -0500 + +sendmail (8.9.1-1) unstable; urgency=low, closes=11132 + + * new upstream source + + * /etc/init.d/sendmail and runq now support SOCKS5 if updated... + I personally run socks via /etc/ld.so.preload so that everything + is automagically socksified. + + * Only add MASQUERADE_AS in sendmailconfig if needed (#11132) + + * Correct define(`confMAX_DAEMON_CHILDREN', `30s')dnl (remove the s) + + -- Richard A Nelson (Rick) <cowboy@debian.org> Mon, 06 Jun 1998 10:00:00 -0500 + +sendmail (8.9.0-5) unstable; urgency=high, closes=23870 + + * gack... when I stopped linking /etc/mail/sendmail.cf, I + missed the test in /etc/init.d/sendmail. (#23870) + + -- Richard Nelson <cowboy@debian.org> Thu, 25 Jun 1998 10:00:00 -0500 + +sendmail (8.9.0-4) unstable; urgency=high, closes=23551 + + * Patch collect.c to prevent segfaults in mime8->mime7 (#23774) + + * sensible-mda now ignores non-suid MDAs (#23000) + + * postinst checks for curent release (#23551) + also - it no longer ln -sf /etc/mail/sendmail.cf /etc/sendmail.cf + + * majordomo wants include files in group writeable dirs + + -- Richard Nelson <cowboy@debian.org> Tue, 16 Jun 1998 15:00:00 -0500 + +sendmail (8.9.0-3) unstable; urgency=low + + * Fix copyright file + + -- Richard Nelson <cowboy@debian.org> Sat, 13 Jun 1998 23:00:00 -0500 + +sendmail (8.9.0-2) unstable; urgency=high, closes=23170 23137 23392 23138 + + * Point smrsh back to /usr/lib/sm.bin (#23170) + + * Document TCP wrapper support in README.Debian (is this enough?) (#23137) + Also document that one should *really* read RELEASE_NOTES + + * don't preformat man pages (#23392) + + * forgot the /usr/lib/sendmail link (pine,uucp) (#23165) + + * include pre 8.9.0 changelog (#23138) + -- Richard Nelson <cowboy@debian.org> Sat, 13 Jun 1998 12:00:00 -0500 -sendmail (8.8.8-17) unstable frozen; urgency=low, closes=22747 +sendmail (8.9.0-1) unstable; urgency=low + + * first release of 8.9.0. This drop is very beta in that I've not + done anything with the control files other than allowing group + writable directories for .forward. I've also not done anything + with the rulesets to improve spam control. + + Basically, this release is ONLY for those who want to play with + the new version and are experienced enough to modify it themselves. + + I'm thinking of integrating the following into the next release, + please let me know what you think: + http://www.unix-ag.uni-hannover.de/soft/check_local/ + + -- Richard Nelson <cowboy@debian.org> Sat, 23 May 1998 12:00:00 -0500 + +sendmail (8.8.8-17) frozen; urgency=high, closes=22747 * add MAILER-DAEMON alias (#22747) This is a SEVERE problem in that absence of this alias may cause mailing loops upon @@ -287,5 +611,5 @@ sendmail (8.8.6-1) unstable; urgency=low Local variables: mode: debian-changelog -add-log-mailing-address: "johnie@debian.org" +add-log-mailing-address: "cowboy@debian.org" End: diff --git a/debian/check.tar.uue b/debian/check.tar.uue deleted file mode 100644 index a813f89..0000000 --- a/debian/check.tar.uue +++ /dev/null @@ -1,1005 +0,0 @@ -begin 600 check.tar -M4D5!1$U%+F-H96-K```````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````"`@(#8T-"``("`@,C,P(``@(#$W-3`@`"`@("`@(#$R,30R -M("`V,S0T,S(R,#8W("`@-C$S,0`@```````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````````!4:&ES(&9I;&4@8V]N=&%I;G,@<V5V97)A;"`B -M2$%#2R)S(&9O<B!S96YD;6%I;"`X+C@@=&\@<F5J96-T(&4M;6%I;',*9G)O -M;2!S<&%M;65R<R!A;F0@=&\@<')E=F5N="!T:&4@86)U<V4@;V8@>6]U<B!M -M86-H:6YE(&%S(&$@;6%I;`IR96QA>2X*"D%N(&5X<&QA;F%T:6]N(&-A;B!B -M92!F;W5N9"!A=#H*/%523#H@:'1T<#HO+W=W=RYI;F9O<FUA=&EK+G5N:2UK -M:65L+F1E+R4W16-A+V5M86EL+V-H96-K+FAT;6P@/@H*5&AE($A!0TMS(&%R -M93H*8VAE8VM?;6%I;"YM-`IC:&5C:U]M86EL,BYM-`IC:&5C:U]M86EL,RYM -M-`IC:&5C:U]R8W!T+FTT"F-H96-K7W)C<'0S+FTT"F-H96-K7W)C<'0T+FTT -M"F-H96-K7W)E;&%Y+FTT"F-H96-K7W)E;&%Y,RYM-`IS<&%M9&]M<RYM-`IS -M<&%M;65R<RYM-`IU<V5?:7`N;30*=7-E7VYA;65S+FTT"G5S95]R96QA>71O -M+FTT"@IA;F0@87)E('5S960@87,@9F]L;&]W<SH*,6$I(&-H96-K7VUA:6P@ -M*'5S97,@<&QA:6X@9FEL97,@9F]R(&UA=&-H:6YG*3H*2$%#2RAS<&%M;65R -M<RD*2$%#2RAS<&%M9&]M<RD*0F]T:"!T86ME(&%N(&]P=&EO;F%L(&%R9W5M -M96YT("AT:&4@9FEL92!T;R!U<V4I+@I4:&4@9&5F875L="!F:6QE;F%M97,@ -M87)E(&QI<W1E9"!B96QO=RX*"DA!0TLH8VAE8VM?;6%I;"D*"C%B*2!C:&5C -M:U]M86EL,B`H=7-E<R!D871A8F%S97,@9F]R(&UA=&-H:6YG*3H*2$%#2RAC -M:&5C:U]M86EL,BD*"C)A*2!C:&5C:U]R8W!T-#H*2$%#2RAU<V5?:7`I"DA! -M0TLH=7-E7VYA;65S*0I(04-+*'5S95]R96QA>71O*0H*2$%#2RAC:&5C:U]R -M8W!T-"D*"C)B*2!C:&5C:U]R8W!T("AO;&0@=F5R<VEO;BP@=7-E(&-H96-K -M7W)C<'0T*3H*2$%#2RAU<V5?:7`I"DA!0TLH=7-E7VYA;65S*0I(04-+*'5S -M95]R96QA>71O*0H*2$%#2RAC:&5C:U]R8W!T*0H*5&AE(&9I<G-T(&]N97,@ -M;6%Y(&AA=F4@82!P87)A;65T97(@=&\@9&5F:6YE('1H92!N86UE(&]F('1H -M92!F:6QE('1O"F)E('5S960N"@HS*2!C:&5C:U]R96QA>2P@8VAE8VM?<F5L -M87DS"E1H97-E('=O<FL@;VYL>2!I9B!Y;W4@:&%V92!A('!A=&-H("AS964@ -M86)O=F4@55),*2!O<B`X+C@N-B`H;W(@8F5T=&5R*2X*2$%#2RAC:&5C:U]R -M96QA>2D*;W(*2$%#2RAC:&5C:U]R96QA>3,I"@H*4V]M92!M;W)E(&5X<&QA -M;F%T:6]N<SH*"C%A*0I)9B!Y;W4@=V%N="!T;R!U<V4@8VAE8VM?;6%I;"P@ -M9&\@=&AE(&9O;&QO=VEN9SH@4'5T"@I(04-+*'-P86UM97)S*0I(04-+*'-P -M86UD;VUS*0I(04-+*&-H96-K7VUA:6PI"@II;B!Y;W5R("YM8R!F:6QE+B!0 -M=70@861D<F5S<V5S(&]F('=E;&PM:VYO=VX@<W!A;6UE<G,@*&4M;6%I;"!A -M9&1R97-S97,L"F1O;6%I;G,I(&EN('1H92!A<'!R;W!R:6%T92!F:6QE<R!; -M9&5F875L=%TZ"G-P86UM97)S"5LO971C+VUA:6PO4W!A;6UE<ET)"G-P86UD -M;VUA:6YS"5LO971C+VUA:6PO4W!A;41O;6%I;G-="0H*,6(I"DEF('EO=2!W -M86YT('1O('5S92!C:&5C:U]M86EL,BP@9&\@=&AE(&9O;&QO=VEN9SH@4'5T -M"@I(04-+*&-H96-K7VUA:6PR*0I;5&AI<R!H87,@86QS;R!A;B!O<'1I;VYA -M;"!A<F=U;65N="P@=&AE(&1E9F%U;'0@:7,@9VEV96X@8F5L;W<N70H*:6X@ -M>6]U<B`N;6,@9FEL92X@4'5T(&%D9')E<W-E<R!O9B!W96QL+6MN;W=N('-P -M86UM97)S("AE+6UA:6P@861D<F5S<V5S+`ID;VUA:6YS*2!I;B!T:&4@87!P -M<F]P<FEA=&4@9&%T86)A<V4@6V1E9F%U;'1=.@IJ=6YK"5MD8FT@+V5T8R]M -M86EL+VIU;FM="0H*5&AE(&9O<FUA="!I<SH*:G5N:RYD;VUA:6X@2E5.2PIS -M<&%M;65R0&%D9')E<W,N9&]M86EN(%-004U-15(*0W)E871E('1H92!D871A -M8F%S92`H;6%N(&UA:V5M87`I(&EN('1H92!C:&]S96X@9F]R;6%T+@H*4%,Z -M(%EO=2!C86X@86-T:79A=&4@=&AE(')E=F5R<V4@25`@;&]O:W5P(&%N9"!T -M:&4*=F%L:61I='D@8VAE8VL@;V8@=&AE($923TT@861D<F5S<R!B>0ID969I -M;F4H8%])4%],3T]+55!?)RPQ*61N;`ID969I;F4H8%]$3E-604Q)1%\G+#$I -M9&YL"G)E<W!E8W1I=F5L>2X*"C%C*0I4:&ES(&ES(&$@=F%R:6%N="!O9B!C -M:&5C:U]M86EL,BP@=VAE<F4@=&AE(%)(4R!O9B!T:&4@;6%P"FES('5S960@ -M=&\@<W!E8VEF>2!A;B!E<G)O<B!C;V1E("AW:&EC:"!I<R!O;FQY('5S960@ -M:6X@=&AE"G1E>'0I(&%N9"!A;B!E<G)O<B!T97AT+@I)9B!Y;W4@=V%N="!T -M;R!U<V4@8VAE8VM?;6%I;#,L(&1O('1H92!F;VQL;W=I;F<Z(%!U=`H*2$%# -M2RAC:&5C:U]M86EL,RD*6U1H:7,@:&%S(&%L<V\@86X@;W!T:6]N86P@87)G -M=6UE;G0L('1H92!D969A=6QT(&ES(&=I=F5N(&)E;&]W+ET*"FEN('EO=7(@ -M+FUC(&9I;&4N(%!U="!A9&1R97-S97,@;V8@=V5L;"UK;F]W;B!S<&%M;65R -M<R`H92UM86EL(&%D9')E<W-E<RP*9&]M86EN<RD@:6X@=&AE(&%P<')O<')I -M871E(&1A=&%B87-E(%MD969A=6QT73H*:G5N:PE;9&)M("UA0$I53DL@+V5T -M8R]M86EL+VIU;FM="0HH:68@>6]U('5S92!A;F]T:&5R(&1A=&%B87-E(&9O -M<FUA="!O<B!A;F]T:&5R(&9I;&4L(&UA:V4@<W5R92!Y;W4*<W!E8VEF>2!T -M:&4@;W!T:6]N("UA0$I53DL@(2D*"E1H92!F;W)M870@:7,Z"FIU;FLN9&]M -M86EN(")%<G)O<BU#;V1E($5R<F]R+51E>'0B"G-P86UM97)`861D<F5S<RYD -M;VUA:6X@(D5R<F]R+4-O9&4@17)R;W(M5&5X="(*0W)E871E('1H92!D871A -M8F%S92`H;6%N(&UA:V5M87`I(&EN('1H92!C:&]S96X@9F]R;6%T+@H*17AA -M;7!L93H*8WEB97)P<F]M;RYC;VT@(C4W,2!3;W)R>2P@4W!A;69O<F0L(&YO -M(&4M;6%I;"!F<F]M('EO=7(@<&QA8V4N(@IH;VYE>4!S=V5E=&EE<RYC;VT@ -M(C4W,2!(;VYE>2P@>6]U)W)E(&$@<W!A;6UE<BP@9V\@87=A>2XB"@I04SH@ -M66]U(&-A;B!A8W1I=F%T92!T:&4@<F5V97)S92!)4"!L;V]K=7`@86YD('1H -M90IV86QI9&ET>2!C:&5C:R!O9B!T:&4@1E)/32!A9&1R97-S(&)Y"F1E9FEN -M92A@7TE07TQ/3TM54%\G+#$I9&YL"F1E9FEN92A@7T1.4U9!3$E$7R<L,2ED -M;FP*<F5S<&5C=&EV96QY+@H*,F$I"DEF('EO=2!W86YT('1O('5S92!C:&5C -M:U]R8W!T+"!D;R!T:&4@9F]L;&]W:6YG.B!$96-I9&4@=VAE=&AE<B!Y;W4* -M=V%N('1O('5S92!T:&4@8VAE8VL@9F]R(&QO8V%L(&UA8VAI;F5S(&)Y($E0 -M(&YU;6)E<B`H=7-E7VEP*2!O<B!B>0IN86UE("AU<V5?;F%M97,I+B!.97AT -M+"!D96-I9&4@=VAE=&AE<B!Y;W4@=V%N="!A;'-O(&%L;&]W(')E;&%Y('1O -M"G-E=F5R86P@;6%C:&EN97,@:6X@861D:71I;VX@=&\@=&AO<V4@>6]U(&%C -M8V5P="!A<R!L;V-A;"`H8VQA<W,@=RDN"D1E<&5N9&EN9R!O;B!Y;W5R('-E -M;&5C=&EO;BP@<'5T('-O;64@;V8@=&AE(&9I<G-T('1H<F5E($A!0TMS(&EN -M=&\*>6]U<B`N;6,@9FEL92P@86YD(&%L=V%Y<R!U<V4@=&AE(&QA<W0@;VYE -M+@I(04-+*'5S95]I<"D*2$%#2RAU<V5?;F%M97,I"DA!0TLH=7-E7W)E;&%Y -M=&\I"D%L;"!T86ME(&%N(&]P=&EO;F%L(&%R9W5M96YT("AT:&4@9FEL92!T -M;R!U<V4I+@I4:&4@9&5F875L="!F:6QE;F%M97,@87)E(&QI<W1E9"!B96QO -M=RX*"DA!0TLH8VAE8VM?<F-P=#0I"@I0=70@=&AE(&%P<')O<')I871E('9A -M;'5E<R!I;B!T:&4@9FEL97,Z"G5S95]I<`D)6R]E=&,O;6%I;"],;V-A;$E0 -M70D*=7-E7VYA;65S"5LO971C+VUA:6PO3&]C86Q.86UE<UT)"G5S95]R96QA -M>71O"5LO971C+VUA:6PO4F5L87E4;UT)"@HQ.3DW+3`S+3$V.B!C:&5C:U]R -M8W!T-"!C86X@;F]W(&UA:V4@=7-E(&]F('5S95]I<"!A;F0@=7-E7VYA;65S -M+@I)="!R97!L86-E<R!C:&5C:U]R8W!T,RP@=VAI8V@@:7,@<W1I;&P@879A -M:6QA8FQE(&EF('1H97)E(&ES"F$@<')O8FQE;2!W:71H('1H92!N97<@=F5R -M<VEO;BX*"C-A*0I)9B!Y;W4@=V%N="!T;R!U<V4@8VAE8VM?<F5L87DL(&1O -M('1H92!F;VQL;W=I;F<Z(%!U=`H*2$%#2RAC:&5C:U]R96QA>2D*6U1H:7,@ -M:&%S(&%L<V\@86X@;W!T:6]N86P@87)G=6UE;G0L('1H92!D969A=6QT(&ES -M(&=I=F5N(&)E;&]W+ET*"FEN('EO=7(@+FUC(&9I;&4N(%!U="!T:&4@25`@ -M;G5M8F5R<R!O9B!W96QL+6MN;W=N('-P86UM97)S(`II;B!T:&4@87!P<F]P -M<FEA=&4@9&%T86)A<V4@6V1E9F%U;'1=.@IJ=6YK"5MD8FT@+V5T8R]M86EL -M+VIU;FM="0H*5&AE(&9O<FUA="!I<SH*1"Y8+EDN6B!)4`I#+E@N62!)4`I" -M+E@@25`*02!)4`HH9G5L;"!A9&1R97-S97,L(&-L87-S($,L($(L(&]R($$@ -M;F5T<RD*0W)E871E('1H92!D871A8F%S92`H;6%N(&UA:V5M87`I(&EN('1H -M92!C:&]S96X@9F]R;6%T+@H*,V(I"DEF('EO=2!W86YT('1O('5S92!C:&5C -M:U]R96QA>3,L(&1O('1H92!F;VQL;W=I;F<Z(%!U=`H*2$%#2RAC:&5C:U]R -M96QA>3,I"EM4:&ES(&AA<R!A;'-O(&%N(&]P=&EO;F%L(&%R9W5M96YT+"!T -M:&4@9&5F875L="!I<R!G:79E;B!B96QO=RY="@II;B!Y;W5R("YM8R!F:6QE -M+B!0=70@=&AE($E0(&YU;6)E<G,@;V8@=V5L;"UK;F]W;B!S<&%M;65R<R`* -M:6X@=&AE(&%P<')O<')I871E(&1A=&%B87-E(%MD969A=6QT73H*:G5N:PE; -M9&)M("UA0$I53DL@+V5T8R]M86EL+VIU;FM="0HH:68@>6]U('5S92!A;F]T -M:&5R(&1A=&%B87-E(&9O<FUA="!O<B!A;F]T:&5R(&9I;&4L(&UA:V4@<W5R -M92!Y;W4*<W!E8VEF>2!T:&4@;W!T:6]N("UA0$I53DL@(2D*"E1H92!F;W)M -M870@:7,Z"D0N6"Y9+EH@(D5R<F]R('1E>'0B"D,N6"Y9(")%<G)O<B!T97AT -M(@I"+E@@(D5R<F]R('1E>'0B"D$@(D5R<F]R('1E>'0B"BAF=6QL(&%D9')E -M<W-E<RP@8VQA<W,@0RP@0BP@;W(@02!N971S*0I#<F5A=&4@=&AE(&1A=&%B -M87-E("AM86X@;6%K96UA<"D@:6X@=&AE(&-H;W-E;B!F;W)M870N"@I4:&ES -M(&ES('1H92!S86UE(&1A=&%B87-E(&%S('5S960@9F]R(&-H96-K7VUA:6PS -M+`IJ=7-T('=I=&@@=&AE(&%D9&ET:6]N(&]F($E0(&YU;6)E<G,N"@I#;VYC -M;'5S:6]N.@H*36%K92!S=7)E('EO=2!U;F1E<G-T86YD('=H870@>6]U(&1O -M(&%N9"!Y;W4@=&5S="!T:&ES('-T=69F"F)E9F]R92!Y;W4@=7-E(&ET(&]N -M(&$@<')O9'5C=&EO;B!M86-H:6YE(0I)(&1O;B=T(&=U87)A;G1E92!F;W(@ -M86YY=&AI;F<A"DEF('EO=2!H879E(&%N>2!S=6=G97-T:6]N<RP@8V]M;65N -M=',L(&5N:&%N8V5M96YT<RP*<&QE87-E(&QE="!M92!K;F]W+@H*0VQA=7,@ -M07-S;6%N;@D\8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD93X*3&%S="!U<&1A -M=&4Z(#$Y.3<M,#8M,#$*('=E;&PM:VYO=VX@<W!A;6UE<G,@*&4M;6%I;"!A -M9&1R97-S97,L"F1O;6%I;G,I(&EN('1H92!A<'!R;W!R:6%T92!D871A8F%S -M92!;9&5F875L=%TZ"FIU;FL)6V1B;2`O971C+VUA:6PO:G5N:UT)"@I4:&4@ -M9F]R;6%T(&ES.@IJ=6YK+F1O;6%I;B!*54Y+"G-P86UM97)`861D<F5S<RYD -M;VUA:6X@4U!!34U%4@I#<F5A=&4@=&AE(&1A=&%B87-E("AM86X@;6%K96UA -M<"D@:6X@=&AE(&-H;W-E;B!F;W)M870N"@I04SH@66]U(&-A;B!A8W1I=F%T -M92!T:&4@<F5V97)S92!)4"!L;V]K=7`@86YD('1H90IV86QI9&ET>2!C:&5C -M:R!O9B!T:&4@1E)/32!A9&1R97-S(&)Y"F1E9FEN92A@7TE07TQ/3TM54%\G -M+#$I9&YL"F1E9FEN92A@7T1.4U9!3$E$7R<L,2ED;FP*<F5S<&5C=&EV96QY -M+@H*,6,I"E1H:7,@:7,@82!V87)I86YT:&%C:R]C:&5C:U]M86EL+FTT```` -M```````````````````````````````````````````````````````````` -M`````````````````````````````````````````````"`@(#8T-"``("`@ -M,C,P(``@(#$W-3`@`"`@("`@("`T,C0R("`V,S0U,C8V-S8S("`@-S0R,0`@ -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````````````````````````````````````````!D:79E -M<G0H+3$I"B,*(R!#;W!Y<FEG:'0@*&,I(#$Y.38@0VQA=7,@07-S;6%N;B`\ -M8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD93X*(PHC($EN('-H;W)T.B!Y;W4@ -M8V%N(&1O('=H871E=F5R('EO=2!W86YT('=I=&@@=&AI<RP@8G5T(&1O;B=T -M(&)L86UE(&UE(0HC"B,@5$A)4R!33T945T%212!)4R!04D]6241%1"!"62!4 -M2$4@05542$]2($%.1"!#3TY44DE"551/4E,@8&!!4R!)4R<G($%.1`HC($%. -M62!%6%!215-3($]2($E-4$Q)140@5T%24D%.5$E%4RP@24Y#3%5$24Y'+"!" -M550@3D]4($Q)34E4140@5$\L(%1(10HC($E-4$Q)140@5T%24D%.5$E%4R!/ -M1B!-15)#2$%.5$%"24Q)5%D@04Y$($9)5$Y%4U,@1D]2($$@4$%25$E#54Q! -M4B!055)03U-%"B,@05)%($1)4T-,04E-140N("!)3B!.3R!%5D5.5"!32$%, -M3"!42$4@05542$]2($]2($-/3E1224)55$]24R!"12!,24%"3$4*(R!&3U(@ -M04Y9($1)4D5#5"P@24Y$25)%0U0L($E.0TE$14Y404PL(%-014-)04PL($58 -M14U03$%262P@3U(@0T].4T51545.5$E!3`HC($1!34%'15,@*$E.0TQ51$E. -M1RP@0E54($Y/5"!,24U)5$5$(%1/+"!04D]#55)%345.5"!/1B!354)35$E4 -M551%($=/3T13"B,@3U(@4T525DE#15,[($Q/4U,@3T8@55-%+"!$051!+"!/ -M4B!04D]&2513.R!/4B!"55-)3D534R!)3E1%4E)54%1)3TXI"B,@2$]7159% -M4B!#0553140@04Y$($].($%.62!42$5/4ED@3T8@3$E!0DE,2519+"!72$54 -M2$52($E.($-/3E1204-4+"!35%))0U0*(R!,24%"24Q)5%DL($]2(%1/4E0@ -M*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]42$525TE312D@05))4TE.1R!) -M3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@3T8@5$A)4R!33T945T%212P@ -M159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-324))3$E462!/1@HC(%-50T@@ -M1$%-04=%+@HC"F1I=F5R="@P*0I615)324].240H8$`H(REC:&5C:U]M86EL -M+FTT"3$N,2`H0VQA=7,@07-S;6%N;BD@,3DY-RTP,RTP.2<I"@ID:79E<G0H -M,BD*3$]#04Q?4E5,15-%5%,*4V-H96-K7VUA:6P*9&5F:6YE*&!#3TU-14Y4 -M)RP@:69D968H8%]34$%-34524U\G+"!@)RP@8",G*2ED;FP*(R!N;R!M86EL -M<R!F<F]M('-P86UM97)S("AU<V5R0&1O;2YA:6XI"D-/34U%3E1@)U(\)#U[ -M4W!A;6UE<GT^"20C97)R;W(@)$`@-2XW+C$@)#H@(C4W,2!792!D;VXG="!A -M8V-E<'0@:G5N:R!M86EL+B(@"6=O(&%W87D*0T]-345.5&`G4CPD/7M3<&%M -M;65R?2X^"20C97)R;W(@)$`@-2XW+C$@)#H@(C4W,2!792!D;VXG="!A8V-E -M<'0@:G5N:R!M86EL+B(@"6=O(&%W87D*0T]-345.5&`G4B0]>U-P86UM97)] -M"20C97)R;W(@)$`@-2XW+C$@)#H@(C4W,2!792!D;VXG="!A8V-E<'0@:G5N -M:R!M86EL+B(@"6=O(&%W87D*0T]-345.5&`G4B0]>U-P86UM97)]+@DD(V5R -M<F]R("1`(#4N-RXQ("0Z("(U-S$@5V4@9&]N)W0@86-C97!T(&IU;FL@;6%I -M;"XB(`EG;R!A=V%Y"G5N9&5F:6YE*&!#3TU-14Y4)RED;FP*4B0J"0DD.B`D -M/C,@)#$)"0D)"0EC86YO;FEF>0I2)"T)"21`(&]K"0D)"0D)"6QO8V%L(&AO -M<W0*9&5F:6YE*&!#3TU-14Y4)RP@:69D968H8%]34$%-1$]-4U\G+"!@)RP@ -M8",G*2ED;FP*(R!N;R!S<&%M(&1O;6%I;G,*0T]-345.5&`G4B0J/$`D*B0] -M>U-P86U$;VUA:6YS?2X^)"H))"-E<G)O<B`D0"`U+C<N,2`D.B`B-3<Q(%1H -M:7,@9&]M86EN(&ES(&)A;FYE9"XB(`EG;R!A=V%Y"D-/34U%3E1@)U(D*CQ` -M)"HD/7M3<&%M1&]M86EN<WT^)"H))"-E<G)O<B`D0"`U+C<N,2`D.B`B-3<Q -M(%1H:7,@9&]M86EN(&ES(&)A;FYE9"XB(`EG;R!A=V%Y"G5N9&5F:6YE*&!# -M3TU-14Y4)RED;FP*(R!I9B!Y;W4@96YA8FQE('1H92!L87-T(')U;&4L('EO -M=2!C86X@9&ES86)L92!T:&ES(&]N92X*(R!H;W-T('=I=&AO=70@82`N(&EN -M('1H92!&44A.(#\*4B0J/$`D+3XD*@DD(V5R<F]R("1`(#4N,2XX("0Z(#4Q -M."!I;G9A;&ED(&AO<W0@;F%M92`D,@D);F\@<F5A;"!N86UE"B,@;&]O:W5P -M($E0(&%D9')E<W,@*')E=F5R<V4@;6%P<&EN9R!A=F%I;&%B;&4_*0HC(%(D -M*CQ`6R0K73XD*@DD.B`D,2`\($`@)%L@6R`D,B!=("1=(#X@)#,*(R!N;R!$ -M3E,@96YT<GD_('1H:7,@:7,@9&%N9V5R;W5S(0HC(%(D*CQ`)"HD?E`^)"H) -M)"-E<G)O<B`D0"`T+C$N."`D.B`T,3@@=6YR97-O;'9A8FQE(&AO<W0@;F%M -M92`D,B0S+"!C:&5C:R!Y;W5R(&-O;F9I9W5R871I;VXN"0ID:79E<G0H,"D* -M"D]7159%4B!#0553140@04Y$($].($%.62!42$5/4ED@3T8@3$E!0DE,2519 -M+"!72$542$52($E.($-/3E1204-4+"!35%))0U0*(R!,24%"24Q)5%DL($]2 -M(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]42$525TE312D@05)) -M4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@3T8@5$A)4R!33T94 -M5T%212P@159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-324))3$E462!/1@HC -M(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)324].240H8$`H(REC:&5C -M:U]M86EL+FTT"3$N,2`H0VQA=7,@07-S;6%N;BD@,3DY-RTP,RTP.2<I"@ID -M:79E<G0H,BD*3$]#04Q?4E5,15-%5%,*4V-H96-K7VUA:6P*:&%C:R]C:&5C -M:U]M86EL,BYM-``````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`"`@(#8T-"``("`@,C,P(``@(#$W-3`@`"`@("`@("`V,3$S("`V,S8S-#,V -M,S,S("`@-S0W,@`@```````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````!D:79E<G0H+3$I"B,*(R!#;W!Y<FEG:'0@*&,I(#$Y.38L,3DY -M-R!#;&%U<R!!<W-M86YN(#QC84!I;F9O<FUA=&EK+G5N:2UK:65L+F1E/@HC -M"B,@26X@<VAO<G0Z('EO=2!C86X@9&\@=VAA=&5V97(@>6]U('=A;G0@=VET -M:"!T:&ES+"!B=70@9&]N)W0@8FQA;64@;64A"B,*(R!42$E3(%-/1E1705)% -M($E3(%!23U9)1$5$($)9(%1(12!!551(3U(@04Y$($-/3E1224)55$]24R!@ -M8$%3($E3)R<@04Y$"B,@04Y9($584%)%4U,@3U(@24U03$E%1"!705)204Y4 -M2453+"!)3D-,541)3D<L($)55"!.3U0@3$E-251%1"!43RP@5$A%"B,@24U0 -M3$E%1"!705)204Y42453($]&($U%4D-(04Y404))3$E462!!3D0@1DE43D53 -M4R!&3U(@02!005)424-53$%2(%!54E!/4T4*(R!!4D4@1$E30TQ!24U%1"X@ -M($E.($Y/($5614Y4(%-(04Q,(%1(12!!551(3U(@3U(@0T].5%))0E543U)3 -M($)%($Q)04),10HC($9/4B!!3ED@1$E214-4+"!)3D1)4D5#5"P@24Y#241% -M3E1!3"P@4U!%0TE!3"P@15A%35!,05)9+"!/4B!#3TY315%514Y424%,"B,@ -M1$%-04=%4R`H24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%!23T-5 -M4D5-14Y4($]&(%-50E-425155$4@1T]/1%,*(R!/4B!315)624-%4SL@3$]3 -M4R!/1B!54T4L($1!5$$L($]2(%!23T9)5%,[($]2($)54TE.15-3($E.5$52 -M4E505$E/3BD*(R!(3U=%5D52($-!55-%1"!!3D0@3TX@04Y9(%1(14]262!/ -M1B!,24%"24Q)5%DL(%=(151(15(@24X@0T].5%)!0U0L(%-44DE#5`HC($Q) -M04))3$E462P@3U(@5$]25"`H24Y#3%5$24Y'($Y%1TQ)1T5.0T4@3U(@3U1( -M15)725-%*2!!4DE324Y'($E.($%.62!705D*(R!/550@3T8@5$A%(%5312!/ -M1B!42$E3(%-/1E1705)%+"!%5D5.($E&($%$5DE3140@3T8@5$A%(%!/4U-) -M0DE,2519($]&"B,@4U5#2"!$04U!1T4N"B,*9&EV97)T*#`I"E9%4E-)3TY) -M1"A@0"@C*6-H96-K7VUA:6PN;30),BXQ("A#;&%U<R!!<W-M86YN*2`Q.3DW -M+3`S+3,P)RD*4%532$1)5D525"@V*0II9F1E9BA@7TI53DM?1$5&24Y%1%]2 -M14Q!62<L+`HC(&9I;&4@8V]N=&%I;FEN9R!F=6QL(&4M;6%I;"!A9&1R97-S -M97,@;V8@<W!A;6UE<G,@*&9O<B!C:&5C:U]M86EL*3H*(R!S<&%M;65R0&%D -M9')E<W,N9&]M86EN(%-004U-15(*(R!O<B!J=6YK(&1O;6%I;G,@*&9O<B!C -M:&5C:U]M86EL+"!C:&5C:U]R96QA>2DZ"B,@:G5N:RYD;VUA:6X@2E5.2PHC -M(&]R($E0(&%D9')E<W-E<R`H9F]R(&-H96-K7W)E;&%Y*3H*(R!$+E@N62Y: -M($E0"B,@0RY8+ED@25`*(R!"+E@@25`*(R!!($E0"DMJ=6YK(&EF96QS92A? -M05)'7RP@8"<L(&!D8FT@+V5T8R]M86EL+VIU;FLG+"!@7T%21U\G*0ID969I -M;F4H8%]*54Y+7T1%1DE.141?34%)3"<L,2D**0II9F1E9BA@7T%#0T505%]3 -M3TU%7R<L"DMA8V-E<'0@9&)M("]E=&,O;6%I;"]A8V-E<'0I"E!/4$1)5D52 -M5`H*9&EV97)T*#(I"DQ/0T%,7U)53$531513"B,@8VAE8VL@9F]R(&IU;FL@ -M9&]M86EN+W-P86UM97)S"E-J=6YK"B,@;&]O:W5P(&1O;6%I;B!I;B!D871A -M8F%S90I2)"H\0"0K/B0J"0DD.B0Q/$`D*&IU;FL@)#(D*3XD,PHC(&5X:7-T -M<S\@<F5T=7)N"E(D*CQ`2E5.2SXD*@D))$`D,3Q`2E5.2SXD,@HC(&QO;VMU -M<"!A9&1R97-S(&EN(&1A=&%B87-E"E(D*CQ`)"L^)"H)"20Z)#$\0"0H:G5N -M:R`D,4`D,B`D.B0R)"D^)#,*(R!E>&ES=',_(')E='5R;@I2)"H\0%-004U- -M15(^)"H)"21`)#$\0%-004U-15(^)#(*(R!M=B!O;F4@<W5B9&]M86EN(&EN -M(&9R;VYT+"!T<GD@86=A:6X*4B0J/$`D+2XD+2XD*SXD*@DD.B`D,CQ`/B`D -M/FIU;FL@)#$\0"0S+B0T/B0U"B,@=6YD;R!D86UA9V4*4B0J/$`^)"H\0"0K -M/B0J"0DD,CQ`)#$N)#,^)#0*"E-C:&5C:U]M86EL"B,@9&]N)W0@8VAE8VL@ -M=&AE<V4*4CPD*D`D/7<^"21`(&]K"0D)<VAO<G1C=70*(R!I9&5A(&9R;VT@ -M4W1E=F5N(%-C:'5L='H*4CP^"0DD.B`\)&X@0"`D*&1E<75O=&4@(B(@)"9[ -M8VQI96YT7VYA;65]("0I(#X*:69D968H8%]!0T-%4%1?4T]-15\G+`HC(&%C -M8V5P="!S;VUE('-T=7!I9"!S='5F9@I2/"0J0"0K/@DD.CPD,4`D*&%C8V5P -M="`D,B`D.B0R)"D^"E(\)"I`3TL^"21`(&]K*0I2)"H)"20Z("0^,R`D,0D) -M"6-A;F]N:69Y"E(D+0D))$`@;VL)"0D);&]C86P@:&]S=`HC(&YO(&AO<W0@ -M=VET:&]U="!A("X@:6X@=&AE($912$X@/PI2)"H\0"0M/B0J"20C97)R;W(@ -M)$`@-2XQ+C@@)#H@-3$X(&EN=F%L:60@:&]S="!N86UE("0R+"!C:&5C:R!Y -M;W5R(&-O;F9I9W5R871I;VXN"G5N9&5F:6YE*&!#3TU-14Y4)RED;FP*9&5F -M:6YE*&!#3TU-14Y4)RP@:69D968H8%])4%],3T]+55!?)RP@8"<L(&`C)RDI -M9&YL"B,@;&]O:W5P($E0(&%D9')E<W,@*')E=F5R<V4@;6%P<&EN9R!A=F%I -M;&%B;&4_*0I#3TU-14Y48"=2)"H\0%LD+2XD+2XD+2XD+5T^)"H))#H@)#$@ -M/"!`("1;(%L@)#(N)#,N)#0N)#4@72`D72`^("0V(`IU;F1E9FEN92A@0T]- -M345.5"<I9&YL"B,@8V]P>2!T:&4@<F5S=6QT(&]F('1H92!L;V]K=7`*4B0J -M"0DD.B0Q("1\("0Q"B,@;F]W(')E;6]V92!T:&4@9&]T"E(D*B`D?"`D*CQ` -M)"HN/B0J"20Z("0Q("1\("0R/$`D,SXD-`HC(&%N9"!C:&5C:R!T:&4@9&%T -M86)A<V4*4B0J("1\("0J/$`D*CXD*@DD.B`D,2`D?"`D/FIU;FL@)#(\0"0S -M/@I2)"H@)'P@)"H\0"0J2E5.2SXD*@DD(V5R<F]R("1`(#4N-RXQ("0Z("(U -M-S$@5&AI<R!D;VUA:6X@:7,@8F%N;F5D+"!C;VYT86-T('EO=7(@;&]C86P@ -M861M:6XN(B`)9V\@87=A>0I2)"H@)'P@)"H\0"0J4U!!34U%4CXD*@DD(V5R -M<F]R("1`(#4N-RXQ("0Z("(U-S$@66]U(&%R92!B86YN960L(&-O;G1A8W0@ -M>6]U<B!L;V-A;"!A9&UI;BXB(`EG;R!A=V%Y"B,@<F5S=&]R92!O<FEG:6YA -M;"!V86QU92`H869T97(@8V%N;VYI8V%L:7IA=&EO;B!B>2!R=6QE<V5T(#,I -M"E(D*B`D?"`D*@D))#H@)#$*=6YD969I;F4H8$-/34U%3E0G*61N;`ID969I -M;F4H8$-/34U%3E0G+"!I9F1E9BA@7T1.4U9!3$E$7R<L(&`G+"!@(R<I*61N -M;`HC('1H:7,@:7,@9&%N9V5R;W5S(2!N;R!R96%L(&YA;64*0T]-345.5&`G -M4B0J/$`D*B1^4#XD*@DD(V5R<F]R("1`(#0N,2XX("0Z(#0Q."!U;G)E<V]L -M=F%B;&4@:&]S="!N86UE("0R)#,L(&-H96-K('EO=7(@<V5T=7`N"F1I=F5R -M="@P*0I354)35$E4551%($=/3T13"B,@3U(@4T525DE#15,[($Q/4U,@3T8@ -M55-%+"!$051!+"!/4B!04D]&2513.R!/4B!"55-)3D534R!)3E1%4E)54%1) -M3TXI"B,@2$]7159%4B!#0553140@04Y$($].($%.62!42$5/4ED@3T8@3$E! -M0DE,2519+"!72$542$52($E.($-/3E1204-4+"!35%))0U0*(R!,24%"24Q) -M5%DL($]2(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]42$525TE3 -M12D@05))4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@3T8@5$A) -M4R!33T945T%212P@159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-324))3$E4 -M62!/1@HC(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)324].240H8$`H -M(REC:&5C:U]M86EL+FTT"3(N,2`H0VQA=7,@07-S;6%N;BD@,3DY-RTP,RTS -M,"<I"E!54TA$259%4E0H-BD*:69D968H8%]*54Y+7T1%1DE.16AA8VLO8VAE -M8VM?;6%I;#,N;30````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```@("`V-#0@`"`@(#(S,"``("`Q-S4P(``@("`@("`@-C0V-2`@-C,V,S0S -M-S(U,R`@(#<U,#<`(``````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````9&EV97)T*"TQ*0HC"B,@0V]P>7)I9VAT("AC*2`Q.3DV+#$Y -M.3<@0VQA=7,@07-S;6%N;B`\8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD93X* -M(PHC($EN('-H;W)T.B!Y;W4@8V%N(&1O('=H871E=F5R('EO=2!W86YT('=I -M=&@@=&AI<RP@8G5T(&1O;B=T(&)L86UE(&UE(0HC"B,@5$A)4R!33T945T%2 -M12!)4R!04D]6241%1"!"62!42$4@05542$]2($%.1"!#3TY44DE"551/4E,@ -M8&!!4R!)4R<G($%.1`HC($%.62!%6%!215-3($]2($E-4$Q)140@5T%24D%. -M5$E%4RP@24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%1(10HC($E- -M4$Q)140@5T%24D%.5$E%4R!/1B!-15)#2$%.5$%"24Q)5%D@04Y$($9)5$Y% -M4U,@1D]2($$@4$%25$E#54Q!4B!055)03U-%"B,@05)%($1)4T-,04E-140N -M("!)3B!.3R!%5D5.5"!32$%,3"!42$4@05542$]2($]2($-/3E1224)55$]2 -M4R!"12!,24%"3$4*(R!&3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L($E.0TE$ -M14Y404PL(%-014-)04PL($5814U03$%262P@3U(@0T].4T51545.5$E!3`HC -M($1!34%'15,@*$E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!04D]# -M55)%345.5"!/1B!354)35$E4551%($=/3T13"B,@3U(@4T525DE#15,[($Q/ -M4U,@3T8@55-%+"!$051!+"!/4B!04D]&2513.R!/4B!"55-)3D534R!)3E1% -M4E)54%1)3TXI"B,@2$]7159%4B!#0553140@04Y$($].($%.62!42$5/4ED@ -M3T8@3$E!0DE,2519+"!72$542$52($E.($-/3E1204-4+"!35%))0U0*(R!, -M24%"24Q)5%DL($]2(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]4 -M2$525TE312D@05))4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@ -M3T8@5$A)4R!33T945T%212P@159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-3 -M24))3$E462!/1@HC(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)324]. -M240H8$`H(REC:&5C:U]M86EL+FTT"3,N,2`H0VQA=7,@07-S;6%N;BD@,3DY -M-RTP-RTP-B<I"E!54TA$259%4E0H-BD*:69D968H8%]*54Y+7T1%1DE.141? -M4D5,05DG+"P*(R!F:6QE(&-O;G1A:6YI;F<@9G5L;"!E+6UA:6P@861D<F5S -M<V5S(&]F('-P86UM97)S("AF;W(@8VAE8VM?;6%I;"DZ"B,@<W!A;6UE<D!A -M9&1R97-S+F1O;6%I;B`B17)R;W(M0V]D92!%<G)O<BU497AT(@HC(&]R(&IU -M;FL@9&]M86EN<R`H9F]R(&-H96-K7VUA:6PL(&-H96-K7W)E;&%Y*3H*(R!J -M=6YK+F1O;6%I;B`@(D5R<F]R+4-O9&4@17)R;W(M5&5X="(*(R!O<B!)4"!A -M9&1R97-S97,@*&9O<B!C:&5C:U]R96QA>2DZ"B,@1"Y8+EDN6B`B17)R;W(M -M0V]D92!%<G)O<BU497AT(@HC($,N6"Y9(")%<G)O<BU#;V1E($5R<F]R+51E -M>'0B"B,@0BY8(")%<G)O<BU#;V1E($5R<F]R+51E>'0B"B,@02`B17)R;W(M -M0V]D92!%<G)O<BU497AT(@I+:G5N:R!I9F5L<V4H7T%21U\L(&`G+"!@9&)M -M("UA0$I53DL@+V5T8R]M86EL+VIU;FLG+"!@7T%21U\G*0ID969I;F4H8%]* -M54Y+7T1%1DE.141?34%)3"<L,2D**0II9F1E9BA@7T%#0T505%]33TU%7R<L -M"DMA8V-E<'0@9&)M("UO("]E=&,O;6%I;"]A8V-E<'0I"E!/4$1)5D525`H* -M9&EV97)T*#(I"DQ/0T%,7U)53$531513"B,@8VAE8VL@9F]R(&IU;FL@9&]M -M86EN+W-P86UM97)S"E-J=6YK"B,@;&]O:W5P(&1O;6%I;B!I;B!D871A8F%S -M90I2)"H\0"0K/@D))#HD,3Q`)"AJ=6YK("0R)"D^"B,@97AI<W1S/R!R971U -M<FX*4B0J/$`D*D!*54Y+/@D))$`D,3Q`)#)`2E5.2SX*(R!L;V]K=7`@861D -M<F5S<R!I;B!D871A8F%S90I2)"H\0"0K/@D))#HD,3Q`)"AJ=6YK("0Q0"0R -M("0Z)#(D*3X*(R!E>&ES=',_(')E='5R;@I2)"H\0"0J0$I53DL^"0DD0"0Q -M/$`D,D!*54Y+/@HC(')E;6]V92!O;F4@<W5B9&]M86EN+"!T<GD@86=A:6X* -M4B0J/$`D+2XD+2XD*SX)"20Z("0^:G5N:R`D,3Q`)#,N)#0^"@I38VAE8VM? -M;6%I;`HC(&1O;B=T(&-H96-K('1H97-E"E(\)"I`)#UW/@DD0"!O:PD)"7-H -M;W)T8W5T"B,@:61E82!F<F]M(%-T979E;B!38VAU;'1Z"E(\/@D))#H@/"1N -M($`@)"AD97%U;W1E("(B("0F>V-L:65N=%]N86UE?2`D*2`^"FEF9&5F*&!? -M04-#15!47U-/345?)RP*(R!A8V-E<'0@<V]M92!S='5P:60@<W1U9F8*4CPD -M*D`D*SX))#H\)#%`)"AA8V-E<'0@)#(@)#HD,B0I/@I2/"0J0$]+/@DD0"!O -M:RD*:69D968H8%]#2$5#2U]&4D]-7R<L"B,@;6%R:R!A9&1R97-S"E(D*@D) -M)#H\0#XD,0HC(&ES('1H92!S>6YT87@@;VL@*'5S97,@/#X@86YD(&YO(&1O -M="!A="!T:&4@96YD/RD*4CQ`/CPD*D`D*B1^+CX))#H\)#%`)#(D,SX*(R!M -M87)K('-T:6QL('1H97)E.B!E<G)O<BXN+@I2/$`^)"H)"20C97)R;W(@)$`@ -M-2XQ+C@@)#H@-3$X(&EL;&5G86P@34%)3"!&4D]-("0Q+`HC(&EF('=E(&1O -M;B=T('1O('1H92!A8F]V93H@<F5M;W9E(&%T(&QE87-T('1H92!D;W0N+BX* -M4CPD*D`D*BX^"3PD,21`,CXI"E(D*@D))#H@)#XS("0Q"0D)8V%N;VYI9GD* -M4B0M"0DD0"!O:PD)"0EL;V-A;"!H;W-T"B,@;F\@:&]S="!W:71H;W5T(&$@ -M+B!I;B!T:&4@1E%(3B`_"E(D*CQ`)"T^)"H))"-E<G)O<B`D0"`U+C$N."`D -M.B`U,3@@:6YV86QI9"!H;W-T(&YA;64@)#(L(&-H96-K('EO=7(@8V]N9FEG -M=7)A=&EO;BX*=6YD969I;F4H8$-/34U%3E0G*61N;`ID969I;F4H8$-/34U% -M3E0G+"!I9F1E9BA@7TE07TQ/3TM54%\G+"!@)RP@8",G*2ED;FP*(R!L;V]K -M=7`@25`@861D<F5S<R`H<F5V97)S92!M87!P:6YG(&%V86EL86)L93\I"D-/ -M34U%3E1@)U(D*CQ`6R0M+B0M+B0M+B0M73XD*@DD.B`D,2`\($`@)%L@6R`D -M,BXD,RXD-"XD-2!=("1=(#X@)#8@"B,@8V]P>2!T:&4@<F5S=6QT(&]F('1H -M92!L;V]K=7`*4B0J"0DD.B0Q("1\("0Q"B,@;F]W(')E;6]V92!T:&4@9&]T -M"E(D*B`D?"`D*CQ`)"HN/B0J"20Z("0Q("1\("0R/$`D,SXD-`HC(&%N9"!C -M:&5C:R!T:&4@9&%T86)A<V4*4B0J("1\("0J/$`D*CXD*@DD.B`D,2`D?"`D -M/FIU;FL@)#(\0"0S/@HC(&UA=&-H.B!R971U<FX@9VEV96X@97)R;W(@8V]D -M92`H<FAS(&]F(&UA<"D*4B0J("1\("0J/$`D*D!*54Y+/B0J"20C97)R;W(@ -M)$`@-2XW+C$@)#H@)#,*(R!R97-T;W)E(&]R:6=I;F%L('9A;'5E("AA9G1E -M<B!C86YO;FEC86QI>F%T:6]N(&)Y(')U;&5S970@,RD*4B0J("1\("0J"0DD -M.B`D,0IU;F1E9FEN92A@0T]-345.5"<I9&YL"F1E9FEN92A@0T]-345.5"<L -M(&EF9&5F*&!?1$Y35D%,241?)RP@8"<L(&`C)RDI9&YL"B,@=&AI<R!I<R!D -M86YG97)O=7,A(&YO(')E86P@;F%M90I#3TU-14Y48"=2)"H\0"0J)'Y0/B0J -M"20C97)R;W(@)$`@-"XQ+C@@)#H@-#$X('5N<F5S;VQV86)L92!H;W-T(&YA -M;64@)#(D,RP@8VAE8VL@>6]U<B!S971U<"X*=6YD969I;F4H8$-/34U%3E0G -M*61N;`ID:79E<G0H,"D*04Y9(%=!60HC($]55"!/1B!42$4@55-%($]&(%1( -M25,@4T]&5%=!4D4L($5614X@248@041625-%1"!/1B!42$4@4$]34TE"24Q) -M5%D@3T8*(R!354-(($1!34%'12X*(PID:79E<G0H,"D*5D524TE/3DE$*&!` -M*",I8VAE8VM?;6%I;"YM-`DS+C$@*$-L875S($%S<VUA;FXI(#$Y.3<M,#<M -M,#8G*0I055-(1$E615)4*#8I"FEF9&5F*&!?2E5.2U]$149)3D5H86-K+V-H -M96-K7W)C<'0N;30````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````("`@-C0T(``@("`R,S`@`"`@,3<U,"``("`@("`@(#,U,#,@(#8S-#4R -M-C4S-3,@("`W-#0P`"`````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````&1I=F5R="@M,2D*(PHC($-O<'ER:6=H="`H8RD@,3DY-B!# -M;&%U<R!!<W-M86YN(#QC84!I;F9O<FUA=&EK+G5N:2UK:65L+F1E/@HC"B,@ -M26X@<VAO<G0Z('EO=2!C86X@9&\@=VAA=&5V97(@>6]U('=A;G0@=VET:"!T -M:&ES+"!B=70@9&]N)W0@8FQA;64@;64A"B,*(R!42$E3(%-/1E1705)%($E3 -M(%!23U9)1$5$($)9(%1(12!!551(3U(@04Y$($-/3E1224)55$]24R!@8$%3 -M($E3)R<@04Y$"B,@04Y9($584%)%4U,@3U(@24U03$E%1"!705)204Y42453 -M+"!)3D-,541)3D<L($)55"!.3U0@3$E-251%1"!43RP@5$A%"B,@24U03$E% -M1"!705)204Y42453($]&($U%4D-(04Y404))3$E462!!3D0@1DE43D534R!& -M3U(@02!005)424-53$%2(%!54E!/4T4*(R!!4D4@1$E30TQ!24U%1"X@($E. -M($Y/($5614Y4(%-(04Q,(%1(12!!551(3U(@3U(@0T].5%))0E543U)3($)% -M($Q)04),10HC($9/4B!!3ED@1$E214-4+"!)3D1)4D5#5"P@24Y#241%3E1! -M3"P@4U!%0TE!3"P@15A%35!,05)9+"!/4B!#3TY315%514Y424%,"B,@1$%- -M04=%4R`H24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%!23T-54D5- -M14Y4($]&(%-50E-425155$4@1T]/1%,*(R!/4B!315)624-%4SL@3$]34R!/ -M1B!54T4L($1!5$$L($]2(%!23T9)5%,[($]2($)54TE.15-3($E.5$524E50 -M5$E/3BD*(R!(3U=%5D52($-!55-%1"!!3D0@3TX@04Y9(%1(14]262!/1B!, -M24%"24Q)5%DL(%=(151(15(@24X@0T].5%)!0U0L(%-44DE#5`HC($Q)04)) -M3$E462P@3U(@5$]25"`H24Y#3%5$24Y'($Y%1TQ)1T5.0T4@3U(@3U1(15)7 -M25-%*2!!4DE324Y'($E.($%.62!705D*(R!/550@3T8@5$A%(%5312!/1B!4 -M2$E3(%-/1E1705)%+"!%5D5.($E&($%$5DE3140@3T8@5$A%(%!/4U-)0DE, -M2519($]&"B,@4U5#2"!$04U!1T4N"B,*9&EV97)T*#`I"E9%4E-)3TY)1"A@ -M0"@C*6-H96-K7W)C<'0N;30),2XP("A#;&%U<R!!<W-M86YN*2`Q.3DV+3$Q -M+3(S)RD*"@ID:79E<G0H,BD*3$]#04Q?4E5,15-%5%,*4V-H96-K7W)C<'0* -M4B0K"0D))#H@)#XS("0Q"0D)"6-A;F]N:69Y"E(D*PD)"20Z("0H9&5Q=6]T -M92`D,2`D*0I2)"T)"0DD0"!O:PD)"0D)=&\@:&5R90I2)"H@)2`D*@D))#H@ -M<F5L87D@871T96UP=`I2)"H@0"`D*B`\($`@)"HN/@DD.B!R96QA>2!A='1E -M;7!T"E(D*R`\($`@)#UW+CX)"21`(&]K"0D)"0ET;R!H97)E"FEF9&5F*&!? -M55-%7U)%3$%95$]?)RQ@)RQ@(R<I9&YL"E(D*R`\($`@)"HD/7M296QA>51O -M?2X^"21`(&]K"0EA;&QO=R!R96QA>2!T;R!T:&5R90ID969I;F4H8$-/34U% -M3E0G+"!I9F1E9BA@7U5315])4%\G+"!@)RP@8",G*2ED;FP*0T]-345.5&`G -M4B0K"0D))#H@)"AD97%U;W1E("(B("0F>V-L:65N=%]A9&1R?2`D*0I#3TU- -M14Y48"=2,`D)"21`(&]K"0EC;&EE;G1?861D<B!I<R`P(&9O<B!S96YD;6%I -M;"`M8G,*0T]-345.5&`G4B0]>TQO8V%L25!]+B0J"0DD0"!O:PD)"0D)9G)O -M;2!H97)E"G5N9&5F:6YE*&!#3TU-14Y4)RED;FP*9&5F:6YE*&!#3TU-14Y4 -M)RP@:69D968H8%]54T5?3D%-15-?)RP@8"<L(&`C)RDI9&YL"D-/34U%3E1@ -M)U(D*PD)"20Z("0H9&5Q=6]T92`B(B`D)GMC;&EE;G1?;F%M97T@)"D*0T]- -M345.5&`G4B0M"0D))$`@;VL)"0D)"69R;VT@:&5R90I#3TU-14Y48"=2)"HD -M/7M,;V-A;$YA;65S?0D))$`@;VL)"0D)"69R;VT@:&5R90IU;F1E9FEN92A@ -M0T]-345.5"<I9&YL"FEF9&5F*&!?55-%7U)#4%1?)RP@8"<L(&!E<G)P<FEN -M="A@2$%#2R`B8VAE8VM?<F-P="(@<F5Q=6ER97,@=7-E7VEP(&]R('5S95]N -M86UE<R<I)RD*4B0J"0D))"-E<G)O<B`D0"`U+C<N,2`D.B`B-3<Q('=E(&1O -M(&YO="!S=7!P;W)T(')E;&%Y:6YG(@H*('-U8F1O;6%I;BP@=')Y(&%G86EN -M"E(D*CQ`)"TN)"TN)"L^"0DD.B`D/FIU;FL@)#$\0"0S+B0T/@H*4V-H96-K -M7VUA:6P*(R!D;VXG="!C:&5C:R!T:&5S90I2/"0J0"0]=SX))$`@;VL)"0ES -M:&]R=&-U=`HC(&ED96$@9G)O;2!3=&5V96X@4V-H=6QT>@I2/#X)"20Z(#PD -M;B!`("0H9&5Q=6]T92`B(B`D)GMC;&EE;G1?;F%M97T@:&%C:R]C:&5C:U]R -M8W!T,BYM-``````````````````````````````````````````````````` -M`````````````````````````````````````````````````````````"`@ -M(#8T-"``("`@,C,P(``@(#$W-3`@`"`@("`@("`T,#(Q("`V,S0U,C8U,S8T -M("`@-S4R,``@```````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````!D:79E<G0H+3$I"B,*(R!#;W!Y<FEG:'0@*&,I(#$Y.3<@0VQA=7,@ -M07-S;6%N;B`\8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD93X*(PHC($EN('-H -M;W)T.B!Y;W4@8V%N(&1O('=H871E=F5R('EO=2!W86YT('=I=&@@=&AI<RP@ -M8G5T(&1O;B=T(&)L86UE(&UE(0HC"B,@5$A)4R!33T945T%212!)4R!04D]6 -M241%1"!"62!42$4@05542$]2($%.1"!#3TY44DE"551/4E,@8&!!4R!)4R<G -M($%.1`HC($%.62!%6%!215-3($]2($E-4$Q)140@5T%24D%.5$E%4RP@24Y# -M3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%1(10HC($E-4$Q)140@5T%2 -M4D%.5$E%4R!/1B!-15)#2$%.5$%"24Q)5%D@04Y$($9)5$Y%4U,@1D]2($$@ -M4$%25$E#54Q!4B!055)03U-%"B,@05)%($1)4T-,04E-140N("!)3B!.3R!% -M5D5.5"!32$%,3"!42$4@05542$]2($]2($-/3E1224)55$]24R!"12!,24%" -M3$4*(R!&3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L($E.0TE$14Y404PL(%-0 -M14-)04PL($5814U03$%262P@3U(@0T].4T51545.5$E!3`HC($1!34%'15,@ -M*$E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!04D]#55)%345.5"!/ -M1B!354)35$E4551%($=/3T13"B,@3U(@4T525DE#15,[($Q/4U,@3T8@55-% -M+"!$051!+"!/4B!04D]&2513.R!/4B!"55-)3D534R!)3E1%4E)54%1)3TXI -M"B,@2$]7159%4B!#0553140@04Y$($].($%.62!42$5/4ED@3T8@3$E!0DE, -M2519+"!72$542$52($E.($-/3E1204-4+"!35%))0U0*(R!,24%"24Q)5%DL -M($]2(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]42$525TE312D@ -M05))4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@3T8@5$A)4R!3 -M3T945T%212P@159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-324))3$E462!/ -M1@HC(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)324].240H8$`H(REC -M:&5C:U]R8W!T,BYM-`DR+C`@*$-L875S($%S<VUA;FXI(#$Y.3<M,#,M,#$G -M*0H*9&EV97)T*#(I"DQ/0T%,7U)53$531513"E-C:&5C:U]R8W!T"G5N9&5F -M:6YE*&!#3TU-14Y4)RED;FP*9&5F:6YE*&!#3TU-14Y4)RP@:69D968H8%]5 -M4T5?3D%-15-?)RP@8"<L(&`C)RDI9&YL"D-/34U%3E1@)R,@9FER<W0Z(&=E -M="!C;&EE;G0@;F%M90I#3TU-14Y48"=2)"L)"0DD.B`D*&1E<75O=&4@(B(@ -M)"9[8VQI96YT7VYA;65]("0I("1\("0Q"D-/34U%3E1@)U(@)'P@)"H)"0DD -M0"!O:PD)"6YO(&-L:65N="!N86UE.B!D:7)E8W1L>2!I;G9O:V5D"D-/34U% -M3E1@)R-2)"T@)'P@)"H)"21`(&]K"0D)9F]R('1H;W-E('=I=&AO=70@9G5L -M;"!$3E,N+BX*0T]-345.5&`G4B0J)#UW("1\("0J"0DD0"!O:PD)"69R;VT@ -M:&5R90II9F1E9BA@7U5315]214Q!651/7R<L8"<L8",G*61N;`I2)"HD/7M2 -M96QA>51O?2`D?"`D*@D))$`@;VL)"69R;VT@86QL;W=E9"!S>7-T96T*=6YD -M969I;F4H8$-/34U%3E0G*61N;`ID969I;F4H8$-/34U%3E0G+"!I9F1E9BA@ -M7U5315])4%\G+"!@)RP@8",G*2ED;FP*0T]-345.5&`G(R!F:7)S=#H@9V5T -M(&-L:65N="!A9&1R97-S"D-/34U%3E1@)U(D*PD)"20Z("0H9&5Q=6]T92`B -M(B`D)GMC;&EE;G1?861D<GT@)"D@)'P@)#$*0T]-345.5&`G4C`@)'P@)"H) -M"0DD0"!O:PD)"6-L:65N=%]A9&1R(&ES(#`@9F]R('-E;F1M86EL("UB<PI# -M3TU-14Y48"=2)#U[3&]C86Q)4'TD*B`D?"`D*@DD0"!O:PD)"69R;VT@:&5R -M90IU;F1E9FEN92A@0T]-345.5"<I9&YL"FEF9&5F*&!?55-%7U)#4%1?)RP@ -M8"<L(&!E<G)P<FEN="A@2$%#2R`B8VAE8VM?<F-P="(@<F5Q=6ER97,@=7-E -M7VEP(&]R('5S95]N86UE<R<I)RD*(R!N;W<@8VAE8VL@;W1H97(@<VED90I2 -M)"H@)'P@)"H)"20Z("0^,R`D,@HC(')E;6]V92!L;V-A;"!P87)T+"!M87EB -M92!R97!E871E9&QY"E(D*CQ`)#UW+CXD*@D))#XS("0Q("0S"FEF9&5F*&!? -M55-%7U)%3$%95$]?)RQ@)RQ@(R<I9&YL"E(D*CQ`)"HD/7M296QA>51O?2X^ -M)"H)"20^,R`D,2`D,PHC('-T:6QL('-O;65T:&EN9R!L969T/PI2)"H\0"0J -M/B0J"0DD(V5R<F]R("1`(#4N-RXQ("0Z(#4W,2!W92!D;R!N;W0@<F5L87D* -M4%1?4T]-15\G+`HC(&%C8V5P="!S;VUE('-T=7!I9"!S='5F9@I2/"0J0"0K -M/@DD.CPD,4`D*&%C8V5P="`D,B`D.B0R)"D^"E(\)"I`3TL^"21`(&]K*0II -M9F1E9BA@7T-(14-+7T923TU?)RP*(R!M87)K(&%D9')E<W,*4B0J"0DD.CQ` -M/B0Q"B,@:7,@=&AE('-Y;G1A>"!O:R`H=7-E<R`\/B!A;F0@;F\@9&]T(&%T -M('1H92!E;F0_*0I2/$`^/"0J0"0J)'XN/@DD.CPD,4`D,B0S/@HC(&UA<FL@ -M<W1I;&P@=&AE<F4Z(&5R<F]R+BXN"E(\0#XD*@D))"-E<G)O<B`D0"`U+C$N -M."`D.B`U,3@@:6QL96=A;"!-04E,($923TT@)#$L"B,@:68@=V4@9&]N)W0@ -M=&\@=&AE(&%B;W9E.B!R96UO=F4@870@;&5A<W0@=&AE(&1O="XN+@I2/"0J -M0"0J+CX)/"0Q)$`R/BD*4B0J"0DD.B`D/C,@)#$)"0EC86YO;FEF>0I2)"T) -M"21`(&]K"0D)"6QO8V%L(&AO<W0*(R!N;R!H;W-T('=I=&AO=70@82`N(&EN -M('1H92!&44A.(#\*4B0J/$`D+3XD*@DD(V5R<F]R("1`(#4N,2XX("0Z(#4Q -M:&%C:R]C:&5C:U]R8W!T,RYM-``````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````"`@(#8T-"``("`@,C,P(``@(#$W-3`@`"`@("`@("`S-#0U -M("`V,S$S,#$R-3(Q("`@-S4P-@`@```````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````````!D:79E<G0H+3$I"B,*(R!#;W!Y<FEG:'0@*&,I -M(#$Y.3<@0VQA=7,@07-S;6%N;B`\8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD -M93X*(PHC($EN('-H;W)T.B!Y;W4@8V%N(&1O('=H871E=F5R('EO=2!W86YT -M('=I=&@@=&AI<RP@8G5T(&1O;B=T(&)L86UE(&UE(0HC"B,@5$A)4R!33T94 -M5T%212!)4R!04D]6241%1"!"62!42$4@05542$]2($%.1"!#3TY44DE"551/ -M4E,@8&!!4R!)4R<G($%.1`HC($%.62!%6%!215-3($]2($E-4$Q)140@5T%2 -M4D%.5$E%4RP@24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%1(10HC -M($E-4$Q)140@5T%24D%.5$E%4R!/1B!-15)#2$%.5$%"24Q)5%D@04Y$($9) -M5$Y%4U,@1D]2($$@4$%25$E#54Q!4B!055)03U-%"B,@05)%($1)4T-,04E- -M140N("!)3B!.3R!%5D5.5"!32$%,3"!42$4@05542$]2($]2($-/3E1224)5 -M5$]24R!"12!,24%"3$4*(R!&3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L($E. -M0TE$14Y404PL(%-014-)04PL($5814U03$%262P@3U(@0T].4T51545.5$E! -M3`HC($1!34%'15,@*$E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!0 -M4D]#55)%345.5"!/1B!354)35$E4551%($=/3T13"B,@3U(@4T525DE#15,[ -M($Q/4U,@3T8@55-%+"!$051!+"!/4B!04D]&2513.R!/4B!"55-)3D534R!) -M3E1%4E)54%1)3TXI"B,@2$]7159%4B!#0553140@04Y$($].($%.62!42$5/ -M4ED@3T8@3$E!0DE,2519+"!72$542$52($E.($-/3E1204-4+"!35%))0U0* -M(R!,24%"24Q)5%DL($]2(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2 -M($]42$525TE312D@05))4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!5 -M4T4@3T8@5$A)4R!33T945T%212P@159%3B!)1B!!1%9)4T5$($]&(%1(12!0 -M3U-324))3$E462!/1@HC(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)3 -M24].240H8$`H(REC:&5C:U]R8W!T,RYM-`DR+C(@*$-L875S($%S<VUA;FXI -M(#$Y.3<M,#,M,#DG*0H*9&EV97)T*#(I"DQ/0T%,7U)53$531513"E-C:&5C -M:U]R8W!T"FEF9&5F*&!?55-%7U)#4%1?)RP@8"<L(&!E<G)P<FEN="A@2$%# -M2R`B8VAE8VM?<F-P="(@<F5Q=6ER97,@=7-E7VEP(&]R('5S95]N86UE<R<I -M)RED;FP*:69D968H8%]54T5?3D%-15-?)RP*(R!F:7)S=#H@9V5T(&-L:65N -M="!N86UE"E(D*PD)"20Z("0H9&5Q=6]T92`B(B`D)GMC;&EE;G1?;F%M97T@ -M)"D@)'P@)#$*4B`D?"`D*@D)"21`(&]K"0EN;R!C;&EE;G0@;F%M93H@9&ER -M96-T;'D@:6YV;VME9`HC4B0M("1\("0J"0DD0"!O:PD)9F]R('1H;W-E('=I -M=&AO=70@9G5L;"!$3E,N+BX*4B0J)#U[3&]C86Q.86UE<WT@)'P@)"H))$`@ -M;VL)"69R;VT@86QL;W=E9"!S>7-T96T*4B0J)#UW("1\("0J"0DD0"!O:PD) -M9G)O;2!H97)E("AI;G-T96%D(&]F($QO8V%L3F%M97,I"BP*(R!F:7)S=#H@ -M9V5T(&-L:65N="!A9&1R97-S"E(D*PD)"20Z("0H9&5Q=6]T92`B(B`D)GMC -M;&EE;G1?861D<GT@)"D@)'P@)#$*4C`@)'P@)"H)"21`(&]K"0EC;&EE;G1? -M861D<B!I<R`P(&9O<B!S96YD;6%I;"`M8G,*4B0]>TQO8V%L25!])"H@)'P@ -M)"H))$`@;VL)"69R;VT@:&5R90HI9&YL"B,@;F]W(&-H96-K(&]T:&5R('-I -M9&4*4B0J("1\("0J"0DD.B`D/C,@)#(*(R!R96UO=F4@;&]C86P@<&%R="P@ -M;6%Y8F4@<F5P96%T961L>0II9F1E9BA@7U5315]214Q!651/7R<L"E(D*CQ` -M)"HD/7M296QA>51O?2X^)"H)"20^,R`D,2`D-`HL"E(D*CQ`)#UW+CXD*@D) -M)#XS("0Q("0S"BED;FP*(R!S=&EL;"!S;VUE=&AI;F<@;&5F=#\*4B0J/$`D -M*SXD*@D))"-E<G)O<B`D0"`U+C<N,2`D.B`U-S$@=V4@9&\@;F]T(')E;&%Y -M"D%225-)3D<@24X@04Y9(%=!60HC($]55"!/1B!42$4@55-%($]&(%1(25,@ -M4T]&5%=!4D4L($5614X@248@041625-%1"!/1B!42$4@4$]34TE"24Q)5%D@ -M3T8*(R!354-(($1!34%'12X*(PID:79E<G0H,"D*5D524TE/3DE$*&!`*",I -M8VAE8VM?<F-P=#,N;30),BXR("A#;&%U<R!!<W-M86YN*2`Q.3DW+3`S+3`Y -M)RD*"F1I=F5R="@R*0I,3T-!3%]254Q%4T544PI38VAE8VM?<F-P=&AA8VLO -M8VAE8VM?<F-P=#0N;30````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````@("`V-#0@`"`@(#(S,"``("`Q-S4P(``@("`@("`@,S<V-2`@-C,Q -M,S`Q-3,R-"`@(#<U,C``(``````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````9&EV97)T*"TQ*0HC"B,@0V]P>7)I9VAT("AC*2`Q.3DW -M($-L875S($%S<VUA;FX@/&-A0&EN9F]R;6%T:6LN=6YI+6MI96PN9&4^"B,* -M(R!);B!S:&]R=#H@>6]U(&-A;B!D;R!W:&%T979E<B!Y;W4@=V%N="!W:71H -M('1H:7,L(&)U="!D;VXG="!B;&%M92!M92$*(PHC(%1(25,@4T]&5%=!4D4@ -M25,@4%)/5DE$140@0ED@5$A%($%55$A/4B!!3D0@0T].5%))0E543U)3(&!@ -M05,@25,G)R!!3D0*(R!!3ED@15A04D534R!/4B!)35!,245$(%=!4E)!3E1) -M15,L($E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!42$4*(R!)35!, -M245$(%=!4E)!3E1)15,@3T8@34520TA!3E1!0DE,2519($%.1"!&251.15-3 -M($9/4B!!(%!!4E1)0U5,05(@4%524$]310HC($%212!$25-#3$%)345$+B`@ -M24X@3D\@159%3E0@4TA!3$P@5$A%($%55$A/4B!/4B!#3TY44DE"551/4E,@ -M0D4@3$E!0DQ%"B,@1D]2($%.62!$25)%0U0L($E.1$E214-4+"!)3D-)1$5. -M5$%,+"!34$5#24%,+"!%6$5-4$Q!4EDL($]2($-/3E-%455%3E1)04P*(R!$ -M04U!1T53("A)3D-,541)3D<L($)55"!.3U0@3$E-251%1"!43RP@4%)/0U52 -M14U%3E0@3T8@4U5"4U1)5%5412!'3T]$4PHC($]2(%-%4E9)0T53.R!,3U-3 -M($]&(%5312P@1$%402P@3U(@4%)/1DE44SL@3U(@0E5324Y%4U,@24Y415)2 -M55!424].*0HC($A/5T5615(@0T%54T5$($%.1"!/3B!!3ED@5$A%3U)9($]& -M($Q)04))3$E462P@5TA%5$A%4B!)3B!#3TY44D%#5"P@4U1224-4"B,@3$E! -M0DE,2519+"!/4B!43U)4("A)3D-,541)3D<@3D5'3$E'14Y#12!/4B!/5$A% -M4E=)4T4I($%225-)3D<@24X@04Y9(%=!60HC($]55"!/1B!42$4@55-%($]& -M(%1(25,@4T]&5%=!4D4L($5614X@248@041625-%1"!/1B!42$4@4$]34TE" -M24Q)5%D@3T8*(R!354-(($1!34%'12X*(PID:79E<G0H,"D*5D524TE/3DE$ -M*&!`*",I8VAE8VM?<F-P=#0N;30),BXS("A#;&%U<R!!<W-M86YN*2`Q.3DW -M+3`S+3$V)RD*"F1I=F5R="@R*0ID969I;F4H8%]54T5?3D%-15-?4E5,15,G -M+&!2("1@)WP@)&`G*@D)"21@)T`@;VL)"6YO(&-L:65N="!N86UE.B!D:7)E -M8W1L>2!I;G9O:V5D"B-2)&`G+2`D8"=\("1@)RH)"21@)T`@;VL)"69O<B!T -M:&]S92!W:71H;W5T(&9U;&P@1$Y3+BXN"E(D8"<J)&`G/7<@)&`G?"`D8"<J -M"0DD8"=`(&]K"0EF<F]M(&AE<F4*4B1@)RHD8"<]>TQO8V%L3F%M97-]("1@ -M)WP@)&`G*@DD8"=`(&]K"0EF<F]M(&%L;&]W960@<WES=&5M)RD*3$]#04Q? -M4E5,15-%5%,*4V-H96-K7W)C<'0*:69D968H8%]54T5?4D-05%\G+"!@)RP@ -M8&5R<G!R:6YT*&!(04-+(")C:&5C:U]R8W!T(B!R97%U:7)E<R!U<V5?:7`@ -M;W(@=7-E7VYA;65S)RDG*61N;`II9F1E9BA@7U5315])4%\G+`HC(&9I<G-T -M.B!G970@8VQI96YT(&%D9')E<W,*4B0K"0D))#H@)"AD97%U;W1E("(B("0F -M>V-L:65N=%]A9&1R?2`D*2`D?"`D,0I2,"`D?"`D*@D))$`@;VL)"6-L:65N -M=%]A9&1R(&ES(#`@9F]R('-E;F1M86EL("UB<PI2)#U[3&]C86Q)4'TD*B`D -M?"`D*@DD0"!O:PD)9G)O;2!H97)E"FEF9&5F*&!?55-%7TY!34537R<L"B,@ -M;F5X=#H@9V5T(&-L:65N="!N86UE"E(D*B`D?"`D*PD))#H@)"AD97%U;W1E -M("(B("0F>V-L:65N=%]N86UE?2`D*2`D?"`D,@I?55-%7TY!34537U)53$53 -M"BDL"B,@9FER<W0Z(&=E="!C;&EE;G0@;F%M90I2)"L)"0DD.B`D*&1E<75O -M=&4@(B(@)"9[8VQI96YT7VYA;65]("0I("1\("0Q"E]54T5?3D%-15-?4E5, -M15,**61N;`HC(&YO=R!C:&5C:R!O=&AE<B!S:61E"E(D*B`D?"`D*@D))#H@ -M)#XS("0R"FEF9&5F*&!?55-%7U)%3$%95$]?)RP*(R!R96UO=F4@4F5L87E4 -M;R!P87)T("AM87EB92!R97!E871E9&QY*0I2)"H\0"0J)#U[4F5L87E4;WTN -M/B0J"0DD/C,@)#$@)#0**61N;`HC(')E;6]V92!L;V-A;"!P87)T("AM87EB -M92!R97!E871E9&QY*0I2)"H\0"0]=RX^)"H)"20^,R`D,2`D,PHC('-T:6QL -M('-O;65T:&EN9R!L969T/PI2)"H\0"0K/B0J"0DD(V5R<F]R("1`(#4N-RXQ -M("0Z(#4W,2!W92!D;R!N;W0@<F5L87D*+C<N,2`D.B`U-S%H86-K+V-H96-K -M7W)E;&%Y+FTT```````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M("`@-C0T(``@("`R,S`@`"`@,3<U,"``("`@("`@(#,U-#(@(#8S-#(R-C<U -M-S(@("`W-C$Q`"`````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````&1I=F5R="@M,2D*(PHC($-O<'ER:6=H="`H8RD@,3DY-R!#;&%U -M<R!!<W-M86YN(#QC84!I;F9O<FUA=&EK+G5N:2UK:65L+F1E/@HC"B,@26X@ -M<VAO<G0Z('EO=2!C86X@9&\@=VAA=&5V97(@>6]U('=A;G0@=VET:"!T:&ES -M+"!B=70@9&]N)W0@8FQA;64@;64A"B,*(R!42$E3(%-/1E1705)%($E3(%!2 -M3U9)1$5$($)9(%1(12!!551(3U(@04Y$($-/3E1224)55$]24R!@8$%3($E3 -M)R<@04Y$"B,@04Y9($584%)%4U,@3U(@24U03$E%1"!705)204Y42453+"!) -M3D-,541)3D<L($)55"!.3U0@3$E-251%1"!43RP@5$A%"B,@24U03$E%1"!7 -M05)204Y42453($]&($U%4D-(04Y404))3$E462!!3D0@1DE43D534R!&3U(@ -M02!005)424-53$%2(%!54E!/4T4*(R!!4D4@1$E30TQ!24U%1"X@($E.($Y/ -M($5614Y4(%-(04Q,(%1(12!!551(3U(@3U(@0T].5%))0E543U)3($)%($Q) -M04),10HC($9/4B!!3ED@1$E214-4+"!)3D1)4D5#5"P@24Y#241%3E1!3"P@ -M4U!%0TE!3"P@15A%35!,05)9+"!/4B!#3TY315%514Y424%,"B,@1$%-04=% -M4R`H24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%!23T-54D5-14Y4 -M($]&(%-50E-425155$4@1T]/1%,*(R!/4B!315)624-%4SL@3$]34R!/1B!5 -M4T4L($1!5$$L($]2(%!23T9)5%,[($]2($)54TE.15-3($E.5$524E505$E/ -M3BD*(R!(3U=%5D52($-!55-%1"!!3D0@3TX@04Y9(%1(14]262!/1B!,24%" -M24Q)5%DL(%=(151(15(@24X@0T].5%)!0U0L(%-44DE#5`HC($Q)04))3$E4 -M62P@3U(@5$]25"`H24Y#3%5$24Y'($Y%1TQ)1T5.0T4@3U(@3U1(15)725-% -M*2!!4DE324Y'($E.($%.62!705D*(R!/550@3T8@5$A%(%5312!/1B!42$E3 -M(%-/1E1705)%+"!%5D5.($E&($%$5DE3140@3T8@5$A%(%!/4U-)0DE,2519 -M($]&"B,@4U5#2"!$04U!1T4N"B,*9&EV97)T*#`I"E9%4E-)3TY)1"A@0"@C -M*6-H96-K7W)E;&%Y+FTT"3(N,"`H0VQA=7,@07-S;6%N;BD@,3DY-RTP-2TR -M-2<I"E!54TA$259%4E0H-BD*:69D968H8%]*54Y+7T1%1DE.141?34%)3"<L -M+`HC(&9I;&4@8V]N=&%I;FEN9R!F=6QL(&4M;6%I;"!A9&1R97-S97,@;V8@ -M<W!A;6UE<G,@*&9O<B!C:&5C:U]M86EL*3H*(R!S<&%M;65R0&%D9')E<W,N -M9&]M86EN(%-004U-15(*(R!O<B!J=6YK(&1O;6%I;G,@*&9O<B!C:&5C:U]M -M86EL+"!C:&5C:U]R96QA>2DZ"B,@:G5N:RYD;VUA:6X@2E5.2PHC(&]R($E0 -M(&%D9')E<W-E<R`H9F]R(&-H96-K7W)E;&%Y*3H*(R!$+E@N62Y:($E0"B,@ -M0RY8+ED@25`*(R!"+E@@25`*(R!!($E0"DMJ=6YK(&EF96QS92A?05)'7RP@ -M8"<L(&!D8FT@+V5T8R]M86EL+VIU;FLG+"!@7T%21U\G*0ID969I;F4H8%]* -M54Y+7T1%1DE.141?4D5,05DG+#$I"BD*4$]01$E615)4"@ID:79E<G0H,BD* -M3$]#04Q?4E5,15-%5%,*4VIU;FM)4`HC(&QO;VMU<"!)4"!I;B!D871A8F%S -M90HC(&9U;&P@25`@861D<F5S<PI2)"TN)"TN)"TN)"T))#H@)"AJ=6YK("0Q -M+B0R+B0S+B0T("0I"B,@8VQA<W,@0R!N970*4B0M+B0M+B0M+B0M"20Z("0H -M:G5N:R`D,2XD,BXD,R`D.B`D,2XD,BXD,RXD-"`D*0HC(&-L87-S($(@;F5T -M"E(D+2XD+2XD+2XD+0DD.B`D*&IU;FL@)#$N)#(@)#H@)#$N)#(N)#,N)#0@ -M)"D*(R!C;&%S<R!!(&YE=`I2)"TN)"TN)"TN)"T))#H@)"AJ=6YK("0Q("0Z -M("0Q+B0R+B0S+B0T("0I"@I38VAE8VM?<F5L87D*(R!C:&5C:R!)4`I2)"L@ -M)'P@)"L))#H@)#$@)'P@)#YJ=6YK25`@)#(*4B0K("1\($E0"20C97)R;W(@ -M)$`@-2XW+C$@)#H@(FYO(&%C8V5S<R!F<F]M('EO=7(@25`B"B,@8VAE8VL@ -M:&]S=&YA;64*4B0K("1\("0K"20Z("0^:G5N:R`\0"0Q/@I2)"H\0"0J2E5. -M2SXD*@DD(V5R<F]R("1`(#4N-RXQ("0Z(")N;R!A8V-E<W,@9G)O;2!T:&ES -M(&AO<W0B"B0T"BED;FP*(R!R96UO=F4@;&]C86P@<&%R="`H;6%Y8F4@<F5P -M96%T961L>2D*4B0J/$`D/7<N/B0J"0DD/C,@)#$@)#,*(R!S=&EL;"!S;VUE -M=&AI;F<@;&5F=#\*4B0J/$`D*SXD*@D))"-E<G)O<B`D0"`U+C<N,2`D.B`U -M-S$@=V4@9&\@;F]T(')E;&%Y"BXW+C$@)#H@-3<Q:&%C:R]C:&5C:U]R96QA -M>3,N;30````````````````````````````````````````````````````` -M`````````````````````````````````````````````````````"`@(#8T -M-"``("`@,C,P(``@(#$W-3`@`"`@("`@("`S-C<R("`V,S4W-S4P,S4W("`@ -M-S<P-``@```````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``!D:79E<G0H+3$I"B,*(R!#;W!Y<FEG:'0@*&,I(#$Y.3<@0VQA=7,@07-S -M;6%N;B`\8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD93X*(PHC($EN('-H;W)T -M.B!Y;W4@8V%N(&1O('=H871E=F5R('EO=2!W86YT('=I=&@@=&AI<RP@8G5T -M(&1O;B=T(&)L86UE(&UE(0HC"B,@5$A)4R!33T945T%212!)4R!04D]6241% -M1"!"62!42$4@05542$]2($%.1"!#3TY44DE"551/4E,@8&!!4R!)4R<G($%. -M1`HC($%.62!%6%!215-3($]2($E-4$Q)140@5T%24D%.5$E%4RP@24Y#3%5$ -M24Y'+"!"550@3D]4($Q)34E4140@5$\L(%1(10HC($E-4$Q)140@5T%24D%. -M5$E%4R!/1B!-15)#2$%.5$%"24Q)5%D@04Y$($9)5$Y%4U,@1D]2($$@4$%2 -M5$E#54Q!4B!055)03U-%"B,@05)%($1)4T-,04E-140N("!)3B!.3R!%5D5. -M5"!32$%,3"!42$4@05542$]2($]2($-/3E1224)55$]24R!"12!,24%"3$4* -M(R!&3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L($E.0TE$14Y404PL(%-014-) -M04PL($5814U03$%262P@3U(@0T].4T51545.5$E!3`HC($1!34%'15,@*$E. -M0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!04D]#55)%345.5"!/1B!3 -M54)35$E4551%($=/3T13"B,@3U(@4T525DE#15,[($Q/4U,@3T8@55-%+"!$ -M051!+"!/4B!04D]&2513.R!/4B!"55-)3D534R!)3E1%4E)54%1)3TXI"B,@ -M2$]7159%4B!#0553140@04Y$($].($%.62!42$5/4ED@3T8@3$E!0DE,2519 -M+"!72$542$52($E.($-/3E1204-4+"!35%))0U0*(R!,24%"24Q)5%DL($]2 -M(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]42$525TE312D@05)) -M4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@3T8@5$A)4R!33T94 -M5T%212P@159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-324))3$E462!/1@HC -M(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)324].240H8$`H(REC:&5C -M:U]R96QA>2YM-`DS+C`@*$-L875S($%S<VUA;FXI(#$Y.3<M,#8M,#$G*0I0 -M55-(1$E615)4*#8I"FEF9&5F*&!?2E5.2U]$149)3D5$7TU!24PG+"P*(R!F -M:6QE(&-O;G1A:6YI;F<@9G5L;"!E+6UA:6P@861D<F5S<V5S(&]F('-P86UM -M97)S("AF;W(@8VAE8VM?;6%I;"DZ"B,@<W!A;6UE<D!A9&1R97-S+F1O;6%I -M;B`B17)R;W(M0V]D92!%<G)O<BU497AT(@HC(&]R(&IU;FL@9&]M86EN<R`H -M9F]R(&-H96-K7VUA:6PL(&-H96-K7W)E;&%Y*3H*(R!J=6YK+F1O;6%I;B`@ -M(D5R<F]R+4-O9&4@17)R;W(M5&5X="(*(R!O<B!)4"!A9&1R97-S97,@*&9O -M<B!C:&5C:U]R96QA>2DZ"B,@1"Y8+EDN6B`B17)R;W(M0V]D92!%<G)O<BU4 -M97AT(@HC($,N6"Y9(")%<G)O<BU#;V1E($5R<F]R+51E>'0B"B,@0BY8(")% -M<G)O<BU#;V1E($5R<F]R+51E>'0B"B,@02`B17)R;W(M0V]D92!%<G)O<BU4 -M97AT(@I+:G5N:R!I9F5L<V4H7T%21U\L(&`G+"!@9&)M("UA0$I53DL@+V5T -M8R]M86EL+VIU;FLG+"!@7T%21U\G*0ID969I;F4H8%]*54Y+7T1%1DE.141? -M4D5,05DG+#$I"BD*4$]01$E615)4"@ID:79E<G0H,BD*3$]#04Q?4E5,15-% -M5%,*4VIU;FM)4`HC(&QO;VMU<"!)4"!I;B!D871A8F%S90HC(&9U;&P@25`@ -M861D<F5S<PI2)"TN)"TN)"TN)"T))#H@)"AJ=6YK("0Q+B0R+B0S+B0T("0I -M"B,@8VQA<W,@0R!N970*4B0M+B0M+B0M+B0M"20Z("0H:G5N:R`D,2XD,BXD -M,R`D.B`D,2XD,BXD,RXD-"`D*0HC(&-L87-S($(@;F5T"E(D+2XD+2XD+2XD -M+0DD.B`D*&IU;FL@)#$N)#(@)#H@)#$N)#(N)#,N)#0@)"D*(R!C;&%S<R!! -M(&YE=`I2)"TN)"TN)"TN)"T))#H@)"AJ=6YK("0Q("0Z("0Q+B0R+B0S+B0T -M("0I"@I38VAE8VM?<F5L87D*(R!C:&5C:R!)4`I2)"L@)'P@)"L))#H@)#$@ -M)'P@)#YJ=6YK25`@)#(*4B0K("1\("0J0$I53DL))"-E<G)O<B`D0"`U+C<N -M,2`D.B`D,@HC(&-H96-K(&AO<W1N86UE"E(D*R`D?"`D*PDD.B`D/FIU;FL@ -M/$`D,3X*4B0J/$`D*D!*54Y+/B0J"20C97)R;W(@)$`@-2XW+C$@)#H@)#(* -M24%"3$4*(R!&3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L($E.0TE$14Y404PL -M(%-014-)04PL($5814U03$%262P@3U(@0VAA8VLO<W!A;61O;7,N;30````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````@("`V-#0@`"`@ -M(#(S,"``("`Q-S4P(``@("`@("`@,C(P-R`@-C(T-C`U,38P,B`@(#<Q-#0` -M(``````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````````````````````````````````````````````9&EV -M97)T*"TQ*0HC"B,@0V]P>7)I9VAT("AC*2`Q.3DV($-L875S($%S<VUA;FX@ -M/&-A0&EN9F]R;6%T:6LN=6YI+6MI96PN9&4^"B,*(R!);B!S:&]R=#H@>6]U -M(&-A;B!D;R!W:&%T979E<B!Y;W4@=V%N="!W:71H('1H:7,L(&)U="!D;VXG -M="!B;&%M92!M92$*(PHC(%1(25,@4T]&5%=!4D4@25,@4%)/5DE$140@0ED@ -M5$A%($%55$A/4B!!3D0@0T].5%))0E543U)3(&!@05,@25,G)R!!3D0*(R!! -M3ED@15A04D534R!/4B!)35!,245$(%=!4E)!3E1)15,L($E.0TQ51$E.1RP@ -M0E54($Y/5"!,24U)5$5$(%1/+"!42$4*(R!)35!,245$(%=!4E)!3E1)15,@ -M3T8@34520TA!3E1!0DE,2519($%.1"!&251.15-3($9/4B!!(%!!4E1)0U5, -M05(@4%524$]310HC($%212!$25-#3$%)345$+B`@24X@3D\@159%3E0@4TA! -M3$P@5$A%($%55$A/4B!/4B!#3TY44DE"551/4E,@0D4@3$E!0DQ%"B,@1D]2 -M($%.62!$25)%0U0L($E.1$E214-4+"!)3D-)1$5.5$%,+"!34$5#24%,+"!% -M6$5-4$Q!4EDL($]2($-/3E-%455%3E1)04P*(R!$04U!1T53("A)3D-,541) -M3D<L($)55"!.3U0@3$E-251%1"!43RP@4%)/0U5214U%3E0@3T8@4U5"4U1) -M5%5412!'3T]$4PHC($]2(%-%4E9)0T53.R!,3U-3($]&(%5312P@1$%402P@ -M3U(@4%)/1DE44SL@3U(@0E5324Y%4U,@24Y415)255!424].*0HC($A/5T56 -M15(@0T%54T5$($%.1"!/3B!!3ED@5$A%3U)9($]&($Q)04))3$E462P@5TA% -M5$A%4B!)3B!#3TY44D%#5"P@4U1224-4"B,@3$E!0DE,2519+"!/4B!43U)4 -M("A)3D-,541)3D<@3D5'3$E'14Y#12!/4B!/5$A%4E=)4T4I($%225-)3D<@ -M24X@04Y9(%=!60HC($]55"!/1B!42$4@55-%($]&(%1(25,@4T]&5%=!4D4L -M($5614X@248@041625-%1"!/1B!42$4@4$]34TE"24Q)5%D@3T8*(R!354-( -M($1!34%'12X*(PID:79E<G0H,"D*5D524TE/3DE$*&!`*",I<W!A;61O;7,N -M;30),2XP("A#;&%U<R!!<W-M86YN*2`Q.3DV+3$Q+3(S)RD*9&EV97)T*"TQ -M*0H*9&5F:6YE*&!?4U!!341/35-?)RPQ*0I055-(1$E615)4*#8I"B,@9FEL -M92!C;VYT86EN:6YG(&1O;6%I;G,@;V8@=V5L;"UK;F]W;B!S<&%M;65R<PI& -M>U-P86U$;VUA:6YS?2!I9F5L<V4H7T%21U\L(&`G+"!@+V5T8R]M86EL+U-P -M86U$;VUA:6YS)RP@8%]!4D=?)RD*4$]01$E615)4"F1O;6%I;G,@*&9O<B!C -M:&5C:U]M86EL+"!C:&5C:U]R96QA>2DZ"B,@:G5N:RYD;VUA:6X@(")%<G)O -M<BU#;V1E($5R<F]R+51E>'0B"B,@;W(@25`@861D<F5S<V5S("AF;W(@8VAE -M8VM?<F5L87DI.@HC($0N6"Y9+EH@(D5R<F]R+4-O9&4@17)R;W(M5&5X="(* -M(R!#+E@N62`B17)R;W(M0V]D92!%<G)O<BU497AT(@HC($(N6"`B17)R;W(M -M0V]D92!%<G)O<BU497AT(@HC($$@(D5R<F]R+4-O9&4@17)R;W(M5&5X="(* -M2VIU;FL@:69E;'-E*%]!4D=?+"!@)RP@8&1B;2`M84!*54Y+("]E=&,O;6%I -M;"]J=6YK)RP@8%]!4D=?)RD*9&5F:6YE*&!?2E5.2U]$149)3D5$7U)%3$%9 -M)RPQ*0HI"E!/4$1)5D525`H*9&EV97)T*#(I"DQ/0T%,7U)53$531513"E-J -M=6YK:&%C:R]S<&%M;65R<RYM-``````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````````"`@(#8T-"``("`@,C,P(``@(#$W-3`@`"`@("`@("`R -M,C$U("`V,C0U-C,T,#0R("`@-S$U,P`@```````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````````````!D:79E<G0H+3$I"B,*(R!#;W!Y<FEG:'0@ -M*&,I(#$Y.38@0VQA=7,@07-S;6%N;B`\8V%`:6YF;W)M871I:RYU;FDM:VEE -M;"YD93X*(PHC($EN('-H;W)T.B!Y;W4@8V%N(&1O('=H871E=F5R('EO=2!W -M86YT('=I=&@@=&AI<RP@8G5T(&1O;B=T(&)L86UE(&UE(0HC"B,@5$A)4R!3 -M3T945T%212!)4R!04D]6241%1"!"62!42$4@05542$]2($%.1"!#3TY44DE" -M551/4E,@8&!!4R!)4R<G($%.1`HC($%.62!%6%!215-3($]2($E-4$Q)140@ -M5T%24D%.5$E%4RP@24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L(%1( -M10HC($E-4$Q)140@5T%24D%.5$E%4R!/1B!-15)#2$%.5$%"24Q)5%D@04Y$ -M($9)5$Y%4U,@1D]2($$@4$%25$E#54Q!4B!055)03U-%"B,@05)%($1)4T-, -M04E-140N("!)3B!.3R!%5D5.5"!32$%,3"!42$4@05542$]2($]2($-/3E12 -M24)55$]24R!"12!,24%"3$4*(R!&3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L -M($E.0TE$14Y404PL(%-014-)04PL($5814U03$%262P@3U(@0T].4T51545. -M5$E!3`HC($1!34%'15,@*$E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/ -M+"!04D]#55)%345.5"!/1B!354)35$E4551%($=/3T13"B,@3U(@4T525DE# -M15,[($Q/4U,@3T8@55-%+"!$051!+"!/4B!04D]&2513.R!/4B!"55-)3D53 -M4R!)3E1%4E)54%1)3TXI"B,@2$]7159%4B!#0553140@04Y$($].($%.62!4 -M2$5/4ED@3T8@3$E!0DE,2519+"!72$542$52($E.($-/3E1204-4+"!35%)) -M0U0*(R!,24%"24Q)5%DL($]2(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-% -M($]2($]42$525TE312D@05))4TE.1R!)3B!!3ED@5T%9"B,@3U54($]&(%1( -M12!54T4@3T8@5$A)4R!33T945T%212P@159%3B!)1B!!1%9)4T5$($]&(%1( -M12!03U-324))3$E462!/1@HC(%-50T@@1$%-04=%+@HC"F1I=F5R="@P*0I6 -M15)324].240H8$`H(RES<&%M;65R<RYM-`DQ+C`@*$-L875S($%S<VUA;FXI -M(#$Y.38M,3$M,C,G*0ID:79E<G0H+3$I"@ID969I;F4H8%]34$%-34524U\G -M+#$I"E!54TA$259%4E0H-BD*(R!F:6QE(&-O;G1A:6YI;F<@9G5L;"!E+6UA -M:6P@861D<F5S<V5S(&]F('=E;&PM:VYO=VX@<W!A;6UE<G,*1GM3<&%M;65R -M?2!I9F5L<V4H7T%21U\L(&`G+"!@+V5T8R]M86EL+U-P86UM97(G+"!@7T%2 -M1U\G*0I03U!$259%4E0*;&%M92!M92$*(PHC(%1(25,@4T]&5%=!4D4@25,@ -M4%)/5DE$140@0ED@5$A%($%55$A/4B!!3D0@0T].5%))0E543U)3(&!@05,@ -M25,G)R!!3D0*(R!!3ED@15A04D534R!/4B!)35!,245$(%=!4E)!3E1)15,L -M($E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!42$4*(R!)35!,245$ -M(%=!4E)!3E1)15,@3T8@34520TA!3E1!0DE,2519($%.1"!&251.15-3($9/ -M4B!!(%!!4E1)0U5,05(@4%524$]310HC($%212!$25-#3$%)345$+B`@24X@ -M3D\@159%3E0@4TA!3$P@5$A%($%55$A/4B!/4B!#3TY44DE"551/4E,@0D4@ -M3$E!0DQ%"B,@1D]2($%.62!$25)%0U0L($E.1$E214-4+"!)3D-)1$5.5$%, -M+"!34$5#24%,+"!%6$5-4$Q!4EDL($]2($-H86-K+W5S95]I<"YM-``````` -M```````````````````````````````````````````````````````````` -M````````````````````````````````````````````````("`@-C0T(``@ -M("`R,S`@`"`@,3<U,"``("`@("`@(#(R-#,@(#8R-#8P-3,T-#8@("`V-C$U -M`"`````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````````````````````````````````````````````````&1I -M=F5R="@M,2D*(PHC($-O<'ER:6=H="`H8RD@,3DY-B!#;&%U<R!!<W-M86YN -M(#QC84!I;F9O<FUA=&EK+G5N:2UK:65L+F1E/@HC"B,@26X@<VAO<G0Z('EO -M=2!C86X@9&\@=VAA=&5V97(@>6]U('=A;G0@=VET:"!T:&ES+"!B=70@9&]N -M)W0@8FQA;64@;64A"B,*(R!42$E3(%-/1E1705)%($E3(%!23U9)1$5$($)9 -M(%1(12!!551(3U(@04Y$($-/3E1224)55$]24R!@8$%3($E3)R<@04Y$"B,@ -M04Y9($584%)%4U,@3U(@24U03$E%1"!705)204Y42453+"!)3D-,541)3D<L -M($)55"!.3U0@3$E-251%1"!43RP@5$A%"B,@24U03$E%1"!705)204Y42453 -M($]&($U%4D-(04Y404))3$E462!!3D0@1DE43D534R!&3U(@02!005)424-5 -M3$%2(%!54E!/4T4*(R!!4D4@1$E30TQ!24U%1"X@($E.($Y/($5614Y4(%-( -M04Q,(%1(12!!551(3U(@3U(@0T].5%))0E543U)3($)%($Q)04),10HC($9/ -M4B!!3ED@1$E214-4+"!)3D1)4D5#5"P@24Y#241%3E1!3"P@4U!%0TE!3"P@ -M15A%35!,05)9+"!/4B!#3TY315%514Y424%,"B,@1$%-04=%4R`H24Y#3%5$ -M24Y'+"!"550@3D]4($Q)34E4140@5$\L(%!23T-54D5-14Y4($]&(%-50E-4 -M25155$4@1T]/1%,*(R!/4B!315)624-%4SL@3$]34R!/1B!54T4L($1!5$$L -M($]2(%!23T9)5%,[($]2($)54TE.15-3($E.5$524E505$E/3BD*(R!(3U=% -M5D52($-!55-%1"!!3D0@3TX@04Y9(%1(14]262!/1B!,24%"24Q)5%DL(%=( -M151(15(@24X@0T].5%)!0U0L(%-44DE#5`HC($Q)04))3$E462P@3U(@5$]2 -M5"`H24Y#3%5$24Y'($Y%1TQ)1T5.0T4@3U(@3U1(15)725-%*2!!4DE324Y' -M($E.($%.62!705D*(R!/550@3T8@5$A%(%5312!/1B!42$E3(%-/1E1705)% -M+"!%5D5.($E&($%$5DE3140@3T8@5$A%(%!/4U-)0DE,2519($]&"B,@4U5# -M2"!$04U!1T4N"B,*9&EV97)T*#`I"E9%4E-)3TY)1"A@0"@C*75S95]I<"YM -M-`DQ+C`@*$-L875S($%S<VUA;FXI(#$Y.38M,3$M,C,G*0ID:79E<G0H+3$I -M"@ID969I;F4H8%]54T5?25!?)RPQ*0ID969I;F4H8%]54T5?4D-05%\G+#$I -M"E!54TA$259%4E0H-BD*(R!F:6QE(&-O;G1A:6YI;F<@25`@;G5M8F5R<R!O -M9B!M86-H:6YE<R!W:&EC:"!C86X@=7-E(&]U<B!R96QA>0I&>TQO8V%L25!] -M(&EF96QS92A?05)'7RP@8"<L(&`O971C+VUA:6PO3&]C86Q)4"<L(&!?05)' -M7R<I"E!/4$1)5D525`H*8VM?<F5L87DI.@HC(&IU;FLN9&]M86EN("`B17)R -M;W(M0V]D92!%<G)O<BU497AT(@HC(&]R($E0(&%D9')E<W-E<R`H9F]R(&-H -M96-K7W)E;&%Y*3H*(R!$+E@N62Y:(")%<G)O<BU#;V1E($5R<F]R+51E>'0B -M"B,@0RY8+ED@(D5R<F]R+4-O9&4@17)R;W(M5&5X="(*(R!"+E@@(D5R<F]R -M+4-O9&4@17)R;W(M5&5X="(*(R!!(")%<G)O<BU#;V1E($5R<F]R+51E>'0B -M"DMJ=6YK(&EF96QS92A?05)'7RP@8"<L(&!D8FT@+6%`2E5.2R`O971C+VUA -M:6PO:G5N:R<L(&!?05)'7R<I"F1E9FEN92A@7TI53DM?1$5&24Y%1%]214Q! -M62<L,2D**0I03U!$259%4E0*"F1I=F5R="@R*0I,3T-!3%]254Q%4T544PI3 -M:G5N:VAA8VLO=7-E7VYA;65S+FTT```````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````@("`V-#0@`"`@(#(S,"``("`Q-S4P(``@("`@("`@ -M,C(U,B`@-C(T-C`U,S0U-"`@(#<S,#<`(``````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````````````````9&EV97)T*"TQ*0HC"B,@0V]P>7)I9VAT -M("AC*2`Q.3DV($-L875S($%S<VUA;FX@/&-A0&EN9F]R;6%T:6LN=6YI+6MI -M96PN9&4^"B,*(R!);B!S:&]R=#H@>6]U(&-A;B!D;R!W:&%T979E<B!Y;W4@ -M=V%N="!W:71H('1H:7,L(&)U="!D;VXG="!B;&%M92!M92$*(PHC(%1(25,@ -M4T]&5%=!4D4@25,@4%)/5DE$140@0ED@5$A%($%55$A/4B!!3D0@0T].5%)) -M0E543U)3(&!@05,@25,G)R!!3D0*(R!!3ED@15A04D534R!/4B!)35!,245$ -M(%=!4E)!3E1)15,L($E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!4 -M2$4*(R!)35!,245$(%=!4E)!3E1)15,@3T8@34520TA!3E1!0DE,2519($%. -M1"!&251.15-3($9/4B!!(%!!4E1)0U5,05(@4%524$]310HC($%212!$25-# -M3$%)345$+B`@24X@3D\@159%3E0@4TA!3$P@5$A%($%55$A/4B!/4B!#3TY4 -M4DE"551/4E,@0D4@3$E!0DQ%"B,@1D]2($%.62!$25)%0U0L($E.1$E214-4 -M+"!)3D-)1$5.5$%,+"!34$5#24%,+"!%6$5-4$Q!4EDL($]2($-/3E-%455% -M3E1)04P*(R!$04U!1T53("A)3D-,541)3D<L($)55"!.3U0@3$E-251%1"!4 -M3RP@4%)/0U5214U%3E0@3T8@4U5"4U1)5%5412!'3T]$4PHC($]2(%-%4E9) -M0T53.R!,3U-3($]&(%5312P@1$%402P@3U(@4%)/1DE44SL@3U(@0E5324Y% -M4U,@24Y415)255!424].*0HC($A/5T5615(@0T%54T5$($%.1"!/3B!!3ED@ -M5$A%3U)9($]&($Q)04))3$E462P@5TA%5$A%4B!)3B!#3TY44D%#5"P@4U12 -M24-4"B,@3$E!0DE,2519+"!/4B!43U)4("A)3D-,541)3D<@3D5'3$E'14Y# -M12!/4B!/5$A%4E=)4T4I($%225-)3D<@24X@04Y9(%=!60HC($]55"!/1B!4 -M2$4@55-%($]&(%1(25,@4T]&5%=!4D4L($5614X@248@041625-%1"!/1B!4 -M2$4@4$]34TE"24Q)5%D@3T8*(R!354-(($1!34%'12X*(PID:79E<G0H,"D* -M5D524TE/3DE$*&!`*",I=7-E7VYA;65S+FTT"3$N,"`H0VQA=7,@07-S;6%N -M;BD@,3DY-BTQ,2TR,R<I"F1I=F5R="@M,2D*"F1E9FEN92A@7U5315].04U% -M4U\G+#$I"F1E9FEN92A@7U5315]20U!47R<L,2D*4%532$1)5D525"@V*0HC -M(&9I;&4@8V]N=&%I;FEN9R!N86UE<R!O9B!M86-H:6YE<R!W:&EC:"!C86X@ -M=7-E(&]U<B!R96QA>0I&>TQO8V%L3F%M97-](&EF96QS92A?05)'7RP@8"<L -M(&`O971C+VUA:6PO3&]C86Q.86UE<R<L(&!?05)'7R<I"E!/4$1)5D525`H* -M(%!23U9)1$5$($)9(%1(12!!551(3U(@04Y$($-/3E1224)55$]24R!@8$%3 -M($E3)R<@04Y$"B,@04Y9($584%)%4U,@3U(@24U03$E%1"!705)204Y42453 -M+"!)3D-,541)3D<L($)55"!.3U0@3$E-251%1"!43RP@5$A%"B,@24U03$E% -M1"!705)204Y42453($]&($U%4D-(04Y404))3$E462!!3D0@1DE43D534R!& -M3U(@02!005)424-53$%2(%!54E!/4T4*(R!!4D4@1$E30TQ!24U%1"X@($E. -M($Y/($5614Y4(%-(04Q,(%1(12!!551(3U(@3U(@0T].5%))0E543U)3($)% -M($Q)04),10HC($9/4B!!3ED@1$E214-4+"!)3D1)4D5#5"P@24Y#241%3E1! -M3"P@4U!%0TE!3"P@15A%35!,05)9+"!/4B!#:&%C:R]U<V5?<F5L87ET;RYM -M-``````````````````````````````````````````````````````````` -M`````````````````````````````````````````````````"`@(#8T-"`` -M("`@,C,P(``@(#$W-3`@`"`@("`@("`R,3<P("`V,C0U-C,S-S4T("`@-S8W -M,``@```````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````````````````````````````````````````````!D -M:79E<G0H+3$I"B,*(R!#;W!Y<FEG:'0@*&,I(#$Y.38@0VQA=7,@07-S;6%N -M;B`\8V%`:6YF;W)M871I:RYU;FDM:VEE;"YD93X*(PHC($EN('-H;W)T.B!Y -M;W4@8V%N(&1O('=H871E=F5R('EO=2!W86YT('=I=&@@=&AI<RP@8G5T(&1O -M;B=T(&)L86UE(&UE(0HC"B,@5$A)4R!33T945T%212!)4R!04D]6241%1"!" -M62!42$4@05542$]2($%.1"!#3TY44DE"551/4E,@8&!!4R!)4R<G($%.1`HC -M($%.62!%6%!215-3($]2($E-4$Q)140@5T%24D%.5$E%4RP@24Y#3%5$24Y' -M+"!"550@3D]4($Q)34E4140@5$\L(%1(10HC($E-4$Q)140@5T%24D%.5$E% -M4R!/1B!-15)#2$%.5$%"24Q)5%D@04Y$($9)5$Y%4U,@1D]2($$@4$%25$E# -M54Q!4B!055)03U-%"B,@05)%($1)4T-,04E-140N("!)3B!.3R!%5D5.5"!3 -M2$%,3"!42$4@05542$]2($]2($-/3E1224)55$]24R!"12!,24%"3$4*(R!& -M3U(@04Y9($1)4D5#5"P@24Y$25)%0U0L($E.0TE$14Y404PL(%-014-)04PL -M($5814U03$%262P@3U(@0T].4T51545.5$E!3`HC($1!34%'15,@*$E.0TQ5 -M1$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!04D]#55)%345.5"!/1B!354)3 -M5$E4551%($=/3T13"B,@3U(@4T525DE#15,[($Q/4U,@3T8@55-%+"!$051! -M+"!/4B!04D]&2513.R!/4B!"55-)3D534R!)3E1%4E)54%1)3TXI"B,@2$]7 -M159%4B!#0553140@04Y$($].($%.62!42$5/4ED@3T8@3$E!0DE,2519+"!7 -M2$542$52($E.($-/3E1204-4+"!35%))0U0*(R!,24%"24Q)5%DL($]2(%1/ -M4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]42$525TE312D@05))4TE. -M1R!)3B!!3ED@5T%9"B,@3U54($]&(%1(12!54T4@3T8@5$A)4R!33T945T%2 -M12P@159%3B!)1B!!1%9)4T5$($]&(%1(12!03U-324))3$E462!/1@HC(%-5 -M0T@@1$%-04=%+@HC"F1I=F5R="@P*0I615)324].240H8$`H(REU<V5?<F5L -M87ET;RYM-`DQ+C`@*$-L875S($%S<VUA;FXI(#$Y.38M,3$M,C,G*0ID:79E -M<G0H+3$I"@ID969I;F4H8%]54T5?4D5,05E43U\G+#$I"E!54TA$259%4E0H -M-BD*(R!F:6QE(&-O;G1A:6YI;F<@;F%M97,@=V4@<F5L87D@=&\*1GM296QA -M>51O?2!I9F5L<V4H7T%21U\L(&`G+"!@+V5T8R]M86EL+U)E;&%Y5&\G+"!@ -M7T%21U\G*0I03U!$259%4E0*+"!@+V5T8R]M86EL+TQO8V%L25`G+"!@7T%2 -M1U\G*0I03U!$259%4E0*"F-K7W)E;&%Y*3H*(R!J=6YK+F1O;6%I;B`@(D5R -M<F]R+4-O9&4@17)R;W(M5&5X="(*(R!O<B!)4"!A9&1R97-S97,@*&9O<B!C -M:&5C:U]R96QA>2DZ"B,@1"Y8+EDN6B`B17)R;W(M0V]D92!%<G)O<BU497AT -M(@HC($,N6"Y9(")%<G)O<BU#;V1E($5R<F]R+51E>'0B"B,@0BY8(")%<G)O -M<BU#;V1E($5R<F]R+51E>'0B"B,@02`B17)R;W(M0V]D92!%<G)O<BU497AT -M(@I+:G5N:R!I9F5L<V4H7T%21U\L(&`G+"!@9&)M("UA0$I53DL@+V5T8R]M -M86EL+VIU;FLG+"!@7T%21U\G*0ID969I;F4H8%]*54Y+7T1%1DE.141?4D5, -M05DG+#$I"BD*4$]01$E615)4"@ID:79E<G0H,BD*3$]#04Q?4E5,15-%5%,* -M4VIU;FL````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````````````````````````````````````````3TY315%5 -M14Y424%,"B,@1$%-04=%4R`H24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@ -M5$\L(%!23T-54D5-14Y4($]&(%-50E-425155$4@1T]/1%,*(R!/4B!315)6 -M24-%4SL@3$]34R!/1B!54T4L($1!5$$L($]2(%!23T9)5%,[($]2($)54TE. -M15-3($E.5$524E505$E/3BD*(R!(3U=%5D52($-!55-%1"!!3D0@3TX@04Y9 -M(%1(14]262!/1B!,24%"24Q)5%DL(%=(151(15(@24X@0T].5%)!0U0L(%-4 -M4DE#5`HC($Q)04))3$E462P@3U(@5$]25"`H24Y#3%5$24Y'($Y%1TQ)1T5. -M0T4@3U(@3U1(15)725-%*2!!4DE324Y'($E.($%.62!705D*(R!/550@3T8@ -M5$A%(%5312!/1B!42$E3(%-/1E1705)%+"!%5D5.($E&($%$5DE3140@3T8@ -M5$A%(%!/4U-)0DE,2519($]&"B,@4U5#2"!$04U!1T4N"B,*9&EV97)T*#`I -M"E9%4E-)3TY)1"A@0"@C*75S95]N86UE<RYM-`DQ+C`@*$-L875S($%S<VUA -M;FXI(#$Y.38M,3$M,C,G*0ID:79E<G0H+3$I"@ID969I;F4H8%]54T5?3D%- -+15-?)RPQ*0ID968` -` -end diff --git a/checksendmail/BSDI_CONTRIB b/debian/checksendmail/BSDI_CONTRIB index 97871d5..97871d5 100644 --- a/checksendmail/BSDI_CONTRIB +++ b/debian/checksendmail/BSDI_CONTRIB diff --git a/checksendmail/CVS/Entries b/debian/checksendmail/CVS/Entries index 692e38d..692e38d 100644 --- a/checksendmail/CVS/Entries +++ b/debian/checksendmail/CVS/Entries diff --git a/checksendmail/CVS/Repository b/debian/checksendmail/CVS/Repository index b300606..b300606 100644 --- a/checksendmail/CVS/Repository +++ b/debian/checksendmail/CVS/Repository diff --git a/checksendmail/Makefile b/debian/checksendmail/Makefile index 101ba4e..101ba4e 100644 --- a/checksendmail/Makefile +++ b/debian/checksendmail/Makefile diff --git a/checksendmail/address.resolve b/debian/checksendmail/address.resolve index 01f3011..01f3011 100644 --- a/checksendmail/address.resolve +++ b/debian/checksendmail/address.resolve diff --git a/checksendmail/checksendmail.8 b/debian/checksendmail/checksendmail.8 index b129c35..b129c35 100644 --- a/checksendmail/checksendmail.8 +++ b/debian/checksendmail/checksendmail.8 diff --git a/checksendmail/checksendmail.perl b/debian/checksendmail/checksendmail.perl index a8e9e11..a8e9e11 100644 --- a/checksendmail/checksendmail.perl +++ b/debian/checksendmail/checksendmail.perl diff --git a/debian/control b/debian/control index c964212..59bcfeb 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: sendmail Section: mail Priority: extra Maintainer: Richard Nelson <cowboy@debian.org> -Standards-Version: 2.4.0.0 +Standards-Version: 2.5.0.0 Package: sendmail Architecture: any diff --git a/debian/copyright b/debian/copyright index b34d8e5..b68a73b 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,47 +1,101 @@ This is the Debian Linux prepackaged version of Sendmail, a powerful mail transport agent. -This package was put together by Robert Leslie <rob@mars.org> and is -now being maintained by Johnie Ingram <johnie@debian.org>. The -sources were obtained from: +This package was put together by Robert Leslie <rob@mars.org>, was +maintained by Johnie Ingram <johnie@debian.org>, and is now being +maintained by Richard Nelson <cowboy@debian.org>. The sources were +were obtained from: ftp://ftp.sendmail.org/pub/sendmail/ -The following copyright applies to this software: - - - Copyright (c) 1983, 1995-1997 Eric P. Allman - Copyright (c) 1988 The Regents of the University of California. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: - This product includes software developed by the University of - California, Berkeley and its contributors. - 4. Neither the name of the University nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - -On Debian systems, further copyright information can be found in the -file /usr/doc/copyright/BSD. + The following copyright applies to this software: + + SENDMAIL LICENSE + +The following license terms and conditions apply, unless a different +license is obtained from Sendmail, Inc., 1401 Park Avenue, Emeryville, CA +94608, or by electronic mail at license@sendmail.com. + +License Terms: + +Use, Modification and Redistribution (including distribution of any +modified or derived work) in source and binary forms is permitted only if +each of the following conditions is met: + +1. Redistributions qualify as "freeware" or "Open Source Software" under + one of the following terms: + + (a) Redistributions are made at no charge beyond the reasonable cost of + materials and delivery. + + (b) Redistributions are accompanied by a copy of the Source Code or by an + irrevocable offer to provide a copy of the Source Code for up to three + years at the cost of materials and delivery. Such redistributions + must allow further use, modification, and redistribution of the Source + Code under substantially the same terms as this license. For the + purposes of redistribution "Source Code" means the complete source + code of sendmail including all modifications. + + Other forms of redistribution are allowed only under a separate royalty- + free agreement permitting such redistribution subject to standard + commercial terms and conditions. A copy of such agreement may be + obtained from Sendmail, Inc. at the above address. + +2. Redistributions of source code must retain the copyright notices as they + appear in each source code file, these license terms, and the + disclaimer/limitation of liability set forth as paragraph 6 below. + +3. Redistributions in binary form must reproduce the Copyright Notice, + these license terms, and the disclaimer/limitation of liability set + forth as paragraph 6 below, in the documentation and/or other materials + provided with the distribution. For the purposes of binary distribution + the "Copyright Notice" refers to the following language: + "Copyright (c) 1998 Sendmail, Inc. All rights reserved." + +4. Neither the name of Sendmail, Inc. nor the University of California nor + the names of their contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. The name "sendmail" is a trademark of Sendmail, Inc. + +5. All redistributions must comply with the conditions imposed by the + University of California on certain embedded code, whose copyright + notice and conditions for redistribution are as follows: + + (a) Copyright (c) 1988, 1993 The Regents of the University of + California. All rights reserved. + + (b) Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + (i) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (ii) Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + (iii) All advertising materials mentioning features or use of this + software must display the following acknowledgement: "This + product includes software developed by the University of + California, Berkeley and its contributors." + + (iv) Neither the name of the University nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +6. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY + SENDMAIL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + NO EVENT SHALL SENDMAIL, INC., THE REGENTS OF THE UNIVERSITY OF + CALIFORNIA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +(Version 8.6, last updated 6/24/1998) diff --git a/debian/db-examples/access b/debian/db-examples/access new file mode 100644 index 0000000..31d8c38 --- /dev/null +++ b/debian/db-examples/access @@ -0,0 +1,66 @@ +# /etc/mail/access +# Copyright (c) 1998, Richard Nelson <cowboy@debian.org>. +# Time-stamp: <1998/10/27 10:00:00 cowboy> +# GPL'd config file, please feed any gripes, suggestions, etc. to me +# +# Function: +# Access Control for this smtp server - determines: +# * Who we accept mail from +# * Who we accept relaying from +# * Who we will not send to +# +# Usage: +# FEATURE(access_db[, hash -o /etc/mail/access])dnl +# makemap hash access < access +# +# Format: +# lhs: +# email addr <user@[host.domain]> +# domain name unless FEATURE(relay_hosts_only) is used, +# then this is a fqdn - and relay-domains ($=R) +# must also be fqdns. +# network number must end on an octet boundary, or +# you're stuck going the longwinded way ;-{ +# rhs: +# OK accept mail even if other rules in the +# running ruleset would reject it. +# RELAY Allow domain to relay through your SMTP +# server. RELAY also serves an implicit +# OK for the other checks. +# REJECT reject the sender/recipient with a general +# purpose message that can be customized. +# confREJECT_MSG [550 Access denied] will be issued +# DISCARD discard the message completely using +# the $#discard mailer. +# ### any text where ### is an RFC 821 compliant error code +# and "any text" is a message to return for +# the command +# Examples: +# spammer@aol.com REJECT +# FREE.STEALTH.MAILER@ 550 Spam not accepted +# +# Notes: +# With FEATURE(blacklist_recipients) this is also possible: +# badlocaluser 550 Mailbox disabled for this username +# host.mydomain.com 550 That host does not accept mail +# user@otherhost.mydomain.com 550 Mailbox disabled for this recipient +# +# Related: +# define(`confREJECT_MSG', `550 Access denied')dnl +# define(`confCR_FILE', `-o /etc/mail/relay-domains')dnl <<- $=R +# FEATURE(relay_hosts_only)dnl +# FEATURE(relay_entire_domain)dnl <<- relays any host in the $=m class +# FEATURE(relay_based_on_MX)dnl <<- relaying for boxes MX'd to you +# FEATURE(blacklist_recipients)dnl +# FEATURE(rbl[,alternate server])dnl +# FEATURE(orbs[,alternate server])dnl <<- Debian addition +# FEATURE(accept_unqualified_senders)dnl +# FEATURE(accept_unresolvable_domains)dnl +# +# Local addresses 10.x.x.x, 127.x.x.x, 192.168.x.x can relay +10 RELAY +127 RELAY +192.168 RELAY +# +# Hosts that are allowed to talk to me +# diff --git a/debian/db-examples/relay-domains b/debian/db-examples/relay-domains new file mode 100644 index 0000000..a1f319d --- /dev/null +++ b/debian/db-examples/relay-domains @@ -0,0 +1,34 @@ +# /etc/mail/relay-domains +# Copyright (c) 1998, Richard Nelson <cowboy@debian.org>. +# Time-stamp: <1998/10/27 10:00:00 cowboy> +# GPL'd config file, please feed any gripes, suggestions, etc. to me +# +# Function: +# Control what hosts are allowed to relay (or be a relay) +# +# Usage: +# define(`confCR_FILE', `-o /etc/mail/relay-domains')dnl +# +# Format: +# lhs: +# +# Notes: +# Class $=R +# These are domains unless FEATURE(relay_hosts_only) is used, +# then these names must be fully qualified host names! +# +# Related: +# FEATURE(relay_hosts_only)dnl +# FEATURE(relay_entire_domain)dnl <<- relays any host in the $=m class +# FEATURE(relay_based_on_MX)dnl <<- relaying for boxes MX'd to you +# FEATURE(access_db)dnl +# EATURE(blacklist_recipients)dnl +# FEATURE(rbl[,alternate server])dnl +# FEATURE(orbs[,alternate server])dnl <<- Debian addition +# FEATURE(accept_unqualified_senders)dnl +# FEATURE(accept_unresolvable_domains)dnl +# +# Hosts that I will relay to: +# +# Hosts that can relay to me: +# diff --git a/debian/debian.m4 b/debian/debian.m4 index 8c111e4..8344772 100644 --- a/debian/debian.m4 +++ b/debian/debian.m4 @@ -33,7 +33,7 @@ divert(-1) # SUCH DAMAGE. # divert(0) -VERSIONID(`@(#)debian.m4 8.8 (Debian) 01/21/98') +VERSIONID(`@(#)debian.m4 8.9.3 (Debian) 19990210') define(`confCF_VERSION', `Debian/GNU')dnl define(`LOCAL_MAILER_PATH', `/usr/sbin/sensible-mda')dnl dnl define(`LOCAL_MAILER_FLAGS', `mnru9')dnl @@ -44,19 +44,21 @@ define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl define(`USENET_MAILER_PATH', `/usr/bin/inews')dnl define(`confSAFE_QUEUE', `True')dnl define(`confTEMP_FILE_MODE', `600')dnl -define(`STATUS_FILE', `/var/log/sendmail.st')dnl -define(`confCW_FILE', `-o /etc/mail/sendmail.cw')dnl -define(`confCT_FILE', `-o /etc/mail/sendmail.ct')dnl -define(`confCON_EXPENSIVE', `True')dnl +define(`STATUS_FILE', `/var/log/sendmail.st')dnl +define(`HELP_FILE', `/usr/share/misc/sendmail.hf')dnl define(`confHOST_STATUS_DIRECTORY', `/var/state/sendmail')dnl +define(`confCW_FILE', `-o /etc/mail/sendmail.cw')dnl +define(`confCT_FILE', `-o /etc/mail/sendmail.ct')dnl +define(`confCR_FILE', `-o /etc/mail/relay-domains')dnl +define(`confUSERDB_SPEC', ` /etc/mail/users.db')dnl +define(`confCON_EXPENSIVE', `True')dnl define(`confDIAL_DELAY', `45')dnl define(`confTO_ICONNECT', `30s')dnl define(`confQUEUE_SORT_ORDER', `Host')dnl -define(`confMAX_DAEMON_CHILDREN', `30s')dnl -define(`confDONT_INIT_GROUPS', `True')dnl +define(`confMAX_DAEMON_CHILDREN', `30')dnl +define(`confEBINDIR', `/usr/sbin')dnl # These undocumented features are available in Debian sendmail. - # O PidFile=/var/run/sendmail.pid # O WritableDirectoriesAreFatal=False # O ChownIsAlwaysSafe=False @@ -64,6 +66,25 @@ define(`confDONT_INIT_GROUPS', `True')dnl # O MaxRecipientPerMessage= # O DeadLetterDrop=False # O RrtImpliesDSN=False -# O TCPWrappers=False +# O TCPWrappers=False -- not for 8.9.0+ +# These are the sendmail 8.9.0 security enhancements +define(`confDONT_BLAME_SENDMAIL',`ClassFileInUnsafeDirPath,ForwardFileInGroupWritableDirPath,GroupWritableAliasFile,GroupWritableForwardFileSafe,GroupWritableIncludeFileSafe,IncludeFileInGroupWritableDirPath,MapInUnsafeDirPath')dnl +LOCAL_CONFIG +# Sendmail 8.9.1a patch for mime headers to protect the various MUAs: +# This option causes MIME headers to be truncated to a total of 256 +# characters; no individual field is permitted to exceed 128 +# characters. These values should be safe for the common mail clients +# that are vulnerable. +# +# Note: there is a speed trade here, as the entire message must be scanned +O MaxMimeHeaderLength=256/128 + +# Sendmail 8.9.3 fix for header based DOS +# Number of bytes allowed for mail headers, default=32k. +define(confMAX_HEADERS_LENGTH, 32768) + +# +DOMAIN(generic)dnl +FEATURE(access_db, `hash -o /etc/mail/access.db')dnl diff --git a/debian/debproto.mc b/debian/debproto.mc index 6841807..01c4fdb 100644 --- a/debian/debproto.mc +++ b/debian/debproto.mc @@ -38,5 +38,5 @@ divert(-1) # divert(0) -VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96') +VERSIONID(`@(#)sendmail.mc 8.9.1a (Linux) 19981026') OSTYPE(debian)dnl diff --git a/debian/dirs b/debian/dirs deleted file mode 100644 index 23b4a3f..0000000 --- a/debian/dirs +++ /dev/null @@ -1,15 +0,0 @@ -DEBIAN -etc/init.d -usr/bin -usr/sbin -usr/man/man1 -usr/man/man5 -usr/man/man8 -usr/doc/sendmail -usr/lib/sm.bin -usr/lib/sendmail.cf/hack -usr/lib/sendmail.cf/domain -usr/lib/sendmail.cf/ostype -usr/lib/sendmail.cf/cf -var/state/sendmail -var/log diff --git a/debian/ip-up.d b/debian/ip-up.d index 7bada47..e965be2 100644 --- a/debian/ip-up.d +++ b/debian/ip-up.d @@ -10,5 +10,8 @@ # Start/reload sendmail as needed #/etc/init.d/sendmail reload +# Purge the persistant host status so that *all* mail will be tried +purgestat + # Process the sendmail queue -#runq +runq diff --git a/debian/nodns.m4 b/debian/nodns.m4 index c84d2c5..489e90b 100644 --- a/debian/nodns.m4 +++ b/debian/nodns.m4 @@ -38,7 +38,7 @@ divert(-1) undefine(`confBIND_OPTS')dnl define(`confSERVICE_SWITCH_FILE', `/etc/nssnodns.conf')dnl FEATURE(nocanonify) -# HACK(nodns): What DNS? +# `HACK(nodns)': What DNS? O DontProbeInterfaces=True diff --git a/debian/notes b/debian/notes new file mode 100644 index 0000000..6eb17ea --- /dev/null +++ b/debian/notes @@ -0,0 +1,2 @@ +dpkg-source -x, dpkg-buildpackage -B -rsudo and then fetch the changes file, pgp-ing and ready, the flag -B is important to the binary-indep section of the debian/rules file --- thats all +*haggie!koptein@ppp014asc.fho-emden.de* powerpc builds all packages with an auto-builder (wanna-build), but it is currently broken with an db error diff --git a/debian/orbs.m4 b/debian/orbs.m4 new file mode 100644 index 0000000..1be5bb3 --- /dev/null +++ b/debian/orbs.m4 @@ -0,0 +1,5 @@ +VERSIONID(`@(#)orbs.m4 1.1 1998-09-14') +divert(-1) + +dnl define(`_ORBS_', ifelse(_ARG_, `', `orbs.dorkslayers.com', `_ARG_'))dnl +define(`_ORBS_', ifelse(_ARG_, `', `relays.orbs.org', `_ARG_'))dnl diff --git a/debian/orbs.patch.README b/debian/orbs.patch.README new file mode 100644 index 0000000..d6b12d6 --- /dev/null +++ b/debian/orbs.patch.README @@ -0,0 +1,112 @@ +From MAILER-DAEMON Tue Oct 20 12:08:00 1998 +Date: Tue, 20 Oct 1998 12:08:00 -0400 (EDT) +From: Mail System Internal Data <MAILER-DAEMON@badlands.lexington.ibm.com> +Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA +X-IMAP: 0908899680 0000000000 +Status: RO + +This text is part of the internal format of your mail folder, and is not +a real message. It is created automatically by the mail system software. +If deleted, important folder data will be lost, and it will be re-created +with the data reset to initial values. + +From cowboy@badlands.lexington.ibm.com Tue Oct 20 11:48:28 1998 -0400 +Status: R +X-Status: +X-Keywords: +Return-Path: <<@LEXVMK.LEXINGTON.IBM.COM:SMTP3@IINUS1>> +Received: from LEXVMK.LEXINGTON.IBM.COM (lexvmk.lexington.ibm.com [9.51.16.254]) + by badlands.lexington.ibm.com (8.9.1a/8.9.1/Debian/GNU) with SMTP id LAA31227 + for <cowboy@badlands.lexington.ibm.com>; Tue, 20 Oct 1998 11:48:27 -0400 +Received: from LEXVMK by LEXVMK.LEXINGTON.IBM.COM (IBM VM SMTP V2R4) + with BSMTP id 8846; Tue, 20 Oct 98 11:48:26 EDT +Received: by LEXVMK (cvtto822 4.0.0) via <smtp3@iinus1> id 9595 (RFC822) + for <cowboy@lexgate>; Tue, 20 Oct 98 11:48:26 -0400 +Received: from master.debian.org [209.176.56.5] by vnet.IBM.COM (IBM VM SMTP V2R4a) via TCP with SMTP ; Tue, 20 Oct 1998 11:48:20 EDT +Received: (qmail 8440 invoked by uid 1163); 20 Oct 1998 15:48:21 -0000 +Delivered-To: cowboy@debian.org +Received: (qmail 8427 invoked by uid 847); 20 Oct 1998 15:48:20 -0000 +Delivered-To: joey-packages-sendmail@packages.debian.org +Received: (qmail 8422 invoked from network); 20 Oct 1998 15:48:19 -0000 +Received: from jupiter.bsfh.org (ph@204.101.57.25) + by master.debian.org with SMTP; 20 Oct 1998 15:48:19 -0000 +Received: (from ph@localhost) + by jupiter.bsfh.org (8.9.1a/8.9.1/Debian/GNU) id LAA13376 + for sendmail@packages.debian.org; Tue, 20 Oct 1998 11:48:18 -0400 +Message-ID: <19981020114817.A1338@jupiter.bsfh.org> +Date: Tue, 20 Oct 1998 11:48:17 -0400 +From: Paul Haggart <ph@bsfh.org> +To: sendmail@packages.debian.org +Subject: orbs - open relay blocking system +Mime-Version: 1.0 +Content-Type: multipart/mixed; boundary=zhXaljGHf11kAtnf +X-Mailer: Mutt 0.93.2i +X-Uptime: 4:41pm up 3 min, 3 users, load average: 1.16, 0.53, 0.20 +X-SpamBouncer: 1.00h (10/18/98) +X-SBRule: Pass-No Pattern Matching +X-SBClass: OK +X-Sorted: Default + + +--zhXaljGHf11kAtnf +Content-Type: text/plain; charset=us-ascii + + Is there any way I can get the orbs.m4 and proto.m4 patch into the next +sendmail? I hate patching my local version because it all disappears at the +next upgrade. + + I've attached the files. + + More info about ORBS is at http://www.dorkslayers.com/orbs/ + +-- +Paul Haggart - System Admin, Cybertap Inc. - Debian Linux - PGP 0xD61313E9 + + +--zhXaljGHf11kAtnf +Content-Type: text/plain; charset=us-ascii +Content-Disposition: attachment; filename="proto.m4.patch" + +*** proto.m4.19980930 Wed Sep 30 20:21:52 1998 +--- proto.m4 Wed Sep 30 20:18:18 1998 +*************** +*** 1068,1076 **** + ifdef(`_RBL_', `dnl + # MAPS project checks -- http://maps.vix.com/ + R$* $: $&{client_addr} +! R$-.$-.$-.$- $: $(host $4.$3.$2.$1._RBL_. $: OK $) +! ROK $@ OK +! R$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://maps.vix.com/rbl/"', + `dnl') + + ###################################################################### +--- 1068,1084 ---- + ifdef(`_RBL_', `dnl + # MAPS project checks -- http://maps.vix.com/ + R$* $: $&{client_addr} +! R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $) +! R<?>OK $: OKSOFAR +! R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://maps.vix.com/rbl/"', +! `dnl') +! +! ifdef(`_ORBS_', `dnl +! # ORBS project checks -- http://www.dorkslayers.com/orbs/ +! R$* $: $&{client_addr} +! R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._ORBS_. $: OK $) +! R<?>OK $: OKSOFAR +! R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://www.dorkslayers.com/orbs/"', + `dnl') + + ###################################################################### + +--zhXaljGHf11kAtnf +Content-Type: text/plain; charset=us-ascii +Content-Disposition: attachment; filename="orbs.m4" + +VERSIONID(`@(#)orbs.m4 1.1 1998-09-14') +divert(-1) + +define(`_ORBS_', ifelse(_ARG_, `', `orbs.dorkslayers.com', `_ARG_'))dnl + +--zhXaljGHf11kAtnf-- + diff --git a/debian/orca.m4 b/debian/orca.m4 new file mode 100644 index 0000000..c881cb8 --- /dev/null +++ b/debian/orca.m4 @@ -0,0 +1,4 @@ +VERSIONID(`@(#)orca.m4 1.0 1998-11-23') +divert(-1) + +define(`_ORCA_', ifelse(_ARG_, `', `dul.orca.bc.ca', `_ARG_'))dnl diff --git a/debian/part1 b/debian/part1 deleted file mode 100644 index f6f347a..0000000 --- a/debian/part1 +++ /dev/null @@ -1,1755 +0,0 @@ -Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!hookup!nic.ott.hookup.net!vertex.tor.hookup.net!nic.win.hookup.net!news-out.internetmci.com!newsfeed.internetmci.com!uwm.edu!math.ohio-state.edu!howland.erols.net!newsxfer3.itd.umich.edu!news.cic.net!not-for-mail -From: brad@etext.org -Newsgroups: comp.mail.sendmail,comp.mail.misc,comp.answers,news.answers -Subject: comp.mail.sendmail Frequently Asked Questions (Part 1 of 2) -Followup-To: comp.mail.sendmail -Date: 27 Mar 1997 06:01:28 GMT -Organization: The ETEXT Archives -Lines: 1734 -Approved: news-answers-request@MIT.Edu -Distribution: world -Expires: 05/01/97 02:00:01 -Message-ID: <5hd2fo$pou$1@news.cic.net> -Reply-To: sendmail-faq@etext.org (Sendmail FAQ Maintainers) -NNTP-Posting-Host: locust.cic.net -Summary: This posting contains a list of Frequently Asked Questions - (and their answers) about the program "sendmail", distributed with - many versions of Unix. It should be read by anyone who wishes to - post to the Usenet newsgroup comp.mail.sendmail. -Keywords: sendmail mail SMTP FAQ -X-Posting-Frequency: posted on the 27th of each month -Xref: senator-bedfellow.mit.edu comp.mail.sendmail:42630 comp.mail.misc:38790 comp.answers:25080 news.answers:98196 - -Posted-By: auto-faq 3.1.1.2 -Archive-name: mail/sendmail-faq/part1 - -URL: http://www.his.com/~brad/sendmail/index.html - - - comp.mail.sendmail - Frequently Asked Questions (FAQ) - Last updated March 24, 1997 - - Copyright 1996, by Brad Knowles, all rights reserved - - -This FAQ is edited and maintained by Brad Knowles <brad@etext.org>. -The official archive for all FAQs posted to <news:news.answers> -is <ftp://rtfm.mit.edu/pub/usenet/news.answers/>, with many known -mirrors. On this site, the latest version of this FAQ can be found -in <ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq/>. -Since this server tends to be extremely busy, as an alternative, -you might want to try using <http://www.imc.org/sendmail-faq-1> -and <http://www.imc.org/sendmail-faq-2> instead. - -If you don't have access to FTP or WWW, this FAQ can be retrieved by -sending Internet email to <mail-server@rtfm.mit.edu> with an empty -subject line (it gets ignored) and the command "send -usenet/news.answers/mail/sendmail-faq/part*" as the body of the -message (omitting the quotes, of course). - -As an alternative, you might want to try sending Internet email -to <info@imc.org> with an empty subject line (it gets ignored) -and "send sendmail-faq-*" as the body of the body of the message -(again, omitting the quotes). - -Additional alternative access methods are detailed within. - - -This FAQ is in RFC 1153 digest format. The "Date:" field of each -entry represents the date of the last update made to that entry. - - -This FAQ has now been split into two parts, to try and make it easier -to pass through older or less capable news or mail gateways. - - -The intent is to ultimately make this document more web-friendly (in -that all original work is done in SGML), and using the linuxdoc-sgml -tools, automatically generate both the HTML and ASCII text versions, -automatically posting the ASCII version to comp.mail.sendmail as -appropriate. - -In the meanwhile, all pseudo-HTMLized versions of this FAQ are -considered unsupported. We cannot be held responsible for what -someone else's program does to this document in an attempt to -make it more web-friendly. Nevertheless, the Landfield Hypertext -Usenet FAQ Archive seems to work well, and if you must access -the comp.mail.sendmail FAQ via the web, try slinging over to -<http://www.landfield.com/faqs/mail/sendmail-faq/>. - - -Comments/updates should be sent to <sendmail-faq@etext.org>. - ----------------------------------------------------------------------- - -Date: March 24, 1997 -Subject: Table of Contents - -Table of Contents -================= - - PART ONE - ======== - - 0. TO DO - - 1. COPYRIGHT NOTICE / REDISTRIBUTION REQUIREMENTS - - 2. INTRODUCTION / MISCELLANEOUS - 2.1 What is this newsgroup? - 2.2 What is the scope of this FAQ? - 2.3 Where can I find the latest version of this FAQ? - 2.4 How do I access comp.mail.sendmail by email? - 2.5 Where can I ask email-related DNS questions? - 2.6 How can I subscribe to these newsgroups? - 2.7 Which version of sendmail should I run? - 2.8 What is the latest release of sendmail? - 2.9 Where can I find it? - 2.10 What are the differences between Version 8 and other - versions? - 2.11 What's the best platform for running sendmail? - 2.12 What is BIND and where can I get the latest version? - 2.13 What is smrsh and where can I get it? - 2.14 What is smap and where can I get it? - 2.15 What is TCP-Wrappers and where can I get it? - 2.16 Why won't db 1.85 build for my SGI running Irix >= 5.2? - 2.17 What is makemap and where can I get it? - - 3. VERSION 8 SPECIFIC ISSUES - 3.1 How do I make all my addresses appear to be from a single - host? - 3.2 How do I rewrite my "From:" lines to read - ``First_Last@My.Domain''? - 3.3 So what was the user database feature intended for? - 3.4 Why are you so hostile to using full names for email - addresses? - 3.5 Where do I find this user database (UserDB) code? - 3.6 How do I get the user database to work with Pine or - with FEATURE(always_add_domain)? - 3.7 How do I manage several (virtual) domains? - 3.8 There are four UUCP mailers listed in the configuration - files. Which one should I use? - 3.9 How do I fix "undefined symbol inet_aton" and "undefined - symbol _strerror" messages? - 3.10 How do I solve "collect: I/O error on connection" errors? - 3.11 Why can't my users forward their mail to a program? - 3.12 Why do connections to the SMTP port take such a long time? - 3.13 Why do I get "unknown mailer error 5 -- mail: options - MUST PRECEDE recipients" errors? - 3.14 Why does version 8 sendmail panic my SunOS box? - 3.15 Why does the "From " header gets mysteriously munged - when I send to an alias? - 3.16 Why doesn't MASQUERADE_AS (or the user database) work - for envelope addresses as well as header addresses? - 3.17 How do I run version 8 sendmail and support the MAIL11V3 - protocol? - 3.18 Why do messages disappear from my queue unsent? - 3.19 When is sendmail going to support RFC 1522 MIME header - encoding? - 3.20 Why can't I get mail to some places, but instead - always get the error "reply: read error from - name.of.remote.host"? - 3.21 Why doesn't "FEATURE(xxx)" work? - 3.22 How do I configure sendmail to not use DNS? - 3.23 How do I get all my queued mail delivered to my Unix - box from my ISP? - - - PART TWO - ======== - - 4. GENERAL SENDMAIL ISSUES - 4.1 Should I use a wildcard MX for my domain? - 4.2 How can I set up an auto-responder? - 4.3 How can I get sendmail to deliver local mail to - $HOME/.mail instead of into /usr/spool/mail (or - /usr/mail)? - 4.4 Why does it deliver the mail interactively when I'm - trying to get it to go into queue only mode? - 4.5 How can I solve "config error: mail loops back to - myself" messages? - 4.6 Why does my sendmail process sometimes hang when - connecting over a SLIP/PPP link? - 4.7 How can I summarize the statistics generated by - sendmail in the syslog? - 4.8 How can I check my sendmail.cf to ensure that it's - re-writing addresses correctly? - 4.9 What is procmail, and where can I get it? - 4.10 How can I solve "cannot alias non-local names" errors? - - 5. VENDOR/OS SPECIFIC SENDMAIL ISSUES - 5.1 Sun Microsystems SunOS/Solaris 1.x/2.x - 5.1.1 How can I solve "line 273: replacement $3 out of - bounds" errors? - 5.1.2 How can I solve "line 445: bad ruleset 96 (50 max)" - errors? - 5.1.3 Why does version 8 sendmail (< 8.7.5) sometimes - hang under Solaris 2.5? - 5.1.4 Why can't I use SunOS/Solaris to get email to - certain large sites? - 5.2 IBM AIX - 5.2.1 The system resource controller always reports - sendmail as "inoperative". What's wrong? - 5.2.2 Why can't I use AIX to get email to some sites? - 5.2.3 Why can't I get sendmail 8.7.1 to use MX records - with AIX 3.2.5? - - 6. ADDITIONAL INFORMATION SOURCES (RFC 1807 bibliography format) - 6.1 Reference material devoted exlusively to sendmail - 6.2 Reference material with chapters or sections on sendmail - 6.3 Reference material on subjects related to sendmail - 6.4 World-wide web index pages on sendmail - 6.5 World-wide web index pages Internet email in general - 6.6 Online tutorials for sendmail - 6.7 Online archives of mailing lists and Usenet newsgroups, - relating to Internet email - - 7. THANKS! - ------------------------------- - -Date: January 17, 1997 -Subject: Q0 -- TO DO list - -* Make the FAQ more web-friendly by writing it in SGML and using - the linuxdoc-sgml tools to automate the generation of the HTML - and ASCII text versions. -* Index -* Additional net resources (web pages, anonymous ftp sites, etc...) -* Larger, more clearly written annotated bibliography (including RFCs - and comments/corrections for books specific to sendmail) -* Reorganize by platform/version of sendmail (All Sun questions in one - section, all AIX questions in another, etc...) - ------------------------------- - -Date: May 28, 1996 -Subject: Q1 -- COPYRIGHT NOTICE / REDISTRIBUTION REQUIREMENTS - - The entire contents of this document are copyright 1996 by Brad -Knowles, all rights reserved. - - This document may be freely distributed for non-profit purposes -(including, but not limited to: posting to mailing lists, Usenet -newsgroups, and world-wide-web pages; inclusion on CD-ROM or other -distribution media; and insertion into text retrieval systems), so -long as it is the latest version available at the time, all parts are -distributed together, and it is kept completely intact without -editing, changes, deletions, or additions. Non-profit redistribution -in accordance with these guidelines does not require contact with or -approval from the copyright holder. - - Redistribution of this document for profit without express prior -permission is not allowed. At the very least, expect to provide the -copyright holder a free copy of the product (exactly as it would be -sold to customers, all distribution media intact), or a percentage of -the gross revenue from said product and sufficient proof that the -integrity and completeness requirements set for non-profit -distribution will be met. - - - In the event that the copyright holder discovers a redistributed -version that is not in compliance with the above requirements, he will -make a good-faith effort to get it corrected or removed, and failing -that, at least note its deprecated status in a new version. Legal -action will likely be taken against redistribution for profit that -is not in compliance with the above requirements. - ------------------------------- - -Date: May 28, 1996 -Subject: Q2.1 -- What is this newsgroup? - - The Usenet newsgroup <news:comp.mail.sendmail> is dedicated to the -discussion of the program named "sendmail" in all its various forms. -It is most commonly found on computers running a flavor of the -Operating System known as Unix, or derived from Unix. - - This program has been ported to other OSes, but those versions -have typically been ported by a particular vendor and are considered -proprietary. There are many versions of sendmail, but the original -author (Eric Allman) is continuing development on a particular version -typically referred to as "Version Eight" or sometimes just "V8". This -is considered by many to be the One True Version. This is also the -version that this FAQ is centered around. - - - If you have a question that amounts to "How do I send mail to my -friend?", then you're in the wrong newsgroup. You should first check -with your System or E-Mail Administrator(s), BBS SysOp(s), etc... -before you post your question publicly, since the answer will likely -be very highly dependant on what software and hardware you have. You -also don't want to embarass yourself publicly, nor do you want to -annoy the kinds of people who are likely to be the counterparts of -your System or E-Mail Administrator(s), BBS SysOp(s), etc.... If -asking them doesn't do you any good, make sure you read this FAQ and -the other mail-related FAQs at the archive sites listed below. - - If you have a question about another program similar to sendmail -(technically referred to as an "SMTP MTA"), an SMTP Gateway package, -or a LAN email package, then you should see if there is another group -in the <news:comp.mail> hierarchy that more closely matches the -particular program you want to ask a question about. For example, the -SMTP MTA known as Smail has <news:comp.mail.smail> dedicated to it. -The Mail User Agent (MUA) Eudora has two newsgroups dedicated to it -(<news:comp.mail.eudora.mac> and <news:comp.mail.eudora.ms-windows>), -depending on which hardware platform you use. If there isn't a more -appropriate newsgroup, try <news:comp.mail.misc>. Again, make sure -your question isn't already addressed in one of the mail-related -FAQs or other available documentation. See the IMC website (more -info below) for a good list of mail-related FAQs. - - - If you have a question about an older or vendor-proprietary -version of sendmail, be prepared for a lot of answers that amount to -"Get V8". Version 8 isn't a panacea, but it does solve many problems -known to plague previous versions, as well as having many new features -that make it much easier to administer large or complex sites. In -many cases, it makes at least possible what was previously virtually -impossible, and relatively easy the previously difficult. - - - There are, of course, many alternative programs that have sprung -up in an attempt to answer one or another weakness or perceived fault -of sendmail, but so far, none of them have had the kind of success it -would require to unseat it as the de facto standard program for -sending Internet mail. Obviously, this forum should not be used to -discuss the merits of any of the alternative programs versus sendmail. -These kinds of discussions should be taken to <news:comp.mail.misc>, -or you should agitate to get a new newsgroup or newsgroup hierarchy -created where that sort of thing is acceptable (or even the norm, such -as a <news:comp.mail.advocacy> or <news:comp.mail.mta.advocacy> -newsgroup). - ------------------------------- - -Date: July 9, 1996 -Subject: Q2.2 -- What is the scope of this FAQ? - - This FAQ is strongly centered around version 8 sendmail, for many -reasons. First and foremost, this is the area of most interest on the -part of the maintainer of this FAQ. Secondly, version 8 is where most -of the additional development is being concentrated. Version 8 -sendmail is also the best documented of all SMTP MTAs, by virtue of -the book by Bryan Costales (see entry -sendmail-faq//book/ISBN/1-56592-056-2 in Q6.1). - - Other versions of sendmail get mentioned in passing, and some -interesting interactions between version 8 and various OSes is also -covered. - - This FAQ is aimed primarily at the experienced Unix System -Administrator/Postmaster/DNS Domain Administrator. If you're looking -for introductory texts, see the references in Q6.1. - - - Where I've provided URLs, I've generally tried to keep them -exactly as they should be entered, without line breaks or anything -else. This may make them or the surrounding text ugly, but hopefully -they'll be easier to cut-and-paste, or just click on once I've got an -HTMLized version. However, this has not been possible in the -bibliography section, since I'm trying to adhere to RFC 1807 -guidelines, and they explicitly require lines to be no longer than 79 -characters. In those cases, I've tried to break the lines at -relatively obvious and innocuous places. - ------------------------------- - -Date: January 21, 1997 -Subject: Q2.3 -- Where can I find the latest version of this FAQ? - - I post changes as they occur to my sendmail FAQ support page -at <http://www.his.com/pub/brad/sendmail/>. - - The ASCII text of my private version can be found at -<ftp://ftp.his.com/pub/brad/sendmail/sendmail-faq/part*>, while -the latest "single part" version before the split can be found at -<ftp://ftp.his.com/pub/brad/sendmail/sendmail-faq/old>. I don't -have an HTMLized version yet, but when I do, I will put in a link -to it from my support page as well as updating this document. - - - The official version (as posted to <news:news.answers>) is in -<ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq/>. - - The Internet Mail Consortium <http://www.imc.org> -maintains an archive of email related FAQs and many other -documents. On their site, the latest version of this FAQ -can be found in <http://www.imc.org/sendmail-faq-1> and -<http://www.imc.org/sendmail-faq-2>. - - - Unfortunately, the parser for the Ohio State semi-official -pseudo-HTMLized version tends to misinterpret the way I provide -URLs, so I no longer support it or provide the URL for this FAQ at -that site. However, Kent Landfield has put together an alternative -web archive of Usenet FAQs, and it appears to parse things in a -more sensible manner. - - The root of the Landfield FAQ archive is at -<http://www.landfield.com/faqs/>, and the comp.mail.sendmail FAQ -can be found at <http://www.landfield.com/faqs/mail/sendmail-faq/>. - - The Landfield Usenet Hypertext FAQ Archive supports full text -searching with multiple ways to access Usenet's Frequently Asked -Question postings. Hyperlinks are enabled where ever possible to -make references easy to follow. A full set of FAQ statistics is -also available. - - - If you don't have access to FTP or WWW, this FAQ can be -retrieved by sending Internet email to <mail-server@rtfm.mit.edu> -with an empty subject line (it gets ignored) and the command "send -usenet/news.answers/mail/sendmail-faq/part*" as the body of the -message (omitting the quotes, of course). - - Since this server tends to be extremely busy, as an alternative, -you might want to try sending Internet email to <info@imc.org> with -an empty subject line (it gets ignored) and "send sendmail-faq-*" -as the body of the body of the message (again, omitting the quotes). - - - Well known mirrors for the FAQs archived at rtfm.mit.edu can be -found at: - - Continent URL - --------- ------------------------------------------- - North <ftp://mirrors.aol.com/pub/rtfm/usenet/> - America <ftp://ftp.uu.net/usenet/news.answers/> - <ftp://ftp.seas.gwu.edu/pub/rtfm/> - <http://www.landfield.com/faqs/> - Europe <ftp://ftp.uni-paderborn.de/pub/FAQ/> - <ftp://ftp.Germany.EU.net/pub/newsarchive/news.answers/> - <ftp://ftp.sunet.se/pub/usenet/> - <http://www.cs.ruu.nl/cgi-bin/faqwais/> - <http://www.lib.ox.ac.uk/internet/news/faq/by_group.index.html> - Asia <ftp://nctuccca.edu.tw/USENET/FAQ/> - <ftp://hwarang.postech.ac.kr/pub/usenet/news.answers/> - <ftp://ftp.hk.super.net/mirror/faqs/> - Australia <ftp://ftp.info.au/usenet/FAQs/> - - - - Additional information on how to get access -to various Internet resources by email can be -found in Bob Rankin's Internet-by-Email FAQ, -<ftp://rtfm.mit.edu/pub/usenet/news.answers/internet-services/access-via-email>. - - To get the latest edition of this document sent to you by return -email, send a message to one of these addresses: - - To: mail-server@rtfm.mit.edu (for US, Canada & South America) - Enter only this line in the BODY of the note: - send usenet/news.answers/internet-services/access-via-email - - To: mailbase@mailbase.ac.uk (for Europe, Asia, etc.) - Enter only this line in the BODY of the note: - send lis-iis e-access-inet.txt - ------------------------------- - -Date: November 24, 1996 -Subject: Q2.4 -- How do I access comp.mail.sendmail by email? - - Send email to <mxt@dl.ac.uk> with the command "sub -comp-news.comp.mail.sendmail full-US-ordered-email-address" as -the body of the message (with your correct address in place of the -"full-US-ordered-email-address", and omitting the double quotes in -all cases of this example). - - E-mail you want posted on comp.mail.sendmail should be sent to -<comp-mail-sendmail@dl.ac.uk> - ------------------------------- - -Date: March 23, 1996 -Subject: Q2.5 -- Where can I ask email-related DNS questions? - - Depending on how deeply they get into the DNS, they can be asked -here. However, you'll probably be told that you should send them to -the Usenet newsgroup <news:comp.protocols.tcp-ip.domains> (DNS in -general) or to the Info-BIND mailing list (if the question is specific -to that program). - ------------------------------- - -Date: May 23, 1996 -Subject: Q2.6 -- How can I subscribe to these? - - For <news:comp.protocols.tcp-ip.domains>, you have to be on -Usenet. They don't have a news-to-mail gateway yet (I'm working on -this), but they do have a FAQ, and it can be found at -<ftp://ftp.njit.edu/pub/dns/Comp.protocols.tcp-ip.domains.FAQ>. - - Questions from all levels of experience can be found on this -newsgroup (as well as people to answer them), so don't be shy about -asking a question you think may be too simple. - - - For the Info-BIND mailing list, send email to -<bind-request@vix.com> with and empty subject (it gets ignored) and -the command "subscribe" as the body of the message. Submissions -should be sent to <bind@vix.com>. - - Note that this list is now moderated, and anything you post to it -may get material added, deleted, or changed by the moderator. He -reserves the right to reject any postings (and possibly unsubscribe -the poster), if he deems them inappropriate. - ------------------------------- - -Date: May 23, 1996 -Subject: Q2.7 -- Which version of sendmail should I run? - - If you're concerned at all about the security of your machines, -you should make sure you're at least running a recent release of -version 8 sendmail (either from your vendor or the public version -detailed in 1.8). - - Check the CERT Alerts and Summaries (details in 1.13) to make sure -that you're running a version that is free of known security holes. -Just because the sendmail program provided by your vendor isn't list -doesn't mean that you're not vulnerable, however. If your particular -vendor or version isn't listed, check with your vendor and on the -appropriate Internet mailing lists and Usenet newsgroups to verify. - - If nothing else, the most recent public version is usually a -pretty good bet, although you should check <news:comp.mail.sendmail> -to see if anyone has posted recent comments that haven't yet been -folded into a new release. - - - That said, you need to look at what the primary function is for -the machine. If its primary function is to run some CAD/CAM package -on the desk of an Engineer, then there's probably not much sense in -replacing the vendor-supplied version of sendmail (assuming it's -secure, according to the CERT Alerts and Summaries). Just set the -machine up to forward all outbound mail to a central mail relay, and -then worry about making that central mail relay the best it can be. -Also arrange to have all their inbound mail pass through a central -Mail eXchanger (probably the same machine as the central Mail Relay), -for the same reasons. - - - If the primary function for a machine is to act as that central -Mail Relay/Mail eXchanger, then I *strongly* recommend the best -version of sendmail you can get, and in my opinion that is the latest -release of version 8. IDA sendmail is also pretty good, but virtually -everything it does, version 8 does better, and version 8 has the -additional advantage of having continued development as well. On a -central mailhub, recent versions of IDA sendmail are the oldest -sendmail that I'd even consider leaving in place instead of replacing -with version 8. - - However, keep in mind that version 8 still hasn't been ported (so -far as we know) to some of the older (and perhaps more esoteric) -platforms, and if you're stuck using one of them, you may not have -much choice. - - - Recently, some vendors have started shipping (or announced that -they will soon ship) version 8 sendmail pre-configured for their -machines. Unfortunately, in most cases this means you get a -pre-compiled binary and a sendmail.cf file (that may need a bit of -tweaking), but not much else of the "standard" version 8 sendmail -installation kit. Silicon Graphics (SGI) is known to already be -shipping version 8 sendmail in this fashion, and both Hewlett-Packard -and Sun Microsystems have announced that they soon will be (Sun has a -patch today that can be applied to upgrade many machines to an older -release of version 8 sendmail). - - This may be suitable for desktop machines forwarding all their -mail to a central Mail Relay and receiving all their mail from a -central Mail eXchanger, but I personally believe that this is not -likely to be suitable for the central Mail Relay/Mail eXchanger -itself. In that case, I recommend you get and install the latest -version and get the m4 macros, the on-line documentation, the source -code, etc.... - ------------------------------- - -Date: January 21, 1997 -Subject: Q2.8 -- What is the latest release of sendmail? - - For version 8 sendmail, there are three release trees. - - For those people who, for whatever reason, are unable or -unwilling to upgrade to version 8.8.z, releases of version 8.6 and -8.7 sendmail are still available. As of this writing, the most -recent release of version 8.6 sendmail is 8.6.13, and the most -recent release of version 8.7 sendmail is 8.7.6. - - For the most recent releases of 8.6 and 8.7 sendmail, there is a -version number difference between the sendmail program itself and the -associated configuration files. This is okay. The security-related -bug fixes that were made only required changes to the sendmail -program itself and not the configuration files, so only the version -number of the sendmail program itself was incremented. - - - The most recent release of version 8.8 sendmail is 8.8.5. - - On machines exposed directly to the Internet, you should either -already be running 8.8.5 sendmail or plan on upgrading to it in the -immediate future. This release is considered "mature", has security -fixes included that will not be found in any previous release, and -therefore supercedes all previous releases. - - There is no further support for previous releases of sendmail. - ------------------------------- - -Date: January 21, 1997 -Subject: Q2.9 -- Where can I find it? - - By anonymous FTP from ftp.sendmail.org in /pub/sendmail, or (in -URL form) via <ftp://ftp.sendmail.org/pub/sendmail/>. If you care, -there should be files in this directory that end with the extension -".sig" which you can check with PGP to make sure that corresponding -archives haven't been modified. You'll need to have the PGP key -of Eric Allman on your public keyring to be able to verify these -archives with their associated .sig files. - - Current releases of sendmail can also be found at -<ftp://ftp.cs.berkeley.edu/ucb/src/sendmail/>. - - There are no other known official version 8 sendmail mirrors. - - - Check the sendmail home page at <http://www.sendmail.org/> for -late-breaking updates and other useful information. - - If you want to be notified regarding future updates to sendmail -and other items of potential interest, you may want to subscribe -to the sendmail-announce mailing list. Address your subscription -requests to "majordomo@lists.sendmail.org" with "subscribe -sendmail-announce" as the body of the message. - ------------------------------- - -Date: March 23, 1996 -Subject: Q2.10 -- What are the differences between Version 8 and - other versions? - - See doc/changes/changes.{me,ps} in the distribution. See also -RELEASE_NOTES at the top level. - ------------------------------- - -Date: March 24, 1997 -Subject: Q2.11 -- What is BIND and where can I get the latest version? - - BIND stands for "Berkeley Internet Name Daemon", and is the -Internet de-facto standard program for turning host names into IP -addresses. - - The BIND Home Page is at <http://www.isc.org/bind.html>, which -provides pointers to the most recent release of BIND. Note that -BIND 4.9.5-P1 is the most recent "production version", and BIND -8.1 (the next major release; skipping 5.x-7.x) is a "release -candidate" as of version 8.1T3B. See the BIND 8.1T3B announcement -at <ftp://ftp.isc.org/isc/bind/src/testing/t3b-ann.asc> for more -information. - - - Note that there are bugs in older resolver libraries, which can -cause problems getting to large sites (that list more than five IP -addresses for a particular name), or represent a huge security hole -as they do not check the returned data to see if it will fit in the -amount of space pre-allocated for it. - - If at all possible, you should get the most recent "release" -version of BIND and make a serious attempt to integrate it into -your configuration, since virtually all vendor-provided resolver -libaries are woefully out of date. - ------------------------------- - -Date: March 24, 1997 -Subject: Q2.12 -- What's the best platform for running sendmail? - - Generally speaking, I adhere to the old axiom that you should -choose what software you want to run first, then choose the platform -(hardware and OS) that best runs this software. By this token, if -sendmail is the software, then a recent version of BSD Unix would -probably be best, since sendmail was developed at UC Berkeley on -BSD Unix. FreeBSD and BSD/OS are two known implementations of -BSD Unix for Intel-based PC's (among other hardware platforms), -and this would make them the most "native" OSes for sendmail. -FreeBSD is freely available by anonymous ftp or on CD-ROM, and -BSD/OS is a commercial product. - - However, not everyone has this kind of "luxury". If you're on a -homogenous network (i.e., completely composed of only one type of -hardware and OS), then you should probably be running the same OS as -the rest of the machines on the network, regardless of the axiom -stated above. You may have other problems, but you should at least be -able to get some local support on the OS for your machine. - - - Either way, if the primary function of the machine is to handle -"large" quantities of mail (for whatever value you define "large" -to be), I strongly recommend getting the latest stable release of -version 8 sendmail. - - On the other hand, if the primary function of the machine is -to sit on some Engineer's desk and do CAD, then it may be easier -for you to leave the vendor-supplied version of sendmail on that -machine (after suitable configuration), and instead concentrate -your efforts on making the central mail handling machine(s) as -robust and capable as they can be. - - However, you may be surprised to find that it is easier -for you to support only one version of sendmail across all the -various platforms than it is to try and support multiple versions of -sendmail, each unique for their particular platform. In that case, -the easy solution is to put version 8 sendmail everywhere, and not -have to worry about vendor-specific problems with older versions. - - - For more information on BSD Unix in general, see the Usenet -newsgroups under <news:comp.unix.bsd>, <news:comp.bugs.4bsd>, -<news:comp.os.386bsd>. For more information on BSD/OS, see the BSD -newsgroups mentioned above, or the BSD/OS Home Page at -<http://www.bsdi.com/>. For more information on FreeBSD, see the -Usenet newsgroups under <news:comp.unix.bsd.freebsd>, or the FreeBSD -Home Page at <http://www.freebsd.org/>. - ------------------------------- - -Date: July 9, 1996 -Subject: Q2.13 -- What is smrsh and where can I get it? - - From <ftp://info.cert.org/pub/tools/smrsh/README>: - - smrsh is a restricted shell utility that provides the ability - to specify, through a configuration, an explicit list of - executable programs. When used in conjunction with sendmail, - smrsh effectively limits sendmail's scope of program execution - to only those programs specified in smrsh's configuration. - - smrsh has been written with portability in mind, and uses - traditional Unix library utilities. As such, smrsh should - compile on most Unix C compilers. - -The purpose for restricting the list of programs that can be executed -in this manner is to keep mail messages (either through an alias or -the .forward file in a user's home directory) from being sent to -arbitrary programs which are not necessarily known to be sufficiently -paranoid in checking their input, and can therefore be easily -subverted (this is related to, but different from, the /etc/shells -feature discussed in Q3.11). - - More information regarding the CERT-CC can be found at their web -site, <http://www.cert.org>. For more information on CERT Alerts and -CERT Summaries, see <ftp://info.cert.org/pub/cert_advisories/> and -<ftp://info.cert.org/pub/cert_summaries/>, respectively. - - - You can find smrsh in the most recent sendmail source archive, as -well as <ftp://info.cert.org/pub/tools/smrsh/>. Other very useful -programs can be found in <ftp://info.cert.org/pub/tools/>. - ------------------------------- - -Date: July 5, 1996 -Subject: Q2.14 -- What is smap and where can I get it? - - Smap (and smapd) are tools out of the Trusted Information Systems -(TIS) Firewall Toolkit (fwtk). They were originally written by -firewall expert Marcus Ranum under contract to TIS, and TIS is -continuing what maintenance there is. The toolkit may be found at -<ftp://ftp.tis.com/pub/firewalls/toolkit/>. Support questions -regarding the toolkit may be sent to <mailto:fwall-support@tis.com>, -while you may join their mailing list <mailto:fwall-users@tis.com> by -sending electronic mail to <mailto:fwall-users-request@tis.com>. - - - The concept of smap and smapd is that sendmail is a huge, -monolithic setuid root program that is virtually impossible to verify -as being "correct" and free from bugs (historically, sendmail has been -rather buggy and an easy mark for system crackers to exploit, although -with the advent of version 8 sendmail, this becomes much more -difficult). In contrast, smap and smapd are very small (only a few -hundred lines long), and relatively easy to verify as being correct -and functioning as designed (however, as you will see later, we can -question their design). According to the theory, it is therefore -safer and "better" to run smap and smapd as "wrappers" around -sendmail, which would no longer need to be run setuid root. - - Unfortunately, smap and smapd have a few problems of their -own, and don't appear to have been updated since late March 1996. -There have been conflicting reports of incompatibilities between -smapd and sendmail 8.7.y (both cannot be run on the same machine, -although if you're running sendmail 8.6.x and smap/smapd on the -local machine, people on the outside can still use sendmail 8.7.y -to talk to you). - - For further information on smap and smapd, see the documentation -that comes with the TIS Firewall Toolkit. - - - For more information on firewalls, see the Firewalls FAQ at -<http://www.v-one.com/newpages/faq.htm>. - ------------------------------- - -Date: January 21, 1996 -Subject: Q2.15 -- What is TCP-Wrappers and where can I get it? - - TCP-Wrappers is another security enhancement package. The theory -is that you take programs being run under inetd (see /etc/inetd.conf) -and before you run the program to do the real work (ftpd, telnetd, -etc...), you first run the connection attempt through a package that -checks to see if the IP address of the source packet is coming from a -host known to be either good or bad (you may filter connection -attempts by source host name, domain name, raw IP address, port they -are attempting to connect to; and either allow known good connections -through thus refusing unknown connections, or accept all connections -except those known to be bad). - - The practice of TCP-Wrappers actually follows the theory -quite well. It is a very useful and important tool in the System -Administrator's Bag of Things To Help You Secure Your Machine ->From Crackers, Spammers, Junkmailers, and Other Undesirables. -However, it only works for programs that communicate via TCP packets -(not UDP, such as NFS) started up out of inetd. It does not work -for RPC-based services, and programs that start up a daemon outside -of inetd and just leave it running obviously don't benefit beyond -the initial connection that gets the daemon started (however, see -the FTP URL below for other packages that can help secure RPC and -portmapper-based services). - - However, most sendmail installations tend to start up a daemon and -leave it running at all times. If you did run sendmail out of inetd, -you'd lose the benefit of the load average checking code that is -executed only in daemon mode, and for systems that handle a lot of -mail, this is vitally important. - - You can get TCP-Wrappers from -<ftp://ftp.win.tue.nl/pub/security/>, a site that has -a whole host of other useful security tools, such as -securelib, portmap, satan, cops, crack, etc... You can -also find pointers to many other useful security tools at -<http://ciac.llnl.gov/ciac/SecurityTools.html>, and the COAST Archive -at <http://www.cs.purdue.edu/homes/spaf/hotlists/csec.html> is a -veritable cornucopia of all things security related. The SANS 1996 -Network Security Roadmap at <http://www.sans.org/roadmap.html> has -much useful information and pointers to many other useful resources. - - - For the adventurous, you can get a source patch for version -8 sendmail (created for 8.7.6, but with work, applicable to older -releases) that will take the core TCP-Wrappers code and integrate -it into the daemon, so that you get the best of both worlds. -However, this isn't as smoothly integrated as it should be, is not -for the faint-of-heart, and is certainly not officially supported -by the orginal author of sendmail (Eric Allman). This functionality -is integrated in a different fashion into version 8.8.5 sendmail. - - You should be able to find the unsupported patch at -<ftp://ftp.win.tue.nl/pub/security/sendmail-tcpd.patch>. - ------------------------------- - -Date: November 24, 1996 - -Subject: Q2.16 -- Why won't db 1.85 build for my SGI running Irix - >= 5.2? - - The db 1.85 package as available from ftp.cs.berkeley.edu -provides Irix support up to Irix 4.05F, but 5.{2,3} need a slightly -patched version. Some vendors also provide db standard with their OS -(DEC Unix 4.0, for example). - - A tarball incorporating these changes is available at -<ftp://ftp.his.com/pub/brad/sendmail/irix5.tar.gz>. This will -extract into ./db.1.85/PORT/irix.5.2, with a symbolic link -created from ./db.1.85/PORT/irix.5.3 to this same directory. -Make sure you extract this archive into the same directory -where you extracted the db 1.85 archive as available from -ftp.cs.berkeley.edu. (see Q3.5 for more information on getting -the db 1.85 package). An ASCII context diff of this same patch is -at <ftp://ftp.his.com/pub/brad/sendmail/irix4-5.diff>. - - A version of db 1.85 that has been supposedly patched -to compile under Irix 6.2 has been made available at -<http://reality.sgi.com/ariel/db-1.85-irix.tar.Z>, but I haven't -had a chance to download and check it out yet. - ------------------------------- - -Date: August 30, 1996 - -Subject: Q2.17 -- What is makemap and where can I get it? - - The program "makemap" is used to build the databases used by -version 8 sendmail, for things like the UserDB, mailertables, -etc.... - - It is distributed as part of the basic Operating System from -some vendors, but source code for it is also included at the root -level of the sendmail archive (at least, it is for sendmail 8.6.12 -and 8.7.5, and presumably will continue to be as newer releases come -out). However, it is not considered a "supported" part of version -8 sendmail. Just like the other source provided in the archive, -the Makefile will likely need some tweaking for your specific site. - - It turns out that Irix 5.3 doesn't appear to have the dbm or -ndbm libraries, but to compile makemap.c, you need to have -DNDBM -on the "DBMDEF=" line (some necessary things are defined only -in /usr/include/ndbm.h). Try just leaving off "-lndbm" from the -"LIBS=" line in the Makefile for makemap. - - If you plan on using makemap with db 1.85 on an SGI machine -running a version of Irix later than 4.x, see Q2.16 for some -additional steps to get db 1.85 compiled on your machine. - ------------------------------- - -Date: May 28, 1996 -Subject: Q3.1 -- How do I make all my addresses appear to be from a - single host? - - Using the m4 macros, use: - - MASQUERADE_AS(my.dom.ain) - - This will cause all addresses to be sent out as being from the -indicated domain. - - On your mailhub/mailhost/Domain Mail eXchanger, you may need to -add "my.dom.ain" to the sendmail.cw file or the "Cwhost.my.dom.ain" -line in the sendmail.cf file. - - If you're using version 8.7 sendmail, and you want to hide this -information in the envelope as well as the headers, use: - - FEATURE(masquerade_envelope) - ------------------------------- - -Date: January 24, 1996 -Subject: Q3.2 -- How do I rewrite my From: lines to read - ``First_Last@My.Domain''? - - There are a couple of ways of doing this. This describes using -the "user database" code. This is still experimental, and was -intended for a different purpose -- however, it does work with a bit -of care. It does require that you have the Berkeley "db" package -installed (it won't work with DBM). - - First, create your input file. This should have lines like: - - loginname:mailname First_Last - First_Last:maildrop loginname - - If your login name is "john" and your full name is "John Q. -Public", then this would be: - - john:mailname John_Q_Public@your.domain.goes.here - John_Q_Public:maildrop john - - The words "mailname" and "maildrop" must be typed in literally, -just as they appear. - - - Install this file in (say) /etc/userdb. Create the database: - - makemap -d btree /etc/userdb.db < /etc/userdb - - You can then create a config file that uses this. You will have -to include the following in your .mc file: - - define(confUSERDB_SPEC, /etc/userdb.db) - FEATURE(notsticky) - - Version 8.7 sendmail changes the semantics of this feature such -that notsticky is turned on by default, and if you want the old (8.6) -behaviour, you instead define: - - FEATURE(stickyhost) - - - You also need to make sure that you have the "ik" flags specified -on the affected mailer definition. - - - Note: The program "makemap" is discussed in further detail -in Q2.17. The UserDB feature is discussed further on pp. 643-645 -of _sendmail, 2nd Ed._ by Costales. - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.3 -- So what was the user database feature intended for? - - The intent was to have all information for a given user (where the -user is the unique login name, not an inherently non-unique full name) -in one place. This would include phone numbers, addresses, and so -forth. The "maildrop" feature is because Berkeley does not use a -centralized mail server (there are a number of reasons for this that -are mostly historic), and so we need to know where each user gets his -or her mail delivered -- i.e., the mail drop. - - UC Berkeley is (was) in the process of setting up their -environment so that mail sent to an unqualified "name" goes to that -person's preferred maildrop; mail sent to "name@host" goes to that -host. The purpose of "FEATURE(notsticky)" is to cause "name@host" to -be looked up in the user database for delivery to the maildrop. - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.4 -- Why are you so hostile to using full names for email - addresses? - - Because full names are not unique. For example, the computer -community has two Andy Tannenbaums and two Peter Deutsches. At one -time, Bell Labs had two Stephen R. Bournes with offices a few doors -apart. You can create alternative addresses (e.g., -Stephen_R_Bourne_2), but that's even worse -- which one of them has to -have their name desecrated in this way? And you can bet that one of -them will get most of the other person's email. - - So called "full names" are just an attempt to create longer -versions of unique names. Rather that lulling people into a sense of -security, I'd rather that it be clear that these handles are -arbitrary. People should use good user agents that have alias -mappings so that they can attach arbitrary names for their personal -use to those with whom they correspond (such as the MH alias file). - - Even worse is fuzzy matching in email -- this can make good -addresses turn bad. For example, Eric Allman is currently (to the -best of our knowledge) the only ``Allman'' at Berkeley, so mail sent -to <Allman@Berkeley.EDU> should get to him. But if another Allman -ever appears, this address could suddenly become ambiguous. He's been -the only Allman at Berkeley for over fifteen years -- to suddenly have -this "good address" bounce mail because it is ambiguous would be a -heinous wrong. - - Directory services should be as fuzzy as possible (within reason, -of course). Mail services should be unique. - ------------------------------- - -Date: November 24, 1996 -Subject: Q3.5 -- Where do I find this user database (UserDB) code? - - The user database code is part of the Sendmail V8 distribution. -However, it depends on your installing the db library from the -package at <ftp://ftp.cs.berkeley.edu/pub/4bsd/db.1.85.tar.gz>. -If you install this library, edit the Makefile to include the -right option (-DNEWDB), and then make sendmail again, you get a -binary which has the database features described in the book and -the documentation provided in the sendmail source archive. - - If you're using SGI Irix above 4.x, see Q2.16 for the patches -you will need to get db 1.85 working on your machine. - ------------------------------- - -Date: July 19, 1996 -Subject: Q3.6 -- How do I get the user database to work with Pine or - with FEATURE(always_add_domain)? - - The basic incompatibility with Pine and the user database option -is in how Pine writes From addresses in the header. Most MUAs write -the From address as "From: user", while Pine, for reasons given in -its documentation, write the From address as "From: user@FQDN" -(FQDN=fully qualified domain name). Using the m4 feature macro -"always_add_domain" has the same effect. Because of this difference, -the user database does not rewrite these headers. - - One solution to this problem is to make the following change in -the sendmail.mc file compiled by m4 into your /etc/sendmail.cf (or -wherever your sendmail.cf file is located) after you have the user -database option installed and working with other MUAs: - - Early in the section(s) where you are setting configuration -variables, add the following: - - # Define our userdb file for FQDN rewrites - Kuserdb btree -o /etc/userdb.db - - And a bit later, before the "MAILER()" entries, but after other -configuration options have been set: - - LOCAL_RULE_1 - ######################################################## - ### Local Ruleset 1, rewrite sender header & envelope ## - ######################################################## - #Thanks to Bjart Kvarme <bjart.kvarme@usit.uio.no> - S1 - R$- $1 < @ $j . > user => user@localhost - R$- < @ $=w . > $* $: $1 < @ $2 . > $3 ?? $1 user@localhost ? - R$+ ?? $+ $: $1 ?? $(userdb $2 : mailname $: @ $) - R$+ ?? @ $@ $1 Not found - R$+ ?? $+ $>3 $2 Found, rewrite - - #NOTE ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ - # Use Tab Characters Use Tab Characters in these regions - # to make three columns (the line with "mailname" only has 2 columns). - - Now the user database should re-write messages sent with Pine or -anything else that causes local users to have their address be fully -qualified (both header and envelope sender will be properly -re-written). If this still does not work for you, try adding the -following to either the system-wide pine.conf, pine.conf.fixed, or -your personal .pinerc: - - user-domain=localhost - - This has been known to help solve the problem for some people. - - However, a more elegant (read: m4-based) solution for version 8 -sendmail users has yet to be created. - ------------------------------- - -Date: March 24, 1997 -Subject: Q3.7 -- How do I manage several (virtual) domains? - - If you want to provide mailservice to several domains and be able -to add identical names across different domains, as in this example: - - user@a.dom.ain mb1@dom.ain - user@b.dom.ain mb2@dom.ain - user@c.dom.ain mb@outer.space - - you may accomplish this by using an external database in -conjunction with minor Ruleset rewriting in sendmail.cf. Many ISPs -(Internet Service Providers) have asked me and here's a general -solution (you may combine it with userdb's if you need to): - - 1. Make a textfile (I usually make one for each domain and - concatenate them before database-compilation) with the - following structure: - - user@a.dom.ain mb1@dom.ain - user@b.dom.ain mb2@dom.ain - user@c.dom.ain mb@outer.space - - The LHS (Left Hand Side) is the mail-adress of a particular - user and the RHS is the corresponding mailbox. An example - that might apply to the real world: - - webmaster@josnet.se wm.list@eowyn.josnet.se - webmaster@client1.se joe@client1.se - webmaster@client2.se anne@another.provider.se - webmaster@client3.se joe@client3.se - joe@client1.se c1_joe@mail.josnet.se - joe@client3.se joeuser - - Note that you have to spell out the complete email-address in - the LHS entry. The RHS entry may be either a local address - (for example 'johan' if that account exists) or a complete - email-adress on another system (or a domain that the server - recognizes as local for that matter). - - 2. Compile the textfile into a database: - - makemap hash mbt.db <mbt - - You may you use other lookup-methods than hash (btree for - example). The resulting database is mbt.db in this example - and the input is the textfile mbt. - - 3. Add a few lines in sendmail.cf: - - A. In the beginning (typically in the "local info" section or - together with the user database option in the "options" - section): - - # Declare mbt as a hash-lookup database: - Kmbt hash /etc/mail/mbt.db - - B. In the Ruleset 98 (local part of ruleset 0) section, add: - - # Use mailboxtable-database: - R$+ < @ $+ . > $: $1 < @ $2 > . - R$+ < @ $+ > $* $: $(mbt $1@$2 $: $1 < @ $2 > $3 $) - R$+ < @ $+ > $* $: $(mbt $2 $: $1 < @ $2 > $3 $) - RERROR $* $#error $: $1 - R$+ < @ $+ > . $: $1 < @ $2 . > - - If you have any other rewrite rules in ruleset 98, these - should be able to either go after or before the existing - rules, but you may have to do some experimenting to - find out which placement works best. - - 4. The next-to-last line of these rules let you have an alias - file like: - - joe@somedom.com joe - jim@somedom.com jim@othersite - somedom.com ERROR "No such user" - - And still have mail addressed to unknown users at that domain - bounce properly. You can also do a form of redirects, such - as: - - fred@somedom.com ERROR "This user has moved to fred@otherdom.com" - - 5. Test with sendmail -bv and/or sendmail -bt - - 6. Restart sendmail. You must do this in order to have the - daemon reread the sendmail.cf. - - - Note: Alternate sets of instructions and/or kits -can be found at <http://www.westnet.com/providers>, -<http://hub.org/softdocs/Sendmail-VD>, -<ftp://samson.oslo.uninett.no/pub/unix/sendmail/>, and -<http://jos.net/projects/mbt/>. None of these have been tested -by the maintainer of this FAQ, but are believed to work correctly. -Which you use is a matter of your personal aesthetics. - - - If you're using version 8.8 sendmail, you can make use of the -new "virtual user table" feature (for one thing, it won't require -that you add new rewrite rules to your sendmail configuration, as -the previous example does). - - 1. Put "FEATURE(virtusertable)" in your sendmail.mc - file. - - 2. By default, sendmail will build tables out of - /etc/virtusertable. If you want to change this, put - something like: - - define(`VIRTUSER_TABLE', `-o hash /usr/local/lib/virtusertable')dnl - - in your sendmail.mc file. - - 3. Construct the virtusertable file like so: - - info@foo.com foo-info - info@bar.com bar-info - @baz.org jane@elsewhere.net - @somedom.com error : 5.5.0 User unknown - - (Contrast with steps 1 and 4 in the previous example - using regular mailertables). - - 4. Compile the textfile into a database: - - makemap hash /etc/virtusertable.db </etc/virtusertable - - You may you use other lookup-methods than hash (btree - for example). Make sure that this database type matches - what is defined for the table in step 2. - - 5. Put all the domains listed on the LHS of these aliases - in your sendmail.cw file, or on the Cw line in your - sendmail.cf. - - 6. Recompile your sendmail.cf from your sendmail.mc and - test it. - - 7. Once you are satisfied, move it into place and restart - sendmail. - - - Note that the virtusertable is only referenced for inbound -mail (more accurately, only for controlling delivery). If you -want to rewrite mail addresses from your virtual domain users as -they pass through your system, you'll also need to make comparable -modifications to the genericstable (used for rewriting). - ------------------------------- - -Date: July 9, 1996 -Subject: Q3.8 -- There are four UUCP mailers listed in the - configuration files. Which one should I use? - - The choice is partly a matter of local preferences and what is -running at the other end of your UUCP connection. Unlike good -protocols that define what will go over the wire, UUCP uses the policy -that you should do what is right for the other end; if they change, -you have to change. This makes it hard to do the right thing, and -discourages people from updating their software. In general, if you -can avoid UUCP, please do. - - If you can't avoid it, you'll have to find the version that is -closest to what the other end accepts. Following is a summary of the -UUCP mailers available. - - uucp-old (obsolete name: "uucp") - This is the oldest, the worst (but the closest to UUCP) way of - sending messages across UUCP connections. It does bangify - everything and prepends $U (your UUCP name) to the sender's - address (which can already be a bang path itself). It can only - send to one address at a time, so it spends a lot of time - copying duplicates of messages. Avoid this if at all possible. - - uucp-new (obsolete name: "suucp") - The same as above, except that it assumes that in one rmail - command you can specify several recipients. It still has a lot - of other problems. - - uucp-dom - This UUCP mailer keeps everything as domain addresses. - Basically, it uses the SMTP mailer rewriting rules. - - Unfortunately, a lot of UUCP mailer transport agents require - bangified addresses in the envelope, although you can use - domain-based addresses in the message header. (The envelope - shows up as the From_ line on UNIX mail.) So.... - - uucp-uudom - This is a cross between uucp-new (for the envelope addresses) - and uucp-dom (for the header addresses). It bangifies the - envelope sender (From_ line in messages) without adding the - local hostname, unless there is no host name on the address at - all (e.g., "wolf") or the host component is a UUCP host name - instead of a domain name ("somehost!wolf" instead of - "some.dom.ain!wolf"). - - Examples: - - We are on host grasp.insa-lyon.fr (UUCP host name "grasp"). The - following summarizes the sender rewriting for various mailers: - - Mailer sender rewriting in the envelope - ------ ------ ------------------------- - uucp-{old,new} wolf grasp!wolf - uucp-dom wolf wolf@grasp.insa-lyon.fr - uucp-uudom wolf grasp.insa-lyon.fr!wolf - - uucp-{old,new} wolf@fr.net grasp!fr.net!wolf - uucp-dom wolf@fr.net wolf@fr.net - uucp-uudom wolf@fr.net fr.net!wolf - - uucp-{old,new} somehost!wolf grasp!somehost!wolf - uucp-dom somehost!wolf somehost!wolf@grasp.insa-lyon.fr - uucp-uudom somehost!wolf grasp.insa-lyon.fr!somehost!wolf - - - If your only contact with the external world is through UUCP, -you'll probably want to recompile sendmail with support for DNS turned -off (if your host architecture supports a service switch file that -sendmail understands, it will use the service switch however you've -got it configured, even if you've compiled sendmail with DNS support -turned off, so make sure the service switch file is also properly -configured). - - Using "FEATURE(nodns)" probably won't completely satisfy you, as -more recent releases of version 8 sendmail really, REALLY, want to -know what their canonical hostname is, and will go to great lengths to -figure this out from the DNS. But if you don't have any nameservers, -this can obviously add significant amounts of time to process startup -as sendmail repeatedly tries (and fails) to find this information. It -then becomes doubly important to have the proper Fully Qualified -Domain Name (FQDN) listed first in your /etc/hosts file or in the file -used to build your NIS/NIS+ table (or whatever you use). - - For more information on "FEATURE(nodns)", see the RELEASE_NOTES -file for sendmail versions 8.7.1 and later (search for "FQDN"), as -well as _sendmail_, page 741 (page reference correct as of first -edition, first printing). - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.9 -- How do I fix "undefined symbol inet_aton" and - "undefined symbol _strerror" messages? - - You've probably replaced your resolver with the version from BIND -4.9.3. You need to compile with -l44bsd in order to get the -additional routines. - ------------------------------- - -Date: March 24, 1997 -Subject: Q3.10 -- How do I solve "collect: I/O error on connection" - errors? - - There is nothing wrong. This is just a diagnosis of a condition -that had not been diagnosed before. If you are getting a lot of these -from a single host, there is probably some incompatibility between 8.x -and that host. If you get a lot of them in general, you may have -network problems that are causing connections to get reset. - - Note that if you are using PPP and the MTU on your end does -not match what your service provider has configured, you may see -these problems. Discuss with your service provider what the MTU -should be set to, and correct if there is a mismatch. - ------------------------------- - -Date: July 9, 1996 -Subject: Q3.11 -- Why can't my users forward their mail to a program? - - I just upgraded to version 8 sendmail and now when my users try to -forward their mail to a program they get an "illegal shell" or "cannot -mail to programs" message and their mail is not delivered. What's -wrong? - - In order for people to be able to run a program from their -.forward file, version 8 sendmail insists that their shell (that is, -the shell listed for that user in the passwd entry) be a "valid" -shell, meaning a shell listed in /etc/shells. If /etc/shells does not -exist, a default list is used, typically consisting of /bin/sh and -/bin/csh. - - This is to support environments that may have NFS-shared -directories mounted on machines on which users do not have login -permission. For example, many people make their file server -inaccessible for performance or security reasons; although users have -directories, their shell on the server is /usr/local/etc/nologin or -some such. If you allowed them to run programs anyway you might as -well let them log in. - - If you are willing to let users run programs from their .forward -file even though they cannot telnet or rsh in (as might be reasonable -if you run smrsh to control the list of programs they can run) then -add the line: - - /SENDMAIL/ANY/SHELL/ - -to /etc/shells. This must be typed exactly as indicated, in caps, -with the trailing slash. - -NOTA BENE: DO NOT list /usr/local/etc/nologin in /etc/shells -- this -will open up other security problems. - - - IBM AIX does not use /etc/shells -- a list of allowable login -shells is contained, along with many other login parameters, in -/etc/security/login.cfg. You can copy the information in the -"shells=" stanza into a /etc/shells on your system so sendmail will -have something to use. Do NOT add "/usr/lib/uucp/uucico" or any other -non-login shell into /etc/shells. - - Also note that there are some weird things that AFS throws into -the mix, and these can keep a program from running or running -correctly out of .forward files or the system-wide aliases. - - - See also "smrsh" in Q2.13. - ------------------------------- - -Date: November 24, 1996 -Subject: Q3.12 -- Why do connections to the SMTP port take such a - long time? - - I just upgraded to version 8 sendmail and suddenly connections to -the SMTP port take a long time. What is going wrong? - - It's probably something weird in your TCP implementation that -makes the IDENT code act oddly. On most systems version 8 sendmail -tries to do a ``callback'' to the connecting host to get a validated -user name (see RFC 1413 for detail). If the connecting host does not -support such a service it will normally fail quickly with "Connection -refused", but certain kinds of packet filters and certain TCP -implementations just time out. - - To test this (pre-8.7.y sendmail), set the IDENT timeout to zero -using: - - define(`confREAD_TIMEOUT',`Ident=0')dnl - -in the .mc file used by m4 to generate your sendmail.cf file. -Alternatively, if you don't use m4, you can put ``OrIdent=0'' in the -configuration file (we recommend the m4 solution, since that makes -maintenance much easier for people who don't understand sendmail -re-write rules, or after you've been away from it for a while). -Either way, this will completely disable all use of the IDENT -protocol. - - For version 8.7.y sendmail (and above), you should instead use: - - define(`confTO_IDENT',`0s')dnl - - - Another possible problem is that you have your name server and/or -resolver configured improperly. Make sure that all "nameserver" -entries in /etc/resolv.conf point to functional servers. If you are -running your own server, make certain that all the servers listed in -your root cache are up to date (this file is usually called something -like "/var/namedb/root.cache"; see your /etc/named.boot file to get -your value). Either of these can cause long delays. - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.13 -- Why do I get "unknown mailer error 5 -- mail: - options MUST PRECEDE recipients" errors? - - I just upgraded to version 8 sendmail and suddenly I get errors -such as ``unknown mailer error 5 -- mail: options MUST PRECEDE -recipients.'' What is going wrong? - - You need OSTYPE(systype) in your .mc file, where "systype" is set -correctly for your hardware & OS combination -- otherwise the -configurations use a default that probably disagrees with your local -mail system. See cf/README for details. - - If this is on a Sun workstation, you might also want to take a -look at the local mailer flags in the Sun-supplied sendmail.cf and -compare them to the local mailer flags generated for your version 8 -sendmail.cf. If they differ, you might try changing the V8 flags to -match the Sun flags. - ------------------------------- - -Date: March 24, 1996 -Subject: Q3.14 -- Why does version 8 sendmail panic my SunOS box? - - Sendmail 8.7.y panics SunOS 4.1.3_U1 (at least for 1<=y<=3) -and SunOS 4.1.3, and sendmail 8.6.x seems fine on both machines (at -least for 9<=x<=12). - - The problem is that a kernel patch is missing, specifically -100584-08 (4.1.3), 102010-03 (4.1.3_U1), or 102517 (4.1.4). -This should be available from your hardware vendor through your -support contract or their online support facilities (including -being available on the SunSolve CD). - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.15 -- Why does the "From " header gets mysteriously - munged when I send to an alias? - - ``It's not a bug, it's a feature.'' This happens when you have a -"owner-list" alias and you send to "list". V8 propagates the owner -information into the envelope sender field (which appears as the "From -" header on UNIX mail or as the Return-Path: header) so that -downstream errors are properly returned to the mailing list owner -instead of to the sender. In order to make this appear as sensible as -possible to end users, I recommend making the owner point to a -"request" address -- for example: - - list: :include:/path/name/list.list - owner-list: list-request - list-request: eric - - This will make message sent to "list" come out as being "From -list-request" instead of "From eric". - ------------------------------- - -Date: November 24, 1996 -Subject: Q3.16 -- Why doesn't MASQUERADE_AS (or the user database) - work for envelope addresses as well as header addresses? - - Believe it or not, this is intentional. The interpretation of the -standards by the version 8 sendmail development group was that this -was an inappropriate rewriting, and that if the rewriting were -incorrect at least the envelope would contain a valid return address. - - - If you're using version 8.7.y sendmail (or later), you can use - - FEATURE(masquerade_envelope) - - in your sendmail.mc file to change this behaviour. - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.17 -- How do I run version 8 sendmail and support the - MAIL11V3 protocol? - - Get the reimplementation of the mail11 protocol by Keith Moore -from <ftp://gatekeeper.dec.com/pub/DEC/gwtools/> (with contributions -from Paul Vixie). - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.18 -- Why do messages disappear from my queue unsent? - - When I look in the queue directory I see that qf* files have been -renamed to Qf*, and sendmail doesn't see these. What's wrong? - - If you look closely you should find that the Qf files are owned by -users other than root. Since sendmail runs as root it refuses to -believe information in non-root-owned qf files, and it renames them to -Qf to get them out of the way and make it easy for you to find. The -usual cause of this is twofold: first, you have the queue directory -world writable (which is probably a mistake -- this opens up other -security problems) and someone is calling sendmail with an "unsafe" -flag, usually a -o flag that sets an option that could compromise -security. When sendmail sees this it gives up setuid root -permissions. - - The usual solution is to not use the problematic flags. If you -must use them, you have to write a special queue directory and have -them processed by the same uid that submitted the job in the first -place. - ------------------------------- - -Date: March 23, 1996 -Subject: Q3.19 -- When is sendmail going to support RFC 1522 MIME - header encoding? - - This is considered to be a MUA issue rather than an MTA issue. - -Quoth Eric Allman: - - The primary reason is that the information necessary to - do the encoding (that is, 8->7 bit) is unknown to the MTA. - In specific, the character set used to encode names in headers - is _NOT_ necessarily the same as used to encode the body - (which is already encoded in MIME in the charset parameter - of the Content-Type: header). Furthermore, it is perfectly - reasonable for, say, a Swede to be living and working in Korea, - or a Russian living and working in Germany, and want their - name to be encoded in their native character set; it could - even be that the sender was Japanese, the recipient Russian, - and the body encoded in ISO 8859-1. If all I have are 8-bit - characters, I can't choose the charset properly. - - Similarly, when doing 7->8 bit conversions, I don't want - to throw away this information, as it is necessary for proper - presentation to the end user. - ------------------------------- - -Date: January 17, 1997 -Subject: Q3.20 -- Why can't I get mail to some places, but - instead always get the error "reply: read error from - name.of.remote.host"? - - This is usually caused by a bug in the remote host's mail server, -or Mail Transport Agent (MTA). The "EHLO" command of ESMTP causes -the remote server to drop the SMTP connection. There are several -MTAs that have this problem, but one of the most common server -implementations can be identified by the "220 All set, fire away" -greeting it gives when you telnet to its SMTP port. - - To work around this problem, you can configure sendmail to use -a mailertable with an entry telling sendmail to use plain SMTP when -talking to that host: - - name.of.remote.host smtp:name.of.remote.host - - - Sites which must run a host with this broken SMTP implemetation -should do so by having a site running sendmail or some other -reliable (and reasonably modern) SMTP MTA act as an MX server for -the problem host. - - - There is also a problem wherein some TCP/IP implementations -are broken, and if any connection attempt to a remote end gets a -"connection refused", then *all* connections to that site will -get closed. Of course, if you try to use the IDENT protocol across -a firewall (at either end), this is highly likely to result in the -same apparent kind of "read error". - - The fix is simple -- on those machines with broken TCP/IP -implementations, do not attempt to use IDENT. When compiling newer -releases of version 8 sendmail, the compiler should automatically -detect whether you're on a machine that is known to have this kind -of TCP/IP networking problem, and make sure that sendmail does -not attempt to use IDENT. If you've since patched your machine so -that it no longer has this problem, you'll need to go back in and -explicitly configure sendmail for support of IDENT, if you want -that feature. - ------------------------------- - -Date: January 17, 1996 -Subject: Q3.21 -- Why doesn't "FEATURE(xxx)" work? - - When creating m4 Master Config (".mc") files for version 8 -sendmail, many "FEATURE()" macros simply change the definition of -internal variables that are referenced in the "MAILER()" definitions. - - To make sure that everything works as desired, you need to -make sure that "OSTYPE()" macros are put at the very beginning -of the file, followed by "FEATURE()" and "HACK()" macros, local -definitions, and at the very bottom, the "MAILER()" definitions. - ------------------------------- - -Date: March 24, 1997 -Subject: Q3.22 -- How do I configure sendmail to not use DNS? - - In situations where you're behind a firewall, or across a -dial-up line, there are times when you need to make sure that -programs (such as sendmail) do not use the DNS at all. - - - With version 8.8, you change the service switch file to omit -"DNS" and use only NIS, files, and other map types as appropriate. - - With previous releases of version 8 sendmail, you need to -recompile the binary and make sure that "NAMED_BIND" is turned off -in src/conf.h. - - - Note that you'll need to forward all your outbound mail to -another machine as a "relay" (one that does use DNS, and understands -how to properly use MX records, etc...), otherwise you won't be able -to get mail to any site(s) other than the one(s) you configure in -your /etc/hosts file (or whatever). - ------------------------------- - -Date: March 24, 1997 -Subject: Q3.23 -- How do I get all my queued mail delivered to my - Unix box from my ISP? - - Assuming you're running sendmail or some other SMTP MTA on -some sort of a Unix host, and your ISP uses version 8.8 sendmail -and they queue all mail for your domain (as opposed to stuffing it -all in one file that you need to download via POP3 or somesuch), -something like the following script should do the trick: - - #!/bin/sh - telnet mail.myisp.com. 25 < __EOF__ - EHLO me.mydomain.com - ETRN mydomain.com - QUIT - __EOF__ - - - Note that this is indented for readability, and the real script -would have column position #1 of the file be the first printable -character in each line. - - Of course, you'll have to fill in the appropriate details for -"mail.myisp.com", "mydomain.com", etc.... - - - If this script doesn't work, you may have problems with "here" -documents being fed as standard input to commands (like telnet). In -that case, you'll need to build a similar script using "expect". For -more information on expect, see <http://expect.nist.gov> and the book -"Exploring Expect: A Tcl-Based Toolkit for Automating Interactive -Applications" (<http://www.ora.com/catalog/expect/noframes.html>). - - - If your ISP doesn't use version 8.8 sendmail, you may have to -cobble together alternative solutions. They may have a "ppplogin" -script that is executed every time your machines dials them up, and -if so, you may be able to have them modified this script so as to -put a "sendmail -qRmydomain.com" in it (which is effectively what -the "ETRN" command does, but in a safer fashion). - - Alternatively, they may have a hacked finger daemon, so -that you'd put "finger mydomain.com@theirhost.theirdomain.com" -in your script. Or, they may have some other solution for you. -However, only they would be able to answer what solutions they have -available to them. - - Obviously, the easiest and most "standard" solution is to have -them upgrade their system to the most recent stable release of -version 8.8 sendmail. - ------------------------------- - -Comments/updates should be sent to <sendmail-faq@etext.org>. - -Copyright 1996, by Brad Knowles, all rights reserved - -End of comp.mail.sendmail Frequently Asked Questions (FAQ), part 1 of 2 -*********************************************************************** diff --git a/debian/part2 b/debian/part2 deleted file mode 100644 index d91ab4d..0000000 --- a/debian/part2 +++ /dev/null @@ -1,1467 +0,0 @@ -Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!thetimes.pixel.kodak.com!news.kodak.com!news.sprintlink.net!news-pen-16.sprintlink.net!news.etcfiber.net!pjm-gate.pjm.com!dsinc!netnews.upenn.edu!news-xfer.netaxs.com!tezcat!cam-news-hub1.bbnplanet.com!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!newsxfer3.itd.umich.edu!newsxfer.itd.umich.edu!aanews.merit.net!branch.com!news.bizserve.com!news -From: brad@etext.org -Newsgroups: comp.mail.sendmail,comp.mail.misc,comp.answers,news.answers -Subject: comp.mail.sendmail Frequently Asked Questions (Part 2 of 2) -Followup-To: comp.mail.sendmail -Date: 27 Apr 1997 04:57:53 GMT -Organization: The ETEXT Archives -Lines: 1446 -Approved: news-answers-request@MIT.Edu -Distribution: world -Expires: 06/01/97 01:00:01 -Message-ID: <5jumch$i1l@kahuna.bizserve.com> -Reply-To: sendmail-faq@etext.org (Sendmail FAQ Maintainers) -NNTP-Posting-Host: locust.etext.org -Summary: This posting contains a list of Frequently Asked Questions - (and their answers) about the program "sendmail", distributed with - many versions of Unix. It should be read by anyone who wishes to - post to the Usenet newsgroup comp.mail.sendmail. -Keywords: sendmail mail SMTP FAQ -X-Posting-Frequency: posted on the 27th of each month -Xref: senator-bedfellow.mit.edu comp.mail.sendmail:43555 comp.mail.misc:39333 comp.answers:25606 news.answers:100741 - -Posted-By: auto-faq 3.1.1.2 -Archive-name: mail/sendmail-faq/part2 - -URL: http://www.his.com/~brad/sendmail/index.html - - - comp.mail.sendmail - Frequently Asked Questions (FAQ) - Last updated March 24, 1997 - - Copyright 1996, by Brad Knowles, all rights reserved - - -This FAQ is edited and maintained by Brad Knowles <brad@etext.org>. -The official archive for all FAQs posted to <news:news.answers> -is <ftp://rtfm.mit.edu/pub/usenet/news.answers/>, with many known -mirrors. On this site, the latest version of this FAQ can be found -in <ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq/>. -Since this server tends to be extremely busy, as an alternative, -you might want to try using <http://www.imc.org/sendmail-faq-1> -and <http://www.imc.org/sendmail-faq-2> instead. - -If you don't have access to FTP or WWW, this FAQ can be retrieved by -sending Internet email to <mail-server@rtfm.mit.edu> with an empty -subject line (it gets ignored) and the command "send -usenet/news.answers/mail/sendmail-faq/part*" as the body of the -message (omitting the quotes, of course). - -As an alternative, you might want to try sending Internet email -to <info@imc.org> with an empty subject line (it gets ignored) -and "send sendmail-faq-*" as the body of the body of the message -(again, omitting the quotes). - -Additional alternative access methods are detailed within. - - -This FAQ is in RFC 1153 digest format. The "Date:" field of each -entry represents the date of the last update made to that entry. - - -This FAQ has now been split into two parts, to try and make it easier -to pass through older or less capable news or mail gateways. - - -The intent is to ultimately make this document more web-friendly (in -that all original work is done in SGML), and using the linuxdoc-sgml -tools, automatically generate both the HTML and ASCII text versions, -automatically posting the ASCII version to comp.mail.sendmail as -appropriate. - -In the meanwhile, all pseudo-HTMLized versions of this FAQ are -considered unsupported. We cannot be held responsible for what -someone else's program does to this document in an attempt to -make it more web-friendly. Nevertheless, the Landfield Hypertext -Usenet FAQ Archive seems to work well, and if you must access -the comp.mail.sendmail FAQ via the web, try slinging over to -<http://www.landfield.com/faqs/mail/sendmail-faq/>. - - -Comments/updates should be sent to <sendmail-faq@etext.org>. - ----------------------------------------------------------------------- - -Date: March 24, 1997 -Subject: Table of Contents - -Table of Contents -================= - - PART ONE - ======== - - 0. TO DO - - 1. COPYRIGHT NOTICE / REDISTRIBUTION REQUIREMENTS - - 2. INTRODUCTION / MISCELLANEOUS - 2.1 What is this newsgroup? - 2.2 What is the scope of this FAQ? - 2.3 Where can I find the latest version of this FAQ? - 2.4 How do I access comp.mail.sendmail by email? - 2.5 Where can I ask email-related DNS questions? - 2.6 How can I subscribe to these newsgroups? - 2.7 Which version of sendmail should I run? - 2.8 What is the latest release of sendmail? - 2.9 Where can I find it? - 2.10 What are the differences between Version 8 and other - versions? - 2.11 What's the best platform for running sendmail? - 2.12 What is BIND and where can I get the latest version? - 2.13 What is smrsh and where can I get it? - 2.14 What is smap and where can I get it? - 2.15 What is TCP-Wrappers and where can I get it? - 2.16 Why won't db 1.85 build for my SGI running Irix >= 5.2? - 2.17 What is makemap and where can I get it? - - 3. VERSION 8 SPECIFIC ISSUES - 3.1 How do I make all my addresses appear to be from a single - host? - 3.2 How do I rewrite my "From:" lines to read - ``First_Last@My.Domain''? - 3.3 So what was the user database feature intended for? - 3.4 Why are you so hostile to using full names for email - addresses? - 3.5 Where do I find this user database (UserDB) code? - 3.6 How do I get the user database to work with Pine or - with FEATURE(always_add_domain)? - 3.7 How do I manage several (virtual) domains? - 3.8 There are four UUCP mailers listed in the configuration - files. Which one should I use? - 3.9 How do I fix "undefined symbol inet_aton" and "undefined - symbol _strerror" messages? - 3.10 How do I solve "collect: I/O error on connection" errors? - 3.11 Why can't my users forward their mail to a program? - 3.12 Why do connections to the SMTP port take such a long time? - 3.13 Why do I get "unknown mailer error 5 -- mail: options - MUST PRECEDE recipients" errors? - 3.14 Why does version 8 sendmail panic my SunOS box? - 3.15 Why does the "From " header gets mysteriously munged - when I send to an alias? - 3.16 Why doesn't MASQUERADE_AS (or the user database) work - for envelope addresses as well as header addresses? - 3.17 How do I run version 8 sendmail and support the MAIL11V3 - protocol? - 3.18 Why do messages disappear from my queue unsent? - 3.19 When is sendmail going to support RFC 1522 MIME header - encoding? - 3.20 Why can't I get mail to some places, but instead - always get the error "reply: read error from - name.of.remote.host"? - 3.21 Why doesn't "FEATURE(xxx)" work? - 3.22 How do I configure sendmail to not use DNS? - 3.23 How do I get all my queued mail delivered to my Unix - box from my ISP? - - - PART TWO - ======== - - 4. GENERAL SENDMAIL ISSUES - 4.1 Should I use a wildcard MX for my domain? - 4.2 How can I set up an auto-responder? - 4.3 How can I get sendmail to deliver local mail to - $HOME/.mail instead of into /usr/spool/mail (or - /usr/mail)? - 4.4 Why does it deliver the mail interactively when I'm - trying to get it to go into queue only mode? - 4.5 How can I solve "config error: mail loops back to - myself" messages? - 4.6 Why does my sendmail process sometimes hang when - connecting over a SLIP/PPP link? - 4.7 How can I summarize the statistics generated by - sendmail in the syslog? - 4.8 How can I check my sendmail.cf to ensure that it's - re-writing addresses correctly? - 4.9 What is procmail, and where can I get it? - 4.10 How can I solve "cannot alias non-local names" errors? - - 5. VENDOR/OS SPECIFIC SENDMAIL ISSUES - 5.1 Sun Microsystems SunOS/Solaris 1.x/2.x - 5.1.1 How can I solve "line 273: replacement $3 out of - bounds" errors? - 5.1.2 How can I solve "line 445: bad ruleset 96 (50 max)" - errors? - 5.1.3 Why does version 8 sendmail (< 8.7.5) sometimes - hang under Solaris 2.5? - 5.1.4 Why can't I use SunOS/Solaris to get email to - certain large sites? - 5.2 IBM AIX - 5.2.1 The system resource controller always reports - sendmail as "inoperative". What's wrong? - 5.2.2 Why can't I use AIX to get email to some sites? - 5.2.3 Why can't I get sendmail 8.7.1 to use MX records - with AIX 3.2.5? - - 6. ADDITIONAL INFORMATION SOURCES (RFC 1807 bibliography format) - 6.1 Reference material devoted exlusively to sendmail - 6.2 Reference material with chapters or sections on sendmail - 6.3 Reference material on subjects related to sendmail - 6.4 World-wide web index pages on sendmail - 6.5 World-wide web index pages Internet email in general - 6.6 Online tutorials for sendmail - 6.7 Online archives of mailing lists and Usenet newsgroups, - relating to Internet email - - 7. THANKS! - ------------------------------- - -Date: July 9, 1996 -Subject: Q4.1 -- Should I use a wildcard MX for my domain? - - If at all possible, no. - - Wildcard MX records have lots of semantic "gotcha"s. For example, -they will match a host "unknown.your.domain" -- if you don't -explicitly test for unknown hosts in your domain, you will get "config -error: mail loops back to myself". - - See RFCs 1535, 1536, and 1912 (updates RFC 1537) for more detail -and other related (or common) problems. See also _DNS and BIND_ by -Albitz and Liu. - - They can also cause your system to add your domain to outgoing -FQDNs in a desperate attempt to get the mail to where it's supposed to -go, but because *.your.domain is valid due to the wildcard MX, -delivery to not.real.domain.your.domain will get dumped on you, and -you may even find yourself in a loop as the domain keeps getting -tacked on time after time after time (the "config error: mail loops -back to myself" problem). - - - Wildcard MX records are just a bad idea, plain and simple. -They don't work the way you'd expect, and virtually no one gets -them right. Avoid them at all costs. - ------------------------------- - -Date: March 23, 1996 -Subject: Q4.2 -- How can I set up an auto-responder? - - This is a local mailer issue, not a sendmail issue. Depending on -what you're doing, look at procmail (see Q4.9), ftpmail, or Majordomo. - - - The latest version of Majordomo can be found at -<ftp://ftp.greatcircle.com/pub/majordomo/>. It is written in Perl and -requires either Perl 4.036, and appears to run with only minor tweaks -under 5.001a or later. Make sure to check out the web interface for -Majordomo called "Mailserv" at <http://iquest.com/~fitz/www/mailserv/> -or "LWGate" at <http://www.netspace.org/users/dwb/lwgate.html>. The -latest versions of Perl (both 4.x and 5.x) can be found in -<http://www.metronet.com/perlinfo/src/>. More information about Perl -can be found at <http://www.metronet.com/perlinfo/perl5.html> - - The latest version of ftpmail can be found at -<ftp://src.doc.ic.ac.uk/packages/ftpmail> or any comp.sources.misc -archive (volume 37). - ------------------------------- - -Date: July 9, 1996 -Subject: Q4.3 -- How can I get sendmail to deliver local mail to - $HOME/.mail instead of into /usr/spool/mail (or /usr/mail)? - - Again, this is a local mailer issue, not a sendmail issue. Either -modify your local mailer (source code will be required) or change the -program called in the "local" mailer configuration description to be a -new program that does this local delivery. One program that is -capable of doing this is procmail (see Q4.9), although there are -probably many others as well. - - You might be interested in reading the paper ``HLFSD: Delivering -Email to your $HOME'' available in the Proceedings of the USENIX -System Administration (LISA VII) Conference (November 1993). More -information is at <ftp://ftp.cs.columbia.edu/pub/hlfsd/README.hlfsd>, -while the actual archive of the papers is at -<ftp://ftp.cs.columbia.edu/pub/hlfsd/hlfsd-paper.tar.gz> (tar archive, -gzip'ed). - ------------------------------- - -Date: March 23, 1996 -Subject: Q4.4 -- Why does it deliver the mail interactively when I'm - trying to get it to go into queue only mode? - - Or, I'm trying to use the "don't deliver to expensive mailer" -flag, and it delivers the mail interactively anyway. I can see it -does it: here's the output of "sendmail -v foo@somehost" (or Mail -v -or equivalent). - - - The -v flag to sendmail (which is implied by the -v flag to Mail -and other programs in that family) tells sendmail to watch the -transaction. Since you have explicitly asked to see what's going on, -it assumes that you do not want to to auto-queue, and turns that -feature off. Remove the -v flag and use a "tail -f" of the log -instead to see what's going on. - - If you are trying to use the "don't deliver to expensive mailer" -flag (mailer flag "e"), be sure you also turn on global option "c" -- -otherwise it ignores the mailer flag. - ------------------------------- - -Date: January 17, 1997 -Subject: Q4.5 -- How can I solve "config error: mail loops back to - myself" messages? - - I'm getting these error messages: - - 553 relay.domain.net config error: mail loops back to myself - 554 <user@domain.net>... Local configuration error - - How can I solve this problem? - - You have asked mail to the domain (e.g., domain.net) to be -forwarded to a specific host (in this case, relay.domain.net) -by using an MX record, but the relay machine doesn't recognize -itself as domain.net. Add domain.net to /etc/sendmail.cw (if you -are using FEATURE(use_cw_file)) or add "Cw domain.net" to your -configuration file. - - - IMPORTANT: When making changes to your configuration file, be -sure you kill and restart the sendmail daemon (for ANY change in the -configuration, not just this one): - - kill `head -1 /etc/sendmail.pid` - sh -c "`tail -1 /etc/sendmail.pid`" - - NOTA BENE: kill -1 does not work with versions prior to 8.7.y! - - With version 8.8.z sendmail, if the daemon was started up with -a full pathname (i.e., "/usr/lib/sendmail -bd -q13m"), then you -should be able to send it a HUP signal ("kill -1", or more safely, -"kill -HUP") and have it reload itself (version 8.7.y sendmail -cannot do this safely, and represents a security risk if it's not -replaced with version 8.8.3 or later). - ------------------------------- - -Date: March 23, 1996 -Subject: Q4.6 -- Why does my sendmail process sometimes hang when - connecting over a SLIP/PPP link? - - I'm connected to the network via a SLIP/PPP link. Sometimes my -sendmail process hangs (although it looks like part of the message has -been transfered). Everything else works. What's wrong? - - Most likely, the problem isn't sendmail at all, but the low level -network connection. It's important that the MTU (Maximum Transfer -Unit) for the SLIP connection be set properly at both ends. If they -disagree, large packets will be trashed and the connection will hang. - ------------------------------- - -Date: November 24, 1996 -Subject: Q4.7 -- How can I summarize the statistics generated by - sendmail in the syslog? - - This question is addressed on page 319 of _sendmail_ by Bryan -Costales. - - An updated version of this syslog-stat.pl script (so that -it understands the log format used in version 8 sendmail) is -at <ftp://ftp.his.com/pub/brad/sendmail/syslog_stats>. The -updated version of ssl has been uploaded to the SMTP Resources -Directory (in <ftp://ftp.is.co.za/networking/mail/tools/>), -as well as <ftp://ftp.his.com/pub/brad/sendmail/ssl>. -There is also another program (written by Bryan Beecher) at -<ftp://ftp.his.com/pub/brad/sendmail/smtpstats>. - - If you're interested in summarizing POP statistics, there is -<ftp://ftp.his.com/pub/brad/sendmail/popstats>, also written by -Bryan Beecher. - - - To see what else is available today, check the Comprehensive Perl -Archive Network <ftp://ftp.funet.fi/pub/languages/perl/CPAN/CPAN> or -<ftp://ftp.cis.ufl.edu/pub/perl/CPAN/CPAN> for the site nearest you. -For the scripts themselves, look under CPAN/scripts/mailstuff/ at -any CPAN site. For more information, see the comp.lang.perl.* -FAQs at <ftp://ftp.cis.ufl.edu:/pub/perl/faq/FAQ> or -<ftp://rtfm.mit.edu:/pub/usenet/comp.lang.perl.*/>. - - - There is also the "Sendmail Statistics Project" which has a web -page at <http://www.josnet.se/projects/ssp/>. Although they have -examples online of what the output might look like, it now appears -that this project is either dead or at least indefinitely on hold. -Still, you may be able to talk to the authors in order to get what -code from them you can. - - - If you're interested in using these kinds of tools to help -you do some near real-time monitoring of your system, you might be -interested in MEWS (Mail Early Warning System). From the README: - - If you've ever written a perl script to parse sendmail - log files looking for errors, MEWS might be of interest to - you. If you've ever thought about writing a perl script to - munge sendmail log files, cringed a little and hurriedly - came up with an excuse not to do it, read on. - - If you don't have a Solaris 2.5 machine, you can probably - stop reading here. - - The Mail Early Warning System (MEWS) gives postmasters - immediate notification of trouble spots on your mail - backbone. It only works with sendmail. - - To explain it in a nutshell, whenever sendmail returns a - 4xx or 5xx SMTP code, with the MEWS modifications, it also - sends the code over UDP to a daemon which then replays the - error message to interested parties. The man pages go into - a little bit more detail. - - - If this sounds like something you might be interested in -getting more details about, you can find the MEWS archive at -<ftp://ftp.qualcomm.com/pub/people/eamonn/mews.tar.Z>. - ------------------------------- - -Date: July 9, 1996 -Subject: Q4.8 -- How can I check my sendmail.cf to ensure that it's - re-writing addresses correctly? - - The recommended program for this is "checksendmail" by Rob -Kolstad. Old versions of this are available on various archive sites, -but currently, the only way to get the most recent version (which has -been updated to understand version 8.7 long option name syntax, as -well as now supporting both Perl 4.x and Perl 5.x) is from Rob -himself. - - The latest archive will be made publicly available (most likely -through the SMTPRD run by Andras Salamon; see Q6.5, entry -sendmail-faq//online/index/14) as soon as it is received. - ------------------------------- - -Date: July 9, 1996 -Subject: Q4.9 -- What is procmail, and where can I get it? - - The program "procmail" is a replacement for the local mailer -(variously called /bin/mail, /usr/bin/mail, mail.local, rmail, -etc...). It has been ported to run on virtually every OS you're -likely to run into, and has a whole host of features. It is typically -about 30% faster performing the job of the local mailer than programs -such as /bin/mail or /usr/bin/mail, it has been hammered on widely to -make it extremely secure (much more so than most local mailers) and -very robust. Procmail is also capable of helping you put a quota on a -user's mailbox through the standard Unix quota mechanism (see Q4.3). - - In short, whatever you've got, you're almost guaranteed that -procmail is better (if nothing else, the author has been able to focus -lots of time and energy into making it the best and fastest tool -available, while most system vendors just throw something together as -fast as they can and move on to the whole rest of the OS). - - However, this only begins to scratch the surface of what procmail -is capable of. It's most important feature is the fact that it gives -you a standard way to create rules (procmail calls them "recipes") to -process your mail before the messages get put into your mailbox, and -for that feature alone, it is one of the most important tools any -administrator can have in their repertoire. By filtering out or -automatically dealing with 80% of your daily cruft, it lets you spend -more time on the hard 20%. - - Note that recent releases of version 8 sendmail natively support -using procmail as an alternate local mailer (see -"FEATURE(local_procmail)" for version 8.7 and above). They also -support procmail as an additional local mailer, if you're concerned -about flat-out replacing your current local mailer with procmail (see -"MAILER(procmail)" in version 8.7 and above). - - - You can also install procmail as a user and run it out of your -.forward file, although this tends to be a bit slower and less -efficient. - - - The latest version of procmail can be found at -<ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/>. - - - Procmail is also the core to a mailing list management package -called "SmartList", so if you've already got procmail, adding -SmartList may be a good option. Some listowners prefer Majordomo, -Listserv, or one of those other programs, but SmartList has more than -a few adherents as well. Your personal tastes will dictate whether -you swear by SmartList or at it. - ------------------------------- - -Date: March 24, 1997 -Subject: Q4.10 -- How can I solve "cannot alias non-local names" - errors? - - I upgraded from my vendor's sendmail to the latest version and -now I'm getting these error messages when I run "newaliases": - - /etc/aliases: line 13: MAILER-DAEMON... cannot alias non-local names - /etc/aliases: line 14: postmaster... cannot alias non-local names - - How can I solve this problem? - - - Your local mailer doesn't have the "A" flag specified. Edit the -Mlocal line in sendmail.cf and add "A" to the flags listed after -"F=". - - Better yet, if you're running a recent version of sendmail -that uses m4 to generate .cf files from .mc files, regenerate your -sendmail.cf and see if that fixes the problem. Remember to install -the new sendmail.cf and restart the sendmail daemon. - ------------------------------- - -Date: March 23, 1996 -Subject: Q5.1.1 -- How can I solve "line 273: replacement $3 out of - bounds" errors? - - When I use sendmail V8 with a Sun config file I get lines like: - - /etc/sendmail.cf: line 273: replacement $3 out of bounds - - the line in question reads: - - R$*<@$%y>$* $1<@$2.LOCAL>$3 user@ether - - what does this mean? How do I fix it? - - V8 doesn't recognize the Sun "$%y" syntax, so as far as it is -concerned, there is only a $1 and a $2 (but no $3) in this line. Read -Rick McCarty's paper on "Converting Standard Sun Config Files to -Sendmail Version 8", in the contrib directory (file -"converting.sun.configs") in the latest version 8 sendmail -distribution for a full discussion of how to do this. - ------------------------------- - -Date: March 23, 1996 -Subject: Q5.1.2 -- How can I solve "line 445: bad ruleset 96 (50 max)" - errors? - - When I use sendmail V8 on a Sun, I sometimes get lines like: - - /etc/sendmail.cf: line 445: bad ruleset 96 (50 max) - - what does this mean? How do I fix it? - - You're somehow trying to start up the old Sun sendmail (or -sendmail.mx) with a version 8 sendmail config file, which Sun's -sendmail doesn't like. Check your /etc/rc.local, any procedures that -have been created to stop and re-start the sendmail processes, etc.... -Make sure that you've switched everything over to using the new -sendmail. To keep this problem from ever happening again, try the -following (make sure you're logged in as root): - - mv /usr/lib/sendmail /usr/lib/sendmail.old - ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail - mv /usr/lib/sendmail.mx /usr/lib/sendmail.mx.old - ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail.mx - chmod 0000 /usr/lib/sendmail.old - chmod 0000 /usr/lib/sendmail.mx.old - - Assuming, of course, that you have installed sendmail V8 in -/usr/local/lib/sendmail.v8. - ------------------------------- - -Date: May 23, 1996 -Subject: Q5.1.3 -- Why does version 8 sendmail (< 8.7.5) sometimes - hang under Solaris 2.5? - - In moving from Solaris 2.4 to Solaris 2.5, the kernel changed its -name and is now in /kernel/genunix instead of /kernel/unix, so -_PATH_UNIX in conf.h is pointing to the wrong place. - - If you can't upgrade to the latest release of sendmail 8.8.z, -the next best thing to do is change _PATH_UNIX in conf.h (in the -solaris2 part) to point to the generic interface /dev/ksyms, like so: - - # define _PATH_UNIX "/dev/ksyms" - ------------------------------- - -Date: November 24, 1996 -Subject: Q5.1.4 -- Why can't I use SunOS/Solaris to get email to - certain large sites? - - This is most likely a problem in your resolver libraries -(DNS, /etc/hosts, NIS, etc...). Older Sun (and Solaris?) resolver -libraries allocated enough room for only five IP addresses for each -host name, and if any program ever ran across a name with more than -five IP addresses for it, the program would crash. - - For example, this would keep you from getting mail to CompuServe, -since (at the time of this writing) they list eleven IP addresses -for mx1.compuserve.com (one of the named MXes for compuserve.com). - - This will affect you even if you use version 8 sendmail, since -it's a problem in the resolver libraries, and not in sendmail itself. - - - You should either get patches to the resolver libraries from -Sun, or the latest version of BIND (see Q2.12) and install their -resolver library routines. Between the two, installing BIND is a -bit more work, but it typically gives you much more up-to-date code -to help you resist attacks to your systems, more capable programs -to be used for serving the DNS (including support for IPv6 and -several other features), and some very useful utility programs. - ------------------------------- - -Date: July 5, 1996 -Subject: Q5.2.1 -- The system resource controller always reports - sendmail as "inoperative". What's wrong? - - When I use version 8 sendmail on an IBM RS/6000 running AIX, the -system resource controller always reports sendmail as "inoperative", -even though it's actually running. What's wrong? - - When running as a daemon, sendmail detaches from its parent -process, fooling the SRC into thinking that sendmail has exited. To -fix this, issue the commands: - - kill `head -1 /etc/sendmail.pid` - chssys -s sendmail -f 9 -n 15 -S -a "-d99.100" - # use "-d0.1" in sendmail 8.6.x - startsrc -s sendmail -a "-bd -q30m" - # your sendmail args may vary - - Now the SRC should report the correct status of sendmail. If you -are using version 8.6.x, use "-d0.1" instead of "-d99.100" (the debug -options changed somewhat in version 8.7). In 8.6.x a side-effect of -the "-d0.1" option is that a few lines of debug output will be printed -on the system console every time sendmail starts up. - - For more information, read up on the System Resource Controller, -the lssrc command and the chssys command in the online AIX -documentation. - ------------------------------- - -Date: May 23, 1996 -Subject: Q5.2.2 -- Why can't I use AIX to get email to some sites? - - When I use IBM's sendmail on an IBM RS/6000 running AIX trying to -get to certain sites, it seems that I can get to some of them and not -others. What's wrong? - - There are two possible problems here: - - 1) Your version of sendmail is not configured to recognize MX - records in the DNS. Search through your sendmail.cf - looking for "OK MX" or "OK ALL". Older configurations had - this line commented out, and this will cause mail from you - to some sites to fail (because those sites have MX - records, but no A records in their DNS for the specific - Fully Qualified Domain Name you're trying to mail to). - - For more information, see the comp.unix.aix FAQ - <ftp://rtfm.mit.edu:/pub/usenet/news.answers/aix-faq/>. - - 2) There is a negative caching bug in AIX 3.2.5 with - /usr/sbin/named executables that are less than 103000 - bytes long. Ask your IBM representative to give you PMP - 3251, or the most recent patch that fixes this problem for - your particular configuration and version of the OS. - ------------------------------- - -Date: July 5, 1996 -Subject: Q5.2.3 -- Why can't I get sendmail 8.7.1 to use MX records - with AIX 3.2.5? - - IBM, in their infinite wisdom, provided a header file that would -easily mis-compile. This resulted in the struct{} for the DNS query -to be mis-allocated, and MX processing would barf. - - Fix 1) upgrade to 8.7.5 - this has a code fix for this problem. - - Fix 2) Install the BIND 4.9.4 libraries and include files and -tweak the Makefile.AIX to use them - I *think* these Get It Right (if -not, at least it'll die during compile rather than failing weirdly at -runtime). - - Fix 3) Hack Makefile.AIX to pass a -DBIT_ZERO_ON_LEFT to cause the -headers to use the right #ifdefs. - ------------------------------- - -Date: January 21, 1997 -Subject: Q6 -- Additional information sources - - This probably isn't in strict RFC 1807 format, but I'm getting -closer. Unfortunately, the format detailed in RFC 1807 was never -intended to be used in this fashion, so I'm doing a bit of square-peg -fitting into round holes. - - Note that the publisher ids that I've assigned should not be -misconstrued to imply that I have actually published all these -documents, it's just that I need some sort of reasonable entry for the -RFC 1807 "ID" field, and in lieu of information to the contrary -indicating what the actual publishers have registered, I have assigned -my own, independant, "third-party" IDs. Hopefully, the bibliographic -entries below make it obvious who the real publishers of the various -documents are. - - - 6.1 Reference material devoted exlusively to sendmail - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/reference/1 - ENTRY:: March 23, 1996 - TYPE:: Reference manual, available online in printable format - REVISION:: January 21, 1997; Updated URL & mailing list info - TITLE:: Sendmail Installation and Operation Guide - AUTHOR:: Allman, Eric - CONTACT:: Eric Allman <eric@Sendmail.ORG> - InReference, Inc. - NASA Ames Technology Commercialization Center - 155-A Moffett Park Drive, Suite 104 - Sunnyvale, CA 94089 - Phone: 1+408 541-7615 - Fax: 1+408 734-4946 - DATE:: November 19, 1995 - PAGES:: 69 - RETRIEVAL:: Contents of manual is in doc/op/op.ps of sendmail source - archive - KEYWORD:: version 8.7.5 sendmail - LANGUAGE:: English - NOTES:: {g|n}roff "me" macro format version is in doc/op/op.me - See: URL:http://www.sendmail.org/ - -ABSTRACT:: - -The documentation written by Eric Allman himself, comes with the -sendmail distribution. The file in doc/op/op.me (nroff "me" macro -format) may have a different number of pages depending on the type of -device it is printed on, etc.... - -Eric provides his free consulting in the form of continuing -development on sendmail, and occasional posts to comp.mail.sendmail. -Please don't be so rude as to ask him to provide further free -consulting directly to you. If you (or your company) is willing to -compensate his for his consulting time, he may be willing to listen. -At the very least, you should make sure you've exhausted all other -courses of action before resorting to adding another message to the -thousands he gets per day. - - -Check the sendmail home page at <http://www.sendmail.org/> for -late-breaking updates and other useful information. - -If you want to be notified regarding future updates to sendmail and -other items of potential interest, you may want to subscribe to the -sendmail-announce mailing list. Address your subscription requests -to "majordomo@lists.sendmail.org" with "subscribe sendmail-announce" -as the body of the message. - - -END:: sendmail-faq//online/reference/1 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/1-56592-056-2 - ENTRY:: March 23, 1996 - REVISION:: January 21, 1997; Updated info re: 2nd Ed. - TYPE:: Reference book, hardcopy - TITLE:: sendmail - AUTHOR:: Costales, Bryan - AUTHOR:: Allman, Eric - AUTHOR:: Rickert, Neil - CONTACT:: Bryan Costales <bcx@BCX.COM> - O'Reilly & Associates, Inc. - 103 Morris Street, Suite A - Sebastapol, CA 95472 - Order by phone: 800-998-9938 (US/Canada inquiries) - 800-889-8969 (US/Canada credit card orders) - 707-829-0515 (local/overseas) - DATE:: November, 1993 - PAGES:: 792 - COPYRIGHT:: Copyright (c) 1993 O'Reilly & Associates, Inc. All rights - reserved. - LANGUAGE:: English - NOTES:: See: URL:http://www.ora.com/gnn/bus/ora/item/sendmail.html - -ABSTRACT:: - -The definitive reference for version 8 sendmail. - -At least three printings of first edition have come out, and the -information above is for the first printing. - -As of yet, this book has not been updated to include versions of -sendmail after 8.6.4. - -Bryan provides his consulting to the world in the form of his book, -unless you're willing to compensate him for his services as well. -Like Eric, you should make sure you've exhausted all other courses of -action before you spend any of his valuable time. - - -The second edition has now been published (focussing exclusively -on version 8.8 sendmail), with an ISBN of 1-56592-222-0. It has -been expanded to 1,050 pages long and expanded coverage of many -new topics too numerous to name. - -END:: sendmail-faq//book/ISBN/1-56592-056-2 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/1-55558-127-7 - ENTRY:: March 23, 1996 - TYPE:: Reference book, hardcopy - REVISION:: Sep 9, 1996; fixed typo - TITLE:: Sendmail: Theory and Practice - AUTHOR:: Avolio, Frederick M. - AUTHOR:: Vixie, Paul A. - CONTACT:: Fred Avolio <fma@al.org>, Paul Vixie <vix@al.org> - Digital Press - 225 Wildwood Avenue - Woburn, MA 01801, USA - Ordering Info: voice 1 800 366 2665 - fax 1 800 446 6520 - DATE:: 1994 - PAGES:: 262 - COPYRIGHT:: Copyright (c) by 1995 Butterworth-Heinemann - LANGUAGE:: English - NOTES:: See: URL:http://www.vix.com/vix/smtap/ - -ABSTRACT:: - -Centers more on IDA sendmail (at least partly because version 8 didn't -exist when they began the book). Written more like a college -Sophomore or Junior level textbook. - -While you'll probably never let the Costales book out of your grubby -little hands (especially if you do much work with version 8 sendmail), -this is a book you'll probably read once or maybe twice, learn some -very valuable things, but then likely put on a shelf and not read or -reference again (unless you have to write up a bibliographic entry for -it). Makes a better introduction to sendmail for management types, -especially if you don't want them getting their hands on too much -"dangerous" technical information. Also a *lot* smaller and less -imposing. - -If possible, I recommend getting both, but if you can only get one, -get Costales unless you're going to be working exclusively with IDA -sendmail, in which case Avolio & Vixie will probably be more useful. - -Note that Paul Vixie is extremely busy working on further development -of BIND, the Internet de facto standard program for serving the DNS, -upon which all Internet services depend, mail being only one of them. -Like Eric and Bryan, he's also very busy. Unless you're willing to -compensate him for his services, please let him get real work done. - -END:: sendmail-faq//book/ISBN/1-55558-127-7 - - - 6.2 Reference material with chapters or sections on sendmail - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/0-13-151051-7 - ENTRY:: March 23, 1996 - TYPE:: Reference book, hardcopy - REVISION:: May 23, 1996; Updated abstract. - TITLE:: Unix System Administration Handbook, Second Edition - AUTHOR:: Nemeth, Evi - AUTHOR:: Snyder, Garth - AUTHOR:: Seebass, Scott - AUTHOR:: Hein, Trent R. - CONTACT:: <sa-book@admin.com> - Prentice-Hall, Inc. - Upper Saddle River, New Jersey 07458 - DATE:: January, 1995 - PAGES:: 780 - COPYRIGHT:: Copyright (c) 1995 by Prentice Hall PTR - LANGUAGE:: English - NOTES:: See: URL:http://www.admin.com/ - -ABSTRACT:: - -Still the best hands-on Unix System Administration book around. -Covers far more than just sendmail, but the sixty-four pages (pages -455-518 in the third printing) it does devote are very well written -and quite useful. Also provides a version of Rob Kolstad's -checksendmail script on the accompanying CD-ROM. - -Note that Eric Allman and Marshall Kirk McKusick wrote the Foreword -for the Second Edition. This should give you at least an inkling as -to how essential this book is, even for experienced Unix -administrators. - -END:: sendmail-faq//book/ISBN/0-13-151051-7 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/0-201-58629=0 - ENTRY:: March 23, 1996 - TYPE:: Reference book, hardcopy - REVISION:: March 27, 1996; Changed ID format to include ISBN, - moved URL to NOTES field from OTHER_ACCESS field, - also updated ABSTRACT - REVISION:: March 29, 1996; Updated ID, PAGES, COPYRIGHT, and ABSTRACT - TITLE:: Practical Internetworking With TCP/IP and UNIX - AUTHOR:: Carl-Mitchell, Smoot - AUTHOR:: Quarterman, John S. - CONTACT:: <tic@tic.com> - Addison Wesley Publishing Company - Computer Science & Engineering Division - One Jacob Way - Reading, MA 01867 - USA - Orders: voice://800-822-6339 (USA) - fax://617-942-1117 - DATE:: 1993 - PAGES:: 476 - COPYRIGHT:: Copyright (c) 1993 by Addison-Wesley Publishing - Company, Inc. - LANGUAGE:: English - NOTES:: See URL:http://heg-school.aw.com/cseng/authors/mitchell/ - practical/practical.html - -ABSTRACT:: - -Devotes 50 pages (most of chapter 8) to discussion of sendmail. As -far as TCP/IP networking books go that also happen to discuss -sendmail, it seems well-written and clear (better than I recall Hunt's -book being), but rather dated in the face of books devoted to the -topic and all the recent development activity in the sendmail -community. Forget about the references, though. The newest -sendmail-related reference listed is dated 1983, ten years before the -date on this book and most certainly wildly out-of-date now. - -There are other books written on the subject of Internetworking with -TCP/IP (most notably Comer), but this particular book seems to have a -unique mix of theory (if perhaps a bit dated) and practical advice. -Other books tend to have lots of one or the other, or split their -theory and nitty-gritty details into separate books in a series (like -Comer). - -Assuming that an update will be coming out soon, it probably deserves -a place on the shelf of most System or Network Administrators, right -next to _Internetworking with TCP/IP_ by Comer, _Managing Internet -Information Services_ by Liu, et. al., _DNS and BIND_ by Albitz and -Liu, _Unix System Administration_ by Nemeth, et. al., and last, but -certainly not least, _sendmail_ by Costales. However, it deserves -this place more because of the non-sendmail related material, as -opposed to what sendmail-related material there is. - -END:: sendmail-faq//book/ISBN/0-201-58629-0 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/0-937175-82-X - ENTRY:: March 23, 1996 - TYPE:: Reference book, hardcopy - REVISION:: March 27, 1996; Changed ID format to include ISBN, - moved URL to NOTES field from OTHER_ACCESS field - TITLE:: TCP/IP Network Administration - AUTHOR:: Hunt, Craig - CONTACT:: O'Reilly & Associates, Inc. - 103 Morris Street, Suite A - Sebastapol, CA 95472 - Order by phone: 800-998-9938 (US/Canada inquiries) - 800-889-8969 (US/Canada credit card orders) - 707-829-0515 (local/overseas) - DATE:: August, 1992 - PAGES:: 502 - LANGUAGE:: English - NOTES:: See: URL:http://www.ora.com/gnn/bus/ora/item/tcp.html - -ABSTRACT:: - -The book I learned sendmail from when there was no other book in print -that even mentioned the name. - -Here primarily for historical purposes, especially with respect to the -sending of Internet mail and the DNS. Some of the other TCP/IP -networking stuff is relevant, but this book is getting more and more -dated as time goes by. - -END:: sendmail-faq//book/ISBN/0-937175-82-X - - - 6.3 Reference material on subjects related to sendmail - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/1-56592-010-4 - ENTRY:: March 23, 1996 - TYPE:: Reference book, hardcopy - REVISION:: January 21, 1997; Updated info re: 2nd Ed. - TITLE:: DNS and BIND - AUTHOR:: Albitz, Paul - AUTHOR:: Liu, Cricket - CONTACT:: O'Reilly & Associates, Inc. - 103 Morris Street, Suite A - Order by phone: 800-998-9938 (US/Canada inquiries) - 800-889-8969 (US/Canada credit card orders) - 707-829-0515 (local/overseas) - DATE:: October 1992 - PAGES:: 418 - COPYRIGHT:: Copyright (c) 1992 O'Reilly & Associates, Inc. All rights - reserved. - LANGUAGE:: English - NOTES:: See: URL:http://www.ora.com/gnn/bus/ora/item/dns.html - -ABSTRACT:: - -As definitive as Costales is on sendmail, this book is on the subject -of the Domain Name System (DNS) and the most common server software -for the DNS, namely BIND. - -It hasn't been updated yet to reflect the massive changes that -happened with BIND 4.9.3 (and the recent flurry of related activity in -the DNS community), but even as old as it is, it still stands the test -of time as the one book *every* DNS/Domain Administrator should have -on their shelf. - -Since the sending of Internet mail is so very heavily dependant on the -DNS, it obviously also belongs on the shelf of any Postmaster or -System Administrator whose site does Internet email. And that means -virtually every administrator of every site on the Internet. - - -This book has recently been updated with a second edition, ISBN -1-56592-236-0 and 438 pages. It includes updated discussion of -BIND 4.9.4, as well as many other topics. - -END:: sendmail-faq//book/ISBN/1-56592-010-4 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//book/ISBN/0-937175-93-5 - ENTRY:: March 23, 1996 - TYPE:: Reference book, hardcopy - REVISION:: March 27, 1996; Changed ID format to include ISBN, - moved URL to NOTES field from OTHER_ACCESS field - TITLE:: Managing UUCP and Usenet - AUTHOR:: Todino, Grace - AUTHOR:: O'Reilly, Tim - CONTACT:: O'Reilly & Associates, Inc. - 103 Morris Street, Suite A - Order by phone: 800-998-9938 (US/Canada inquiries) - 800-889-8969 (US/Canada credit card orders) - 707-829-0515 (local/overseas) - DATE:: January 1992 - PAGES:: 368 - LANGUAGE:: English - NOTES:: See: URL:http://www.ora.com/gnn/bus/ora/item/muucp.html - -ABSTRACT:: - -The definitive book for installing and managing UUCP. - -The general assumption with version 8 sendmail is that virtually no -one uses UUCP to send email anymore, but if that assumption isn't true -for you, then you probably need this book. - -END:: sendmail-faq//book/ISBN/0-937175-93-5 - - - 6.4 World-wide web index/resource pages on sendmail - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/10 - ENTRY:: March 23, 1996 - TYPE:: Online sendmail index - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: comp.mail.sendmail FAQ Support Page - AUTHOR:: Knowles, Brad - CONTACT:: Brad Knowles <brad@etext.org> -OTHER_ACCESS:: URL:http://www.his.com/~brad/sendmail/ - LANGUAGE:: English - -ABSTRACT:: - -Support Page for this FAQ. - -END:: sendmail-faq//online/index/10 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/17 - ENTRY:: March 25, 1996 - TYPE:: Online sendmail index - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: comp.mail.sendmail Most Frequently Asked Questions Support Page - AUTHOR:: Assman, Claus - CONTACT:: Claus Assmann <ca@informatik.uni-kiel.de> -OTHER_ACCESS:: URL:http://www.informatik.uni-kiel.de/~ca/email/english.html - LANGUAGE:: English - -ABSTRACT:: - -Most Frequently Asked Questions on comp.mail.sendmail and their -answers. Also has some links to a few other resources. - -END:: sendmail-faq//online/index/17 - - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/11 - ENTRY:: March 23, 1996 - TYPE:: Online sendmail index - REVISION:: May 23, 1996; Updated abstract. - TITLE:: Henry's sendmail Page! - AUTHOR:: Farkas, Henry - CONTACT:: Henry Farkas <hfarkas@ims.advantis.com> -OTHER_ACCESS:: URL:http://newstand.ims.advantis.com/henry/sendmail.html - LANGUAGE:: English - -ABSTRACT:: - -Has collected a few direct pointers to a few places, although I prefer -to either have pointers to well-known index sites and let them do the -hard work for me or do myself the work of making my site one of those -well-known indexes. - -Still, worth taking a look at. - -END:: sendmail-faq//online/index/11 - - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/resources/22 - ENTRY:: November 24, 1996 - TITLE:: IICONS Sendmail Resources - AUTHOR:: Caloca, Paul - CONTACT:: Paul Caloca <pcaloca@iicons.com> - COPYRIGHT:: Copyright (c) 1996 Paul Caloca. All Rights Reserved. -OTHER_ACCESS:: URL:http://www.iicons.com/sendmail/index.html - LANGUAGE:: English - -ABSTRACT:: - -Provides information on how to compile Sendmail and the NEWDB -db.1.85 for Solaris 2. Also has a section on which Sun patches -update Solaris 2 to BIND 4.9.3. - -Has pointers to some non-Sun/Solaris sendmail resources, especially -including CERT Advisories related to sendmail. - - -END:: sendmail-faq//online/index/22 - - - 6.5 World-wide web index pages and other reference on Internet - email in general - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/12 - ENTRY:: March 23, 1996 - TYPE:: Online general Internet email index - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: Internet Mail Consortium web site - CORP-AUTHOR:: Internet Mail Consortium - CONTACT:: <info@imc.org> -OTHER_ACCESS:: URL:http://www.imc.org/ - LANGUAGE:: English - -ABSTRACT:: - -If it has to do with Internet email, you'll probably find it here or a -link to it from here. - -They have or have information on email-related Usenet FAQs, RFCs, -Internet Drafts (documents that are in the process of becoming RFCs), -IETF Working Groups, security standards, and are running a few -email-related mailing lists. - -Tends to be focussed on the standards issues. - -If you care about Internet email, you should make it your duty in life -to check this site frequently. - -END:: sendmail-faq//online/index/12 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/13 - ENTRY:: March 23, 1996 - TYPE:: Online general Internet email index - REVISION:: August 20, 1996; Updated URL. - TITLE:: Email References - AUTHOR:: Wohler, Bill - CONTACT:: Bill Wohler <wohler@worldtalk.com> -OTHER_ACCESS:: URL:http://www.worldtalk.com/html/msg_resources/email_ref.html - LANGUAGE:: English - -ABSTRACT:: - -The most exhaustive index site I know of for Internet email related -documents outside of the Internet Mail Consortium. - -Also has pointers to other organizations that relate to Internet -email, such as the Electronic Messaging Association and the European -Electronic Messaging Association. - -Tends to be focussed on the server and standards issues. - -END:: sendmail-faq//online/index/13 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/14 - ENTRY:: March 23, 1996 - TYPE:: Online general Internet email index - REVISION:: June 28, 1996; Added acronym for SMTPRD - TITLE:: SMTP Resources Directory (SMTPRD) - AUTHOR:: Salamon, Andras - AUTHOR:: Knowles, Brad - CONTACT:: Andras Salamon <smtprd@dns.net> -OTHER_ACCESS:: URL:http://www.dns.net/smtprd/ - LANGUAGE:: English - -ABSTRACT:: - -Another good index site, but still very much in the early phases of -gestation. Based very heavily on the DNS Resources Directory, also by -Andras Salamon, at <http://www.is.co.za/dnsrd/>. - -A well-rounded site, for the amount of material it covers so far. - -END:: sendmail-faq//online/index/14 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/index/15 - ENTRY:: March 23, 1996 - TYPE:: Online general Internet email index - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: E-Mail Web Resources - AUTHOR:: Wall, Matt - CONTACT:: Matt Wall <wall+@cmu.edu> -OTHER_ACCESS:: URL:http://andrew2.andrew.cmu.edu/cyrus/email/email.html - LANGUAGE:: English - -ABSTRACT:: - -Another good index site, tends to be more focussed on client side and -LAN email packages. Also lists some email services, which no one else -that I've seen appears to have taken the time to catalog. - -Excellent side-by-side feature comparison of various MUAs and their -compliance with various Internet protocols. - -END:: sendmail-faq//online/index/15 - - - 6.6 Online tutorials for sendmail - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/tutorial/9 - ENTRY:: March 23, 1996 - TYPE:: Online sendmail tutorial - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: Sendmail V8: A (Smoother) Engine Powers Network Email - AUTHOR:: Reich, Richard - CONTACT:: Richard Reich <richard@reich.com> - DATE:: February 8, 1996 - COPYRIGHT:: Copyright (c) 1995 The McGraw-Hill Companies, Inc. - All Rights Reserved. -OTHER_ACCESS:: URL:http://www.unixworld.com/unixworld/archives/95/tutorial/ - 008/008.txt.html - LANGUAGE:: English - NOTES:: UnixWorld Online: Tutorial: Article No. 008 - -ABSTRACT:: - -Good technical introduction. Some useful references. Notably does -not reference this FAQ as a place to get more information. - -END:: sendmail-faq//online/article/9 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/tutorial/16 - ENTRY:: March 23, 1996 - TYPE:: Online sendmail tutorial - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: Sendmail -- Care and Feeding - AUTHOR:: Quinton, Reg - CONTACT:: Reg Quinton <reggers@julian.uwo.ca> - Computing and Communications Services - The University of Western Ontario - London, Ontario N6A 5B7 - Canada - DATE:: March 24, 1992 -OTHER_ACCESS:: URL:ftp://ftp.sterling.com/mail/sendmail/uwo-course/ - sendmail.txt.Z - LANGUAGE:: English - NOTES:: Postscript version also available. See ftp://ftp.sterling.com/ - mail/sendmail/uwo-course/sendmail.ps.Z - -ABSTRACT:: - -Dated. Only here until I find better. - -END:: sendmail-faq//online/tutorial/16 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/tutorial/21 - ENTRY:: March 27, 1996 - TYPE:: Online sendmail tutorial - TITLE:: Explosion in a Punctuation Factory - AUTHOR:: Bryan Costales - CONTACT:: Becca Thomas <editor@unixworld.com> - DATE:: January 1994 - COPYRIGHT:: Copyright (c) 1995 The McGraw-Hill Companies, Inc. - All Rights Reserved. -OTHER_ACCESS:: URL:http://www.unixworld.com/unixworld/archives/94/tutorial/ - 01/01.txt.html - LANGUAGE:: English - -ABSTRACT:: - -Good introduction on how sendmail re-write rules work. - -END:: sendmail-faq//online/article/21 - - - 6.7 Online archives of mailing lists and Usenet newsgroups, - relating to Internet email - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/archive/18 - ENTRY:: March 25, 1996 - TYPE:: Online Usenet newgroup archive - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: DejaNews -OTHER_ACCESS:: URL:http://www.dejanews.com - LANGUAGE:: English - NOTES:: Archives/indexes only Usenet news. - -ABSTRACT:: - -The first, and still most focussed, Usenet news archive/index site. -Others archive/index news as well as other things, but none that I've -seen do it better. - -Go to "Power Search" then "Query Filter" if you wish to restrict the -newsgroups you search on to something like just comp.mail.sendmail and -not all newsgroups. - -END:: sendmail-faq//online/archive/18 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/archive/19 - ENTRY:: March 25, 1996 - TYPE:: Online Usenet newgroup archive - REVISION:: March 27, 1996; moved URL from RETRIEVAL field to - OTHER_ACCESS field. - TITLE:: AltaVista -OTHER_ACCESS:: URL:http://www.altavista.digital.com - LANGUAGE:: English - NOTES:: Archives/indexes Usenet news and World-wide web pages. - -ABSTRACT:: - -One of the leading indexes of world-wide web pages, and their -archive/index of Usenet news is obviously secondary. - -END:: sendmail-faq//online/archive/19 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/archive/20 - ENTRY:: March 25, 1996 - TYPE:: Online Usenet newgroup archive - REVISION:: July 9, 1996; Additional information based on experience - TITLE:: InReference -OTHER_ACCESS:: URL:http://www.reference.com - LANGUAGE:: English - NOTES:: Not officially online yet, in final stages of beta - -ABSTRACT:: - -Has promise to be the best Usenet news/publicly accessible mailing -list index/archive site in the world. We'll see how well it delivers -on this promise. It's in the final stages of beta testing (and is now -open to the public), and seems quite solid. I haven't yet figured out -how to really make proper use of the underlying power I'm sure is -there, but it looks good. Of course, you'll need to wait a little -while as they backfill their archives before searches will turn up all -that much information, but it already compares favourably to DejaNews. - -Some of the best minds I know of are working on this project, so if it -can be done, I figure they can do it. - -END:: sendmail-faq//online/archive/20 - - BIB-VERSION:: CS-TR-v2.1 - ID:: sendmail-faq//online/archive/21 - ENTRY:: May 24, 1996 - TYPE:: Online archive of spam/junkmail - TITLE:: list-managers spam discussion archives - AUTHOR:: Gilman, Al - CONTACT:: Al Gilman <asgilman@access.digex.net> -OTHER_ACCESS:: URL:http://www.access.digex.net/~asgilman/spam/ -OTHER_ACCESS:: URL:ftp://www.access.digex.net/~asgilman/spam/ - LANGUAGE:: English - -ABSTRACT:: - -These collections of past mail from the list-managers discussion list -can be retrieved by ftp or HTTP. - -For anonymous ftp, open ftp.digex.net and cd to -/pub/access/asgilman/spam. - -For http, G)o to http://www.access.digex.net/~asgilman/spam/ In this -directory you will find, _inter alia_, two files which are mail -folders: - - spam -- collects examples of spams - spam-NOT -- collects discussion of spam countermeasures - -END:: sendmail-faq//online/archive/21 - ------------------------------- - -Date: July 9, 1996 -Subject: Q7 -- THANKS! - - -Special thanks to: - - Eric Allman The core of the material here comes from - his FAQ for version 8.6.9 sendmail. I - couldn't even have gotten started were it - not for him. And if he hadn't written - sendmail, there obviously wouldn't even - be a FAQ. Heck, there might not even be an - Internet. - - Paul Southworth Provides FAQ posting services, useful - comments on various sections, and the - mailclient-faq. I couldn't have kept - doing this were it not for his help. - - Ed Ravin Virtually all the material regarding the - use of sendmail on AIX is his, and most - of it has been carried over verbatim. - -Thanks also to: - - Neil Hoggarth, Andras Salamon, Johan Svensson, Christopher X. - Candreva, Bill Wohler, Matthew Wall, Henry W. Farkas, Claus - Assmann, Curt Sampson, Rebecca Lasher, Jim Davis, David Keegel, - Betty Lee, Alain Durand, Walter Schweizer, Christophe Wolfhugel, - Al Gilman, Valdis Kletnieks, John Gardiner Myers, Paul DuBois, - Adam Bentley, Dave Sill, Dave Wreski, Paul Caloca, Eamonn - Coleman, Michael Fuhr, Betty Lee, Derrell Lipman, and the - readers and posters of comp.mail.sendmail. - ------------------------------- - -Comments/updates should be sent to <sendmail-faq@etext.org>. - -Copyright 1996, by Brad Knowles, all rights reserved - -End of comp.mail.sendmail Frequently Asked Questions (FAQ), part 2 of 2 -*********************************************************************** diff --git a/debian/patch.collect b/debian/patch.collect deleted file mode 100644 index 6aad2fd..0000000 --- a/debian/patch.collect +++ /dev/null @@ -1,25 +0,0 @@ -*** collect.c.orig Wed May 20 02:36:05 1998 ---- collect.c Thu May 28 13:29:09 1998 -*************** -*** 353,360 **** - if (*--bp != '\n' || *--bp != '\r') - bp++; - *bp = '\0'; -! if (bitset(H_EOH, chompheader(buf, FALSE, hdrp, e))) -! mstate = MS_BODY; - break; - - case MS_BODY: ---- 353,364 ---- - if (*--bp != '\n' || *--bp != '\r') - bp++; - *bp = '\0'; -! if (bitset(H_EOH, chompheader(buf, FALSE, hdrp, e))) { -! mstate = MS_BODY; -! if (tTd(30, 35)) -! printf("H_EOH, istate=%d, mstate=%d\n", istate, mstate); -! goto nextstate; -! } - break; - - case MS_BODY: diff --git a/debian/patch.orbs-orca b/debian/patch.orbs-orca new file mode 100644 index 0000000..7e9275e --- /dev/null +++ b/debian/patch.orbs-orca @@ -0,0 +1,42 @@ +*** ../cf/m4/proto.m4 Tue Dec 29 12:42:07 1998 +--- proto.m4 Tue Jan 5 15:10:53 1999 +*************** +*** 1101,1110 **** + ifdef(`_RBL_', `dnl + # DNS based IP address spam lists + R$* $: $&{client_addr} +! R$-.$-.$-.$- $: $(host $4.$3.$2.$1._RBL_. $: OK $) +! ROK $@ OK +! R$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _RBL_"', + `dnl') + + ###################################################################### + ### check_mail -- check SMTP ``MAIL FROM:'' command argument +--- 1101,1127 ---- + ifdef(`_RBL_', `dnl + # DNS based IP address spam lists + R$* $: $&{client_addr} +! R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $) +! R<?>OK $: OKSOFAR +! R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _RBL_"', + `dnl') ++ ++ ifdef(`_ORBS_', `dnl ++ # ORBS project checks -- http://www.dorkslayers.com/orbs/ ++ R$* $: $&{client_addr} ++ R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._ORBS_. $: OK $) ++ R<?>OK $: OKSOFAR ++ R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://www.orbs.org/"', ++ `dnl') ++ ++ ifdef(`_ORCA_', `dnl ++ # ORCA project checks -- http://www.orca.bc.ca/dul/ ++ R$* $: $&{client_addr} ++ R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._ORCA_. $: OK $) ++ R<?>OK $: OKSOFAR ++ R<?>$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://www.orca.bc.ca/dul/"', ++ `dnl') ++ + + ###################################################################### + ### check_mail -- check SMTP ``MAIL FROM:'' command argument diff --git a/debian/postinst.debhelper b/debian/postinst.debhelper deleted file mode 100644 index f0e9469..0000000 --- a/debian/postinst.debhelper +++ /dev/null @@ -1,72 +0,0 @@ -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then - suidregister -s sendmail /usr/sbin/sendmail root root 4755 -else - chown root.root /usr/sbin/sendmail - chmod 4755 /usr/sbin/sendmail -fi -# End automatically added section diff --git a/debian/postrm.debhelper b/debian/postrm.debhelper deleted file mode 100644 index fb8bdab..0000000 --- a/debian/postrm.debhelper +++ /dev/null @@ -1,45 +0,0 @@ -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section -# Automatically added by dh_suidregister -if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail -fi -# End automatically added section diff --git a/debian/rbl.m4 b/debian/rbl.m4 deleted file mode 100644 index 0b740b0..0000000 --- a/debian/rbl.m4 +++ /dev/null @@ -1,14 +0,0 @@ -divert(0) -VERSIONID(`@(#)rbl.m4 1.2 (RBL) 11/18/97') - -LOCAL_RULESETS -# -# Deny spammers during MAIL command if the IP address of the incoming -# connection is in the RBL map (http://maps.vix.com/rbl/) -# -Scheck_mail -R$* $: $(dequote "" $&{client_addr} $) -R0 $@ OK -R$-.$-.$-.$- $: $(host $4.$3.$2.$1.rbl.maps.vix.com. $: OK $) -ROK $@ OK -R$+ $#error $@ 5.7.1 $: " Mail from " $(dequote "" $&{client_addr}$) " refused, see http://maps.vix.com/rbl/" diff --git a/debian/rblspam.m4 b/debian/rblspam.m4 deleted file mode 100644 index 48d6c29..0000000 --- a/debian/rblspam.m4 +++ /dev/null @@ -1,66 +0,0 @@ -divert(-1) -# This is a variation on the tradinal RBL filters that dumps email to -# a separate user rather than bouncing it back. It is recommended that -# a user spam be created to recieve the mail. - -# This works as discussed in the web page http://maps.vix.com/ - -# The two ways to use the MAPS RBL are: transfer and inquiry. In -# inquiry mode you start by knowing the IPv4 dotted quad address of -# some host or mail relay, and you use some network protoco l to ask -# MAPS whether that host is listed in the RBL. If the host is so -# listed, you can choose a next step which is appropriate to your site -# security policy. At our site we reject all mail from hosts listed in -# the MAPS RB L, and some of our hosts also route all traffic destined -# for such hosts to a local black hole . - -# The rules below direct all such mail to a designated spam -# user. Please note that this means the mail is not rejected, and the -# spammer has no incentive to stop; the default configuration rejects -# the mail with an error; and this not totally in line with the intent -# of the Mail Abuse Prevention System's Realtime Blackhole List. The -# are trying to make sure the spammers are delibrately -# disconnected. For this reason, I have provided a means of rejecting -# the message (by uncommenting a line) just like the original -# configuration does. - -# Please use this hack after due consideration, this is not for every -# one. - - -# The simplest way to get started using the MAPS RBL to protect your -# mail relay ag ainst theft of service by spammers is to arrange for -# it to make a DNS query (of a stylized name) whenever you receive an -# incoming mail message from a host whose spam status you do not -# know. In Sendmail (version 8.8 or later), this is done using -# configuration rules like these: - - -divert(0) -VERSIONID(`@(#)my_rbl.m4 1.2 (Manoj Srivastava) 1998-02-05') -PUSHDIVERT(6) -# Login of the user selected to recieve all spam -D{SpamUser} ifelse(_ARG_, `', `spam', `_ARG_') -POPDIVERT - - -divert(2) -LOCAL_RULESETS - -S98 -# Try and ensure that the sender is not blacklisted -R$* $: $1 $| $(dequote "" $&{client_addr} $) -R$* $| $1 # no match, restore - -# check with upstream site -R$* $| $-.$-.$-.$- $: $1 $| $(host $5.$4.$3.$2.rbl.maps.vix.com. $: OK $) - -# handle results of lookup -R$* $| OK $1 # no match, restore -R$* $| $1 # no match, restore - -# Comment this line, and un comment the next to actually reject the message -R$* $| $+ ${SpamUser} < @ $j . > # save to spam user -#R$* $| $+ $#error $@ 5.7.1 $: " Mail from " $(dequote "" $&{client_addr} $) " refused, see http://maps.vix.com/rbl/" - -divert(0) diff --git a/debian/rules b/debian/rules index c5eecb3..47b2763 100755 --- a/debian/rules +++ b/debian/rules @@ -1,258 +1,219 @@ #!/usr/bin/make -f # -*- makefile -*- -# Debianrules for building a Debian package -# Version 1.5 +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. # -# These rules have been specifically designed NOT to require root to -# run them. At any time root privileges are required, the command to be -# executed will be made obvious and root's password will be prompted for. -# Of course, root may still run this and no password will be required. +# This file is also based upon prior sendmail makefiles # -# Robert Leslie <rob@mars.org> +# Richard Nelson <cowboy@debian.org> + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 package=sendmail version=$(shell expr `pwd` : '.*-\([0-9.].*\)') version_main=$(shell expr `pwd` : '.*-\([0-9]*.[0-9.]*\)') -LIBS = -ldb -lresolv -lnsl -lwrap -DBMDEF = -DNEWDB -DNIS -ENVDEF = -DHASFLOCK=1 -DTCPWRAPPERS=1 -include $(shell pwd)/debian/el33t.h \ - -I/usr/include/db - -CC=cc -GCC = $(CC) $(HACK) -OFLAGS = -O2 -SHELL=/bin/bash +#------------- +build: build-stamp +build-stamp: + dh_testdir + # Add here commands to compile the package. + #$(MAKE) -.SILENT: rmail/rmail + cp -f debian/site.config.m4 BuildTools/Site/site.config.m4 + $(MAKE) -rmail/rmail: - cd rmail && $(GCC) $(OFLAGS) rmail.c -o rmail + # Debian stuff + cd debian && gcc -O2 -o sensible-mda sensible-mda.c + touch build-stamp +#------------- +clean: + dh_testdir + dh_testroot + rm -f build-stamp install-stamp -.PHONY: man bin - -build: - $(checkdir) -# -ln -sf /usr/include/gdbm-ndbm.h src/ndbm.h - cd src && ./makesendmail sendmail \ - CC="$(GCC)" O="$(OFLAGS)" DBMDEF="$(DBMDEF)" \ - ENVDEF="$(ENVDEF)" INCDIRS="$(INCDIRS)" \ - LIBS="$(LIBS)" LIBDIRS="" - $(MAKE) -C mailstats -f Makefile.dist mailstats \ - CC="$(GCC)" O="$(OFLAGS)" \ - INCDIRS="-I../src" LIBDIRS="" - $(MAKE) -C makemap -f Makefile.dist makemap \ - CC="$(GCC)" O="$(OFLAGS)" \ - INCDIRS="-I../src -I/usr/include/db" \ - LIBDIRS="" LIBS="$(LIBS)" DBMDEF="$(DBMDEF)" - $(MAKE) -C praliases -f Makefile.dist praliases \ - CC="$(GCC)" O="$(OFLAGS)" \ - INCDIRS="-I../src -I/usr/include/db" \ - LIBDIRS="" LIBS="$(LIBS)" -# -$(MAKE) -C mail.local -f Makefile.dist mail.local \ -# CC="$(GCC)" O="$(OFLAGS)" INCDIRS="-I../src" \ -# LIBDIRS="" LIBS="" ENVDEF="-DBSD4_4" - $(MAKE) -C smrsh -f Makefile.dist smrsh \ - CC="$(GCC)" O="$(OFLAGS)" \ - ENVDEF="-DCMDDIR=\\\"/usr/lib/sm.bin\\\" \ - -DPATH=\\\"/usr/bin:/bin\\\"" \ - INCDIRS="-I../src" LIBDIRS="" - $(MAKE) -f debian/rules rmail/rmail - cd doc && { \ - for doc in changes/changes intro/intro op/op usenix/usenix; \ - do test -f $$doc.txt || \ - nroff -me $$doc.me | cat -s > $$doc.txt; done; \ - } - test -f debian/part1 && test -f debian/part2 - cd debian && gcc -o sensible-mda sensible-mda.c - touch build + # Add here commands to clean up after the build process. + #-$(MAKE) clean + #-$(MAKE) distclean + cp -f debian/site.config.m4 BuildTools/Site/site.config.m4 + -$(MAKE) clean -l33ch: - cd debian && \ - wget ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq/part1 - cd debian && \ - wget ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq/part2 + # Local approximation of distclean + for file in \ + src mail.local mailstats makemap praliases rmail smrsh; do \ + rm -rf $$(find . -name "obj*" -type d); \ + done; + rm -f BuildTools/Site/site.config.m4 + rm -f debian/{check.tar,sensible-mda} + find .. -name $(package)*.asc -size 0 -maxdepth 1 -exec rm {} ";" + chmod +x debian/{runq,sendmailconfig} + dh_clean -man: - cp -p debian/runq.1 debian/tmp/usr/man/man1 - cp -p debian/sendmailconfig.8 debian/tmp/usr/man/man8 - cp -p debian/sensible-mda.8 debian/tmp/usr/man/man8 - for file in src/*.[158] mailstats/*.8 makemap/*.8 \ - praliases/*.8 smrsh/*.8 rmail/*.8; do \ - base=$$(basename $$file); \ - ext=$$(echo $$file | sed -e "s/.*\(.\)$$/\1/"); \ - sed -e "s#/usr/adm/sm.bin#/usr/lib/sm.bin#g" \ - -e "s#/etc/sendmail.hf#/usr/lib/sendmail.hf#g" \ - -e "s#/bin:/usr/bin:/usr/ucb#/usr/bin:/bin#g" \ - -e "s#/etc/rc#/etc/init.d/sendmail#g" $$file \ - > debian/tmp/usr/man/man$$ext/$$base; \ - done - install -m 644 contrib/etrn.pl debian/tmp/usr/man/man8/etrn.8 - install -m 644 contrib/expn.pl debian/tmp/usr/man/man8/expn.8 - cp -p checksendmail/address.resolve debian/tmp/usr/doc/$(package) - cp -p checksendmail/checksendmail.8 debian/tmp/usr/man/man8 +#------------- +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + #dh_clean -k + dh_clean + dh_installdirs + # Add here commands to install the package into debian/tmp. + #-$(MAKE) prefix=`pwd`/debian/tmp/usr install -bin: - install rmail/rmail debian/tmp/usr/bin - cd src && ./makesendmail install-sendmail \ - DESTDIR="$$(pwd)/../debian/tmp" BINGRP="root" - STDIR="$$(pwd)/../debian/tmp/var/log" -# cd debian/tmp && mv etc/sendmail.hf usr/lib - rm -f debian/tmp/etc/sendmail.st - $(MAKE) -s -C mailstats -f Makefile.dist install-mailstats \ - DESTDIR="../debian/tmp" - $(MAKE) -s -C makemap -f Makefile.dist install-makemap \ - DESTDIR="../debian/tmp" - $(MAKE) -s -C praliases -f Makefile.dist install-praliases \ - DESTDIR="../debian/tmp" - $(MAKE) -s -C smrsh -f Makefile.dist install-smrsh \ - BINDIR="../debian/tmp/usr/sbin" -# -$(MAKE) -s -C mail.local -f Makefile.dist install-mail.local \ -# BINDIR="../debian/tmp/usr/sbin" - strip --strip-debug debian/tmp/usr/{bin,sbin}/* - install debian/sendmailconfig debian/sensible-mda debian/tmp/usr/sbin - install debian/runq debian/tmp/usr/bin + chmod 700 debian/tmp/var/state/sendmail + + # sendmail install proper... with a little help ;-} + cp -f debian/site.config.m4 BuildTools/Site/site.config.m4 + $(MAKE) install \ + DESTDIR="$$(pwd)/debian/tmp" + cd rmail/obj* && $(MAKE) force-install \ + DESTDIR="../../debian/tmp" + # correct what the m4 build process did... + mv debian/tmp/usr/bin/rmail debian/tmp/usr/sbin/rmail + ln -sf ../sbin/rmail debian/tmp/usr/bin/rmail + #mv debian/tmp/usr/sbin/sendmail debian/tmp/usr/sbin/sendmail.real + #chmod 4755 debian/tmp/usr/sbin/sendmail.real + for file in \ + debian/tmp/usr/bin/{hoststat,mailq,newaliases,purgestat} \ + debian/tmp/usr/lib/sendmail; do \ + ln -sf ../sbin/sendmail $$file; \ + done; + + # contributed stuff - scripts sed "s?/usr/local/bin/perl?/usr/bin/perl?g" contrib/etrn.pl \ + | sed "s?/etc/sendmail.cf?/etc/mail/sendmail.cf?g" \ > debian/tmp/usr/sbin/etrn + chmod a+x debian/tmp/usr/sbin/etrn sed "s?/usr/local/bin/perl?/usr/bin/perl?g" contrib/expn.pl \ > debian/tmp/usr/bin/expn - chmod 755 debian/tmp/usr/sbin/etrn debian/tmp/usr/bin/expn - install checksendmail/checksendmail.perl debian/tmp/usr/sbin/checksendmail - for file in debian/tmp/usr/bin/{hoststat,mailq,newaliases,purgestat} \ - debian/tmp/usr/lib/sendmail; do \ - rm -f $$file && ln -s ../sbin/sendmail $$file; \ - done + chmod a+x debian/tmp/usr/bin/expn + sed "s?/etc/sendmail.cf?/etc/mail/sendmail.cf?g" \ + debian/checksendmail/checksendmail.perl \ + > debian/tmp/usr/sbin/checksendmail + chmod a+x debian/tmp/usr/sbin/checksendmail + # man + sed "s?/usr/local/bin/perl?/usr/bin/perl?g" contrib/etrn.pl \ + > debian/tmp/usr/man/man8/etrn.8 + sed "s?/usr/local/bin/perl?/usr/bin/perl?g" contrib/expn.pl \ + > debian/tmp/usr/man/man8/expn.8 + cp -p debian/checksendmail/checksendmail.8 debian/tmp/usr/man/man8/ + # examples + sed "s?/bin/perl?/usr/bin/perl?g" contrib/passwd-to-alias.pl \ + > debian/tmp/usr/doc/$(package)/examples/passwd-to-alias + # Debian stuff + install debian/sendmailconfig debian/sensible-mda \ + debian/tmp/usr/sbin + install debian/runq debian/tmp/usr/bin + #install -m 755 debian/socks_wrapper debian/tmp/usr/sbin/sendmail + # sendmail documentation + cp -p doc/*/*.ps debian/tmp/usr/doc/$(package) + cd doc && { \ + for doc in \ + changes/changes intro/intro op/op usenix/usenix; do\ + base=$$(basename $$doc.txt); \ + test -f $$doc.txt || \ + nroff -me $$doc.me | \ + cat -s > ../debian/tmp/usr/doc/sendmail/$$base; \ + done; \ + } + + # m4 configuration directories + cp -p cf/README debian/tmp/usr/doc/$(package)/cf.README + cp -a cf/{feature,m4,mailer,sh,domain,ostype} \ + debian/tmp/usr/share/sendmail.cf + chmod a+x debian/tmp/usr/share/sendmail.cf/sh/* + cp debian/debproto.mc debian/tmp/usr/share/sendmail.cf/cf/ + cp debian/debian.m4 debian/tmp/usr/share/sendmail.cf/ostype/ + cp debian/orbs.m4 debian/tmp/usr/share/sendmail.cf/feature/ + cp debian/orca.m4 debian/tmp/usr/share/sendmail.cf/feature/ + + cp -p debian/{aliases,nssnodns.conf} debian/tmp/etc + #$(MAKE) -f debian/rules hacks + + dh_movefiles + touch install-stamp + +#------------- +binary-indep: build install +# There are no architecture-independent files to be uploaded +# generated by this package. If there were any they would be +# made here. + +#------------- +binary-arch: build install +# dh_testversion + dh_testdir + dh_testroot + dh_installchangelogs RELEASE_NOTES + dh_installcron + dh_installdocs +# dh_installemacsen + dh_installexamples + dh_installinit + dh_installmanpages mail.local/* + cd debian/tmp/usr/man/man8 && \ + ln -sf sendmail.8.gz ./purgestat.8.gz && \ + ln -sf sendmail.8.gz ./hoststat.8.gz + # ln -sf sendmail.8.gz ./sendmail.real.8.gz +# dh_undocumented + dh_installmenu + # + $(MAKE) -s -f debian/rules buildinfo + # + dh_strip + dh_compress + dh_fixperms + #dh_link + dh_suidregister + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_makeshlibs + dh_md5sums + dh_builddeb +#------------- +l33ch: + dh_testdir + cd debian && \ + wget --passive-ftp --timestamping \ + ftp://rtfm.mit.edu/pub/usenet/comp.mail.sendmail/sendmail_FAQ + +#------------- hacks: cd debian && uudecode check.tar.uue cd debian/tmp/usr/doc/$(package) && tar -xf ../../../../check.tar cd debian/tmp/usr/doc/$(package)/hack; \ - for file in *; do \ + for file in *; do \ sed "s/dbm /hash /g" < $$file \ - > ../../../lib/sendmail.cf/hack/$$file; \ - done + > ../../../share/sendmail.cf/hack/$$file; \ + done sed "s/dbm /hash /g" debian/tmp/usr/doc/$(package)/README.check \ > debian/tmp/usr/doc/$(package)/README.Spam rm debian/tmp/usr/doc/$(package)/README.check rm -r debian/tmp/usr/doc/$(package)/hack/ - cp -p debian/{rbl*,nodns}.m4 debian/tmp/usr/lib/sendmail.cf/hack - - -binary-indep: checkroot - $(checkdir) - -binary-arch: checkroot build - $(checkdir) - rm -rf debian/tmp && install -d debian/tmp - cd debian/tmp && install -d $$(cat ../dirs) - cp debian/{conffiles,control} debian/tmp/DEBIAN - install debian/{pre*,post*} debian/tmp/DEBIAN - - $(MAKE) -f debian/rules man - cp -p doc/*/{*.ps,*.txt} debian/tmp/usr/doc/$(package) - cp -p RELEASE_NOTES debian/tmp/usr/doc/$(package)/changelog -# cp -p debian/changelog \ -# debian/tmp/usr/doc/$(package)/changelog.Debian - cp -p cf/README debian/tmp/usr/doc/$(package)/cf.README - cp -p debian/part1 debian/tmp/usr/doc/$(package)/FAQ-1.txt - cp -p debian/part2 debian/tmp/usr/doc/$(package)/FAQ-2.txt - find debian/tmp/usr/doc/$(package) debian/tmp/usr/man \ - -type f -exec gzip -v9 {} ";" - cd debian/tmp/usr/man/man8 && \ - ln -s sendmail.8.gz ./purgestat.8.gz && \ - ln -s sendmail.8.gz ./hoststat.8.gz - cp -p debian/{README*,copyright} contrib/passwd-to-alias.pl \ - KNOWNBUGS debian/tmp/usr/doc/$(package) - chmod a-x debian/tmp/usr/doc/$(package)/passwd-to-alias.pl - cp debian/debproto.mc debian/tmp/usr/lib/sendmail.cf/cf - cp -p debian/debian.m4 cf/ostype/* \ - debian/tmp/usr/lib/sendmail.cf/ostype - cp -p cf/domain/* debian/tmp/usr/lib/sendmail.cf/domain - cp -a cf/{feature,m4,mailer,sh} debian/tmp/usr/lib/sendmail.cf - - $(MAKE) -f debian/rules bin - $(MAKE) -f debian/rules hacks - install debian/init.d debian/tmp/etc/init.d/$(package) - #install -m 755 debian/ip-up.d debian/tmp/etc/ppp/ip-up.d/$(package) - #install -m 755 debian/ip-down.d debian/tmp/etc/ppp/ip-down.d/$(package) - cp -p debian/{aliases,nssnodns.conf} debian/tmp/etc - - chmod -R u=rwX,go=rX debian/tmp - chown -R root.root debian/tmp - chmod 4755 debian/tmp/usr/sbin/sendmail - chmod 700 debian/tmp/var/state/sendmail - $(MAKE) -s -f debian/rules buildinfo - -# dh_installdocs -# dh_installexamples -# dh_installmenu -# dh_installcron -# dh_installmanpages - dh_installchangelogs -# dh_movefiles - dh_strip -# dh_compress - dh_fixperms - dh_suidregister - dh_installdeb - dh_shlibdeps - dh_gencontrol -# dh_makeshlibs - dh_md5sums - dh_builddeb - - -clean: - $(checkdir) - rm -f build - test ! -d debian/tmp || rm -rf debian/tmp - $(MAKE) -C smrsh -f Makefile.dist clean - $(MAKE) -C praliases -f Makefile.dist clean - $(MAKE) -C makemap -f Makefile.dist clean - $(MAKE) -C mailstats -f Makefile.dist clean - $(MAKE) -C mail.local -f Makefile.dist clean - rm -f doc/{changes/changes,intro/intro,op/op,usenix/usenix}.txt - rm -rf rmail/rmail stamp-build $$(find . -name "*~") src/obj.* - rm -rf $$(find debian/* -type d) $$(find src makemap -type l) - rm -rf debian/{files*,*substvars*} debian/{check.tar,sensible-mda} - find .. -name $(package)*.asc -size 0 -maxdepth 1 -exec rm {} ";" - chmod +x debian/{pre*,post*,runq,sendmailconfig} - + cp -p debian/{rbl*,nodns}.m4 debian/tmp/usr/share/sendmail.cf/hack +#------------- buildinfo: @echo; dpkg -l gcc "libc6*" binutils ldso make dpkg-dev $(BUILDINFO) \ | awk '$$1 == "ii" { printf("%s-%s\n", $$2, $$3) }' \ | tee debian/tmp/usr/doc/$(package)/buildinfo.Debian; echo chmod 644 debian/tmp/usr/doc/$(package)/buildinfo.Debian -# cd debian/tmp && md5sum $$(find * -type f -not -regex "DEBIAN/.*") \ -# > DEBIAN/md5sums -# rm -f debian/tmp/files.sig -# -cd debian/tmp && pgp -sat +clearsig=on DEBIAN/md5sums -o files.sig \ -# && chmod 644 files.sig \ -# && mv -v files.sig usr/doc/$(package)/checksums.txt - - -define checkdir - test -f debian/rules -endef +#------------- # Below here is fairly generic really -binary: binary-indep binary-arch - source diff: @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false -checkroot: - $(checkdir) - test root = "`whoami`" - -.PHONY: binary binary-arch binary-indep clean checkroot +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary diff --git a/debian/runq b/debian/runq index b68b35a..a62522c 100644 --- a/debian/runq +++ b/debian/runq @@ -22,5 +22,6 @@ case $# in ;; * ) ;; esac - -exec /usr/sbin/sendmail -q $* + +COMMAND=/usr/sbin/sendmail +exec $COMMAND -q $* diff --git a/debian/sendmail-8.8.5-tcpwrap b/debian/sendmail-8.8.5-tcpwrap deleted file mode 100644 index 1cf0971..0000000 --- a/debian/sendmail-8.8.5-tcpwrap +++ /dev/null @@ -1,82 +0,0 @@ - - PREVENT UNAUTHORIZED USE OF YOUR HOSTS AS SMTP RELAY - - Miquel van Smoorenburg <miquels@cistron.nl> 14-Jun-1996 - -The patch at the end of this file adds a new option to sendmail, -`W' or `TcpWrappers'. This makes it possible for precompiled distributions -to ship binaries compiled with -DTCPWRAPPERS without any unexpected -side-effects, since the option is off by default. - -Here's the diff to the sendmail-8.8.5 source: - -diff -ru sendmail-8.8.5.orig/src/conf.c sendmail-8.8.5/src/conf.c ---- sendmail-8.8.5.orig/src/conf.c Tue Jan 21 16:47:13 1997 -+++ sendmail-8.8.5/src/conf.c Tue Jun 3 14:26:44 1997 -@@ -4026,7 +4029,8 @@ - return FALSE; - - #if TCPWRAPPERS -- if (!hosts_ctl("sendmail", hostname, anynet_ntoa(sap), STRING_UNKNOWN)) -+ if (TcpWrappers && -+ !hosts_ctl("sendmail", hostname, anynet_ntoa(sap), STRING_UNKNOWN)) - { - # ifdef LOG - if (LogLevel >= 4) -diff -ru sendmail-8.8.5.orig/src/readcf.c sendmail-8.8.5/src/readcf.c ---- sendmail-8.8.5.orig/src/readcf.c Wed Jan 15 02:51:29 1997 -+++ sendmail-8.8.5/src/readcf.c Tue Jun 3 15:19:48 1997 -@@ -1424,6 +1424,9 @@ - { "FallbackMXhost", 'V', FALSE }, - { "Verbose", 'v', TRUE }, - { "TryNullMXList", 'w', FALSE }, -+#ifdef TCPWRAPPERS -+ { "TcpWrappers", 'W', TRUE }, -+#endif - { "QueueLA", 'x', FALSE }, - { "RefuseLA", 'X', FALSE }, - { "RecipientFactor", 'y', FALSE }, -@@ -2069,6 +2072,11 @@ - break; - - /* 'W' available -- was wizard password */ -+#ifdef TCPWRAPPERS -+ case 'W': -+ TcpWrappers = atobool(val); -+ break; -+#endif - - case 'x': /* load avg at which to auto-queue msgs */ - QueueLA = atoi(val); -diff -ru sendmail-8.8.5.orig/src/sendmail.8 sendmail-8.8.5/src/sendmail.8 ---- sendmail-8.8.5.orig/src/sendmail.8 Fri Jan 17 00:25:50 1997 -+++ sendmail-8.8.5/src/sendmail.8 Tue Jun 3 15:03:28 1997 -@@ -432,6 +432,15 @@ - This may not be available if your sendmail does not have the - .Dv USERDB - option compiled in. -+.It Li TcpWrappers -+Use the -+.Dv sendmail -+entry in -+.Pa /etc/hosts.allow -+to decide if the remote host has access to the SMTP port. -+This may not be available if your sendmail does not have the -+.Dv TCPWRAPPERS -+option compiled in. - .It Li ForkEachJob - Fork each job during queue runs. - May be convenient on memory-poor machines. -diff -ru sendmail-8.8.5.orig/src/sendmail.h sendmail-8.8.5/src/sendmail.h ---- sendmail-8.8.5.orig/src/sendmail.h Wed Jan 15 02:51:29 1997 -+++ sendmail-8.8.5/src/sendmail.h Tue Jun 3 14:25:43 1997 -@@ -1168,6 +1168,9 @@ - #ifdef _FFR_DSN_RRT - EXTERN bool RrtImpliesDsn; /* turn Return-Receipt-To: into DSN */ - #endif -+#ifdef TCPWRAPPERS -+EXTERN bool TcpWrappers; /* Use tcp wrappers for access control. */ -+#endif - EXTERN bool IgnoreHostStatus; /* ignore long term host status files */ - EXTERN bool SingleThreadDelivery; /* single thread hosts on delivery */ - EXTERN bool UnsafeGroupWrites; /* group-writable files are unsafe */ diff --git a/debian/sendmail-8.8.8-ismx-4 b/debian/sendmail-8.8.8-ismx-4 deleted file mode 100644 index 7185096..0000000 --- a/debian/sendmail-8.8.8-ismx-4 +++ /dev/null @@ -1,161 +0,0 @@ - - PREVENT UNAUTHORIZED USE OF YOUR HOSTS AS SMTP RELAY - - Miquel van Smoorenburg <miquels@cistron.nl> 03-Mar-1998 - -This patch adds a new map type to sendmail-8.8.8, called "ismx". That -maps checks if we (all names in class 'w') are an MX for a certain domain. -If so, the input hostname is replaced by our hostname, or TEMPFAIL if the DNS -lookup failed. - -This can be used together with the "check_rcpt" rule to deny relaying for -domains for which we are officially not an MX, without listing all domains -in a configuration file. This prevents that your host is being used as -a spam relay. However your host will still relay for hosts that it is -officially an MX for, without any extra administration. - -Ofcourse you can put a list of IP numbers/networks in the file "LocalIP" -to list hosts that may use your host as relay or smarthost. This is -useful for a machine that is used internally as SMTP relay, for e.g. -Eudora or Pegasus mail clients. The fields in this file are used with -a substring match; for example 192.168 will match 192.168.0.0/16, -192.168.1 will match 192.168.1.0/24 and 192.168.1.2 will only match -that specific IP address. One entry per line. - -If you want to add some more hosts/domains you relay for but which -do not have an MX entry pointing at your server, or which are not -in class `w', you can put them in the file "RelayTo". - -Both files (LocalIP and RelayTo) must exist, even if they are otherwise -empty. Comments (using `#') are allowed. - - -These are the sendmail rules, with thanks to Niels Bakker <niels@euro.net> - -8.8.8-2 Documentation update, rules rewrite -8.8.8-3 Allow <@a,b:user@c> in MAIL FROM: -8.8.8-4 Use ismx map to differentiate between soft and hard lookup - errors in Scheck_mail - -LOCAL_CONFIG -Kismx ismx -F{LocalIP} /etc/mail/LocalIP -FR /etc/mail/RelayTo - -LOCAL_RULESETS -Scheck_mail -# -# Check that the domain name is valid. -# -R< @ $+ : $+ @ $+ > $: < $2 @ $3 > Strip SMTP route-addr -R<$*@$=w> $@ <OK> shortcut (class w) -R$- $@ <OK> local host -R<> $@ <OK> bounce -R$* $: <?> $>3 $1 canonify -R<?> $* < @ $+ . > $: $1 < @ $2 > qualified -R<?> $* < @ $+ > $: <?> $(ismx $2 $: NOMX $) -R<?> TEMPFAIL $# error $@ 4.5.1 $: 451 Cannot resolve that - try again later. -R<?> $* $# error $@ 5.7.1 $: 571 Invalid host name - -Scheck_rcpt -# -# Local users (LocalIP) can relay anywhere. -# -R$+ $: $(dequote "" $&{client_addr} $) $| $1 -R0 $| $* $@ <OK> no client addr: directly invoked -R$={LocalIP}$* $| $* $@ <OK> from here -R$* $| $* $: $2 undo damage -# -# Anything terminating locally is also OK. -# -R$* $: $>Parse0 $>3 $1 -R$+ < @ $* . > $* $: $1 < @ $2 > -R$+ < @ $=w > $@ <OK> we deliver -R$+ < @ $=R > $@ <OK> we relay -# -# See if we are MX for this host -# -R$+ < $* @ $+ > $* $: $1 < $2 @ $(ismx $3 $: NOMX $) > $4 -R$+ < $* @ NOMX > $* $# error $@ 5.7.1 $: 571 I do not relay for that address. -R$+ < $* @ TEMPFAIL > $* $# error $@ 4.5.1 $: 451 Cannot resolve target domain. -R$* $@ <OK> - - -Note that if the MX lookup fails, a temporary rather than a fatal error -code is returned so that the message will not get lost. - -Here's the diff to the sendmail-8.8.8 source. Note that if you are -running Debian/Linux, the sendmail-8.8.8 package already has this patch -incorporated. - - -diff -u --recursive --new-file sendmail-8.8.8.orig/src/conf.c sendmail-8.8.8/src/conf.c ---- sendmail-8.8.8.orig/src/conf.c Mon Oct 20 17:41:38 1997 -+++ sendmail-8.8.8/src/conf.c Mon Jan 12 11:24:15 1998 -@@ -368,6 +368,10 @@ - MAPDEF("bestmx", NULL, MCF_OPTFILE, - map_parseargs, null_map_open, null_map_close, - bestmx_map_lookup, null_map_store); -+ -+ MAPDEF("ismx", NULL, MCF_OPTFILE, -+ map_parseargs, null_map_open, null_map_close, -+ ismx_map_lookup, null_map_store); - #endif - - MAPDEF("host", NULL, 0, -diff -u --recursive --new-file sendmail-8.8.8.orig/src/domain.c sendmail-8.8.8/src/domain.c ---- sendmail-8.8.8.orig/src/domain.c Sat Aug 2 20:06:53 1997 -+++ sendmail-8.8.8/src/domain.c Mon Jan 12 11:24:15 1998 -@@ -481,6 +481,52 @@ - return map_rewrite(map, mxhosts[0], strlen(mxhosts[0]), av); - } - /* -+** ISMX -- find if we are the MX for a certain host. -+** -+** This is really a hack, but I don't see any obvious way -+** to generalize it at the moment. -+*/ -+ -+char * -+ismx_map_lookup(map, name, av, statp) -+ MAP *map; -+ char *name; -+ char **av; -+ int *statp; -+{ -+ int nmx, i, len; -+ auto int rcode; -+ int saveopts = _res.options; -+ char *mxhosts[MAXMXHOSTS + 1]; -+ char *mymx = NULL; -+ -+ _res.options &= ~(RES_DNSRCH|RES_DEFNAMES); -+ nmx = getmxrr(name, mxhosts, FALSE, &rcode); -+ _res.options = saveopts; -+ if (rcode != EX_TEMPFAIL) { -+ if (nmx <= 0) -+ return NULL; -+ for(i = 0; i < nmx; i++) { -+ len = strlen(mxhosts[i]); -+ if (len && mxhosts[i][len - 1] == '.') -+ mxhosts[i][len - 1] = 0; -+ if (wordinclass(mxhosts[i], 'w')) { -+ mymx = mxhosts[i]; -+ break; -+ } -+ } -+ if (mymx == NULL) -+ return NULL; -+ } else -+ mymx = "TEMPFAIL"; -+ -+ if (bitset(MF_MATCHONLY, map->map_mflags)) -+ return map_rewrite(map, name, strlen(name), NULL); -+ else -+ return map_rewrite(map, mymx, strlen(mymx), av); -+} -+ -+/* - ** DNS_GETCANONNAME -- get the canonical name for named host using DNS - ** - ** This algorithm tries to be smart about wildcard MX records. diff --git a/debian/sendmail.README.Debian b/debian/sendmail.README.Debian new file mode 100644 index 0000000..7cad251 --- /dev/null +++ b/debian/sendmail.README.Debian @@ -0,0 +1,32 @@ + ***** Important notes on sendmail 8.9.2 **** + +1) Sendmail now always uses TCP wrappers (/etc/hosts.allow /etc/hosts.deny) + This is a change from prior versions where wrapper support was enabled + via sendmail.mc. + + Please make sure you add the appropriate entry to the /etc/hosts.* file. + The most likely candidate is to place sendmail: all in /etc/hosts.allow + +2) You should *really* read RELEASE_NOTES... There are *many* changes for + spam control. + A) Relaying is, by default, prohibitted + B) Mail from non-resolvable domains is, by default, prohibitted + + **** Other information **** + +This Debian package includes an automatic configuration utility +`sendmailconfig' which can be run at any time to modify the current sendmail +configuration. + +Most mail-related configuration files are kept in the /etc/mail directory. + +Specialized configurations can be accomplished by editing the file +/etc/mail/sendmail.mc by hand and then running `sendmailconfig' to generate +and use the appropriate corresponding sendmail.cf file. Such configurations +can make use of the m4 configuration macros kept in the /usr/share/sendmail.cf +directory. See also the other documentation in this directory. + +Finally, the file /etc/aliases holds a text representation of the current mail +aliases. See the aliases(5) man page for more information. If you edit this +file, be sure to run `newaliases' to update the corresponding binary database. + diff --git a/debian/sendmail.TODO b/debian/sendmail.TODO new file mode 100644 index 0000000..5b6cbe5 --- /dev/null +++ b/debian/sendmail.TODO @@ -0,0 +1,29 @@ +Misc: + hack nodns needs cleanup, currently not even installed! + cleanup/extend sendmailconfig + -- get rid of feature(nodns) + +Doc: + add hoststat to sendmail manpage + +FHS: + * /usr/doc -> /usr/share/doc + * /usr/man -> /usr/share/man + * /usr/lib/sm.bin -> ? + * /usr/lib/sendmail (obsolete link used by rmail/pine/others) + +IRC comments: +* <wichert> cowboy: I use a LUSER_RELAY here, which sends everything to another machine. That other machine uses a different maildomain, so I would like the luserrelay to rewrite the from-address when relaying +<cowboy> wichert: does genericstable work with the relay? +<wichert> cowboy: that probably, but that will rewrite _all_ outgoing mail +<cowboy> wichert: so you want it rewritten *only* when going through the relay? +<wichert> cowboy: indeed. And only for the receiving persons +<cowboy> wichert: hrm... I guess a new mailer def for the relay eh? +<wichert> cowboy: probably, FEATUER(luser_relay,host,rewrite_to) or so, with the 3rd param being optional +<cowboy> wichert: hrm... so you using aliases now? +<wichert> cowboy: no, people who do a group-reply to something I sent just get errors now +<cowboy> wichert: interesting... have you considered masquerading as your luser_relay, and then using generictable/user db to override for the uids that actually exist? +<wichert> cowboy: sounds like a hack and certainly does not scale very well +<cowboy> wichert: most definetly true ;-{ + +* <wichert> cowboy: another thing: you might want to make a /usr/doc/sendmail/README.spam or so with info about all spam/relay-control hacks/features that are in the Debian package, with a couple of examples diff --git a/debian/conffiles b/debian/sendmail.conffiles index 2108bcc..2108bcc 100644 --- a/debian/conffiles +++ b/debian/sendmail.conffiles diff --git a/debian/sendmail.dirs b/debian/sendmail.dirs new file mode 100644 index 0000000..3e077c9 --- /dev/null +++ b/debian/sendmail.dirs @@ -0,0 +1,17 @@ +DEBIAN +etc/init.d +usr/bin +usr/sbin +usr/man/man1 +usr/man/man5 +usr/man/man8 +usr/doc/sendmail +usr/doc/sendmail/examples +usr/lib/sm.bin +usr/share/misc +usr/share/sendmail.cf/hack +usr/share/sendmail.cf/domain +usr/share/sendmail.cf/ostype +usr/share/sendmail.cf/cf +var/state/sendmail +var/log diff --git a/debian/sendmail.docs b/debian/sendmail.docs new file mode 100644 index 0000000..828c838 --- /dev/null +++ b/debian/sendmail.docs @@ -0,0 +1,5 @@ +FAQ +KNOWNBUGS +README +RELEASE_NOTES +debian/sendmail_FAQ diff --git a/debian/sendmail.examples b/debian/sendmail.examples new file mode 100644 index 0000000..a5996a1 --- /dev/null +++ b/debian/sendmail.examples @@ -0,0 +1,3 @@ +debian/ip-up.d +debian/ip-down.d +debian/checksendmail/address.resolve diff --git a/debian/init.d b/debian/sendmail.init index ff8422a..3d688b4 100644 --- a/debian/init.d +++ b/debian/sendmail.init @@ -12,17 +12,18 @@ Q="10m" PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/sendmail +COMMAND=/usr/sbin/sendmail PIDFILE=/var/run/sendmail.pid NAME=sendmail FLAGS="defaults 50" -test -x $DAEMON -a -f /etc/sendmail.cf || exit 0 +test -x $DAEMON -a -d /usr/doc/sendmail || exit 0 case "$1" in start) ( cd /var/spool/mqueue && rm -f [lnx]f* ) echo -n "Starting mail transport agent: sendmail" - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- -bd -q"$Q" + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --startas $COMMAND -- -bd -q"$Q" echo "." ;; @@ -34,6 +35,7 @@ case "$1" in restart) $0 stop + sleep 2 $0 start ;; diff --git a/debian/postinst b/debian/sendmail.postinst index 6c4ecbc..14d7efc 100644 --- a/debian/postinst +++ b/debian/sendmail.postinst @@ -4,6 +4,7 @@ # Version 1.2 # # Robert Leslie <rob@mars.org> +# Note: can't use debhelper here because the actions aren't contiguous case "$1" in configure) @@ -20,6 +21,8 @@ case "$1" in ;; esac +#if [ "$2" == "" ]; then echo "first time"; fi + if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then suidregister -s sendmail /usr/sbin/sendmail root root 4755 else @@ -90,16 +93,45 @@ then mv -f /etc/sendmail.cf /etc/sendmail.cf.old fi fi - -ln -sf mail/sendmail.cf /etc/sendmail.cf - +#ln -sf mail/sendmail.cf /etc/sendmail.cf + +#----------------------------------------------------------- +if test "$1" = configure && dpkg --compare-versions "$2" lt 8.9.1-13; then + echo " " + echo "*** IMPORTANT ***" + echo " " + echo "The format of sendmails databases has changed (now using libdb2)." + echo "You *MUST* update your databases (newaliases, users, etc.)" + echo "before allowing sendmail to restart." + echo " " + echo "Press <Enter> to continue" + read yn + fi + +#----------------------------------------------------------- # Check existing /etc/mail/sendmail.cf -if [ -f /etc/mail/sendmail.cf ] -then +if [ -f /etc/mail/sendmail.cf ]; then + if test "$1" = configure && dpkg --compare-versions "$2" lt 8.9.2; then + echo " " + echo "*** IMPORTANT ***" + echo " " + echo "This version of sendmail moves more configuration files from" + echo "/etc/... to /etc/mail/... ie: domaintable,genericstable, etc." + echo " " + echo "If you you use any of these, you *MUST*:" + echo " 1)" + echo " A) Move them by hand from /etc/... to /etc/mail/..." + echo " B) Move any script to create databases from the text" + echo " or" + echo " 2) Update your sendmail.mc to explicitly name the file" + echo " FEATURE(genericstable, \`hash -o /etc/mail/genericstable.db')dnl" + echo " " + echo "Press <Enter> to continue" + read yn + fi if (sed -n -e "/^DZ/s/^DZ//p" /etc/mail/sendmail.cf \ - | grep 8.8.8 > /dev/null) - then + | grep "8.9.3" > /dev/null); then echo "Existing /etc/mail/sendmail.cf found, and it appears it may be" echo -n "compatible with this version of sendmail. Use it? [Y] " read yn @@ -120,7 +152,7 @@ then "as /etc/mail/sendmail.cf.old ..." mv -f /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old ;; - esac + esac fi test -f /etc/mail/sendmail.cf || sendmailconfig --no-reload diff --git a/debian/postrm b/debian/sendmail.postrm index 2ebac2e..6411504 100644 --- a/debian/postrm +++ b/debian/sendmail.postrm @@ -17,10 +17,6 @@ case "$1" in rm -f /etc/sendmail.cf /etc/aliases.{db,dir,pag} rm -f /etc/mail/sendmail.{cf,cw,ct,mc}{,.old} rmdir /etc/mail 2>/dev/null || true - update-rc.d sendmail remove >/dev/null - if [ -e /etc/suid.conf -a -x /usr/sbin/suidunregister ]; then - suidunregister -s sendmail /usr/sbin/sendmail - fi ;; failed-upgrade|abort-install|abort-upgrade|disappear) @@ -30,4 +26,6 @@ case "$1" in echo "postrm called with unknown argument \`$1'" >&2 exit 0 ;; -esac + esac + +#DEBHELPER# diff --git a/debian/preinst b/debian/sendmail.preinst index 0a2830d..0a2830d 100644 --- a/debian/preinst +++ b/debian/sendmail.preinst diff --git a/debian/prerm b/debian/sendmail.prerm index 6fa8b78..614318d 100644 --- a/debian/prerm +++ b/debian/sendmail.prerm @@ -7,7 +7,7 @@ case "$1" in remove|upgrade|deconfigure) - /etc/init.d/sendmail stop + #DEBHELPER# ;; failed-upgrade) diff --git a/debian/sendmail.suid b/debian/sendmail.suid new file mode 100644 index 0000000..baa49ef --- /dev/null +++ b/debian/sendmail.suid @@ -0,0 +1 @@ +/usr/sbin/sendmail diff --git a/debian/sendmail_FAQ b/debian/sendmail_FAQ new file mode 100644 index 0000000..d01d134 --- /dev/null +++ b/debian/sendmail_FAQ @@ -0,0 +1,182 @@ +Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news.kodak.com!news-nysernet-16.sprintlink.net!news-in-east1.sprintlink.net!news.sprintlink.net!news-feed1.tiac.net!cam-news-hub1.bbnplanet.com!su-news-feed4.bbnplanet.com!news.gtei.net!newsfeed1.uswest.net!newsfeed3.uswest.net!namche.Sun.COM!sunnews1.Eng.Sun.COM!engnews2.Eng.Sun.COM!opal!jbeck +From: John Beck <jbeck@eng.sun.com> +Newsgroups: comp.mail.sendmail,comp.mail.misc,comp.answers,news.answers +Subject: sendmail FAQ +Supersedes: <sendmail-faq-1-913320001@eng.sun.com> +Followup-To: comp.mail.sendmail +Date: 25 Dec 1998 20:00:23 GMT +Organization: Sendmail Consortium +Lines: 159 +Approved: news-answers-request@MIT.EDU +Distribution: world +Expires: Fri, 15 Jan 1999 20:00:02 GMT +Message-ID: <sendmail-faq-1-914616002@eng.sun.com> +Reply-To: sendmail+faq@sendmail.org (Sendmail FAQ) +NNTP-Posting-Host: opal.eng.sun.com +Summary: This posting contains a list of Frequently Asked Questions + about the program "sendmail", distributed with many versions of Unix. + The answers are at the given URLs. They should be read by anyone who + wishes to post to the Usenet newsgroup comp.mail.sendmail. +Keywords: sendmail, mail, SMTP, FAQ +Originator: jbeck@opal +Xref: senator-bedfellow.mit.edu comp.mail.sendmail:67640 comp.mail.misc:47448 comp.answers:34384 news.answers:147451 + +Posted-By: auto-faq 3.3 (Perl 5.006) +Archive-name: mail/sendmail/faq +Posting-Frequency: posted on the 10th and 25th of each month +Last-modified: December 22, 1998 +URL: http://www.sendmail.org/faq/ +Maintainer: Sendmail FAQ <sendmail+faq@sendmail.org> + + Sendmail + Frequently Asked Questions (FAQ) + + Last updated December 22, 1998 + + Changes since the last post on 10 Dec 1998 20:00:28 GMT + * Updated 4.7 + ----------------------------------------------------------------------- + * Questions about the FAQ: <sendmail+faq@sendmail.org> + * General questions: <sendmail-questions@sendmail.org> + * Bug reports: <sendmail-bugs@sendmail.org> + * Questions/comments about the web site <sendmail-www@sendmail.org> + ----------------------------------------------------------------------- + If you post a message to comp.mail.sendmail *and* send it to one of the + above addresses, please clearly indicate so at the top of your message. + ----------------------------------------------------------------------- + +Table of Contents + + * 1. COPYRIGHT NOTICE / REDISTRIBUTION REQUIREMENTS + http://www.sendmail.org/faq/section1.html + + * 2. INTRODUCTION / MISCELLANEOUS + http://www.sendmail.org/faq/section2.html + + + 2.1 What is this newsgroup? + + 2.2 What is the scope of this FAQ? + + 2.3 Where can I find the latest version of this FAQ? + + 2.4 How do I access comp.mail.sendmail by email? + + 2.5 Where can I ask email-related DNS questions? + + 2.6 How can I subscribe to these newsgroups? + + 2.7 Which version of sendmail should I run? + + 2.8 What is the latest release of sendmail? + + 2.9 Where can I find it? + + 2.10 What are the differences between Version 8 and other versions? + + 2.11 What's the best platform for running sendmail? + + 2.12 What is BIND and where can I get the latest version? + + 2.13 What is smrsh and where can I get it? + + 2.14 What is smap and where can I get it? + + 2.15 What is TCP-Wrappers and where can I get it? + + 2.16 Why won't db 1.85 build on my machine? + + 2.17 What is makemap and where can I get it? + + * 3. VERSION 8 SPECIFIC ISSUES + http://www.sendmail.org/faq/section3.html + + + 3.1 How do I make all my addresses appear to be from a single host? + + 3.2 How do I rewrite my "From:" lines to read + ``First_Last@My.Domain'' or ``Different_Name@My.Domain''? + + 3.3 Why are you so hostile to using full names for email addresses? + + 3.4 So what was the user database feature intended for? + + 3.5 Where do I find this user database (UserDB) code? + + 3.6 How do I get the user database to work with Pine or with + FEATURE(always_add_domain)? + + 3.7 How do I manage several (virtual) domains? + + 3.8 There are four UUCP mailers listed in the configuration files. + Which one should I use? + + 3.9 How do I fix "undefined symbol inet_aton" and + "undefined symbol _strerror" messages? + + 3.10 How do I solve "collect: I/O error on connection" or + "reply: read error from host.name" errors? + + 3.11 Why can't my users forward their mail to a program? + + 3.12 Why do connections to the SMTP port take such a long time? + + 3.13 Why do I get "unknown mailer error 5 -- mail: options MUST + PRECEDE recipients" errors? + + 3.14 Why does version 8 sendmail panic my SunOS box? + + 3.15 Why does the Unix From line get mysteriously munged when I send + to an alias? + + 3.16 Why doesn't MASQUERADE_AS (or the user database) work + for envelope addresses as well as header addresses? + + 3.17 How do I run version 8 sendmail and support the MAIL11V3 protocol? + + 3.18 Why do messages disappear from my queue unsent? + + 3.19 When is sendmail going to support RFC 1522 MIME header encoding? + + 3.20 Why can't I get mail to some places, but instead always get + the error "reply: read error from name.of.remote.host"? + + 3.21 Why doesn't "FEATURE(xxx)" work? + + 3.22 How do I configure sendmail not to use DNS? + + 3.23 How do I get all my queued mail delivered to my Unix box from + my ISP? + + 3.24 Why do I get the error message unable to write + /etc/mail/sendmail.pid? + + 3.25 Why can't I compile sendmail with Berkeley DB 2.X? + + 3.26 What operating systems has Berkeley sendmail been ported to? + + 3.27 How do I prevent "Relaying Denied" errors for my clients? + + 3.28 Why isn't virtual hosting working, even after I added a + "Kvirtuser" line to sendmail.cf ? + + 3.29 How can I add a header specifying the actual recipient when having + multiple users in a virtual domain go to a single mailbox? + + 3.30 What do I do when Build fails because groff was not found? + + 3.31 What does "class hash not available" mean? + + * 4. GENERAL SENDMAIL ISSUES + http://www.sendmail.org/faq/section4.html + + + 4.1 Should I use a wildcard MX for my domain? + + 4.2 How can I set up an auto-responder? + + 4.3 How can I get sendmail to deliver local mail to $HOME/.mail + instead of into /usr/spool/mail (or /usr/mail)? + + 4.4 Why does it deliver the mail interactively when I'm trying to get + it to go into queue only mode? + + 4.5 How can I solve "MX list for hostname points back to hostname" + and "config error: mail loops back to myself" messages? + + 4.6 Why does my sendmail process sometimes hang when connecting over + a SLIP/PPP link? + + 4.7 How can I summarize the statistics generated by sendmail in the + syslog? + + 4.8 How can I check my sendmail.cf to ensure that it's re-writing + addresses correctly? + + 4.9 What is procmail, and where can I get it? + + 4.10 How can I solve "cannot alias non-local names" errors? + + 4.11 Is sendmail Year 2000 compliant? + + 4.12 How can I batch remote mail to be sent using my ISP while + delivering local mail immediately? + + 4.13 What does "unknown mailer error 1" mean? + + * 5. VENDOR/OS SPECIFIC SENDMAIL ISSUES + http://www.sendmail.org/faq/section5.html + + + 5.1 Sun Microsystems SunOS/Solaris 1.x/2.x + + o 5.1.1 How can I solve "line 273: replacement $3 out of bounds" + errors? + o 5.1.2 How can I solve "line 445: bad ruleset 96 (50 max)" errors? + o 5.1.3 Why does version 8 sendmail (< 8.7.5) sometimes hang + under Solaris 2.5? + o 5.1.4 Why can't I use SunOS/Solaris to get email to certain + large sites? + o 5.1.5 Why do I have trouble compiling on Solaris? + o 5.1.6 How does 8.X compare to 8.X+Sun? + + + 5.2 IBM AIX + + o 5.2.1 The system resource controller always reports sendmail + as "inoperative". What's wrong? + o 5.2.2 Why can't I use AIX to get email to some sites? + o 5.2.3 Why can't I get sendmail 8.7.1 to use MX records with + AIX 3.2.5? + + * 6. ADDITIONAL INFORMATION SOURCES (RFC 1807 bibliography format) + http://www.sendmail.org/faq/section6.html + + + 6.1 Reference material devoted exclusively to sendmail + + 6.2 Reference material with chapters or sections on sendmail + + 6.3 Reference material on subjects related to sendmail + + 6.4 World-wide web index pages on sendmail + + 6.5 World-wide web index pages Internet email in general + + 6.6 Online tutorials for sendmail + + 6.7 Online archives of mailing lists and Usenet newsgroups, + relating to Internet email + + * 7. THANKS! + http://www.sendmail.org/faq/section7.html diff --git a/debian/sendmailconfig b/debian/sendmailconfig index 3d44a9e..a729607 100644 --- a/debian/sendmailconfig +++ b/debian/sendmailconfig @@ -1,11 +1,14 @@ -#!/bin/sh -e +#!/bin/sh # # Interactively configure Sendmail for Debian # -# Robert Leslie <rob@mars.org> +# Robert Leslie <rob@mars.org>, +# Rick Nelson <cowboy@debian.org> PATH="/usr/sbin:/usr/bin:/sbin:/bin" +FILE="/etc/mail/sendmail.mc" +set +e reload="yes" umask 022 @@ -80,18 +83,34 @@ input() { } testconfig() { - CONFIG=$(grep "$1" /etc/mail/sendmail.mc 2>/dev/null) + CONFIG=$(grep "$1" $FILE 2>/dev/null) +} + +testwrap() { + WRAP=$(grep "^[^#:]*sendmail[^:]*[:]" /etc/hosts.allow 2>/dev/null) +} + +updatewrap() { + echo "Updating /etc/hosts.allow, adding \"sendmail: all\"." + echo "sendmail: all" | cat - /etc/hosts.allow >/etc/hosts.allow.new + mv -f /etc/hosts.allow.new /etc/hosts.allow + /etc/init.d/netbase reload >/dev/null } makecf() { echo "Generating /etc/mail/sendmail.cf from /etc/mail/sendmail.mc ..." - m4 /usr/lib/sendmail.cf/m4/cf.m4 /etc/mail/sendmail.mc \ + m4 /usr/share/sendmail.cf/m4/cf.m4 $FILE \ >/etc/mail/sendmail.cf.new mv -f /etc/mail/sendmail.cf.new /etc/mail/sendmail.cf echo "Updating alias database ..." newaliases + testwrap + if [ "$WRAP" = "" ]; then + updatewrap + fi + if [ "$reload" ] && \ yesno "Reload the running sendmail now with the new configuration" Y then @@ -102,7 +121,7 @@ makecf() { ############################################################################### -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then if yesno "Configure sendmail with the existing /etc/mail/sendmail.mc" Y then @@ -113,8 +132,8 @@ fi ############################################################################### -exec 3>/etc/mail/sendmail.mc.new -trap "rm -f /etc/mail/sendmail.mc.new" 0 +exec 3>$FILE.new +trap "rm -f $FILE.new" 0 ############################################################################### @@ -127,7 +146,8 @@ EOT echo -n "Press [ENTER] " read REPLY -cat /usr/lib/sendmail.cf/cf/debproto.mc >&3 +cat /usr/share/sendmail.cf/cf/debproto.mc >&3 +echo "LOCAL_CONFIG" >&3 ############################################################################### @@ -145,24 +165,63 @@ echo "$mailname" >/etc/mailname ############################################################################### -descrip "Null Client" <<EOT -A special configuration known as the "null client" can be created for this -host if all mail should be forwarded to a central hub via a local SMTP-based -network. This may be a suitable configuration if you want to forward all of -your mail to your local Internet service provider (ISP) for delivery. - -To enable this option, give the name of the host to which all mail should be -forwarded. Otherwise leave the option empty or answer \`NONE' to disable it. -EOT +#descrip "Null Client" <<EOT +#A special configuration known as the "null client" can be created for this +#host if all mail should be forwarded to a central hub via a local SMTP-based +#network. This may be a suitable configuration if you want to forward all of +#your mail to your local Internet service provider (ISP) for delivery. +# +#To enable this option, give the name of the host to which all mail should be +#forwarded. Otherwise leave the option empty or answer \`NONE' to disable it. +#EOT nullclient="" ! testconfig "FEATURE(nullclient" || nullclient=$(echo -n "$CONFIG" | sed -e 's/[^,]*, *\([^)]*\).*/\1/') +# +#input "Null client forward host" nullclient NONE +# +#test -z "$nullclient" || echo "FEATURE(nullclient, $nullclient)dnl" >&3 + +if [ -n "$nullclient" ]; then + echo " " + echo " *** IMPORTANT *** " + echo " " + echo "You are using a nullclient setup. This is ill advised as it" + echo "makes your machine an open relay: If you ever connect to the" + echo "internet, anyone can forge mail and send it through your machine" + echo "to anyone else on the internet! - not a pretty picture." + echo " " + echo "I will convert this into a Smart Host config for you. A Smart Host" + echo "setup is a superset of nullclient - you lose nothing, but gain local" + echo "delivery without kluges, and, of course you're no longer an open relay" + echo " " + echo "You will need to accept your nullclient hostname below, when asked" + echo "for a smart host." + echo " " + echo "Press <Enter> to continue" + read yn + fi + +############################################################################### +descrip "Smart Host" <<EOT +A "Smart Host" is one that can deliver mail to external machines. By using +a "Smart Host", we don't need DNS, or good connectivity ourselves. This is +most likely what you want if you have a dialup link, or sit behind a firewall. + +To enable this option, give the name of the host to which all non-local mail +should be forwarded. Otherwise leave the option empty. +EOT -input "Null client forward host" nullclient NONE - -test -z "$nullclient" || echo "FEATURE(nullclient, $nullclient)dnl" >&3 +smarthost="" +if [ -n $nullclient ]; then + smarthost=$nullclient + fi +! testconfig "define(\`SMART_HOST', smtp:" || + smarthost=$(echo -n "$CONFIG" | sed -e 's/[^:]*:*\([^)]*\).*/\1/') +input "Smart Host:" smarthost "" +test -z $smarthost || echo "define(\`SMART_HOST', smtp:$smarthost)dnl" >&3 ############################################################################### descrip "Address Canonification" <<EOT @@ -201,7 +260,7 @@ it is still a good idea to enable this so local programs can use it. EOT smtp="Y" -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then testconfig "MAILER(smtp)" || smtp="N" fi @@ -216,7 +275,7 @@ If you want mail envelopes (as well as mail headers) to appear to come from EOT masqenvelope="Y" -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then testconfig "FEATURE(masquerade_envelope)" || masqenvelope="N" fi @@ -268,12 +327,13 @@ to another host. If in doubt, it is safe to leave this option enabled. EOT acceptmailname="Y" -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then testconfig "^Cw.*$mailname" || acceptmailname="N" fi yesno "Accept mail for \`$mailname'" acceptmailname || true +test "N" = "$acceptmailname" || echo "Cw$mailname" >&3 ############################################################################### @@ -350,7 +410,7 @@ need to do some additional configuration, perhaps outside of this script. EOT uucp="N" -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then testconfig "FEATURE(nouucp)" || uucp="Y" fi @@ -503,15 +563,14 @@ test "4h" = "$qw" || echo "define(\`confTO_QUEUEWARN', \`$qw')dnl" >&3 test "5d" = "$qr" || echo "define(\`confTO_QUEUERETURN', \`$qr')dnl" >&3 ############################################################################### - +echo "MAILER_DEFINITIONS" >&3 echo "MAILER(local)dnl" >&3 test "N" = "$smtp" || echo "MAILER(smtp)dnl" >&3 -test "N" = "$acceptmailname" || echo "Cw$mailname" >&3 ############################################################################### -if [ -e /etc/ifmail/config ] && [ -e /usr/lib/sendmail.cf/mailer/ifmail.m4 ]; +if [ -e /etc/ifmail/config ] && [ -e /usr/share/sendmail.cf/mailer/ifmail.m4 ]; then echo "MAILER(ifmail)dnl" >&3 fi @@ -520,15 +579,16 @@ fi fi # finished non-"null client" configuration -echo "MASQUERADE_AS($mailname)dnl" >&3 ############################################################################### echo "" >&3 +echo "LOCAL_CONFIG" >&3 +echo "MASQUERADE_AS($mailname)dnl" >&3 -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then - sed -n -e '/^## Custom/,$p' /etc/mail/sendmail.mc >&3 + sed -n -e '/^## Custom/,$p' $FILE >&3 else echo "## Custom configurations below (will be preserved)" >&3 fi @@ -542,7 +602,7 @@ file. (Local changes made at the end of /etc/mail/sendmail.mc will be preserved by \`$0'.) The m4 library files for sendmail configuration are kept in the -/usr/lib/sendmail.cf directory. You may wish to review the documentation in +/usr/share/sendmail.cf directory. You may wish to review the documentation in /usr/doc/sendmail to assist in further customization. You may wish to customize your alias database; see the aliases(5) man page @@ -553,13 +613,13 @@ EOT exec 3>&- -if [ -f /etc/mail/sendmail.mc ] +if [ -f $FILE ] then echo "Saving old /etc/mail/sendmail.mc as /etc/mail/sendmail.mc.old ..." - mv -f /etc/mail/sendmail.mc /etc/mail/sendmail.mc.old + mv -f $FILE $FILE.old fi -mv -f /etc/mail/sendmail.mc.new /etc/mail/sendmail.mc +mv -f $FILE.new $FILE trap 0 makecf diff --git a/debian/sensible-mda.c b/debian/sensible-mda.c index e9afa31..84246e8 100644 --- a/debian/sensible-mda.c +++ b/debian/sensible-mda.c @@ -2,7 +2,7 @@ * sensible-mda.c * Copyright (c) 1998, Johnie Ingram. * Copyright (c) 1998, Richard Nelson <cowboy@debian.org>. - * Time-stamp: <1998/06/16 14:28:33 cowboy> + * Time-stamp: <1998/08/13 10:00:00 cowboy> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,26 +21,43 @@ */ #include <stdio.h> +#include <stdlib.h> #include <sys/stat.h> #include <unistd.h> +#include <pwd.h> +#include <sys/types.h> // TODO: declare -x TCPREMOTEIP="$3" #define PROCMAIL "/usr/bin/procmail" #define DELIVER "/usr/bin/deliver" +#define PROCMAILRCS "/etc/procmailrcs/" static struct stat MDA_stat; +static struct stat procmailrc_stat; static int done = 1; +static struct passwd* passwd_entry; int main (int argc, char *argv[]) { + char *procmailrc; + if (!stat(PROCMAIL, &MDA_stat)) { if (MDA_stat.st_mode & S_ISUID) { - done = 0; - execl (PROCMAIL, PROCMAIL, "-t", "-Y", "-f", - argv[1], "-d", argv[2], NULL); + procmailrc=malloc(strlen(PROCMAILRCS)+strlen(argv[2])+1); + sprintf(procmailrc,"%s%s",PROCMAILRCS,argv[2]); + passwd_entry=getpwnam(argv[2]); + if (passwd_entry && !stat(procmailrc, &procmailrc_stat) && procmailrc_stat.st_uid==passwd_entry->pw_uid) { + done = 0; + execl (PROCMAIL, PROCMAIL, "-t", "-f", + argv[1], "-m", procmailrc, NULL); + } else { + done = 0; + execl (PROCMAIL, PROCMAIL, "-t", "-f", + argv[1], "-d", argv[2], NULL); + } } else fprintf(stderr, "Ack!?! %s is not setuid!\n", PROCMAIL); diff --git a/debian/site.config.m4 b/debian/site.config.m4 new file mode 100644 index 0000000..393e9ee --- /dev/null +++ b/debian/site.config.m4 @@ -0,0 +1,40 @@ +# +# Debian site config file for building sendmail +# +# src +APPENDDEF(`confENVDEF', `-DHASFLOCK=1')dnl +APPENDDEF(`confENVDEF', `-DTCPWRAPPERS=1')dnl +APPENDDEF(`confENVDEF', `-D_FFR_MAX_MIME_HEADER_LENGTH=1')dnl +APPENDDEF(`confENVDEF', `-D_FFR_MAX_HEADERS_LENGTH=1') +APPENDDEF(`confENVDEF', `-D_PATH_SENDMAILCF=\"/etc/mail/sendmail.cf\"')dnl +APPENDDEF(`confENVDEF', `-include ../../debian/el33t.h')dnl +# smrsh +APPENDDEF(`confENVDEF', `-DCMDDIR=\"/usr/lib/sm.bin\"')dnl +APPENDDEF(`confENVDEF', `-DPATH=\"/usr/bin:/bin\"')dnl +# rmail +APPENDDEF(`confENVDEF', `-D_PATH_SENDMAIL=\"/usr/sbin/sendmail\"')dnl +# compilation +define(`confOPTIMIZE', `-O2')dnl +define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')dnl +define(`confINCDIRS', `-I/usr/include/db2')dnl +define(`confLIBS', `-ldb2 -lnsl -lwrap -lresolv')dnl +define(`confLIBSEARCH', `db2 bind resolv 44bsd')dnl +# paths +define(`confMANROOT', `/usr/man/man')dnl +define(`confHDIR', `/usr/lib')dnl +define(`confSTDIR', `/var/log')dnl +define(`confMBINDIR', `/usr/sbin')dnl +define(`confEBINDIR', `/usr/sbin')dnl +define(`confUBINDIR', `/usr/bin')dnl +define(`confHFDIR', `/usr/share/misc')dnl +# owners +define(`confMANOWN', `root')dnl +define(`confMANGRP', `root')dnl +define(`confSBINOWN', `root')dnl +define(`confSBINGRP', `root')dnl +define(`confUBINOWN', `root')dnl +define(`confUBINGRP', `root')dnl +# don't install man pages +define(`confNO_MAN_INSTALL', `true')dnl +# flags +define(`_USE_ETC_MAIL_', `True')dnl diff --git a/debian/socks_wrapper b/debian/socks_wrapper new file mode 100644 index 0000000..ad89379 --- /dev/null +++ b/debian/socks_wrapper @@ -0,0 +1,31 @@ +#!/bin/bash +# Richard Nelson <cowboy@debain.org> +# Socks5 support wrapper for sendmail + +DAEMON=/usr/sbin/sendmail.real +RUNSOCKS=/usr/bin/runsocks +BASENAME=$(basename $0) + +# Adjust command name based upon the presence of the socks5 wrapper +if [ -x $RUNSOCKS ]; then + COMMAND="$RUNSOCKS $DAEMON" +else + COMMAND="$DAEMON" + fi +#echo "$BASENAME command="$COMMAND + +# Exec the appropriate command +case "$BASENAME" in + # These don't need socks support, and must be called by name + "hoststat" | "mailq" | "newaliases" | "purgestat") + exec -a $BASENAME $DAEMON "$@" + ;; + # These need socks support + "sendmail") + exec -a $DAEMON $COMMAND "$@" + ;; + # Help... shouldn't be here + *) + echo "panic, $BASENAME is not a valid alias for sendmail." + ;; + esac diff --git a/mmuegel/README b/mmuegel/README deleted file mode 100644 index 4547516..0000000 --- a/mmuegel/README +++ /dev/null @@ -1,92 +0,0 @@ -------------------------------------------------------------------------------- -Document Revision Control Information: - mmuegel - /usr/local/ustart/src/mail-tools/dist/foo/README,v - 1.1 of 1993/07/28 08:12:53 -------------------------------------------------------------------------------- - -1. Introduction ---------------- - -These tools may be of use to those sites using sendmail. Both are written in -Perl. Our site, Mot.COM, receives a ton of mail being a top-level domain -gateway. We have over 24 domains under us. Needless to say, we must have -a robust mail system or my head, and others, would be on the chopping block. - -2. Description --------------- - -The first tool, cqueue, checks the sendmail queue for problems. We use -it to flag problems with subdomain mail servers (and even our own servers -once in a while ;-). We run it via a cron job every hour during the day. -You may find this too frequent, however. - -The other program, postclip, is used to "filter" non-deliverable NDNs that -get sent to our Postmaster account now and then. This ensures privacy of -e-mail and helps avoid disk problems from huge NDNs. It is different than -a brute force "just keep the header" approach because it tries hard to keep -other parts of the message that look like non-delivery information. - -Both have been used for some time at our site with no problems. Everything -you need should be in this distribution: source, manual pages, and support -libs. See the manual pages for a complete description of each tool. - -3. Installation ---------------- - -No fancy Makefile simply because these tools are all under a large -hierarchy at my site. Installation should be a snap, however. Install -the nroff(1) man(5) manual pages from the man subdirectory to the -appropriate directory on your system. This might be something like -/usr/local/man/man1. - -Next, install all of the Perl libraries located in the lib subdirectory -to your Perl library area. /usr/local/lib/perl is a good bet. The person -who installed Perl at your site will be able to tell you for sure. - -Finally, you need to install the programs. Note that cqueue wants to -run setuid root by default. This is because the sendmail queue is normally -only readable by root or some special group. In order to let any user -run this suidperl is used. suidperl allows a Perl program to run with the -privileges of another user. - -You will have to edit both the cqueue and postclip programs to change -the #! line at the top of each. Just change the pathname to whatever is -appropriate on your system. Note that Larry Wall's fixin program from -the Camel book can also be used to do this. It is very handy. It changes -#! lines by looking at your PATH. - -If you do not have suidperl on your system change the #! line in cqueue -to reference perl instead of suidperl. - -You may also wish to change some constants in cqueue. $DEF_QUEUE should be -changed to your queue directory if it is not /usr/spool/mqueue. $DEF_TIME -could be changed easy enough also. It is the time spec for the time duration -after which a mail message will be reported on if the -a option has not been -specified. See the manual page for more information and the format of this -constant (same as the -t argument). Then again, neither of these has to -be changed. Command line options are there to override their default -values. - -After you have edited the programs as necessary, all that remains is to -install them to some executable directory. Install postclip mode 555 -and cqueue mode 4555 with owner root (if using suidperl) or mode 555 -(if not using suidperl). - -4. Gripes, Comments, Etc ------------------------- - -If you start using either of these let me know. I have other mail tools I -will likely post in the future if these prove useful. Also, if you think -something is just plain dumb/wrong/stupid let me know! - -Cheers, --Mike - --- -+----------------------------------------------------------------------------+ -| Michael S. Muegel | Internet E-Mail: mmuegel@mot.com | -| UNIX Applications Startup Group | Moto Dist E-Mail: X10090 | -| Corporate Information Office | Voice: (708) 576-0507 | -| Motorola | Fax: (708) 576-4153 | -+----------------------------------------------------------------------------+ diff --git a/mmuegel/libs/date.pl b/mmuegel/libs/date.pl deleted file mode 100644 index 6732438..0000000 --- a/mmuegel/libs/date.pl +++ /dev/null @@ -1,324 +0,0 @@ -;# -;# Name -;# date.pl - Perl emulation of (the output side of) date(1) -;# -;# Synopsis -;# require "date.pl"; -;# $Date = &date(time); -;# $Date = &date(time, $format); -;# -;# Description -;# This package implements the output formatting functions of date(1) in -;# Perl. The format options are based on those supported by Ultrix 4.0 -;# plus a couple of additions from SunOS 4.1.1 and elsewhere: -;# -;# %a abbreviated weekday name - Sun to Sat -;# %A full weekday name - Sunday to Saturday -;# %b abbreviated month name - Jan to Dec -;# %B full month name - January to December -;# %c date and time in local format [+] -;# %C date and time in long local format [+] -;# %d day of month - 01 to 31 -;# %D date as mm/dd/yy -;# %e day of month (space padded) - ` 1' to `31' -;# %E day of month (with suffix: 1st, 2nd, 3rd...) -;# %f month of year (space padded) - ` 1' to `12' -;# %h abbreviated month name - Jan to Dec -;# %H hour - 00 to 23 -;# %i hour (space padded) - ` 1' to `12' -;# %I hour - 01 to 12 -;# %j day of the year (Julian date) - 001 to 366 -;# %k hour (space padded) - ` 0' to `23' -;# %l date in ls(1) format -;# %m month of year - 01 to 12 -;# %M minute - 00 to 59 -;# %n insert a newline character -;# %p ante-meridiem or post-meridiem indicator (AM or PM) -;# %r time in AM/PM notation -;# %R time as HH:MM -;# %S second - 00 to 59 -;# %t insert a tab character -;# %T time as HH:MM:SS -;# %u date/time in date(1) required format -;# %U week number, Sunday as first day of week - 00 to 53 -;# %V date-time in SysV touch format (mmddHHMMyy) -;# %w day of week - 0 (Sunday) to 6 -;# %W week number, Monday as first day of week - 00 to 53 -;# %x date in local format [+] -;# %X time in local format [+] -;# %y last 2 digits of year - 00 to 99 -;# %Y all 4 digits of year ~ 1700 to 2000 odd ? -;# %z time zone from TZ environment variable w/ a trailing space -;# %Z time zone from TZ environment variable -;# %% insert a `%' character -;# %+ insert a `+' character -;# -;# [+]: These may need adjustment to fit local conventions, see below. -;# -;# For the sake of compatibility, a leading `+' in the format -;# specificaiton is removed if present. -;# -;# Remarks -;# This is version 3.4 of date.pl -;# -;# An extension of `ctime.pl' by Waldemar Kebsch (kebsch.pad@nixpbe.UUCP), -;# as modified by Marion Hakanson (hakanson@ogicse.ogi.edu). -;# -;# Unlike date(1), unknown format tags are silently replaced by "". -;# -;# defaultTZ is a blatant hack, but I wanted to be able to get date(1) -;# like behaviour by default and there does'nt seem to be an easy (read -;# portable) way to get the local TZ name back... -;# -;# For a cheap date, try... -;# -;# #!/usr/local/bin/perl -;# require "date.pl"; -;# exit print (&date(time, shift @ARGV) . "\n") ? 0 : 1; -;# -;# This package is redistributable under the same terms as apply to -;# the Perl 4.0 release. See the COPYING file in your Perl kit for -;# more information. -;# -;# Please send any bug reports or comments to tmcgonigal@gallium.com -;# -;# Modification History -;# Nmemonic Version Date Who -;# -;# NONE 1.0 02feb91 Terry McGonigal (tmcgonigal@gallium.com) -;# Created from ctime.pl -;# -;# NONE 2.0 07feb91 tmcgonigal -;# Added some of Marion Hakanson (hakanson@ogicse.ogi.edu)'s ctime.pl -;# TZ handling changes. -;# -;# NONE 2.1 09feb91 tmcgonigal -;# Corrected week number calculations. -;# -;# NONE 2.2 21oct91 tmcgonigal -;# Added ls(1) date format, `%l'. -;# -;# NONE 2.3 06nov91 tmcgonigal -;# Added SysV touch(1) date-time format, `%V' (pretty thin as -;# mnemonics go, I know, but `t' and `T' were both gone already!) -;# -;# NONE 2.4 05jan92 tmcgonigal -;# Corrected slight (cosmetic) problem with %V replacment string -;# -;# NONE 3.0 09jul92 tmcgonigal -;# Fixed a couple of problems with &ls as pointed out by -;# Thomas Richter (richter@ki1.chemie.fu-berlin.de), thanks Thomas! -;# Also added a couple of SunOS 4.1.1 strftime-ish formats, %i and %k -;# for space padded hours (` 1' to `12' and ` 0' to `23' respectivly), -;# and %C for locale long date/time format. Changed &mH to take a -;# pad char parameter to make to evaled code for %i and %k simpler. -;# Added %E for suffixed day-of-month (ie 1st, 3rd, 4th etc). -;# -;# NONE 3.1 16jul92 tmcgonigal -;# Added `%u' format to generate date/time in date(1) required -;# format (ie '%y%m%d%H%M.%S'). -;# -;# NONE 3.2 23jan93 tmcgonigal -;# Added `%f' format to generate space padded month numbers, added -;# `%E' to the header comments, it seems to have been left out (and -;# I'm sure I wanted to use it at some point in the past...). -;# -;# NONE 3.3 03feb93 tmcgonigal -;# Corrected some problems with AM/PM handling pointed out by -;# Michael S. Muegel (mmuegel@mot.com). Thanks Michael, I hope -;# this is the behaviour you were looking for, it seems more -;# correct to me... -;# -;# NONE 3.4 26jul93 tmcgonigal -;# Incorporated some fixes provided by DaviD W. Sanderson -;# (dws@ssec.wisc.edu): February was spelled incorrectly and -;# &wkno() was always using the current year while calculating -;# week numbers, regardless of year implied by the time value -;# passed to &date(). DaviD also contributed an improved &date() -;# test script, thanks DaviD, I appreciate the effort. Finally, -;# changed my mailling address from @gvc.com to @gallium.com -;# to reflect, well, my new address! -;# -;# SccsId = "%W% %E%" -;# -require 'timelocal.pl'; -package date; - -# Months of the year -@MoY = ('January', 'February', 'March', 'April', 'May', 'June', - 'July', 'August', 'September','October', 'November', 'December'); - -# days of the week -@DoW = ('Sunday', 'Monday', 'Tuesday', 'Wednesday', - 'Thursday', 'Friday', 'Saturday'); - -# CUSTOMIZE - defaults -$defaultTZ = 'CST'; # time zone (hack!) -$defaultFMT = '%a %h %e %T %z%Y'; # format (ala date(1)) - -# CUSTOMIZE - `local' formats -$locTF = '%T'; # time (as HH:MM:SS) -$locDF = '%D'; # date (as mm/dd/yy) -$locDTF = '%a %b %d %T %Y'; # date/time (as dow mon dd HH:MM:SS yyyy) -$locLDTF = '%i:%M:%S %p %A %B %E %Y'; # long date/time (as HH:MM:SS a/p day month dom yyyy) - -# Time zone info -$TZ; # wkno needs this info too - -# define the known format tags as associative keys with their associated -# replacement strings as values. Each replacement string should be -# an eval-able expresion assigning a value to $rep. These expressions are -# eval-ed, then the value of $rep is substituted into the supplied -# format (if any). -%Tags = ( '%a', q|($rep = $DoW[$wday])=~ s/^(...).*/\1/|, # abbr. weekday name - Sun to Sat - '%A', q|$rep = $DoW[$wday]|, # full weekday name - Sunday to Saturday - '%b', q|($rep = $MoY[$mon]) =~ s/^(...).*/\1/|, # abbr. month name - Jan to Dec - '%B', q|$rep = $MoY[$mon]|, # full month name - January to December - '%c', q|$rep = $locDTF; 1|, # date/time in local format - '%C', q|$rep = $locLDTF; 1|, # date/time in local long format - '%d', q|$rep = &date'pad($mday, 2, "0")|, # day of month - 01 to 31 - '%D', q|$rep = '%m/%d/%y'|, # date as mm/dd/yy - '%e', q|$rep = &date'pad($mday, 2, " ")|, # day of month (space padded) ` 1' to `31' - '%E', q|$rep = &date'dsuf($mday)|, # day of month (w/suffix) `1st' to `31st' - '%f', q|$rep = &date'pad($mon+1, 2, " ")|, # month of year (space padded) ` 1' to `12' - '%h', q|$rep = '%b'|, # abbr. month name (same as %b) - '%H', q|$rep = &date'pad($hour, 2, "0")|, # hour - 00 to 23 - '%i', q|$rep = &date'ampmH($hour, " ")|, # hour (space padded ` 1' to `12' - '%I', q|$rep = &date'ampmH($hour, "0")|, # hour - 01 to 12 - '%j', q|$rep = &date'pad($yday+1, 3, "0")|, # Julian date 001 - 366 - '%k', q|$rep = &date'pad($hour, 2, " ")|, # hour (space padded) ` 0' to `23' - '%l', q|$rep = '%b %d ' . &date'ls($year)|, # ls(1) style date - '%m', q|$rep = &date'pad($mon+1, 2, "0")|, # month of year - 01 to 12 - '%M', q|$rep = &date'pad($min, 2, "0")|, # minute - 00 to 59 - '%n', q|$rep = "\n"|, # insert a newline - '%p', q|$rep = &date'ampmD($hour)|, # insert `AM' or `PM' - '%r', q|$rep = '%I:%M:%S %p'|, # time in AM/PM notation - '%R', q|$rep = '%H:%M'|, # time as HH:MM - '%S', q|$rep = &date'pad($sec, 2, "0")|, # second - 00 to 59 - '%t', q|$rep = "\t"|, # insert a tab - '%T', q|$rep = '%H:%M:%S'|, # time as HH:MM:SS - '%u', q|$rep = '%y%m%d%H%M.%S'|, # daaate/time in date(1) required format - '%U', q|$rep = &date'wkno($year, $yday, 0)|, # week number (weeks start on Sun) - 00 to 53 - '%V', q|$rep = '%m%d%H%M%y'|, # SysV touch(1) date-time format (mmddHHMMyy) - '%w', q|$rep = $wday; 1|, # day of week - Sunday = 0 - '%W', q|$rep = &date'wkno($year, $yday, 1)|, # week number (weeks start on Mon) - 00 to 53 - '%x', q|$rep = $locDF; 1|, # date in local format - '%X', q|$rep = $locTF; 1|, # time in local format - '%y', q|($rep = $year) =~ s/..(..)/\1/|, # last 2 digits of year - 00 to 99 - '%Y', q|$rep = "$year"; 1|, # full year ~ 1700 to 2000 odd - '%z', q|$rep = $TZ eq "" ? "" : "$TZ "|, # time zone from TZ env var (w/trail. space) - '%Z', q|$rep = $TZ; 1|, # time zone from TZ env. var. - '%%', q|$rep = '%'; $adv=1|, # insert a `%' - '%+', q|$rep = '+'| # insert a `+' -); - -sub main'date { - local($time, $format) = @_; - local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst); - local($pos, $tag, $rep, $adv) = (0, "", "", 0); - - # default to date/ctime format or strip leading `+'... - if ($format eq "") { - $format = $defaultFMT; - } elsif ($format =~ /^\+/) { - $format = $'; - } - - # Use local time if can't find a TZ in the environment - $TZ = defined($ENV{'TZ'}) ? $ENV{'TZ'} : $defaultTZ; - ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = - &gettime ($TZ, $time); - - # Hack to deal with 'PST8PDT' format of TZ - # Note that this can't deal with all the esoteric forms, but it - # does recognize the most common: [:]STDoff[DST[off][,rule]] - if ($TZ =~ /^([^:\d+\-,]{3,})([+-]?\d{1,2}(:\d{1,2}){0,2})([^\d+\-,]{3,})?/) { - $TZ = $isdst ? $4 : $1; - } - - # watch out in 2070... - $year += ($year < 70) ? 2000 : 1900; - - # now loop throught the supplied format looking for tags... - while (($pos = index ($format, '%')) != -1) { - - # grab the format tag - $tag = substr($format, $pos, 2); - $adv = 0; # for `%%' processing - - # do we have a replacement string? - if (defined $Tags{$tag}) { - - # trap dead evals... - if (! eval $Tags{$tag}) { - print STDERR "date.pl: internal error: eval for $tag failed: $@\n"; - return ""; - } - } else { - $rep = ""; - } - - # do the substitution - substr ($format, $pos, 2) =~ s/$tag/$rep/; - $pos++ if ($adv); - } - - $format; -} - -# dsuf - add `st', `nd', `rd', `th' to a date (ie 1st, 22nd, 29th) -sub dsuf { - local ($mday) = @_; - - return $mday . 'st' if ($mday =~ m/.*1$/); - return $mday . 'nd' if ($mday =~ m/.*2$/); - return $mday . 'rd' if ($mday =~ m/.*3$/); - return $mday . 'th'; -} - -# weekno - figure out week number -sub wkno { - local ($year, $yday, $firstweekday) = @_; - local ($jan1, @jan1, $wks); - - # figure out the `time' value for January 1 of the given year - $jan1 = &maketime ($TZ, 0, 0, 0, 1, 0, $year-1900); - - # figure out what day of the week January 1 was - @jan1= &gettime ($TZ, $jan1); - - # and calculate the week number - $wks = (($yday + ($jan1[6] - $firstweekday)) + 1)/ 7; - $wks += (($wks - int($wks) > 0.0) ? 1 : 0); - - # supply zero padding - &pad (int($wks), 2, "0"); -} - -# ampmH - figure out am/pm (1 - 12) mode hour value, padded with $p (0 or ' ') -sub ampmH { local ($h, $p) = @_; &pad($h>12 ? $h-12 : ($h ? $h : 12), 2, $p); } - -# ampmD - figure out am/pm designator -sub ampmD { shift @_ >= 12 ? "PM" : "AM"; } - -# gettime - get the time via {local,gmt}time -sub gettime { ((shift @_) eq 'GMT') ? gmtime(shift @_) : localtime(shift @_); } - -# maketime - make a time via time{local,gmt} -sub maketime { ((shift @_) eq 'GMT') ? &main'timegm(@_) : &main'timelocal(@_); } - -# ls - generate the time/year portion of an ls(1) style date -sub ls { - return ((&gettime ($TZ, time))[5] == @_[0]) ? "%R" : " %Y"; -} - -# pad - pad $in with leading $pad until lenght $len -sub pad { - local ($in, $len, $pad) = @_; - local ($out) = "$in"; - - $out = $pad . $out until (length ($out) == $len); - return $out; -} - -1; diff --git a/mmuegel/libs/elapsed.pl b/mmuegel/libs/elapsed.pl deleted file mode 100644 index e8fc52a..0000000 --- a/mmuegel/libs/elapsed.pl +++ /dev/null @@ -1,123 +0,0 @@ -;# NAME -;# elapsed.pl - convert seconds to elapsed time format -;# -;# AUTHOR -;# Michael S. Muegel <mmuegel@mot.com> -;# -;# RCS INFORMATION -;# mmuegel -;# /usr/local/ustart/src/mail-tools/dist/foo/libs/elapsed.pl,v -;# 1.1 of 1993/07/28 08:07:19 - -package elapsed; - -# Time field types -$DAYS = 1; -$HOURS = 2; -$MINUTES = 3; -$SECONDS = 4; - -# The array contains four records each with four fields. The fields are, -# in order: -# -# Type Specifies what kind of time field this is. Once of -# $DAYS, $HOURS, $MINUTES, or $SECONDS. -# -# Multiplier Specifies what time field this is via the minimum -# number of seconds this time field may specify. For -# example, the minutes field would be non-zero -# when there are 60 or more seconds. -# -# Separator How to separate this time field from the next -# *greater* field. -# -# Format sprintf() format specifier on how to print this -# time field. -@MULT_AND_SEPS = ($DAYS, 60 * 60 * 24, "+", "%d", - $HOURS, 60 * 60, ":", "%d", - $MINUTES, 60, ":", "%02d", - $SECONDS, 1, "", "%02d" - ); - -;############################################################################### -;# Seconds_To_Elapsed -;# -;# Coverts a seconds count to form [d+]h:mm:ss. If $Collapse -;# is true then the result is compacted somewhat. The string returned -;# will be of the form [d+][[h:]mm]:ss. -;# -;# Arguments: -;# $Seconds, $Collapse -;# -;# Examples: -;# &Seconds_To_Elapsed (0, 0) -> 0:00:00 -;# &Seconds_To_Elapsed (0, 1) -> :00 -;# -;# &Seconds_To_Elapsed (119, 0) -> 0:01:59 -;# &Seconds_To_Elapsed (119, 1) -> 01:59 -;# -;# &Seconds_To_Elapsed (3601, 0) -> 1:00:01 -;# &Seconds_To_Elapsed (3601, 1) -> 1:00:01 -;# -;# &Seconds_To_Elapsed (86401, 0) -> 1+0:00:01 -;# &Seconds_To_Elapsed (86401, 1) -> 1+:01 -;# -;# Returns: -;# $Elapsed -;############################################################################### -sub main'Seconds_To_Elapsed -{ - local ($Seconds, $Collapse) = @_; - local ($Type, $Multiplier, @Multipliers, $Separator, $DHMS_Used, - $Elapsed, @Mult_And_Seps, $Print_Field); - - $Multiplier = 1; - @Mult_And_Seps = @MULT_AND_SEPS; - - # Keep subtracting the number of seconds corresponding to a time field - # from the number of seconds passed to the function. - while (1) - { - ($Type, $Multiplier, $Separator, $Format) = splice (@Mult_And_Seps, 0, 4); - last if (! $Multiplier); - $Seconds -= $DHMS_Used * $Multiplier - if ($DHMS_Used = int ($Seconds / $Multiplier)); - - # Figure out if we should print this field - if ($Type == $DAYS) - { - $Print_Field = $DHMS_Used; - } - - elsif ($Collapse) - { - if ($Type == $HOURS) - { - $Print_Field = $DHMS_Used; - } - elsif ($Type == $MINUTES) - { - $Print_Field = $DHMS_Used || $Printed_Field {$HOURS}; - } - else - { - $Format = ":%02d" - if (! $Printed_Field {$MINUTES}); - $Print_Field = 1; - }; - } - - else - { - $Print_Field = 1; - }; - - $Printed_Field {$Type} = $Print_Field; - $Elapsed .= sprintf ("$Format%s", $DHMS_Used, $Separator) - if ($Print_Field); - }; - - return ($Elapsed); -}; - -1; diff --git a/mmuegel/libs/mail.pl b/mmuegel/libs/mail.pl deleted file mode 100644 index eeedb11..0000000 --- a/mmuegel/libs/mail.pl +++ /dev/null @@ -1,140 +0,0 @@ -;# NAME -;# mail.pl - perl function(s) to handle mail processing -;# -;# AUTHOR -;# Michael S. Muegel (mmuegel@mot.com) -;# -;# RCS INFORMATION -;# mmuegel -;# /usr/local/ustart/src/mail-tools/dist/foo/libs/mail.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp - -package mail; - -# Mailer statement to eval. $Users, $Subject, and $Verbose are substituted -# via eval -$BIN_MAILER = "/usr/ucb/mail \$Verbose -s '\$Subject' \$Users"; - -# Sendmail command to use when $Use_Sendmail is true. -$SENDMAIL = '/usr/lib/sendmail $Verbose $Users'; - -;############################################################################### -;# Send_Mail -;# -;# Sends $Message to $Users with a subject of $Subject. If $Message_Is_File -;# is true then $Message is assumed to be a filename pointing to the mail -;# message. This is a new option and thus the backwards-compatible hack. -;# $Users should be a space separated list of mail-ids. -;# -;# If everything went OK $Status will be 1 and $Error_Msg can be ignored; -;# otherwise, $Status will be 0 and $Error_Msg will contain an error message. -;# -;# If $Use_Sendmail is 1 then sendmail is used to send the message. Normally -;# a mailer such as Mail is used. By specifiying this you can include -;# headers in addition to text in either $Message or $Message_Is_File. -;# If either $Message or $Message_Is_File contain a Subject: header then -;# $Subject is ignored; otherwise, a Subject: header is automatically created. -;# Similar to the Subject: header, if a To: header does not exist one -;# is automatically created from the $Users argument. The mail is still -;# sent, however, to the recipients listed in $Users. This is keeping with -;# normal sendmail usage (header vs. envelope). -;# -;# In both bin mailer and sendmail modes $Verbose will turn on verbose mode -;# (normally just sendmail verbose mode output). -;# -;# Arguments: -;# $Users, $Subject, $Message, $Message_Is_File, $Verbose, $Use_Sendmail -;# -;# Returns: -;# $Status, $Error_Msg -;############################################################################### -sub main'Send_Mail -{ - local ($Users, $Subject, $Message, $Message_Is_File, $Verbose, - $Use_Sendmail) = @_; - local ($BIN_MAILER_HANDLE, $Mailer_Command, $Header_Found, %Header_Map, - $Header_Extra, $Mailer); - - # If the message is contained in a file read it in so we can have one - # consistent interface - if ($Message_Is_File) - { - undef $/; - $Message_Is_File = 0; - open (Message) || return (0, "error reading $Message: $!"); - $Message = <Message>; - close (Message); - }; - - # If sendmail mode see if we need to add some headers - if ($Use_Sendmail) - { - # Determine if a header block is included in the message and what headers - # are there - foreach (split (/\n/, $Message)) - { - last if ($_ eq ""); - $Header_Found = $Header_Map {$1} = 1 if (/^([A-Z]\S*): /); - }; - - # Add some headers? - if (! $Header_Map {"To"}) - { - $Header_Extra .= "To: " . join (", ", $Users) . "\n"; - }; - if (($Subject ne "") && (! $Header_Map {"Subject"})) - { - $Header_Extra .= "Subject: $Subject\n"; - }; - - # Add the required blank line between header/body if there where no - # headers to begin with - if ($Header_Found) - { - $Message = "$Header_Extra$Message"; - } - else - { - $Message = "$Header_Extra\n$Message"; - }; - }; - - # Get a string that is the mail command - $Verbose = ($Verbose) ? "-v" : ""; - $Mailer = ($Use_Sendmail) ? $SENDMAIL : $BIN_MAILER; - eval "\$Mailer = \"$Mailer\""; - return (0, "error setting \$Mailer: $@") if ($@); - - # need to catch SIGPIPE in case the $Mailer call fails - $SIG {'PIPE'} = "mail'Cleanup"; - - # Open mailer - return (0, "can not open mail program: $Mailer") if (! open (MAILER, "| $Mailer")); - - # Send off the mail! - print MAILER $Message; - close (MAILER); - return (0, "error running mail program: $Mailer") if ($?); - - # Everything must have went AOK - return (1); -}; - -;############################################################################### -;# Cleanup -;# -;# Simply here so we can catch SIGPIPE and not exit. -;# -;# Globals: -;# None -;# -;# Arguments: -;# None -;# -;# Returns: -;# Nothing exciting -;############################################################################### -sub Cleanup -{ -}; - -1; diff --git a/mmuegel/libs/mqueue.pl b/mmuegel/libs/mqueue.pl deleted file mode 100644 index f425ede..0000000 --- a/mmuegel/libs/mqueue.pl +++ /dev/null @@ -1,215 +0,0 @@ -;# NAME -;# mqueue.pl - functions to work with the sendmail queue -;# -;# DESCRIPTION -;# Both Get_Queue_IDs and Parse_Control_File are available to get -;# information about the sendmail queue. The cqueue program is a good -;# example of how these functions work. -;# -;# AUTHOR -;# Michael S. Muegel (mmuegel@mot.com) -;# -;# RCS INFORMATION -;# mmuegel -;# /usr/local/ustart/src/mail-tools/dist/foo/libs/mqueue.pl,v -;# 1.1 of 1993/07/28 08:07:19 - -package mqueue; - -;############################################################################### -;# Get_Queue_IDs -;# -;# Will figure out the queue IDs in $Queue that have both control and data -;# files. They are returned in @Valid_IDs. Those IDs that have a -;# control file and no data file are saved to the array globbed by -;# *Missing_Control_IDs. Likewise, those IDs that have a data file and no -;# control file are saved to the array globbed by *Missing_Data_IDs. -;# -;# If $Skip_Locked is true they a message that has a lock file is skipped -;# and will not show up in any of the arrays. -;# -;# If everything went AOK then $Status is 1; otherwise, $Status is 0 and -;# $Msg tells what went wrong. -;# -;# Globals: -;# None -;# -;# Arguments: -;# $Queue, $Skip_Locked, *Missing_Control_IDs, *Missing_Data_IDs -;# -;# Returns: -;# $Status, $Msg, @Valid_IDs -;############################################################################### -sub main'Get_Queue_IDs -{ - local ($Queue, $Skip_Locked, *Missing_Control_IDs, - *Missing_Data_IDs) = @_; - local (*QUEUE, @Files, %Lock_IDs, %Data_IDs, %Control_IDs, $_); - - # Make sure that the * argument @arrays ar empty - @Missing_Control_IDs = @Missing_Data_IDs = (); - - # Save each data, lock, and queue file in @Files - opendir (QUEUE, $Queue) || return (0, "error getting directory listing of $Queue"); - @Files = grep (/^(df|lf|qf)/, readdir (QUEUE)); - closedir (QUEUE); - - # Create indexed list of data and control files. IF $Skip_Locked is true - # then skip either if there is a lock file present. - if ($Skip_Locked) - { - grep ((s/^lf//) && ($Lock_IDs {$_} = 1), @Files); - grep ((s/^df//) && (! $Lock_IDs {$_}) && ($Data_IDs {$_} = 1), @Files); - grep ((s/^qf//) && (! $Lock_IDs {$_}) && ($Control_IDs {$_} = 1), @Files); - } - else - { - grep ((s/^df//) && ($Data_IDs {$_} = 1), @Files); - grep ((s/^qf//) && ($Control_IDs {$_} = 1), @Files); - }; - - # Find missing control and data files and remove them from the lists of each - @Missing_Control_IDs = sort (grep ((! $Control_IDs {$_}) && (delete $Data_IDs {$_}), keys (%Data_IDs))); - @Missing_Data_IDs = sort (grep ((! $Data_IDs {$_} && (delete $Control_IDs {$_})), keys (%Control_IDs))); - - - # Return the IDs in an appartently random order - return (1, "", keys (%Control_IDs)); -}; - - -;############################################################################### -;# Parse_Control_File -;# -;# Will pase a sendmail queue control file for useful information. See the -;# Sendmail Installtion and Operation Guide (SMM:07) for a complete -;# explanation of each field. -;# -;# The following globbed variables are set (or cleared) by this function: -;# -;# $Sender The sender's address. -;# -;# @Recipients One or more addresses for the recipient of the mail. -;# -;# @Errors_To One or more addresses for addresses to which mail -;# delivery errors should be sent. -;# -;# $Creation_Time The job creation time in time(3) format. That is, -;# seconds since 00:00:00 GMT 1/1/70. -;# -;# $Priority An integer representing the current message priority. -;# This is used to order the queue. Higher numbers mean -;# lower priorities. -;# -;# $Status_Message The status of the mail message. It can contain any -;# text. -;# -;# @Headers Message headers unparsed but in their original order. -;# Headers that span multiple lines are not mucked with, -;# embedded \ns will be evident. -;# -;# In all e-mail addresses bounding <> pairs are stripped. -;# -;# If everything went AOK then $Status is 1. If the message with queue ID -;# $Queue_ID just does not exist anymore -1 is returned. This is very -;# possible and should be allowed for. Otherwise, $Status is 0 and $Msg -;# tells what went wrong. -;# -;# Globals: -;# None -;# -;# Arguments: -;# $Queue, $Queue_ID, *Sender, *Recipients, *Errors_To, *Creation_Time, -;# *Priority, *Status_Message, *Headers -;# -;# Returns: -;# $Status, $Msg -;############################################################################### -sub main'Parse_Control_File -{ - local ($Queue, $Queue_ID, *Sender, *Recipients, *Errors_To, *Creation_Time, - *Priority, *Status_Message, *Headers) = @_; - local (*Control, $_, $Not_Empty); - - # Required variables and the associated control. If empty at the end of - # parsing we return a bad status. - @REQUIRED_INFO = ('$Creation_Time', 'T', '$Sender', 'S', '@Recipients', 'R', - '$Priority', 'P'); - - # Open up the control file for read - $Control = "$Queue/qf$Queue_ID"; - if (! open (Control)) - { - return (-1) if ((-x $Queue) && (! -f "$Queue/qf$Queue_ID") && - (! -f "$Queue/df$Queue_ID")); - return (0, "error opening $Control for read: $!"); - }; - - # Reset the globbed variables just in case - $Sender = $Creation_Time = $Priority = $Status_Message = ""; - @Recipients = @Errors_To = @Headers = (); - - # Look for a few things in the control file - READ: while (<Control>) - { - $Not_Empty = 1; - chop; - - PARSE: - { - if (/^T(\d+)$/) - { - $Creation_Time = $1; - } - elsif (/^S(<)?([^>]+)/) - { - $Sender = $2; - } - elsif (/^R(<)?([^>]+)/) - { - push (@Recipients, $2); - } - elsif (/^E(<)?([^>]+)/) - { - push (@Errors_To, $2); - } - elsif (/^M(.*)/) - { - $Status_Message = $1; - } - elsif (/^P(\d+)$/) - { - $Priority = $1; - } - elsif (/^H(.*)/) - { - $Header = $1; - while (<Control>) - { - chop; - last if (/^[A-Z]/); - $Header .= "\n$_"; - }; - push (@Headers, $Header); - redo PARSE if ($_); - last if (eof); - }; - }; - }; - - # If the file was empty scream bloody murder - return (0, "empty control file") if (! $Not_Empty); - - # Yell if we could not find a required field - while (($Var, $Control) = splice (@REQUIRED_INFO, 0, 2)) - { - eval "return (0, 'required control field $Control not found') - if (! $Var)"; - return (0, "error checking \$Var: $@") if ($@); - }; - - # Everything went AOK - return (1); -}; - -1; diff --git a/mmuegel/libs/newgetopts.pl b/mmuegel/libs/newgetopts.pl deleted file mode 100644 index bc73348..0000000 --- a/mmuegel/libs/newgetopts.pl +++ /dev/null @@ -1,213 +0,0 @@ -;# NAME -;# newgetopts.pl - a better newgetopt (which is a better getopts which is -;# a better getopt ;-) -;# -;# AUTHOR -;# Mike Muegel (mmuegel@mot.com) -;# -;# mmuegel -;# /usr/local/ustart/src/mail-tools/dist/foo/libs/newgetopts.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp - -;############################################################################### -;# New_Getopts -;# -;# Does not care about order of switches, options, and arguments like -;# getopts.pl. Thus all non-switches/options will be kept in ARGV even if they -;# are not at the end. If $Pass_Invalid is set all unkown options will be -;# passed back to the caller by keeping them in @ARGV. This is useful when -;# parsing a command line for your script while ignoring options that you -;# may pass to another script. If this is set New_Getopts tries to maintain -;# the switch clustering on the unkown switches. -;# -;# Accepts the special argument -usage to print the Usage string. Also accepts -;# the special option -version which prints the contents of the string -;# $VERSION. $VERSION may or may not have an embeded \n in it. If -usage -;# or -version are specified a status of -1 is returned. Note that the usage -;# option is only accepted if the usage string is not null. -;# -;# $Switches is just like the formal arguemnt of getopts.pl. $Usage is a usage -;# string with or without a trailing \n. *Switch_To_Order is an optional -;# pointer to the name of an associative array which will contain a mapping of -;# switch names to the order in which (if at all) the argument was entered. -;# -;# For example, if @ARGV contains -v, -x, test: -;# -;# $Switch_To_Order {"v"} = 1; -;# $Switch_To_Order {"x"} = 2; -;# -;# Note that in the case of multiple occurances of an option $Switch_To_Order -;# will store each occurance of the argument via a string that emulates -;# an array. This is done by using join ($;, ...). You can retrieve the -;# array by using split (/$;/, ...). -;# -;# *Split_ARGV is an optional pointer to an array which will conatin the -;# original switches along with their values. For the example used above -;# Split_ARGV would contain: -;# -;# @Split_ARGV = ("v", "", "x", "test"); -;# -;# Another exciting ;-) feature that newgetopts has. Along with creating the -;# normal $opt_ scalars for the last value of an argument the list @opt_ is -;# created. It is an array which contains all the values of arguments to the -;# basename of the variable. They are stored in the order which they occured -;# on the command line starting with $[. Note that blank arguments are stored -;# as "". Along with providing support for multiple options on the command -;# line this also provides a method of counting the number of times an option -;# was specified via $#opt_. -;# -;# Automatically resets all $opt_, @opt_, %Switch_To_Order, and @Split_ARGV -;# variables so that New_Getopts may be called more than once from within -;# the same program. Thus, if $opt_v is set upon entry to New_Getopts and -;# -v is not in @ARGV $opt_v will not be set upon exit. -;# -;# Arguments: -;# $Switches, $Usage, $Pass_Invalid, *Switch_To_Order, *Split_ARGV -;# -;# Returns: -;# -1, 0, or 1 depending on status (printed Usage/Version, OK, not OK) -;############################################################################### -sub New_Getopts -{ - local($taint_argumentative, $Usage, $Pass_Invalid, *Switch_To_Order, - *Split_ARGV) = @_; - local(@args,$_,$first,$rest,$errs, @leftovers, @current_leftovers, - %Switch_Found); - local($[, $*, $Script_Name, $argumentative); - - # Untaint the argument cluster so that we can use this with taintperl - $taint_argumentative =~ /^(.*)$/; - $argumentative = $1; - - # Clear anything that might still be set from a previous New_Getopts - # call. - @Split_ARGV = (); - - # Get the basename of the calling script - ($Script_Name = $0) =~ s/.*\///; - - # Make Usage have a trailing \n - $Usage .= "\n" if ($Usage !~ /\n$/); - - @args = split( / */, $argumentative ); - - # Clear anything that might still be set from a previous New_Getopts call. - foreach $first (@args) - { - next if ($first eq ":"); - delete $Switch_Found {$first}; - delete $Switch_To_Order {$first}; - eval "undef \@opt_$first; undef \$opt_$first;"; - }; - - while (@ARGV) - { - # Let usage through - if (($ARGV[0] eq "-usage") && ($Usage ne "\n")) - { - print $Usage; - exit (-1); - } - - elsif ($ARGV[0] eq "-version") - { - if ($VERSION) - { - print $VERSION; - print "\n" if ($VERSION !~ /\n$/); - } - else - { - warn "${Script_Name}: no version information available, sorry\n"; - } - exit (-1); - } - - elsif (($_ = $ARGV[0]) =~ /^-(.)(.*)/) - { - ($first,$rest) = ($1,$2); - $pos = index($argumentative,$first); - - $Switch_To_Order {$first} = join ($;, split (/$;/, $Switch_To_Order {$first}), ++$Order); - - if($pos >= $[) - { - if($args[$pos+1] eq ':') - { - shift(@ARGV); - if($rest eq '') - { - $rest = shift(@ARGV); - } - - eval "\$opt_$first = \$rest;"; - eval "push (\@opt_$first, \$rest);"; - push (@Split_ARGV, $first, $rest); - } - else - { - eval "\$opt_$first = 1"; - eval "push (\@opt_$first, '');"; - push (@Split_ARGV, $first, ""); - - if($rest eq '') - { - shift(@ARGV); - } - else - { - $ARGV[0] = "-$rest"; - } - } - } - - else - { - # Save any other switches if $Pass_Valid - if ($Pass_Invalid) - { - push (@current_leftovers, $first); - } - else - { - warn "${Script_Name}: unknown option: $first\n"; - ++$errs; - }; - if($rest ne '') - { - $ARGV[0] = "-$rest"; - } - else - { - shift(@ARGV); - } - } - } - - else - { - push (@leftovers, shift (@ARGV)); - }; - - # Save any other switches if $Pass_Valid - if ((@current_leftovers) && ($rest eq '')) - { - push (@leftovers, "-" . join ("", @current_leftovers)); - @current_leftovers = (); - }; - }; - - # Automatically print Usage if a warning was given - @ARGV = @leftovers; - if ($errs != 0) - { - warn $Usage; - return (0); - } - else - { - return (1); - } - -} - -1; diff --git a/mmuegel/libs/strings1.pl b/mmuegel/libs/strings1.pl deleted file mode 100644 index a49335a..0000000 --- a/mmuegel/libs/strings1.pl +++ /dev/null @@ -1,147 +0,0 @@ -;# NAME -;# strings1.pl - FUN with strings #1 -;# -;# NOTES -;# I wrote Format_Text_Block when I just started programming Perl so -;# it is probably not very Perlish code. Center is more like it :-). -;# -;# AUTHOR -;# Michael S. Muegel (mmuegel@mot.com) -;# -;# RCS INFORMATION -;# mmuegel -;# /usr/local/ustart/src/mail-tools/dist/foo/libs/strings1.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp - -package strings1; - -;###############################################################################;# Center -;# -;# Center $Text assuming the output should be $Columns wide. $Text can span -;# multiple lines, of course :-). Lines within $Text that contain only -;# whitespace are not centered and are instead collapsed. This may save time -;# when printing them later. -;# -;# Arguments: -;# $Text, $Columns -;# -;# Returns: -;# $Centered_Text -;############################################################################### -sub main'Center -{ - local ($_, $Columns) = @_; - local ($*) = 1; - - s@^(.*)$@" " x (($Columns - length ($1)) / 2) . $1@eg; - s/^[\t ]*$//g; - return ($_); -}; - -;############################################################################### -;# Format_Text_Block -;# -;# Formats a text string to be printed to the display or other similar device. -;# Text in $String will be fomratted such that the following hold: -;# -;# + $String contains the (possibly) multi-line text to print. It is -;# automatically word-wrapped to fit in $Columns. -;# -;# + \n'd are maintained and are not folded. -;# -;# + $Offset is pre-pended before each separate line of text. -;# -;# + If $Offset_Once is $TRUE $Offset will only appear on the first line. -;# All other lines will be indented to match the amount of whitespace of -;# $Offset. -;# -;# + If $Bullet_Indent is $TRUE $Offset will only be applied to the begining -;# of lines as they occured in the original $String. Lines that are created -;# by this routine will always be indented by blank spaces. -;# -;# + If $Columns is 0 no word-wrap is done. This might be useful to still -;# to offset each line in a buffer. -;# -;# + If $Split_Expr is supplied the string is split on it. If not supplied -;# the string is split on " \t\/\-\,\." by default. -;# -;# + If $Offset_Blank is $TRUE then empty lines will have $Offset pre-pended -;# to them. Otherwise, they will still empty. -;# -;# This is a realy workhorse routine that I use in many places because of its -;# veratility. -;# -;# Arguments: -;# $String, $Offset, $Offset_Once, $Bullet_Indent, $Columns, $Split_Expr, -;# $Offset_Blank -;# -;# Returns: -;# $Buffer -;############################################################################### -sub main'Format_Text_Block -{ - local ($String, $Real_Offset, $Offset_Once, $Bullet_Indent, $Columns, - $Split_Expr, $Offset_Blank) = @_; - - local ($New_Line, $Line, $Chars_Per_Line, $Space_Offset, $Buffer, - $Next_New_Line, $Num_Lines, $Num_Offsets, $Offset); - local ($*) = 0; - local ($BLANK_TAG) = "__FORMAT_BLANK__"; - local ($Blank_Offset) = $Real_Offset if ($Offset_Blank); - - # What should we split on? - $Split_Expr = " \\t\\/\\-\\,\\." if (! $Split_Expr); - - # Pre-process the string - convert blank lines to __FORMAT_BLANK__ sequence - $String =~ s/\n\n/\n$BLANK_TAG\n/g; - $String =~ s/^\n/$BLANK_TAG\n/g; - $String =~ s/\n$/\n$BLANK_TAG/g; - - # If bad $Columns/$Offset combo or no $Columns make a VERRRYYY wide $Column - $Offset = $Real_Offset; - $Chars_Per_Line = 16000 if (($Chars_Per_Line = $Columns - length ($Offset)) <= 0); - $Space_Offset = " " x length ($Offset); - - # Get a buffer - foreach $Line (split ("\n", $String)) - { - $Offset = $Real_Offset if ($Bullet_Indent); - - # Find where to split the line - if ($Line ne $BLANK_TAG) - { - $New_Line = ""; - while ($Line =~ /^([$Split_Expr]*)([^$Split_Expr]+)/) - { - if (length ("$New_Line$&") >= $Chars_Per_Line) - { - $Next_New_Line = $+; - $New_Line = "$Offset$New_Line$1"; - $Buffer .= "\n" if ($Num_Lines++); - $Buffer .= $New_Line; - $Offset = $Space_Offset if (($Offset) && ($Offset_Once)); - $New_Line = $Next_New_Line; - ++$Num_Lines; - } - else - { - $New_Line .= $&; - }; - $Line = $'; - }; - - $Buffer .= "\n" if ($Num_Lines++); - $Buffer .= "$Offset$New_Line$Line"; - $Offset = $Space_Offset if (($Offset) && ($Offset_Once)); - } - - else - { - $Buffer .= "\n$Blank_Offset"; - }; - }; - - return ($Buffer); - -}; - -1; diff --git a/mmuegel/libs/timespec.pl b/mmuegel/libs/timespec.pl deleted file mode 100644 index 06b048d..0000000 --- a/mmuegel/libs/timespec.pl +++ /dev/null @@ -1,60 +0,0 @@ -;# NAME -;# timespec.pl - convert a pre-defined time specifyer to seconds -;# -;# AUTHOR -;# Michael S. Muegel (mmuegel@mot.com) -;# -;# RCS INFORMATION -;# mmuegel -;# /usr/local/ustart/src/mail-tools/dist/foo/libs/timespec.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp - -package timespec; - -%TIME_SPEC_TO_SECONDS = ("s", 1, - "m", 60, - "h", 60 * 60, - "d", 60 * 60 * 24 - ); - -$VALID_TIME_SPEC_EXPR = "[" . join ("", keys (%TIME_SPEC_TO_SECONDS)) . "]"; - -;############################################################################### -;# Time_Spec_To_Seconds -;# -;# Converts a string of the form: -;# -;# (<number>(s|m|h|d))+ -;# -;# to seconds. The second part of the time spec specifies seconds, minutes, -;# hours, or days, respectfully. The first part is the number of those untis. -;# There can be any number of such specifiers. As an example, 1h30m means 1 -;# hour and 30 minutes. -;# -;# If the parsing went OK then $Status is 1, $Msg is undefined, and $Seconds -;# is $Time_Spec converted to seconds. If something went wrong then $Status -;# is 0 and $Msg explains what went wrong. -;# -;# Arguments: -;# $Time_Spec -;# -;# Returns: -;# $Status, $Msg, $Seconds -;############################################################################### -sub main'Time_Spec_To_Seconds -{ - $Time_Spec = $_[0]; - - $Seconds = 0; - while ($Time_Spec =~ /^(\d+)($VALID_TIME_SPEC_EXPR)/) - { - $Seconds += $1 * $TIME_SPEC_TO_SECONDS {$2}; - $Time_Spec = $'; - }; - - return (0, "error parsing time spec: $Time_Spec") if ($Time_Spec ne ""); - return (1, "", $Seconds); - -}; - - -1; diff --git a/mmuegel/man/cqueue.1 b/mmuegel/man/cqueue.1 deleted file mode 100644 index 56e534b..0000000 --- a/mmuegel/man/cqueue.1 +++ /dev/null @@ -1,166 +0,0 @@ -.TH CQUEUE 1L -\" -\" mmuegel -\" /usr/local/ustart/src/mail-tools/dist/foo/man/cqueue.1,v 1.1 1993/07/28 08:08:25 mmuegel Exp -\" -.ds mp \fBcqueue\fR -.de IB -.IP \(bu 2 -.. -.SH NAME -\*(mp - check sendmail queue for problems -.SH SYNOPSIS -.IP \*(mp 7 -[ \fB-abdms\fR ] [ \fB-q\fR \fIqueue-dir\fI ] [ \fB-t\fR \fItime\fR ] -[ \fB-u\fR \fIusers\fR ] [ \fB-w\fR \fIwidth\fR ] -.SH DESCRIPTION -Reports on problems in the sendmail queue. With no options this simply -means listing messages that have been in the queue longer than a default -period along with a summary of queue mail by host and status message. -.SH OPTIONS -.IP \fB-a\fR 14 -Report on all messages in the queue. This is equivalent to saying \fB-t\fR 0s. -You may like this command so much that you use it as a replacement for -\fBmqueue\fR. For example: -.sp 1 -.RS -.RS -\fBalias mqueue cqueue -a\fR -.RE -.RE -.IP \fB-b\fR 14 -Also report on bogus queue files. Those are files that -have data files and no control files or vice versa. -.IP \fB-d\fR -Print a detailed report of mail messages that have been queued longer than -the specified or default time. Information that is presented includes: -.RS -.RS -.IB -Sendmail queue identifier. -.IB -Date the message was first queued. -.IB -Sender of the message. -.IB -One or more recipients of the message. -.IB -An optional status of the message. This usually indicates why the message -has not been delivered. -.RE -.RE -.IP \fB-m\fR 14 -Mail off the results if any problems were found. -Normaly results are printed to stdout. If this option -is specified they are mailed to one or more users. Results -are not printed to stdout in this case. Results are \fBonly\fR -mailed if \*(mp found something wrong. -.IP "\fB-q\fR \fIqueue-dir\fI" -The sendmail mail queue directory. Default is \fB/usr/spool/mqueue\fR or -some other site configured value. -.IP "\fB-t\fR \fItime\fR" -List messages that have been in the queue longer than -\fItime\fR. Time should of the form: -.sp 1 -.RS -.RS -(<number>(s|m|h|d))+ -.sp 1 -.RE -.RE -.RS 14 -The second portion of the above definition -specifies seconds, minutes, hours, or -days, respectfully. The first portion is the number of -those units. There can be any number of such specifiers. -As an example, 1h30m means 1 hour and 30 minutes. -.sp 1 -The default is 2 hours. -.RE -.IP \fB-s\fR 14 -Print a summary of messages that have been queued longer than -the specified or default time. Two separate types of summaries are printed. -The first summarizes the queue messages by destination host. The host name -is gleaned from the recipient addresses for each message. -Thus the actual host names for this summary should be taken with a grain -of salt since ruleset 0 has not been applied to the address the host was -taken from nor were MX records consulted. It would be possible to add -this; however, the execution time of the script would increase -dramatically. The second summary is by status message. -.IP "\fB-u\fR \fIusers\fR" -Specify list of users to send a mail report to other than -the invoker. This option is only valid when \fB-m\fR has been -specified. Multiple recipients may be separated by spaces. -.IP "\fB-w\fR \fIwidth\fR" -Specify the page width to which the output should tailored. \fIwidth\fR -should be an integer representing some character position. The default is -80 or some other site configured value. Output is folded neatly to match -\fIwidth\fR. -.SH EXAMPLES -.nf -% \fBdate\fR -Tue Jan 19 12:07:20 CST 1993 - -% \fBcqueue -t 21h45m -w 70\fR - -Summary of messages in queue longer than 21:45:00 by destination -host: - - Number of - Messages Destination Host - --------- ---------------- - 2 cigseg.rtsg.mot.com - 1 mnesouth.corp.mot.com - --------- - 3 - -Summary of messages in queue longer than 21:45:00 by status message: - - Number of - Messages Status Message - --------- -------------- - 1 Deferred: Connection refused by mnesouth.corp.mot.com - 2 Deferred: Host Name Lookup Failure - --------- - 3 - -Detail of messages in queue longer than 21:45:00 sorted by creation -date: - - ID: AA20573 - Date: 02:09:27 PM 01/18/93 - Sender: melrose-place-owner@ferkel.ucsb.edu - Recipient: pbaker@cigseg.rtsg.mot.com - Status: Deferred: Host Name Lookup Failure - - ID: AA20757 - Date: 02:11:30 PM 01/18/93 - Sender: 90210-owner@ferkel.ucsb.edu - Recipient: pbaker@cigseg.rtsg.mot.com - Status: Deferred: Host Name Lookup Failure - - ID: AA21110 - Date: 02:17:01 PM 01/18/93 - Sender: rd_lap_wg@mdd.comm.mot.com - Recipient: jim_mathis@mnesouth.corp.mot.com - Status: Deferred: Connection refused by mnesouth.corp.mot.com -.fi -.SH AUTHOR -.nf -Michael S. Muegel (mmuegel@mot.com) -UNIX Applications Startup Group -Corporate Information Office, Schaumburg, IL -Motorola, Inc. -.fi -.SH COPYRIGHT NOTICE -Copyright 1993, Motorola, Inc. -.sp 1 -Permission to use, copy, modify and distribute without charge this -software, documentation, etc. is granted, provided that this -comment and the author's name is retained. The author nor Motorola assume any -responsibility for problems resulting from the use of this software. -.SH SEE ALSO -.nf -\fBsendmail(8)\fR -\fISendmail Installation and Operation Guide\fR. -.fi diff --git a/mmuegel/man/postclip.1 b/mmuegel/man/postclip.1 deleted file mode 100644 index 6c33ef2..0000000 --- a/mmuegel/man/postclip.1 +++ /dev/null @@ -1,59 +0,0 @@ -.TH POSTCLIP 1L -\" -\" mmuegel -\" /usr/local/ustart/src/mail-tools/dist/foo/man/postclip.1,v 1.1 1993/07/28 08:08:25 mmuegel Exp -\" -.ds mp \fBpostclip\fR -.SH NAME -\*(mp - send only the headers to Postmaster -.SH SYNOPSIS -\*(mp [ \fB-v\fR ] [ \fIto\fR ... ] -.SH DESCRIPTION -\*(mp will forward non-delivery reports to a postmaster after deleting the body -of the message. This keeps bounced mail private and helps to avoid disk space problems. \*(mp tries its best to keep as much of the header trail as possible. -Hopefully only the original body of the message will be filtered. Only messages -that have a subject that begins with 'Returned mail:' are filtered. This -ensures that other mail is not accidently mucked with. Finally, note that -\fBsendmail\fR is used to deliver the message after it has been (possibly) -filtered. All of the original headers will remain intact. -.sp 1 -You can use this with any \fBsendmail\fR by modifying the Postmaster alias. -If you use IDA \fBsendmail\fR you could add the following to <machine>.m4: -.sp 1 -.RS -define(POSTMASTERBOUNCE, mailer-errors) -.RE -.sp 1 -In the aliases file, add a line similar to the following: -.sp 1 -.RS -mailer-errors: "|/usr/local/bin/postclip postmaster" -.RE -.SH OPTIONS -.IP \fB-v\fR -Be verbose about delivery. Probably only useful when debugging \*(mp. -.IP \fIto\fR -A list of one or more e-mail ids to send the modified -Postmaster messages to. If none are specified postmaster -is used. -.SH AUTHOR -.nf -Michael S. Muegel (mmuegel@mot.com) -UNIX Applications Startup Group -Corporate Information Office, Schaumburg, IL -Motorola, Inc. -.fi -.SH CREDITS -The original idea to filter Postmaster mail was taken from a script by -Christopher Davis <ckd@eff.org>. -.SH COPYRIGHT NOTICE -Copyright 1992, Motorola, Inc. -.sp 1 -Permission to use, copy, modify and distribute without charge this -software, documentation, etc. is granted, provided that this -comment and the author's name is retained. The author nor Motorola assume any -responsibility for problems resulting from the use of this software. -.SH SEE ALSO -.nf -\fBsendmail(8)\fR -.fi diff --git a/mmuegel/src/cqueue b/mmuegel/src/cqueue deleted file mode 100644 index f94252a..0000000 --- a/mmuegel/src/cqueue +++ /dev/null @@ -1,242 +0,0 @@ -#!/usr/bin/perl - -# NAME -# cqueue - check sendmail queue for problems -# -# SYNOPSIS -# Type cqueue -usage -# -# AUTHOR -# Michael S. Muegel <mmuegel@mot.com> -# -# RCS INFORMATION -# mmuegel -# /usr/local/ustart/src/mail-tools/dist/foo/src/cqueue,v 1.1 1993/07/28 08:09:02 mmuegel Exp - -# So that date.pl does not yell (Domain/OS version does a ``) -$ENV{'PATH'} = ""; - -# A better getopts routine -require "newgetopts.pl"; -require "timespec.pl"; -require "mail.pl"; -require "date.pl"; -require "mqueue.pl"; -require "strings1.pl"; -require "elapsed.pl"; - -($Script_Name = $0) =~ s/.*\///; - -# Some defaults you may want to change -$DEF_TIME = "2h"; -$DEF_QUEUE = "/usr/spool/mqueue"; -$DEF_COLUMNS = 80; -$DATE_FORMAT = "%r %D"; - -# Constants that probably should not be changed -$USAGE = "Usage: $Script_Name [ -abdms ] [ -q queue-dir ] [ -t time ] [ -u user ] [ -w width ]\n"; -$VERSION = "${Script_Name} by mmuegel; 1.1 of 1993/07/28 08:09:02"; -$SWITCHES = "abdmst:u:q:w:"; -$SPLIT_EXPR = '\s,\.@!%:'; -$ADDR_PART_EXPR = '[^!@%]+'; - -# Let getopts parse for switches -$Status = &New_Getopts ($SWITCHES, $USAGE); -exit (0) if ($Status == -1); -exit (1) if (! $Status); - -# Check args -die "${Script_Name}: -u only valid with -m\n" if (($opt_u) && (! $opt_m)); -die "${Script_Name}: -a not valid with -t option\n" if ($opt_a && $opt_t); -$opt_u = getlogin || (getpwuid ($<))[0] || $ENV{"USER"} || die "${Script_Name}: can not determine who you are!\n" if (! $opt_u); - -# Set defaults -$opt_t = "0s" if ($opt_a); -$opt_t = $DEF_TIME if ($opt_t eq ""); -$opt_w = $DEF_COLUMNS if ($opt_w eq ""); -$opt_q = $DEF_QUEUE if ($opt_q eq ""); -$opt_s = $opt_d = 1 if (! ($opt_s || $opt_d)); - -# Untaint the users to mail to -$opt_u =~ /^(.*)$/; -$Users = $1; - -# Convert time option to seconds and seconds to elapsed form -die "${Script_Name}: $Msg\n" if (! (($Status, $Msg, $Seconds) = &Time_Spec_To_Seconds ($opt_t))[0]); -$Elapsed = &Seconds_To_Elapsed ($Seconds, 1); -$Time_Info = " longer than $Elapsed" if ($Seconds); - -# Get the current time -$Current_Time = time; -$Current_Date = &date ($Current_Time, $DATE_FORMAT); - -($Status, $Msg, @Queue_IDs) = &Get_Queue_IDs ($opt_q, 1, @Missing_Control_IDs, - @Missing_Data_IDs); -die "$Script_Name: $Msg\n" if (! $Status); - -# Yell about missing data/control files? -if ($opt_b) -{ - - $Report = "\nMessages missing control files:\n\n " . - join ("\n ", @Missing_Control_IDs) . - "\n" - if (@Missing_Control_IDs); - - $Report .= "\nMessages missing data files:\n\n " . - join ("\n ", @Missing_Data_IDs) . - "\n" - if (@Missing_Data_IDs); -}; - -# See if any mail messages are older than $Seconds -foreach $Queue_ID (@Queue_IDs) -{ - # Get lots of info about this sendmail message via the control file - ($Status, $Msg) = &Parse_Control_File ($opt_q, $Queue_ID, *Sender, - *Recipients, *Errors_To, *Creation_Time, *Priority, *Status_Message, - *Headers); - next if ($Status == -1); - if (! $Status) - { - warn "$Script_Name: $Queue_ID: $Msg\n"; - next; - }; - - # Report on message if it is older than $Seconds - if ($Current_Time - $Creation_Time >= $Seconds) - { - # Build summary by host information. Keep track of each host destination - # encountered. - if ($opt_s) - { - %Host_Map = (); - foreach (@Recipients) - { - if ((/@($ADDR_PART_EXPR)$/) || (/($ADDR_PART_EXPR)!$ADDR_PART_EXPR$/)) - { - ($Host = $1) =~ tr/A-Z/a-z/; - $Host_Map {$Host} = 1; - } - else - { - warn "$Script_Name: could not find host part from $_; contact author\n"; - }; - }; - - # For each unique target host add to its stats - grep ($Host_Queued {$_}++, keys (%Host_Map)); - - # Build summary by message information. - $Message_Queued {$Status_Message}++ if ($Status_Message); - }; - - # Build long report information for this creation time (there may be - # more than one message created at the same time) - if ($opt_d) - { - $Creation_Date = &date ($Creation_Time, $DATE_FORMAT); - $Recipient_Info = &Format_Text_Block (join (", ", @Recipients), - " Recipient: ", 1, 0, $opt_w, $SPLIT_EXPR); - $Time_To_Report {$Creation_Time} .= <<"EOS"; - - ID: $Queue_ID - Date: $Creation_Date - Sender: $Sender -$Recipient_Info -EOS - - # Add the status message if available to long report - if ($Status_Message) - { - $Time_To_Report {$Creation_Time} .= &Format_Text_Block ($Status_Message, - " Status: ", 1, 0, $opt_w, $SPLIT_EXPR) . "\n"; - }; - }; - }; - -}; - -# Add the summary report by target host? -if ($opt_s) -{ - foreach $Host (sort (keys (%Host_Queued))) - { - $Host_Report .= &Format_Text_Block ($Host, - sprintf (" %-9d ", $Host_Queued{$Host}), 1, 0, $opt_w, - $SPLIT_EXPR) . "\n"; - $Num_Hosts += $Host_Queued{$Host}; - }; - if ($Host_Report) - { - chop ($Host_Report); - $Report .= &Format_Text_Block("\nSummary of messages in queue$Time_Info by destination host:\n", "", 0, 0, $opt_w); - - $Report .= <<"EOS"; - - Number of - Messages Destination Host - --------- ---------------- -$Host_Report - --------- - $Num_Hosts -EOS - }; -}; - -# Add the summary by message report? -if ($opt_s) -{ - foreach $Message (sort (keys (%Message_Queued))) - { - $Message_Report .= &Format_Text_Block ($Message, - sprintf (" %-9d ", $Message_Queued{$Message}), 1, 0, $opt_w, - $SPLIT_EXPR) . "\n"; - $Num_Messages += $Message_Queued{$Message}; - }; - if ($Message_Report) - { - chop ($Message_Report); - $Report .= &Format_Text_Block ("\nSummary of messages in queue$Time_Info by status message:\n", "", 0, 0, $opt_w); - - $Report .= <<"EOS"; - - Number of - Messages Status Message - --------- -------------- -$Message_Report - --------- - $Num_Messages -EOS - }; -}; - -# Add the detailed message reports? -if ($opt_d) -{ - foreach $Time (sort { $a <=> $b} (keys (%Time_To_Report))) - { - $Report .= &Format_Text_Block ("\nDetail of messages in queue$Time_Info sorted by creation date:\n","", 0, 0, $opt_w) if (! $Detailed_Header++); - $Report .= $Time_To_Report {$Time}; - }; -}; - -# Now mail or print the report -if ($Report) -{ - $Report .= "\n"; - if ($opt_m) - { - ($Status, $Msg) = &Send_Mail ($Users, "sendmail queue report for $Current_Date", $Report, 0); - die "${Script_Name}: $Msg" if (! $Status); - } - - else - { - print $Report; - }; - -}; - -# I am outta here... -exit (0); diff --git a/mmuegel/src/postclip b/mmuegel/src/postclip deleted file mode 100644 index 63f6df0..0000000 --- a/mmuegel/src/postclip +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/local/bin/perl - -# NAME -# postclip - send only the headers to Postmaster -# -# SYNOPSIS -# postclip [ -v ] [ to ... ] -# -# AUTHOR -# Michael S. Muegel <mmuegel@mot.com> -# -# RCS INFORMATION -# /usr/local/ustart/src/mail-tools/dist/foo/src/postclip,v -# 1.1 of 1993/07/28 08:09:02 - -# We use this to send off the mail -require "newgetopts.pl"; -require "mail.pl"; - -# Get the basename of the script -($Script_Name = $0) =~ s/.*\///; - -# Some famous constants -$USAGE = "Usage: $Script_Name [ -v ] [ to ... ]\n"; -$VERSION = "${Script_Name} by mmuegel; 1.1 of 1993/07/28 08:09:02"; -$SWITCHES = "v"; - -# Let getopts parse for switches -$Status = &New_Getopts ($SWITCHES, $USAGE); -exit (0) if ($Status == -1); -exit (1) if (! $Status); - -# Who should we send the modified mail to? -@ARGV = ("postmaster") if (! @ARGV); -$Users = join (" ", @ARGV); -@ARGV = (); - -# Suck in the original header and save a few interesting lines -while (<>) -{ - $Buffer .= $_ if (! /^From /); - $Subject = $1 if (/^Subject:\s+(.*)$/); - $From = $1 if (/^From:\s+(.*)$/); - last if (/^$/); -}; - -# Do not filter the message unless it has a subject and the subject indicates -# it is an NDN -if ($Subject && ($Subject =~ /^returned mail/i)) -{ - # Slurp input by paragraph. Keep track of the last time we saw what - # appeared to be NDN text. We keep this. - $/ = "\n\n"; - $* = 1; - while (<>) - { - push (@Paragraphs, $_); - $Last_Error_Para = $#Paragraphs - if (/unsent message follows/i || /was not delivered because/); - }; - - # Now save the NDN text into $Buffer - $Buffer .= join ("", @Paragraphs [0..$Last_Error_Para]); -} - -else -{ - undef $/; - $Buffer .= <>; -}; - -# Send off the (possibly) modified mail -($Status, $Msg) = &Send_Mail ($Users, "", $Buffer, 0, $opt_v, 1); -die "$Script_Name: $Msg\n" if (! $Status); diff --git a/src/collect.c.orig b/src/collect.c.orig deleted file mode 100644 index 58f0dc7..0000000 --- a/src/collect.c.orig +++ /dev/null @@ -1,761 +0,0 @@ -/* - * Copyright (c) 1983, 1995-1997 Eric P. Allman - * Copyright (c) 1988, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)collect.c 8.72 (Berkeley) 10/6/97"; -#endif /* not lint */ - -# include <errno.h> -# include "sendmail.h" - -/* -** COLLECT -- read & parse message header & make temp file. -** -** Creates a temporary file name and copies the standard -** input to that file. Leading UNIX-style "From" lines are -** stripped off (after important information is extracted). -** -** Parameters: -** fp -- file to read. -** smtpmode -- if set, we are running SMTP: give an RFC821 -** style message to say we are ready to collect -** input, and never ignore a single dot to mean -** end of message. -** hdrp -- the location to stash the header. -** e -- the current envelope. -** -** Returns: -** none. -** -** Side Effects: -** Temp file is created and filled. -** The from person may be set. -*/ - -static jmp_buf CtxCollectTimeout; -static void collecttimeout(); -static bool CollectProgress; -static EVENT *CollectTimeout; - -/* values for input state machine */ -#define IS_NORM 0 /* middle of line */ -#define IS_BOL 1 /* beginning of line */ -#define IS_DOT 2 /* read a dot at beginning of line */ -#define IS_DOTCR 3 /* read ".\r" at beginning of line */ -#define IS_CR 4 /* read a carriage return */ - -/* values for message state machine */ -#define MS_UFROM 0 /* reading Unix from line */ -#define MS_HEADER 1 /* reading message header */ -#define MS_BODY 2 /* reading message body */ - -void -collect(fp, smtpmode, hdrp, e) - FILE *fp; - bool smtpmode; - HDR **hdrp; - register ENVELOPE *e; -{ - register FILE *volatile tf; - volatile bool ignrdot = smtpmode ? FALSE : IgnrDot; - volatile time_t dbto = smtpmode ? TimeOuts.to_datablock : 0; - register char *volatile bp; - volatile int c = EOF; - volatile bool inputerr = FALSE; - bool headeronly; - char *volatile buf; - volatile int buflen; - volatile int istate; - volatile int mstate; - u_char *volatile pbp; - u_char peekbuf[8]; - char dfname[MAXQFNAME]; - char bufbuf[MAXLINE]; - extern bool isheader(); - extern void eatheader(); - extern void tferror(); - - headeronly = hdrp != NULL; - - /* - ** Create the temp file name and create the file. - */ - - if (!headeronly) - { - int tfd; - struct stat stbuf; - - strcpy(dfname, queuename(e, 'd')); - tfd = dfopen(dfname, O_WRONLY|O_CREAT|O_TRUNC, FileMode, SFF_ANYFILE); - if (tfd < 0 || (tf = fdopen(tfd, "w")) == NULL) - { - syserr("Cannot create %s", dfname); - e->e_flags |= EF_NO_BODY_RETN; - finis(); - } - if (fstat(fileno(tf), &stbuf) < 0) - e->e_dfino = -1; - else - { - e->e_dfdev = stbuf.st_dev; - e->e_dfino = stbuf.st_ino; - } - HasEightBits = FALSE; - e->e_msgsize = 0; - e->e_flags |= EF_HAS_DF; - } - - /* - ** Tell ARPANET to go ahead. - */ - - if (smtpmode) - message("354 Enter mail, end with \".\" on a line by itself"); - - if (tTd(30, 2)) - printf("collect\n"); - - /* - ** Read the message. - ** - ** This is done using two interleaved state machines. - ** The input state machine is looking for things like - ** hidden dots; the message state machine is handling - ** the larger picture (e.g., header versus body). - */ - - buf = bp = bufbuf; - buflen = sizeof bufbuf; - pbp = peekbuf; - istate = IS_BOL; - mstate = SaveFrom ? MS_HEADER : MS_UFROM; - CollectProgress = FALSE; - - if (dbto != 0) - { - /* handle possible input timeout */ - if (setjmp(CtxCollectTimeout) != 0) - { - if (LogLevel > 2) - sm_syslog(LOG_NOTICE, e->e_id, - "timeout waiting for input from %s during message collect", - CurHostName ? CurHostName : "<local machine>"); - errno = 0; - usrerr("451 timeout waiting for input during message collect"); - goto readerr; - } - CollectTimeout = setevent(dbto, collecttimeout, dbto); - } - - for (;;) - { - if (tTd(30, 35)) - printf("top, istate=%d, mstate=%d\n", istate, mstate); - for (;;) - { - if (pbp > peekbuf) - c = *--pbp; - else - { - while (!feof(fp) && !ferror(fp)) - { - errno = 0; - c = getc(fp); - if (errno != EINTR) - break; - clearerr(fp); - } - CollectProgress = TRUE; - if (TrafficLogFile != NULL && !headeronly) - { - if (istate == IS_BOL) - fprintf(TrafficLogFile, "%05d <<< ", - (int) getpid()); - if (c == EOF) - fprintf(TrafficLogFile, "[EOF]\n"); - else - putc(c, TrafficLogFile); - } - if (c == EOF) - goto readerr; - if (SevenBitInput) - c &= 0x7f; - else - HasEightBits |= bitset(0x80, c); - } - if (tTd(30, 94)) - printf("istate=%d, c=%c (0x%x)\n", - istate, c, c); - switch (istate) - { - case IS_BOL: - if (c == '.') - { - istate = IS_DOT; - continue; - } - break; - - case IS_DOT: - if (c == '\n' && !ignrdot && - !bitset(EF_NL_NOT_EOL, e->e_flags)) - goto readerr; - else if (c == '\r' && - !bitset(EF_CRLF_NOT_EOL, e->e_flags)) - { - istate = IS_DOTCR; - continue; - } - else if (c != '.' || - (OpMode != MD_SMTP && - OpMode != MD_DAEMON && - OpMode != MD_ARPAFTP)) - { - *pbp++ = c; - c = '.'; - } - break; - - case IS_DOTCR: - if (c == '\n' && !ignrdot) - goto readerr; - else - { - /* push back the ".\rx" */ - *pbp++ = c; - *pbp++ = '\r'; - c = '.'; - } - break; - - case IS_CR: - if (c == '\n') - istate = IS_BOL; - else - { - ungetc(c, fp); - c = '\r'; - istate = IS_NORM; - } - goto bufferchar; - } - - if (c == '\r' && !bitset(EF_CRLF_NOT_EOL, e->e_flags)) - { - istate = IS_CR; - continue; - } - else if (c == '\n' && !bitset(EF_NL_NOT_EOL, e->e_flags)) - istate = IS_BOL; - else - istate = IS_NORM; - -bufferchar: - if (!headeronly) - e->e_msgsize++; - if (mstate == MS_BODY) - { - /* just put the character out */ - if (MaxMessageSize <= 0 || - e->e_msgsize <= MaxMessageSize) - putc(c, tf); - continue; - } - - /* header -- buffer up */ - if (bp >= &buf[buflen - 2]) - { - char *obuf; - - if (mstate != MS_HEADER) - break; - - /* out of space for header */ - obuf = buf; - if (buflen < MEMCHUNKSIZE) - buflen *= 2; - else - buflen += MEMCHUNKSIZE; - buf = xalloc(buflen); - bcopy(obuf, buf, bp - obuf); - bp = &buf[bp - obuf]; - if (obuf != bufbuf) - free(obuf); - } - if (c >= 0200 && c <= 0237) - { -#if 0 /* causes complaints -- figure out something for 8.9 */ - usrerr("Illegal character 0x%x in header", c); -#endif - } - else if (c != '\0') - *bp++ = c; - if (istate == IS_BOL) - break; - } - *bp = '\0'; - -nextstate: - if (tTd(30, 35)) - printf("nextstate, istate=%d, mstate=%d, line = \"%s\"\n", - istate, mstate, buf); - switch (mstate) - { - extern int chompheader(); - - case MS_UFROM: - mstate = MS_HEADER; -#ifndef NOTUNIX - if (strncmp(buf, "From ", 5) == 0) - { - extern void eatfrom(); - - bp = buf; - eatfrom(buf, e); - continue; - } -#endif - /* fall through */ - - case MS_HEADER: - if (!isheader(buf)) - { - mstate = MS_BODY; - goto nextstate; - } - - /* check for possible continuation line */ - do - { - clearerr(fp); - errno = 0; - c = getc(fp); - } while (errno == EINTR); - if (c != EOF) - ungetc(c, fp); - if (c == ' ' || c == '\t') - { - /* yep -- defer this */ - continue; - } - - /* trim off trailing CRLF or NL */ - if (*--bp != '\n' || *--bp != '\r') - bp++; - *bp = '\0'; - if (bitset(H_EOH, chompheader(buf, FALSE, hdrp, e))) - mstate = MS_BODY; - break; - - case MS_BODY: - if (tTd(30, 1)) - printf("EOH\n"); - if (headeronly) - goto readerr; - bp = buf; - - /* toss blank line */ - if ((!bitset(EF_CRLF_NOT_EOL, e->e_flags) && - bp[0] == '\r' && bp[1] == '\n') || - (!bitset(EF_NL_NOT_EOL, e->e_flags) && - bp[0] == '\n')) - { - break; - } - - /* if not a blank separator, write it out */ - if (MaxMessageSize <= 0 || - e->e_msgsize <= MaxMessageSize) - { - while (*bp != '\0') - putc(*bp++, tf); - } - break; - } - bp = buf; - } - -readerr: - if ((feof(fp) && smtpmode) || ferror(fp)) - { - const char *errmsg = errstring(errno); - - if (tTd(30, 1)) - printf("collect: premature EOM: %s\n", errmsg); - if (LogLevel >= 2) - sm_syslog(LOG_WARNING, e->e_id, - "collect: premature EOM: %s", errmsg); - inputerr = TRUE; - } - - /* reset global timer */ - clrevent(CollectTimeout); - - if (headeronly) - return; - - if (tf != NULL && - (fflush(tf) != 0 || ferror(tf) || - (SuperSafe && fsync(fileno(tf)) < 0) || - fclose(tf) < 0)) - { - tferror(tf, e); - flush_errors(TRUE); - finis(); - } - - /* An EOF when running SMTP is an error */ - if (inputerr && (OpMode == MD_SMTP || OpMode == MD_DAEMON)) - { - char *host; - char *problem; - - host = RealHostName; - if (host == NULL) - host = "localhost"; - - if (feof(fp)) - problem = "unexpected close"; - else if (ferror(fp)) - problem = "I/O error"; - else - problem = "read timeout"; - if (LogLevel > 0 && feof(fp)) - sm_syslog(LOG_NOTICE, e->e_id, - "collect: %s on connection from %.100s, sender=%s: %s", - problem, host, - shortenstring(e->e_from.q_paddr, 203), - errstring(errno)); - if (feof(fp)) - usrerr("451 collect: %s on connection from %s, from=%s", - problem, host, - shortenstring(e->e_from.q_paddr, 203)); - else - syserr("451 collect: %s on connection from %s, from=%s", - problem, host, - shortenstring(e->e_from.q_paddr, 203)); - - /* don't return an error indication */ - e->e_to = NULL; - e->e_flags &= ~EF_FATALERRS; - e->e_flags |= EF_CLRQUEUE; - - /* and don't try to deliver the partial message either */ - if (InChild) - ExitStat = EX_QUIT; - finis(); - } - - /* - ** Find out some information from the headers. - ** Examples are who is the from person & the date. - */ - - eatheader(e, TRUE); - - if (GrabTo && e->e_sendqueue == NULL) - usrerr("No recipient addresses found in header"); - - /* collect statistics */ - if (OpMode != MD_VERIFY) - { - extern void markstats(); - - markstats(e, (ADDRESS *) NULL); - } - -#if _FFR_DSN_RRT_OPTION - /* - ** If we have a Return-Receipt-To:, turn it into a DSN. - */ - - if (RrtImpliesDsn && hvalue("return-receipt-to", e->e_header) != NULL) - { - ADDRESS *q; - - for (q = e->e_sendqueue; q != NULL; q = q->q_next) - if (!bitset(QHASNOTIFY, q->q_flags)) - q->q_flags |= QHASNOTIFY|QPINGONSUCCESS; - } -#endif - - /* - ** Add an Apparently-To: line if we have no recipient lines. - */ - - if (hvalue("to", e->e_header) != NULL || - hvalue("cc", e->e_header) != NULL || - hvalue("apparently-to", e->e_header) != NULL) - { - /* have a valid recipient header -- delete Bcc: headers */ - e->e_flags |= EF_DELETE_BCC; - } - else if (hvalue("bcc", e->e_header) == NULL) - { - /* no valid recipient headers */ - register ADDRESS *q; - char *hdr = NULL; - extern void addheader(); - - /* create an Apparently-To: field */ - /* that or reject the message.... */ - switch (NoRecipientAction) - { - case NRA_ADD_APPARENTLY_TO: - hdr = "Apparently-To"; - break; - - case NRA_ADD_TO: - hdr = "To"; - break; - - case NRA_ADD_BCC: - addheader("Bcc", " ", &e->e_header); - break; - - case NRA_ADD_TO_UNDISCLOSED: - addheader("To", "undisclosed-recipients:;", &e->e_header); - break; - } - - if (hdr != NULL) - { - for (q = e->e_sendqueue; q != NULL; q = q->q_next) - { - if (q->q_alias != NULL) - continue; - if (tTd(30, 3)) - printf("Adding %s: %s\n", - hdr, q->q_paddr); - addheader(hdr, q->q_paddr, &e->e_header); - } - } - } - - /* check for message too large */ - if (MaxMessageSize > 0 && e->e_msgsize > MaxMessageSize) - { - e->e_flags |= EF_NO_BODY_RETN|EF_CLRQUEUE; - e->e_status = "5.2.3"; - usrerr("552 Message exceeds maximum fixed size (%ld)", - MaxMessageSize); - if (LogLevel > 6) - sm_syslog(LOG_NOTICE, e->e_id, - "message size (%ld) exceeds maximum (%ld)", - e->e_msgsize, MaxMessageSize); - } - - /* check for illegal 8-bit data */ - if (HasEightBits) - { - e->e_flags |= EF_HAS8BIT; - if (!bitset(MM_PASS8BIT|MM_MIME8BIT, MimeMode) && - !bitset(EF_IS_MIME, e->e_flags)) - { - e->e_status = "5.6.1"; - usrerr("554 Eight bit data not allowed"); - } - } - else - { - /* if it claimed to be 8 bits, well, it lied.... */ - if (e->e_bodytype != NULL && - strcasecmp(e->e_bodytype, "8BITMIME") == 0) - e->e_bodytype = "7BIT"; - } - - if ((e->e_dfp = fopen(dfname, "r")) == NULL) - { - /* we haven't acked receipt yet, so just chuck this */ - syserr("Cannot reopen %s", dfname); - finis(); - } -} - - -static void -collecttimeout(timeout) - time_t timeout; -{ - /* if no progress was made, die now */ - if (!CollectProgress) - longjmp(CtxCollectTimeout, 1); - - /* otherwise reset the timeout */ - CollectTimeout = setevent(timeout, collecttimeout, timeout); - CollectProgress = FALSE; -} -/* -** TFERROR -- signal error on writing the temporary file. -** -** Parameters: -** tf -- the file pointer for the temporary file. -** e -- the current envelope. -** -** Returns: -** none. -** -** Side Effects: -** Gives an error message. -** Arranges for following output to go elsewhere. -*/ - -void -tferror(tf, e) - FILE *tf; - register ENVELOPE *e; -{ - setstat(EX_IOERR); - if (errno == ENOSPC) - { - struct stat st; - long avail; - long bsize; - extern long freediskspace __P((char *, long *)); - - e->e_flags |= EF_NO_BODY_RETN; - if (fstat(fileno(tf), &st) < 0) - st.st_size = 0; - (void) freopen(queuename(e, 'd'), "w", tf); - if (st.st_size <= 0) - fprintf(tf, "\n*** Mail could not be accepted"); - else if (sizeof st.st_size > sizeof (long)) - fprintf(tf, "\n*** Mail of at least %qd bytes could not be accepted\n", - st.st_size); - else - fprintf(tf, "\n*** Mail of at least %ld bytes could not be accepted\n", - (long) st.st_size); - fprintf(tf, "*** at %s due to lack of disk space for temp file.\n", - MyHostName); - avail = freediskspace(QueueDir, &bsize); - if (avail > 0) - { - if (bsize > 1024) - avail *= bsize / 1024; - else if (bsize < 1024) - avail /= 1024 / bsize; - fprintf(tf, "*** Currently, %ld kilobytes are available for mail temp files.\n", - avail); - } - e->e_status = "4.3.1"; - usrerr("452 Out of disk space for temp file"); - } - else - syserr("collect: Cannot write tf%s", e->e_id); - (void) freopen("/dev/null", "w", tf); -} -/* -** EATFROM -- chew up a UNIX style from line and process -** -** This does indeed make some assumptions about the format -** of UNIX messages. -** -** Parameters: -** fm -- the from line. -** -** Returns: -** none. -** -** Side Effects: -** extracts what information it can from the header, -** such as the date. -*/ - -# ifndef NOTUNIX - -char *DowList[] = -{ - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", NULL -}; - -char *MonthList[] = -{ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", - NULL -}; - -void -eatfrom(fm, e) - char *fm; - register ENVELOPE *e; -{ - register char *p; - register char **dt; - - if (tTd(30, 2)) - printf("eatfrom(%s)\n", fm); - - /* find the date part */ - p = fm; - while (*p != '\0') - { - /* skip a word */ - while (*p != '\0' && *p != ' ') - p++; - while (*p == ' ') - p++; - if (!(isascii(*p) && isupper(*p)) || - p[3] != ' ' || p[13] != ':' || p[16] != ':') - continue; - - /* we have a possible date */ - for (dt = DowList; *dt != NULL; dt++) - if (strncmp(*dt, p, 3) == 0) - break; - if (*dt == NULL) - continue; - - for (dt = MonthList; *dt != NULL; dt++) - if (strncmp(*dt, &p[4], 3) == 0) - break; - if (*dt != NULL) - break; - } - - if (*p != '\0') - { - char *q; - - /* we have found a date */ - q = xalloc(25); - (void) strncpy(q, p, 25); - q[24] = '\0'; - q = arpadate(q); - define('a', newstr(q), e); - } -} - -# endif /* NOTUNIX */ diff --git a/src/collect.sav b/src/collect.sav deleted file mode 100644 index 58f0dc7..0000000 --- a/src/collect.sav +++ /dev/null @@ -1,761 +0,0 @@ -/* - * Copyright (c) 1983, 1995-1997 Eric P. Allman - * Copyright (c) 1988, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)collect.c 8.72 (Berkeley) 10/6/97"; -#endif /* not lint */ - -# include <errno.h> -# include "sendmail.h" - -/* -** COLLECT -- read & parse message header & make temp file. -** -** Creates a temporary file name and copies the standard -** input to that file. Leading UNIX-style "From" lines are -** stripped off (after important information is extracted). -** -** Parameters: -** fp -- file to read. -** smtpmode -- if set, we are running SMTP: give an RFC821 -** style message to say we are ready to collect -** input, and never ignore a single dot to mean -** end of message. -** hdrp -- the location to stash the header. -** e -- the current envelope. -** -** Returns: -** none. -** -** Side Effects: -** Temp file is created and filled. -** The from person may be set. -*/ - -static jmp_buf CtxCollectTimeout; -static void collecttimeout(); -static bool CollectProgress; -static EVENT *CollectTimeout; - -/* values for input state machine */ -#define IS_NORM 0 /* middle of line */ -#define IS_BOL 1 /* beginning of line */ -#define IS_DOT 2 /* read a dot at beginning of line */ -#define IS_DOTCR 3 /* read ".\r" at beginning of line */ -#define IS_CR 4 /* read a carriage return */ - -/* values for message state machine */ -#define MS_UFROM 0 /* reading Unix from line */ -#define MS_HEADER 1 /* reading message header */ -#define MS_BODY 2 /* reading message body */ - -void -collect(fp, smtpmode, hdrp, e) - FILE *fp; - bool smtpmode; - HDR **hdrp; - register ENVELOPE *e; -{ - register FILE *volatile tf; - volatile bool ignrdot = smtpmode ? FALSE : IgnrDot; - volatile time_t dbto = smtpmode ? TimeOuts.to_datablock : 0; - register char *volatile bp; - volatile int c = EOF; - volatile bool inputerr = FALSE; - bool headeronly; - char *volatile buf; - volatile int buflen; - volatile int istate; - volatile int mstate; - u_char *volatile pbp; - u_char peekbuf[8]; - char dfname[MAXQFNAME]; - char bufbuf[MAXLINE]; - extern bool isheader(); - extern void eatheader(); - extern void tferror(); - - headeronly = hdrp != NULL; - - /* - ** Create the temp file name and create the file. - */ - - if (!headeronly) - { - int tfd; - struct stat stbuf; - - strcpy(dfname, queuename(e, 'd')); - tfd = dfopen(dfname, O_WRONLY|O_CREAT|O_TRUNC, FileMode, SFF_ANYFILE); - if (tfd < 0 || (tf = fdopen(tfd, "w")) == NULL) - { - syserr("Cannot create %s", dfname); - e->e_flags |= EF_NO_BODY_RETN; - finis(); - } - if (fstat(fileno(tf), &stbuf) < 0) - e->e_dfino = -1; - else - { - e->e_dfdev = stbuf.st_dev; - e->e_dfino = stbuf.st_ino; - } - HasEightBits = FALSE; - e->e_msgsize = 0; - e->e_flags |= EF_HAS_DF; - } - - /* - ** Tell ARPANET to go ahead. - */ - - if (smtpmode) - message("354 Enter mail, end with \".\" on a line by itself"); - - if (tTd(30, 2)) - printf("collect\n"); - - /* - ** Read the message. - ** - ** This is done using two interleaved state machines. - ** The input state machine is looking for things like - ** hidden dots; the message state machine is handling - ** the larger picture (e.g., header versus body). - */ - - buf = bp = bufbuf; - buflen = sizeof bufbuf; - pbp = peekbuf; - istate = IS_BOL; - mstate = SaveFrom ? MS_HEADER : MS_UFROM; - CollectProgress = FALSE; - - if (dbto != 0) - { - /* handle possible input timeout */ - if (setjmp(CtxCollectTimeout) != 0) - { - if (LogLevel > 2) - sm_syslog(LOG_NOTICE, e->e_id, - "timeout waiting for input from %s during message collect", - CurHostName ? CurHostName : "<local machine>"); - errno = 0; - usrerr("451 timeout waiting for input during message collect"); - goto readerr; - } - CollectTimeout = setevent(dbto, collecttimeout, dbto); - } - - for (;;) - { - if (tTd(30, 35)) - printf("top, istate=%d, mstate=%d\n", istate, mstate); - for (;;) - { - if (pbp > peekbuf) - c = *--pbp; - else - { - while (!feof(fp) && !ferror(fp)) - { - errno = 0; - c = getc(fp); - if (errno != EINTR) - break; - clearerr(fp); - } - CollectProgress = TRUE; - if (TrafficLogFile != NULL && !headeronly) - { - if (istate == IS_BOL) - fprintf(TrafficLogFile, "%05d <<< ", - (int) getpid()); - if (c == EOF) - fprintf(TrafficLogFile, "[EOF]\n"); - else - putc(c, TrafficLogFile); - } - if (c == EOF) - goto readerr; - if (SevenBitInput) - c &= 0x7f; - else - HasEightBits |= bitset(0x80, c); - } - if (tTd(30, 94)) - printf("istate=%d, c=%c (0x%x)\n", - istate, c, c); - switch (istate) - { - case IS_BOL: - if (c == '.') - { - istate = IS_DOT; - continue; - } - break; - - case IS_DOT: - if (c == '\n' && !ignrdot && - !bitset(EF_NL_NOT_EOL, e->e_flags)) - goto readerr; - else if (c == '\r' && - !bitset(EF_CRLF_NOT_EOL, e->e_flags)) - { - istate = IS_DOTCR; - continue; - } - else if (c != '.' || - (OpMode != MD_SMTP && - OpMode != MD_DAEMON && - OpMode != MD_ARPAFTP)) - { - *pbp++ = c; - c = '.'; - } - break; - - case IS_DOTCR: - if (c == '\n' && !ignrdot) - goto readerr; - else - { - /* push back the ".\rx" */ - *pbp++ = c; - *pbp++ = '\r'; - c = '.'; - } - break; - - case IS_CR: - if (c == '\n') - istate = IS_BOL; - else - { - ungetc(c, fp); - c = '\r'; - istate = IS_NORM; - } - goto bufferchar; - } - - if (c == '\r' && !bitset(EF_CRLF_NOT_EOL, e->e_flags)) - { - istate = IS_CR; - continue; - } - else if (c == '\n' && !bitset(EF_NL_NOT_EOL, e->e_flags)) - istate = IS_BOL; - else - istate = IS_NORM; - -bufferchar: - if (!headeronly) - e->e_msgsize++; - if (mstate == MS_BODY) - { - /* just put the character out */ - if (MaxMessageSize <= 0 || - e->e_msgsize <= MaxMessageSize) - putc(c, tf); - continue; - } - - /* header -- buffer up */ - if (bp >= &buf[buflen - 2]) - { - char *obuf; - - if (mstate != MS_HEADER) - break; - - /* out of space for header */ - obuf = buf; - if (buflen < MEMCHUNKSIZE) - buflen *= 2; - else - buflen += MEMCHUNKSIZE; - buf = xalloc(buflen); - bcopy(obuf, buf, bp - obuf); - bp = &buf[bp - obuf]; - if (obuf != bufbuf) - free(obuf); - } - if (c >= 0200 && c <= 0237) - { -#if 0 /* causes complaints -- figure out something for 8.9 */ - usrerr("Illegal character 0x%x in header", c); -#endif - } - else if (c != '\0') - *bp++ = c; - if (istate == IS_BOL) - break; - } - *bp = '\0'; - -nextstate: - if (tTd(30, 35)) - printf("nextstate, istate=%d, mstate=%d, line = \"%s\"\n", - istate, mstate, buf); - switch (mstate) - { - extern int chompheader(); - - case MS_UFROM: - mstate = MS_HEADER; -#ifndef NOTUNIX - if (strncmp(buf, "From ", 5) == 0) - { - extern void eatfrom(); - - bp = buf; - eatfrom(buf, e); - continue; - } -#endif - /* fall through */ - - case MS_HEADER: - if (!isheader(buf)) - { - mstate = MS_BODY; - goto nextstate; - } - - /* check for possible continuation line */ - do - { - clearerr(fp); - errno = 0; - c = getc(fp); - } while (errno == EINTR); - if (c != EOF) - ungetc(c, fp); - if (c == ' ' || c == '\t') - { - /* yep -- defer this */ - continue; - } - - /* trim off trailing CRLF or NL */ - if (*--bp != '\n' || *--bp != '\r') - bp++; - *bp = '\0'; - if (bitset(H_EOH, chompheader(buf, FALSE, hdrp, e))) - mstate = MS_BODY; - break; - - case MS_BODY: - if (tTd(30, 1)) - printf("EOH\n"); - if (headeronly) - goto readerr; - bp = buf; - - /* toss blank line */ - if ((!bitset(EF_CRLF_NOT_EOL, e->e_flags) && - bp[0] == '\r' && bp[1] == '\n') || - (!bitset(EF_NL_NOT_EOL, e->e_flags) && - bp[0] == '\n')) - { - break; - } - - /* if not a blank separator, write it out */ - if (MaxMessageSize <= 0 || - e->e_msgsize <= MaxMessageSize) - { - while (*bp != '\0') - putc(*bp++, tf); - } - break; - } - bp = buf; - } - -readerr: - if ((feof(fp) && smtpmode) || ferror(fp)) - { - const char *errmsg = errstring(errno); - - if (tTd(30, 1)) - printf("collect: premature EOM: %s\n", errmsg); - if (LogLevel >= 2) - sm_syslog(LOG_WARNING, e->e_id, - "collect: premature EOM: %s", errmsg); - inputerr = TRUE; - } - - /* reset global timer */ - clrevent(CollectTimeout); - - if (headeronly) - return; - - if (tf != NULL && - (fflush(tf) != 0 || ferror(tf) || - (SuperSafe && fsync(fileno(tf)) < 0) || - fclose(tf) < 0)) - { - tferror(tf, e); - flush_errors(TRUE); - finis(); - } - - /* An EOF when running SMTP is an error */ - if (inputerr && (OpMode == MD_SMTP || OpMode == MD_DAEMON)) - { - char *host; - char *problem; - - host = RealHostName; - if (host == NULL) - host = "localhost"; - - if (feof(fp)) - problem = "unexpected close"; - else if (ferror(fp)) - problem = "I/O error"; - else - problem = "read timeout"; - if (LogLevel > 0 && feof(fp)) - sm_syslog(LOG_NOTICE, e->e_id, - "collect: %s on connection from %.100s, sender=%s: %s", - problem, host, - shortenstring(e->e_from.q_paddr, 203), - errstring(errno)); - if (feof(fp)) - usrerr("451 collect: %s on connection from %s, from=%s", - problem, host, - shortenstring(e->e_from.q_paddr, 203)); - else - syserr("451 collect: %s on connection from %s, from=%s", - problem, host, - shortenstring(e->e_from.q_paddr, 203)); - - /* don't return an error indication */ - e->e_to = NULL; - e->e_flags &= ~EF_FATALERRS; - e->e_flags |= EF_CLRQUEUE; - - /* and don't try to deliver the partial message either */ - if (InChild) - ExitStat = EX_QUIT; - finis(); - } - - /* - ** Find out some information from the headers. - ** Examples are who is the from person & the date. - */ - - eatheader(e, TRUE); - - if (GrabTo && e->e_sendqueue == NULL) - usrerr("No recipient addresses found in header"); - - /* collect statistics */ - if (OpMode != MD_VERIFY) - { - extern void markstats(); - - markstats(e, (ADDRESS *) NULL); - } - -#if _FFR_DSN_RRT_OPTION - /* - ** If we have a Return-Receipt-To:, turn it into a DSN. - */ - - if (RrtImpliesDsn && hvalue("return-receipt-to", e->e_header) != NULL) - { - ADDRESS *q; - - for (q = e->e_sendqueue; q != NULL; q = q->q_next) - if (!bitset(QHASNOTIFY, q->q_flags)) - q->q_flags |= QHASNOTIFY|QPINGONSUCCESS; - } -#endif - - /* - ** Add an Apparently-To: line if we have no recipient lines. - */ - - if (hvalue("to", e->e_header) != NULL || - hvalue("cc", e->e_header) != NULL || - hvalue("apparently-to", e->e_header) != NULL) - { - /* have a valid recipient header -- delete Bcc: headers */ - e->e_flags |= EF_DELETE_BCC; - } - else if (hvalue("bcc", e->e_header) == NULL) - { - /* no valid recipient headers */ - register ADDRESS *q; - char *hdr = NULL; - extern void addheader(); - - /* create an Apparently-To: field */ - /* that or reject the message.... */ - switch (NoRecipientAction) - { - case NRA_ADD_APPARENTLY_TO: - hdr = "Apparently-To"; - break; - - case NRA_ADD_TO: - hdr = "To"; - break; - - case NRA_ADD_BCC: - addheader("Bcc", " ", &e->e_header); - break; - - case NRA_ADD_TO_UNDISCLOSED: - addheader("To", "undisclosed-recipients:;", &e->e_header); - break; - } - - if (hdr != NULL) - { - for (q = e->e_sendqueue; q != NULL; q = q->q_next) - { - if (q->q_alias != NULL) - continue; - if (tTd(30, 3)) - printf("Adding %s: %s\n", - hdr, q->q_paddr); - addheader(hdr, q->q_paddr, &e->e_header); - } - } - } - - /* check for message too large */ - if (MaxMessageSize > 0 && e->e_msgsize > MaxMessageSize) - { - e->e_flags |= EF_NO_BODY_RETN|EF_CLRQUEUE; - e->e_status = "5.2.3"; - usrerr("552 Message exceeds maximum fixed size (%ld)", - MaxMessageSize); - if (LogLevel > 6) - sm_syslog(LOG_NOTICE, e->e_id, - "message size (%ld) exceeds maximum (%ld)", - e->e_msgsize, MaxMessageSize); - } - - /* check for illegal 8-bit data */ - if (HasEightBits) - { - e->e_flags |= EF_HAS8BIT; - if (!bitset(MM_PASS8BIT|MM_MIME8BIT, MimeMode) && - !bitset(EF_IS_MIME, e->e_flags)) - { - e->e_status = "5.6.1"; - usrerr("554 Eight bit data not allowed"); - } - } - else - { - /* if it claimed to be 8 bits, well, it lied.... */ - if (e->e_bodytype != NULL && - strcasecmp(e->e_bodytype, "8BITMIME") == 0) - e->e_bodytype = "7BIT"; - } - - if ((e->e_dfp = fopen(dfname, "r")) == NULL) - { - /* we haven't acked receipt yet, so just chuck this */ - syserr("Cannot reopen %s", dfname); - finis(); - } -} - - -static void -collecttimeout(timeout) - time_t timeout; -{ - /* if no progress was made, die now */ - if (!CollectProgress) - longjmp(CtxCollectTimeout, 1); - - /* otherwise reset the timeout */ - CollectTimeout = setevent(timeout, collecttimeout, timeout); - CollectProgress = FALSE; -} -/* -** TFERROR -- signal error on writing the temporary file. -** -** Parameters: -** tf -- the file pointer for the temporary file. -** e -- the current envelope. -** -** Returns: -** none. -** -** Side Effects: -** Gives an error message. -** Arranges for following output to go elsewhere. -*/ - -void -tferror(tf, e) - FILE *tf; - register ENVELOPE *e; -{ - setstat(EX_IOERR); - if (errno == ENOSPC) - { - struct stat st; - long avail; - long bsize; - extern long freediskspace __P((char *, long *)); - - e->e_flags |= EF_NO_BODY_RETN; - if (fstat(fileno(tf), &st) < 0) - st.st_size = 0; - (void) freopen(queuename(e, 'd'), "w", tf); - if (st.st_size <= 0) - fprintf(tf, "\n*** Mail could not be accepted"); - else if (sizeof st.st_size > sizeof (long)) - fprintf(tf, "\n*** Mail of at least %qd bytes could not be accepted\n", - st.st_size); - else - fprintf(tf, "\n*** Mail of at least %ld bytes could not be accepted\n", - (long) st.st_size); - fprintf(tf, "*** at %s due to lack of disk space for temp file.\n", - MyHostName); - avail = freediskspace(QueueDir, &bsize); - if (avail > 0) - { - if (bsize > 1024) - avail *= bsize / 1024; - else if (bsize < 1024) - avail /= 1024 / bsize; - fprintf(tf, "*** Currently, %ld kilobytes are available for mail temp files.\n", - avail); - } - e->e_status = "4.3.1"; - usrerr("452 Out of disk space for temp file"); - } - else - syserr("collect: Cannot write tf%s", e->e_id); - (void) freopen("/dev/null", "w", tf); -} -/* -** EATFROM -- chew up a UNIX style from line and process -** -** This does indeed make some assumptions about the format -** of UNIX messages. -** -** Parameters: -** fm -- the from line. -** -** Returns: -** none. -** -** Side Effects: -** extracts what information it can from the header, -** such as the date. -*/ - -# ifndef NOTUNIX - -char *DowList[] = -{ - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", NULL -}; - -char *MonthList[] = -{ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", - NULL -}; - -void -eatfrom(fm, e) - char *fm; - register ENVELOPE *e; -{ - register char *p; - register char **dt; - - if (tTd(30, 2)) - printf("eatfrom(%s)\n", fm); - - /* find the date part */ - p = fm; - while (*p != '\0') - { - /* skip a word */ - while (*p != '\0' && *p != ' ') - p++; - while (*p == ' ') - p++; - if (!(isascii(*p) && isupper(*p)) || - p[3] != ' ' || p[13] != ':' || p[16] != ':') - continue; - - /* we have a possible date */ - for (dt = DowList; *dt != NULL; dt++) - if (strncmp(*dt, p, 3) == 0) - break; - if (*dt == NULL) - continue; - - for (dt = MonthList; *dt != NULL; dt++) - if (strncmp(*dt, &p[4], 3) == 0) - break; - if (*dt != NULL) - break; - } - - if (*p != '\0') - { - char *q; - - /* we have found a date */ - q = xalloc(25); - (void) strncpy(q, p, 25); - q[24] = '\0'; - q = arpadate(q); - define('a', newstr(q), e); - } -} - -# endif /* NOTUNIX */ @@ -418,9 +418,6 @@ setupmaps() MAPDEF("bestmx", NULL, MCF_OPTFILE, map_parseargs, null_map_open, null_map_close, bestmx_map_lookup, null_map_store); - MAPDEF("ismx", NULL, MCF_OPTFILE, - map_parseargs, null_map_open, null_map_close, - ismx_map_lookup, null_map_store); #endif MAPDEF("host", NULL, 0, @@ -1284,7 +1284,7 @@ extern void *malloc(); # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ # define GIDSET_T gid_t /* from <linux/types.h> */ # define HASGETUSERSHELL 0 /* getusershell(3) broken in Slackware 2.0 */ -# define IP_SRCROUTE 0 +# define IP_SRCROUTE 0 /* linux <= 1.2.8 doesn't support IP_OPTIONS */ # define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ # ifndef HASFLOCK # include <linux/version.h> diff --git a/src/domain.c b/src/domain.c index b7bed93..ec79be8 100644 --- a/src/domain.c +++ b/src/domain.c @@ -492,52 +492,6 @@ bestmx_map_lookup(map, name, av, statp) return map_rewrite(map, buf, len, av); } /* -** ISMX -- find if we are the MX for a certain host. -** -** This is really a hack, but I don't see any obvious way -** to generalize it at the moment. -*/ - -char * -ismx_map_lookup(map, name, av, statp) - MAP *map; - char *name; - char **av; - int *statp; -{ - int nmx, i, len; - auto int rcode; - int saveopts = _res.options; - char *mxhosts[MAXMXHOSTS + 1]; - char *mymx = NULL; - - _res.options &= ~(RES_DNSRCH|RES_DEFNAMES); - nmx = getmxrr(name, mxhosts, FALSE, &rcode); - _res.options = saveopts; - if (rcode != EX_TEMPFAIL) { - if (nmx <= 0) - return NULL; - for(i = 0; i < nmx; i++) { - len = strlen(mxhosts[i]); - if (len && mxhosts[i][len - 1] == '.') - mxhosts[i][len - 1] = 0; - if (wordinclass(mxhosts[i], 'w')) { - mymx = mxhosts[i]; - break; - } - } - if (mymx == NULL) - return NULL; - } else - mymx = "TEMPFAIL"; - - if (bitset(MF_MATCHONLY, map->map_mflags)) - return map_rewrite(map, name, strlen(name), NULL); - else - return map_rewrite(map, mymx, strlen(mymx), av); -} - -/* ** DNS_GETCANONNAME -- get the canonical name for named host using DNS ** ** This algorithm tries to be smart about wildcard MX records. @@ -984,6 +984,18 @@ main(argc, argv, envp) usrerr("Permission denied"); finis(FALSE, EX_USAGE); } + if (OpMode == MD_INITALIAS && + RealUid != 0 && + RealUid != TrustedUid && + !wordinclass(RealUserName, 't')) + { + if (LogLevel > 1) + sm_syslog(LOG_ALERT, NOQID, + "user %d attempted to rebuild the alias map", + RealUid); + usrerr("Permission denied"); + finis(FALSE, EX_USAGE); + } if (MeToo) BlankEnvelope.e_flags |= EF_METOO; diff --git a/src/readcf.c b/src/readcf.c index 89c980e..df40097 100644 --- a/src/readcf.c +++ b/src/readcf.c @@ -1427,9 +1427,6 @@ struct optioninfo { "FallbackMXhost", 'V', FALSE }, { "Verbose", 'v', TRUE }, { "TryNullMXList", 'w', FALSE }, -#ifdef TCPWRAPPERS - { "TcpWrappers", 'W', FALSE }, -#endif { "QueueLA", 'x', FALSE }, { "RefuseLA", 'X', FALSE }, { "RecipientFactor", 'y', FALSE }, @@ -2112,11 +2109,6 @@ setoption(opt, val, safe, sticky, e) break; /* 'W' available -- was wizard password */ -#ifdef TCPWRAPPERS - case 'W': - TcpWrappers = atobool(val); - break; -#endif case 'x': /* load avg at which to auto-queue msgs */ QueueLA = atoi(val); diff --git a/src/sendmail.8 b/src/sendmail.8 index 89c0f55..093b6e6 100644 --- a/src/sendmail.8 +++ b/src/sendmail.8 @@ -409,15 +409,6 @@ aliases are local to a particular host. This may not be available if your sendmail does not have the .Dv USERDB option compiled in. -.It Li TcpWrappers -Use the -.Dv sendmail -entry in -.Pa /etc/hosts.allow -to decide if the remote host has access to the SMTP port. -This may not be available if your sendmail does not have the -.Dv TCPWRAPPERS -option compiled in. .It Li ForkEachJob Fork each job during queue runs. May be convenient on memory-poor machines. diff --git a/src/sendmail.h b/src/sendmail.h index e6f216c..ff2697e 100644 --- a/src/sendmail.h +++ b/src/sendmail.h @@ -1262,9 +1262,6 @@ EXTERN int MaxHeadersLength; /* max length of headers */ #if _FFR_DSN_RRT_OPTION EXTERN bool RrtImpliesDsn; /* turn Return-Receipt-To: into DSN */ #endif -#ifdef TCPWRAPPERS -EXTERN bool TcpWrappers; /* Use tcp wrappers for access control. */ -#endif EXTERN char *DeadLetterDrop; /* path to dead letter office */ EXTERN bool DontProbeInterfaces; /* don't probe interfaces for names */ EXTERN bool ChownAlwaysSafe; /* treat chown(2) as safe */ |