diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2004-05-30 09:20:40 +0000 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2004-05-30 09:20:40 +0000 |
commit | b7d6d9d08526f5d5da277b98e816aecdcc1c4fe6 (patch) | |
tree | 2cf3b63eaa9071ef84755d1583b50ed35f47470d /mail-mta/sendmail | |
parent | Moving to mail-mta/sendmail (diff) | |
download | gentoo-2-b7d6d9d08526f5d5da277b98e816aecdcc1c4fe6.tar.gz gentoo-2-b7d6d9d08526f5d5da277b98e816aecdcc1c4fe6.tar.bz2 gentoo-2-b7d6d9d08526f5d5da277b98e816aecdcc1c4fe6.zip |
Moved from net-mail/sendmail to mail-mta/sendmail.
Diffstat (limited to 'mail-mta/sendmail')
22 files changed, 4113 insertions, 0 deletions
diff --git a/mail-mta/sendmail/ChangeLog b/mail-mta/sendmail/ChangeLog new file mode 100644 index 000000000000..f799c8a2a0b8 --- /dev/null +++ b/mail-mta/sendmail/ChangeLog @@ -0,0 +1,202 @@ +# ChangeLog for net-mail/sendmail +# Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/mail-mta/sendmail/ChangeLog,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + +*sendmail-8.12.11-r2 (30 May 2004) + + 30 May 2004; Robin H. Johnson <robbat2@gentoo.org> metadata.xml, + sendmail-8.12.10.ebuild, sendmail-8.12.11-r1.ebuild, + sendmail-8.12.11-r2.ebuild, sendmail-8.12.11.ebuild, files/mailer.conf, + files/sendmail, files/sendmail-8.12.2-makemapman.patch, + files/sendmail-8.12.2-smrsh-paths.patch, files/sendmail-8.12.2-unix.patch, + files/sendmail-8.12.6-r1-gentoo.diff, files/sendmail-procmail.cf, + files/sendmail-procmail.mc, files/sendmail.cf, files/sendmail.mc, + files/site.config.m4: + Moved from net-mail/sendmail to mail-mta/sendmail. + + 12 May 2004; Michael McCabe <randy@gentoo.org> sendmail-8.12.11-r2.ebuild: + Added s390 keywords + +*sendmail-8.12.11-r2 (21 Apr 2004) + + 21 Apr 2004; Grant Goodyear <g2boojum@gentoo.org> + sendmail-8.12.11-r2.ebuild, files/site.config.m4: + New version thanks to lcars! + +*sendmail-8.12.11-r1 (24 Mar 2004) + + 24 Mar 2004; Grant Goodyear <g2boojum@gentoo.org> + sendmail-8.12.11-r1.ebuild, files/mailer.conf: + New revision that adds mailwrapper support + + 19 Mar 2004; Aron Griffis <agriffis@gentoo.org> sendmail-8.12.10.ebuild, + sendmail-8.12.11.ebuild: + add alpha/ia64 keywords + +*sendmail-8.12.11 (06 Feb 2004) + + 06 Feb 2004; Greg Fitzgerald <gregf@gentoo.org> sendmail-8.12.11.ebuild: + Version Bump. + +*sendmail-8.12.10 (17 Sep 2003) + + 17 Sep 2003; Greg Fitzgerald <gregf@gentoo.org> sendmail-8.12.10.ebuild: + Version bump / fixes security issue. + + 13 Jul 2003; Christian Birchinger <joker@gentoo.org> + sendmail-8.12.9-r2.ebuild: + Added sparc stable keyword + + 24 May 2003; Todd Berman <tberman@gentoo.org> sendmail-8.12.9-r2.ebuild: + closed bug #21354 + + 23 May 2003; Todd Berman <tberman@gentoo.org> sendmail-8.12.9-r1.ebuild, + sendmail-8.12.9-r2.ebuild: + Closed bug 21521. + + 12 May 2003; Todd Berman <tberman@gentoo.org> files/sendmail-r5: + Fixed up the sendmail init file some. + + 11 May 2003; <tberman@gentoo.org> sendmail-8.12.8.ebuild, + sendmail-8.12.9-r1.ebuild, sendmail-8.12.9-r2.ebuild, + sendmail-8.12.9.ebuild: + Fixed bug #20792 + +*sendmail-8.12.9-r2 (26 Apr 2003) + + 15 Jun 2003; Guy Martin <gmsoft@gentoo.org> sendmail-8.12.9-r2.ebuild: + Added hppa to KEYWORDS. + + 26 Apr 2003; <tberman@gentoo.org> sendmail-8.12.9-r2.ebuild: + Added NIS database support. Closes bug #18578. + +*sendmail-8.12.9-r1 (24 Apr 2003) + + 24 Apr 2003; Jon Portnoy <avenj@gentoo.org> sendmail-8.12.9-r1.ebuild : + Incorporates Todd Berman's work on integrating procmail for + people who aren't using mbox. Fixes bug #19893. Thanks, Todd! + +*sendmail-8.12.9 (30 Mar 2003) + + 30 Mar 2003; Daniel Ahlberg <aliz@gentoo.org> sendmail-8.12.9.ebuild : + Security update. + +*sendmail-8.12.8 (03 Mar 2003) + + 03 Mar 2003; Grant Goodyear <g2boojum@gentoo.org> sendmail-8.12.8.ebuild: + security update to 8.12.8. Closes bugs 16755 and 16766. + +*sendmail-8.12.7-r5 (03 Feb 20003) + + 03 Feb 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7-r5.ebuild, + files/digest-sendmail-8.12.7-r5, files/sendmail-r5 : + Changed /usr/sbin/sendmail to sendmail in the stop portion of the + script and added some changes for proper SASL2 usage as suggested + by Alessandro Pisani on bug #14411. + +*sendmail-8.12.7-r4 (26 Jan 2003) + + 26 Jan 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7-r4.ebuild, + files/digest-sendmail-8.12.7-r4, files/sendmail-r4 : + Now the init script sends 'killall ${KILL_OPTS} /usr/sbin/sendmail' + This should stop all running instances? + +*sendmail-8.12.7-r3 (23 Jan 2003) + + 23 Jan 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7-r3.ebuild, + files/digest-sendmail-8.12.7-r3, files/sendmail-r3 : + Changed init to incorporate KILL_OPTS so people can choose their level + of daemon shutdown forcefulness. + +*sendmail-8.12.7-r2 (23 Jan 2003) + + 23 Jan 2003; Nick Hadaway <raker@gentoo.org> files/sendmail-r2, + files/digest-sendmail-8.12.7-r2, sendmail-8.12.7-r2.ebuild : + Version bump to catch new init.d file + + 23 Jan 2003; Nick Hadaway <raker@gentoo.org> files/sendmail-r1 : + Added -9 to the kill statement as suggested on bug #14411 + +*sendmail-8.12.7-r1 (20 Jan 2003) + + 20 Jan 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7-r1.ebuild, + files/digest-sendmail-8.12.7-r1 files/sendmail-r1 : + Updated init.d script and conf file so the clientmqueue flushing + daemon shuts down as well as the main mta daemon. + +*sendmail-8.12.7 (02 Jan 2003) + + 19 Jan 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7.ebuild : + Marked stable for x86. Many important fixes in the source and in + the ebuild. + + 19 Jan 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7.ebuild, + files/sendmail : + Added the clientmqueue daemon as suggested by Andrea Barisani on + bug #13836. Log files are now tagged by sm-mta or sm-cm. Added + an extra check to clear xf* from /var/spool/mqueue on start. + + 02 Jan 2003; Nick Hadaway <raker@gentoo.org> sendmail-8.12.7.ebuild, + files/digest-sendmail-8.12.7 : + Version bump. + + 06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords + +*sendmail-8.12.6-r1 (13 Oct 2002) + + 13 Oct 2002; Daniel Ahlberg <aliz@gentoo.org> : + Security update. Added patch from sendmail to fix smrsh. + +*sendmail-8.12.6 (03 Sep 2002) + + 03 Sep 2002; Nick Hadaway <raker@gentoo.org> sendmail-8.12.6.ebuild, + files/digest-sendmail-8.12.6.ebuild : + Version bump. + +*sendmail-8.12.5 (19 Jul 2002) + + 19 Jul 2002; Grant Goodyear <g2boojum@gentoo.org> ChangeLog : + new version; fixes buffer overflow; thanks to raker! + +*sendmail-8.12.4-r5 (13 Jul 2002) + + 13 Jul 2002; Grant Goodyear <g2boojum@gentoo.org> ChangeLog : + sasl fixes; thanks to Jay 'Eraserhead' Felice + +*sendmail-8.12.4-r4 (12 Jul 2002) + + 12 Jul 2002; Grant Goodyear <g2boojum@gentoo.org> ChangeLog : + fixed permissions (thanks to Harald Kubota for catching the problem), + moved group/passwd stuff to pkg_preinst + +*sendmail-8.12.4-r3 (04 Jul 2002) + + 04 Jul 2002; Grant Goodyear <g2boojum@gentoo.org> ChangeLog : + Some useful fixes; thanks to Alessandro Pisani + + 29 Jun 2002; Seemant Kulleen <seemant@gentoo.org> sendmail-8.12.4-r2.ebuild: + Changed net-misc/hesiod to net-dns/hesiod per bug #4321 by + simons+gentoo@cryp.to (Peter Simons) + + 27 Jun 2002; Grant Goodyear <g2boojum@gentoo.org> sendmail-8.12.4-r2.ebuild: + Make sure that queue directories don't get cleaned away. + + 24 Jun 2002; Thilo Bangert <bangert@gentoo.org> sendmail-8.12.4-r1.ebuild: + added symlink /usr/sbin/sendmail -> /usr/lib/sendmail + + 22 Jun 2002; William McArthur <sandymac@gentoo.org> sendmail-8.12.4-r1.ebuild: + Fixed a type in the use ssl section, "-ssl" should have been "-lssl" + +*sendmail-8.12.4-r1 (12 June 2002) + + 12 June 2002; Grant Goodyear <g2boojum@gentoo.org> : + Added an init script and fixed permissions. It now + works out-of-the-box, at least for sending mail and + locally receiving mail. Currently set up to use it's + own local mailer. + +*sendmail-8.12.4 (10 June 2002) + + 10 June 2002; Grant Goodyear <g2boojum@gentoo.org> : + New package. + diff --git a/mail-mta/sendmail/Manifest b/mail-mta/sendmail/Manifest new file mode 100644 index 000000000000..4a8b8a4ef598 --- /dev/null +++ b/mail-mta/sendmail/Manifest @@ -0,0 +1,21 @@ +MD5 3af9618801cc2a40c05bf7fe7d32dd55 ChangeLog 6607 +MD5 07aa1897fda73805b9d68a2b82090e5f metadata.xml 218 +MD5 7be45ed7ccd3bcede41ca6ca58ae025d sendmail-8.12.10.ebuild 5458 +MD5 bde4378ef82c234b36af06da9cf22aa9 sendmail-8.12.11-r1.ebuild 5481 +MD5 a358bb35f98aa2d7ba3712daedd08621 sendmail-8.12.11.ebuild 5446 +MD5 a7db919664170ceeffbdc766bfc30024 sendmail-8.12.11-r2.ebuild 5451 +MD5 d80daec431bd383e452e69f1f82dbff5 files/digest-sendmail-8.12.10 69 +MD5 cf0c79a7387b7d83db30abc68269f467 files/digest-sendmail-8.12.11 69 +MD5 cf0c79a7387b7d83db30abc68269f467 files/digest-sendmail-8.12.11-r1 69 +MD5 bddac02de95e12dcef98e718ddb5151b files/mailer.conf 999 +MD5 66e8128c1f0dd987c0a78f1ca61ec79d files/sendmail 606 +MD5 074c1f0534fd3bf4e541a70e001bc533 files/sendmail-8.12.2-makemapman.patch 2089 +MD5 4b37f61de2fd8de372a4bd8ab6f92edf files/sendmail-8.12.2-smrsh-paths.patch 5625 +MD5 b412547381b852586d5d4d6ffcd80b4a files/sendmail-8.12.2-unix.patch 395 +MD5 95d58f15432e44c91f8018839f65327c files/sendmail-8.12.6-r1-gentoo.diff 1701 +MD5 6faca1941f582ad8a893b0e4fa4dd757 files/sendmail-procmail.cf 39867 +MD5 03494c29693bd3ceb921bbc398be4cda files/sendmail-procmail.mc 985 +MD5 5476fde164f12162d60ed3cffb0a41e3 files/sendmail.cf 39325 +MD5 57c515d75ee6bcb32fc673141ebc41fa files/sendmail.mc 930 +MD5 bae92533adb7471b10497848f1d32bd9 files/site.config.m4 543 +MD5 cf0c79a7387b7d83db30abc68269f467 files/digest-sendmail-8.12.11-r2 69 diff --git a/mail-mta/sendmail/files/digest-sendmail-8.12.10 b/mail-mta/sendmail/files/digest-sendmail-8.12.10 new file mode 100644 index 000000000000..df52133e1c8f --- /dev/null +++ b/mail-mta/sendmail/files/digest-sendmail-8.12.10 @@ -0,0 +1 @@ +MD5 393f5d09d462f522c8288363870b2b42 sendmail.8.12.10.tar.gz 1892497 diff --git a/mail-mta/sendmail/files/digest-sendmail-8.12.11 b/mail-mta/sendmail/files/digest-sendmail-8.12.11 new file mode 100644 index 000000000000..a08afe72d5e8 --- /dev/null +++ b/mail-mta/sendmail/files/digest-sendmail-8.12.11 @@ -0,0 +1 @@ +MD5 fafda7f8043f0c34b9aa295618aa598c sendmail.8.12.11.tar.gz 1899112 diff --git a/mail-mta/sendmail/files/digest-sendmail-8.12.11-r1 b/mail-mta/sendmail/files/digest-sendmail-8.12.11-r1 new file mode 100644 index 000000000000..a08afe72d5e8 --- /dev/null +++ b/mail-mta/sendmail/files/digest-sendmail-8.12.11-r1 @@ -0,0 +1 @@ +MD5 fafda7f8043f0c34b9aa295618aa598c sendmail.8.12.11.tar.gz 1899112 diff --git a/mail-mta/sendmail/files/digest-sendmail-8.12.11-r2 b/mail-mta/sendmail/files/digest-sendmail-8.12.11-r2 new file mode 100644 index 000000000000..a08afe72d5e8 --- /dev/null +++ b/mail-mta/sendmail/files/digest-sendmail-8.12.11-r2 @@ -0,0 +1 @@ +MD5 fafda7f8043f0c34b9aa295618aa598c sendmail.8.12.11.tar.gz 1899112 diff --git a/mail-mta/sendmail/files/mailer.conf b/mail-mta/sendmail/files/mailer.conf new file mode 100644 index 000000000000..c269540d914c --- /dev/null +++ b/mail-mta/sendmail/files/mailer.conf @@ -0,0 +1,36 @@ +# $OpenBSD: mailer.conf,v 1.3 2000/04/06 18:24:19 millert Exp $ +# +# Execute the "real" sendmail program, named /usr/sbin/sendmail +# +sendmail /usr/sbin/sendmail.sendmail +send-mail /usr/sbin/sendmail.sendmail +mailq /usr/sbin/sendmail.sendmail +newaliases /usr/sbin/sendmail.sendmail +hoststat /usr/sbin/sendmail.sendmail +purgestat /usr/sbin/sendmail.sendmail +# +# Execute the "real" sendmail program from exim, +# named /usr/sbin/exim +# +#sendmail /usr/sbin/exim +#send-mail /usr/sbin/exim +#mailq /usr/sbin/exim +#newaliases /usr/sbin/exim +#rsmtp /usr/sbin/exim +#rmail /usr/sbin/exim +#mail /usr/sbin/exim +# +# Execute the "real" sendmail program from postfix, +# named /usr/sbin/sendmail.postfix +# +#sendmail /usr/sbin/sendmail.postfix +#send-mail /usr/sbin/sendmail.postfix +#mailq /usr/sbin/sendmail.postfix +#newaliases /usr/sbin/sendmail.postfix + +# Execute the "real" sendmail program from ssmtp, +# named /usr/sbin/ssmtp +# +#sendmail /usr/sbin/ssmtp +#mailq /usr/sbin/ssmtp +#newaliases /usr/sbin/ssmtp diff --git a/mail-mta/sendmail/files/sendmail b/mail-mta/sendmail/files/sendmail new file mode 100644 index 000000000000..4ee7cfb9e4af --- /dev/null +++ b/mail-mta/sendmail/files/sendmail @@ -0,0 +1,25 @@ +#!/sbin/runscript +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-mta/sendmail/files/sendmail,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + +depend() { + need net + use logger + provide mta +} + +start() { + ebegin "Starting sendmail" + /usr/bin/newaliases > /dev/null 2>&1 + (cd /var/spool/mqueue; rm -f xf*) + /usr/sbin/sendmail ${SENDMAIL_OPTS} > /dev/null 2>&1 + /usr/sbin/sendmail ${CLIENTMQUEUE_OPTS} > /dev/null 2>&1 + eend $? +} + +stop() { + ebegin "Stopping sendmail" + killall ${KILL_OPTS} sendmail + eend $? +} diff --git a/mail-mta/sendmail/files/sendmail-8.12.2-makemapman.patch b/mail-mta/sendmail/files/sendmail-8.12.2-makemapman.patch new file mode 100644 index 000000000000..b796f795084e --- /dev/null +++ b/mail-mta/sendmail/files/sendmail-8.12.2-makemapman.patch @@ -0,0 +1,67 @@ +--- sendmail-8.12.2/devtools/OS/Linux Tue Feb 19 15:23:34 2002 ++++ sendmail-8.12.2/devtools/OS/Linux Tue Feb 19 15:24:05 2002 +@@ -1,7 +1,7 @@ + # $Id: sendmail-8.12.2-makemapman.patch,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + define(`confDEPEND_TYPE', `CC-M') + define(`confSM_OS_HEADER', `sm_os_linux') +-define(`confMANROOT', `/usr/man/man') ++define(`confMANROOT', `/usr/share/man/man') + define(`confLIBS', `-ldl') + define(`confEBINDIR', `/usr/sbin') + APPENDDEF(`confLIBSEARCH', `crypt nsl') +@@ -11,6 +11,8 @@ + define(`confMTLDOPTS', `-lpthread') + define(`confLDOPTS_SO', `-shared') + define(`confSONAME',`-soname') ++define('confSBINGRP', 'mail') ++define('confSBINMODE', '6755') + + ifelse(confBLDVARIANT, `DEBUG', + dnl Debug build +--- sendmail-8.12.2/makemap/makemap.8 Tue Oct 9 23:23:02 2001 ++++ sendmail-8.12.2/makemap/makemap.8 Tue Feb 19 15:23:34 2002 +@@ -50,12 +50,6 @@ + parameter. + They may be + .TP +-dbm +-DBM format maps. +-This requires the +-ndbm(3) +-library. +-.TP + btree + B-Tree format maps. + This requires the new Berkeley DB +--- sendmail-8.12.2/sendmail/daemon.c Mon Dec 31 14:46:38 2001 ++++ sendmail-8.12.2/sendmail/daemon.c Tue Feb 19 15:23:34 2002 +@@ -3418,7 +3418,7 @@ + + /* get result */ + p = &ibuf[0]; +- nleft = sizeof ibuf - 1; ++ nleft = sizeof(ibuf) - 1; + while ((i = read(s, p, nleft)) > 0) + { + p += i; +--- sendmail-8.12.2/cf/cf/Build Mon Mar 1 21:37:12 1999 ++++ sendmail-8.12.2/cf/cf/Build Tue Feb 19 15:23:34 2002 +@@ -18,7 +18,7 @@ + SMROOT=${SMROOT-../..} + BUILDTOOLS=${BUILDTOOLS-$SMROOT/devtools} + +-M4=`sh $BUILDTOOLS/bin/find_m4.sh` ++M4=/usr/bin/m4 + ret=$? + if [ $ret -ne 0 ] + then +--- sendmail-8.12.2/rmail/rmail.c Tue Sep 18 17:45:29 2001 ++++ sendmail-8.12.2/rmail/rmail.c Tue Feb 19 15:23:34 2002 +@@ -276,7 +276,6 @@ + args[i++] = _PATH_SENDMAIL; /* Build sendmail's argument list. */ + args[i++] = "-G"; /* relay submission */ + args[i++] = "-oee"; /* No errors, just status. */ +- args[i++] = "-odq"; /* Queue it, don't try to deliver. */ + args[i++] = "-oi"; /* Ignore '.' on a line by itself. */ + + /* set from system and protocol used */ diff --git a/mail-mta/sendmail/files/sendmail-8.12.2-smrsh-paths.patch b/mail-mta/sendmail/files/sendmail-8.12.2-smrsh-paths.patch new file mode 100644 index 000000000000..f24f7c9bb151 --- /dev/null +++ b/mail-mta/sendmail/files/sendmail-8.12.2-smrsh-paths.patch @@ -0,0 +1,171 @@ +--- sendmail-8.12.2/smrsh/README Tue Jan 23 19:05:58 2001 ++++ sendmail-8.12.2/smrsh/README Tue Feb 19 16:49:44 2002 +@@ -6,7 +6,7 @@ + intended as a supplement to the CERT advisory CA-93:16.sendmail.vulnerability, + and to the software, smrsh.c, written by Eric Allman. + +- ++* Modified by Red Hat, Inc., to reflect different paths. * + + The smrsh(8) program is intended as a replacement for /bin/sh in the + program mailer definition of sendmail(8). This README file describes +@@ -46,15 +46,15 @@ + + + +-As root, install smrsh in /usr/libexec. Using the Build script: ++As root, install smrsh in /usr/sbin. Using the Build script: + + host.domain# sh Build install + +-For manual installation: install smrsh in the /usr/libexec ++For manual installation: install smrsh in the /usr/sbin + directory, with mode 511. + +- host.domain# mv smrsh /usr/libexec +- host.domain# chmod 511 /usr/libexec/smrsh ++ host.domain# mv smrsh /usr/sbin ++ host.domain# chmod 511 /usr/sbin/smrsh + + + +@@ -76,7 +76,7 @@ + acceptable commands. + + If your platform doesn't have a default SMRSH_CMDDIR setting, you will +-next need to create the directory /usr/adm/sm.bin and populate ++next need to create the directory /etc/smrsh and populate + it with the programs that your site feels are allowable for sendmail + to execute. This directory is explicitly specified in the source + code for smrsh, so changing this directory must be accompanied with +@@ -85,22 +85,22 @@ + + You will have to be root to make these modifications. + +-After creating the /usr/adm/sm.bin directory, either copy the programs ++After creating the /etc/smrsh directory, either copy the programs + to the directory, or establish links to the allowable programs from +-/usr/adm/sm.bin. Change the file permissions, so that these programs ++/etc/smrsh. Change the file permissions, so that these programs + can not be modified by non-root users. If you use links, you should + ensure that the target programs are not modifiable. + + To allow the popular vacation(1) program by creating a link in the +-/usr/adm/sm.bin directory, you should: ++/etc/smrsh directory, you should: + +- host.domain# cd /usr/adm/sm.bin ++ host.domain# cd /etc/smrsh + host.domain# ln -s /usr/ucb/vacation vacation + + + + +-After populating the /usr/adm/sm.bin directory, you can now configure ++After populating the /etc/smrsh directory, you can now configure + sendmail to use the restricted shell. Save the current sendmail.cf + file prior to modifying it, as a prudent precaution. + +@@ -115,7 +115,7 @@ + + In order to configure sendmail to use smrsh, you must modify the Mprog + definition in the sendmail.cf file, by replacing the /bin/sh specification +-with /usr/libexec/smrsh. ++with /usr/sbin/smrsh. + + As an example: + +@@ -123,14 +123,14 @@ + Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=20, A=sh -c $u + + which should be changed to: +-Mprog, P=/usr/libexec/smrsh, F=lsDFMeuP, S=10, R=20, A=sh -c $u +- ^^^^^^^^^^^^^^^^^^ ++Mprog, P=/usr/sbin/smrsh, F=lsDFMeuP, S=10, R=20, A=sh -c $u ++ ^^^^^^^^^^^^^^^^ + + A more generic line may be: + Mprog, P=/bin/sh, F=lsDFM, A=sh -c $u + + and should be changed to; +-Mprog, P=/usr/libexec/smrsh, F=lsDFM, A=sh -c $u ++Mprog, P=/usr/sbin/smrsh, F=lsDFM, A=sh -c $u + + + After modifying the Mprog definition in the sendmail.cf file, if a frozen +@@ -141,7 +141,7 @@ + a search of the strings(1) output of the sendmail binary. + + In order to create a new frozen configuration, if it is required: +- host.domain# /usr/lib/sendmail -bz ++ host.domain# /usr/sbin/sendmail -bz + + Now re-start the sendmail process. An example of how to do this on + a typical system follows: +--- sendmail-8.12.2/smrsh/smrsh.8 Tue Jan 23 19:40:47 2001 ++++ sendmail-8.12.2/smrsh/smrsh.8 Tue Feb 19 16:50:25 2002 +@@ -39,7 +39,7 @@ + .I smrsh + limits programs to be in a single directory, + by default +-/usr/adm/sm.bin, ++/etc/smrsh, + allowing the system administrator to choose the set of acceptable commands, + and to the shell builtin commands ``exec'', ``exit'', and ``echo''. + It also rejects any commands with the characters +@@ -56,10 +56,10 @@ + and + ``vacation'' + all actually forward to +-``/usr/adm/sm.bin/vacation''. ++``/etc/smrsh/vacation''. + .PP + System administrators should be conservative about populating +-the sm.bin directory. ++the /etc/smrsh directory. + Reasonable additions are + .IR vacation (1), + .IR procmail (1), +@@ -69,20 +69,12 @@ + (such as + .IR perl (1)) + in the +-sm.bin ++/etc/smrsh + directory. + Note that this does not restrict the use of shell or perl scripts + in the sm.bin directory (using the ``#!'' syntax); + it simply disallows execution of arbitrary programs. +-.SH COMPILATION +-Compilation should be trivial on most systems. +-You may need to use \-DSMRSH_PATH=\e"\fIpath\fP\e" +-to adjust the default search path +-(defaults to ``/bin:/usr/bin:/usr/ucb'') +-and/or \-DSMRSH_CMDDIR=\e"\fIdir\fP\e" +-to change the default program directory +-(defaults to ``/usr/adm/sm.bin''). + .SH FILES +-/usr/adm/sm.bin \- directory for restricted programs ++/etc/smrsh \- directory for restricted programs + .SH SEE ALSO + sendmail(8) +--- sendmail-8.12.2/smrsh/smrsh.c Tue Sep 11 00:05:22 2001 ++++ sendmail-8.12.2/smrsh/smrsh.c Tue Feb 19 16:51:05 2002 +@@ -74,7 +74,7 @@ + # ifdef SMRSH_CMDDIR + # define CMDDIR SMRSH_CMDDIR + # else /* SMRSH_CMDDIR */ +-# define CMDDIR "/usr/adm/sm.bin" ++# define CMDDIR "/etc/smrsh" + # endif /* SMRSH_CMDDIR */ + #endif /* ! CMDDIR */ + +@@ -86,7 +86,7 @@ + # ifdef SMRSH_PATH + # define PATH SMRSH_PATH + # else /* SMRSH_PATH */ +-# define PATH "/bin:/usr/bin:/usr/ucb" ++# define PATH "/bin:/usr/bin" + # endif /* SMRSH_PATH */ + #endif /* ! PATH */ + diff --git a/mail-mta/sendmail/files/sendmail-8.12.2-unix.patch b/mail-mta/sendmail/files/sendmail-8.12.2-unix.patch new file mode 100644 index 000000000000..654cf8486b48 --- /dev/null +++ b/mail-mta/sendmail/files/sendmail-8.12.2-unix.patch @@ -0,0 +1,11 @@ +--- sendmail-8.12.2/cf/m4/cfhead.m4.unix Sun Mar 10 08:29:37 2002 ++++ sendmail-8.12.2/cf/m4/cfhead.m4 Sun Mar 10 08:29:48 2002 +@@ -16,7 +16,7 @@ + ##### + ##### SENDMAIL CONFIGURATION FILE + ##### +-ifdef(`unix', `dnl ++ifdef(`__unix__', `dnl + ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl + syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl + include(TEMPFILE)dnl diff --git a/mail-mta/sendmail/files/sendmail-8.12.6-r1-gentoo.diff b/mail-mta/sendmail/files/sendmail-8.12.6-r1-gentoo.diff new file mode 100644 index 000000000000..ae6f94c8570e --- /dev/null +++ b/mail-mta/sendmail/files/sendmail-8.12.6-r1-gentoo.diff @@ -0,0 +1,63 @@ +Index: smrsh.c +=================================================================== +RCS file: /cvs/smrsh/smrsh.c,v +retrieving revision 8.58 +diff -u -r8.58 smrsh.c +--- smrsh.c 25 May 2002 02:41:31 -0000 8.58 ++++ smrsh.c 24 Sep 2002 23:58:16 -0000 +@@ -57,6 +57,8 @@ + #include <sm/limits.h> + #include <sm/string.h> + #include <sys/file.h> ++#include <sys/types.h> ++#include <sys/stat.h> + #include <string.h> + #include <ctype.h> + #include <errno.h> +@@ -145,6 +147,7 @@ + char *newenv[2]; + char pathbuf[1000]; + char specialbuf[32]; ++ struct stat st; + + #ifndef DEBUG + # ifndef LOG_MAIL +@@ -302,6 +305,38 @@ + (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, + "Trying %s\n", cmdbuf); + #endif /* DEBUG */ ++ if (stat(cmdbuf, &st) < 0) ++ { ++ /* can't stat it */ ++ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, ++ "%s: %s not available for sendmail programs (stat failed)\n", ++ prg, cmd); ++ if (p != NULL) ++ *p = ' '; ++#ifndef DEBUG ++ syslog(LOG_CRIT, "uid %d: attempt to use %s (stat failed)", ++ (int) getuid(), cmd); ++#endif /* ! DEBUG */ ++ exit(EX_UNAVAILABLE); ++ } ++ if (!S_ISREG(st.st_mode) ++#ifdef S_ISLNK ++ && !S_ISLNK(st.st_mode) ++#endif /* S_ISLNK */ ++ ) ++ { ++ /* can't stat it */ ++ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, ++ "%s: %s not available for sendmail programs (not a file)\n", ++ prg, cmd); ++ if (p != NULL) ++ *p = ' '; ++#ifndef DEBUG ++ syslog(LOG_CRIT, "uid %d: attempt to use %s (not a file)", ++ (int) getuid(), cmd); ++#endif /* ! DEBUG */ ++ exit(EX_UNAVAILABLE); ++ } + if (access(cmdbuf, X_OK) < 0) + { + /* oops.... crack attack possiblity */ diff --git a/mail-mta/sendmail/files/sendmail-procmail.cf b/mail-mta/sendmail/files/sendmail-procmail.cf new file mode 100644 index 000000000000..e5f2ebd7bf91 --- /dev/null +++ b/mail-mta/sendmail/files/sendmail-procmail.cf @@ -0,0 +1,1397 @@ +# +# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers. +# All rights reserved. +# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. +# Copyright (c) 1988, 1993 +# The Regents of the University of California. All rights reserved. +# +# By using this file, you agree to the terms and conditions set +# forth in the LICENSE file which can be found at the top level of +# the sendmail distribution. +# +# + +###################################################################### +###################################################################### +##### +##### SENDMAIL CONFIGURATION FILE +##### +##### built by root@phaze on Thu Apr 24 15:55:06 EDT 2003 +##### in /usr/share/sendmail-cf/cf +##### using ../ as configuration include directory +##### +###################################################################### +##### +##### DO NOT EDIT THIS FILE! Only edit the source .mc file. +##### +###################################################################### +###################################################################### + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +# level 10 config file format +V10/Berkeley + +# override file safeties - setting this option compromises system security, +# addressing the actual file configuration problem is preferred +# need to set this before any file actions are encountered in the cf file +#O DontBlameSendmail=safe + +# default LDAP map specification +# need to set this now before any LDAP maps are defined +#O LDAPDefaultSpec=-h localhost + +################## +# local info # +################## + +# my LDAP cluster +# need to set this before any LDAP lookups are done (including classes) +#D{sendmailMTACluster}$m + +Cwlocalhost +# file containing names of hosts for which we receive email +Fw/etc/mail/local-host-names + +# my official domain name +# ... define this only if sendmail cannot automatically determine your domain +#Dj$w.Foo.COM + +CP. + +# "Smart" relay host (may be null) +DS + + +# operators that cannot be in local usernames (i.e., network indicators) +CO @ % ! + +# a class with just dot (for identifying canonical names) +C.. + +# a class with just a left bracket (for identifying domain literals) +C[[ + + +# Resolve map (to check if a host exists in check_mail) +Kresolve host -a<OKR> -T<TEMP> +C{ResOk}OKR + + +# Hosts for which relaying is permitted ($=R) +FR-o /etc/mail/relay-domains + +# arithmetic map +Karith arith + + + + + +# dequoting map +Kdequote dequote + +# class E: names that should be exposed as from this host, even if we masquerade +# class L: names that should be delivered locally, even if we have a relay +# class M: domains that should be converted to $M +# class N: domains that should not be converted to $M +#CL root +C{E}root + + + +# my name for error messages +DnMAILER-DAEMON + + +CPREDIRECT + +# Configuration version number +DZ8.12.9 + + +############### +# Options # +############### + +# strip message body to 7 bits on input? +O SevenBitInput=False + +# 8-bit data handling +#O EightBitMode=pass8 + +# wait for alias file rebuild (default units: minutes) +O AliasWait=10 + +# location of alias file +O AliasFile=/etc/mail/aliases + +# minimum number of free blocks on filesystem +O MinFreeBlocks=100 + +# maximum message size +#O MaxMessageSize=1000000 + +# substitution for space (blank) characters +O BlankSub=. + +# avoid connecting to "expensive" mailers on initial submission? +O HoldExpensive=False + +# checkpoint queue runs after every N successful deliveries +#O CheckpointInterval=10 + +# default delivery mode +O DeliveryMode=background + +# error message header/file +#O ErrorHeader=/etc/mail/error-header + +# error mode +#O ErrorMode=print + +# save Unix-style "From_" lines at top of header? +#O SaveFromLine=False + +# queue file mode (qf files) +#O QueueFileMode=0600 + +# temporary file mode +O TempFileMode=0600 + +# match recipients against GECOS field? +#O MatchGECOS=False + +# maximum hop count +#O MaxHopCount=25 + +# location of help file +O HelpFile=/etc/mail/helpfile + +# ignore dots as terminators in incoming messages? +#O IgnoreDots=False + +# name resolver options +#O ResolverOptions=+AAONLY + +# deliver MIME-encapsulated error messages? +O SendMimeErrors=True + +# Forward file search path +O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward + +# open connection cache size +O ConnectionCacheSize=2 + +# open connection cache timeout +O ConnectionCacheTimeout=5m + +# persistent host status directory +#O HostStatusDirectory=.hoststat + +# single thread deliveries (requires HostStatusDirectory)? +#O SingleThreadDelivery=False + +# use Errors-To: header? +O UseErrorsTo=False + +# log level +O LogLevel=9 + +# send to me too, even in an alias expansion? +#O MeToo=True + +# verify RHS in newaliases? +O CheckAliases=False + +# default messages to old style headers if no special punctuation? +O OldStyleHeaders=True + +# SMTP daemon options +O DaemonPortOptions=Name=MTA +O DaemonPortOptions=Port=587, Name=MSA, M=E + +# SMTP client options +#O ClientPortOptions=Family=inet, Address=0.0.0.0 + +# Modifiers to define {daemon_flags} for direct submissions +#O DirectSubmissionModifiers + +# Use as mail submission program? See sendmail/SECURITY +#O UseMSP + +# privacy flags +O PrivacyOptions=authwarnings + +# who (if anyone) should get extra copies of error messages +#O PostmasterCopy=Postmaster + +# slope of queue-only function +#O QueueFactor=600000 + +# limit on number of concurrent queue runners +#O MaxQueueChildren + +# maximum number of queue-runners per queue-grouping with multiple queues +#O MaxRunnersPerQueue=1 + +# priority of queue runners (nice(3)) +#O NiceQueueRun + +# shall we sort the queue by hostname first? +#O QueueSortOrder=priority + +# minimum time in queue before retry +#O MinQueueAge=30m + +# how many jobs can you process in the queue? +#O MaxQueueRunSize=10000 + +# perform initial split of envelope without checking MX records +#O FastSplit=1 + +# queue directory +O QueueDirectory=/var/spool/mqueue + +# key for shared memory; 0 to turn off +#O SharedMemoryKey=0 + + + +# timeouts (many of these) +#O Timeout.initial=5m +#O Timeout.connect=5m +#O Timeout.aconnect=0s +#O Timeout.iconnect=5m +#O Timeout.helo=5m +#O Timeout.mail=10m +#O Timeout.rcpt=1h +#O Timeout.datainit=5m +#O Timeout.datablock=1h +#O Timeout.datafinal=1h +#O Timeout.rset=5m +#O Timeout.quit=2m +#O Timeout.misc=2m +#O Timeout.command=1h +#O Timeout.ident=5s +#O Timeout.fileopen=60s +#O Timeout.control=2m +O Timeout.queuereturn=5d +#O Timeout.queuereturn.normal=5d +#O Timeout.queuereturn.urgent=2d +#O Timeout.queuereturn.non-urgent=7d + +O Timeout.queuewarn=4h +#O Timeout.queuewarn.normal=4h +#O Timeout.queuewarn.urgent=1h +#O Timeout.queuewarn.non-urgent=12h + +#O Timeout.hoststatus=30m +#O Timeout.resolver.retrans=5s +#O Timeout.resolver.retrans.first=5s +#O Timeout.resolver.retrans.normal=5s +#O Timeout.resolver.retry=4 +#O Timeout.resolver.retry.first=4 +#O Timeout.resolver.retry.normal=4 +#O Timeout.lhlo=2m +#O Timeout.auth=10m +#O Timeout.starttls=1h + +# time for DeliverBy; extension disabled if less than 0 +#O DeliverByMin=0 + +# should we not prune routes in route-addr syntax addresses? +#O DontPruneRoutes=False + +# queue up everything before forking? +O SuperSafe=True + +# status file +O StatusFile=/etc/mail/statistics + +# time zone handling: +# if undefined, use system default +# if defined but null, use TZ envariable passed in +# if defined and non-null, use that info +#O TimeZoneSpec= + +# default UID (can be username or userid:groupid) +#O DefaultUser=mailnull + +# list of locations of user database file (null means no lookup) +#O UserDatabaseSpec=/etc/mail/userdb + +# fallback MX host +#O FallbackMXhost=fall.back.host.net + +# if we are the best MX host for a site, try it directly instead of config err +#O TryNullMXList=False + +# load average at which we just queue messages +#O QueueLA=8 + +# load average at which we refuse connections +#O RefuseLA=12 + +# load average at which we delay connections; 0 means no limit +#O DelayLA=0 + +# maximum number of children we allow at one time +#O MaxDaemonChildren=0 + +# maximum number of new connections per second +#O ConnectionRateThrottle=0 + +# work recipient factor +#O RecipientFactor=30000 + +# deliver each queued job in a separate process? +#O ForkEachJob=False + +# work class factor +#O ClassFactor=1800 + +# work time factor +#O RetryFactor=90000 + +# default character set +#O DefaultCharSet=iso-8859-1 + +# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others) +#O ServiceSwitchFile=/etc/mail/service.switch + +# hosts file (normally /etc/hosts) +#O HostsFile=/etc/hosts + +# dialup line delay on connection failure +#O DialDelay=10s + +# action to take if there are no recipients in the message +#O NoRecipientAction=add-to-undisclosed + +# chrooted environment for writing to files +#O SafeFileEnvironment=/arch + +# are colons OK in addresses? +#O ColonOkInAddr=True + +# shall I avoid expanding CNAMEs (violates protocols)? +#O DontExpandCnames=False + +# SMTP initial login message (old $e macro) +O SmtpGreetingMessage=$j Sendmail $v/$Z; $b + +# UNIX initial From header format (old $l macro) +O UnixFromLine=From $g $d + +# From: lines that have embedded newlines are unwrapped onto one line +#O SingleLineFromHeader=False + +# Allow HELO SMTP command that does not include a host name +#O AllowBogusHELO=False + +# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) +#O MustQuoteChars=. + +# delimiter (operator) characters (old $o macro) +O OperatorChars=.:%@!^/[]+ + +# shall I avoid calling initgroups(3) because of high NIS costs? +#O DontInitGroups=False + +# are group-writable :include: and .forward files (un)trustworthy? +# True (the default) means they are not trustworthy. +#O UnsafeGroupWrites=True + + +# where do errors that occur when sending errors get sent? +#O DoubleBounceAddress=postmaster + +# where to save bounces if all else fails +#O DeadLetterDrop=/var/tmp/dead.letter + +# what user id do we assume for the majority of the processing? +#O RunAsUser=sendmail + +# maximum number of recipients per SMTP envelope +#O MaxRecipientsPerMessage=100 + +# limit the rate recipients per SMTP envelope are accepted +# once the threshold number of recipients have been rejected +#O BadRcptThrottle=20 + +# shall we get local names from our installed interfaces? +#O DontProbeInterfaces=False + +# Return-Receipt-To: header implies DSN request +#O RrtImpliesDsn=False + +# override connection address (for testing) +#O ConnectOnlyTo=0.0.0.0 + +# Trusted user for file ownership and starting the daemon +#O TrustedUser=root + +# Control socket for daemon management +#O ControlSocketName=/var/spool/mqueue/.control + +# Maximum MIME header length to protect MUAs +#O MaxMimeHeaderLength=2048/1024 + +# Maximum length of the sum of all headers +O MaxHeadersLength=32768 + +# Maximum depth of alias recursion +#O MaxAliasRecursion=10 + +# location of pid file +#O PidFile=/var/run/sendmail.pid + +# Prefix string for the process title shown on 'ps' listings +#O ProcessTitlePrefix=prefix + +# Data file (df) memory-buffer file maximum size +#O DataFileBufferSize=4096 + +# Transcript file (xf) memory-buffer file maximum size +#O XscriptFileBufferSize=4096 + +# lookup type to find information about local mailboxes +#O MailboxDatabase=pw + +# list of authentication mechanisms +#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 + +# default authentication information for outgoing connections +#O DefaultAuthInfo=/etc/mail/default-auth-info + +# SMTP AUTH flags +#O AuthOptions + +# SMTP AUTH maximum encryption strength +#O AuthMaxBits + +# SMTP STARTTLS server options +#O TLSSrvOptions + +# Input mail filters +#O InputMailFilters + + +# CA directory +#O CACertPath +# CA file +#O CACertFile +# Server Cert +#O ServerCertFile +# Server private key +#O ServerKeyFile +# Client Cert +#O ClientCertFile +# Client private key +#O ClientKeyFile +# DHParameters (only required if DSA/DH is used) +#O DHParameters +# Random data source (required for systems without /dev/urandom under OpenSSL) +#O RandFile + +############################ +# QUEUE GROUP DEFINITIONS # +############################ + + +########################### +# Message precedences # +########################### + +Pfirst-class=0 +Pspecial-delivery=100 +Plist=-30 +Pbulk=-60 +Pjunk=-100 + +##################### +# Trusted users # +##################### + +# this is equivalent to setting class "t" +#Ft/etc/mail/trusted-users +Troot +Tdaemon +Tuucp + +######################### +# Format of headers # +######################### + +H?P?Return-Path: <$g> +HReceived: $?sfrom $s $.$?_($?s$|from $.$_) + $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.) + $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version} + (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u + for $u; $|; + $.$b +H?D?Resent-Date: $a +H?D?Date: $a +H?F?Resent-From: $?x$x <$g>$|$g$. +H?F?From: $?x$x <$g>$|$g$. +H?x?Full-Name: $x +# HPosted-Date: $a +# H?l?Received-Date: $b +H?M?Resent-Message-Id: <$t.$i@$j> +H?M?Message-Id: <$t.$i@$j> + +# +###################################################################### +###################################################################### +##### +##### REWRITING RULES +##### +###################################################################### +###################################################################### + +############################################ +### Ruleset 3 -- Name Canonicalization ### +############################################ +Scanonify=3 + +# handle null input (translate to <@> special case) +R$@ $@ <@> + +# strip group: syntax (not inside angle brackets!) and trailing semicolon +R$* $: $1 <@> mark addresses +R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> +R@ $* <@> $: @ $1 unmark @host:... +R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr +R$* :: $* <@> $: $1 :: $2 unmark node::addr +R:include: $* <@> $: :include: $1 unmark :include:... +R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon +R$* : $* <@> $: $2 strip colon if marked +R$* <@> $: $1 unmark +R$* ; $1 strip trailing semi +R$* < $+ :; > $* $@ $2 :; <@> catch <list:;> +R$* < $* ; > $1 < $2 > bogus bracketed semi + +# null input now results from list:; syntax +R$@ $@ :; <@> + +# strip angle brackets -- note RFC733 heuristic to get innermost item +R$* $: < $1 > housekeeping <> +R$+ < $* > < $2 > strip excess on left +R< $* > $+ < $1 > strip excess on right +R<> $@ < @ > MAIL FROM:<> case +R< $+ > $: $1 remove housekeeping <> + +# strip route address <@a,@b,@c:user@d> -> <user@d> +R@ $+ , $+ $2 +R@ [ $* ] : $+ $2 +R@ $+ : $+ $2 + +# find focus for list syntax +R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax +R $+ : $* ; $@ $1 : $2; list syntax + +# find focus for @ syntax addresses +R$+ @ $+ $: $1 < @ $2 > focus on domain +R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right +R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical + + +# convert old-style addresses to a domain-based address +R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names +R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps +R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains + +# if we have % signs, take the rightmost one +R$* % $* $1 @ $2 First make them all @s. +R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. +R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish + +# else we must be a local name +R$* $@ $>Canonify2 $1 + + +################################################ +### Ruleset 96 -- bottom half of ruleset 3 ### +################################################ + +SCanonify2=96 + +# handle special cases for local names +R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all +R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain +R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain + +# check for IPv4/IPv6 domain literal +R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr] +R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal +R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr + + + + + +# if really UUCP, handle it immediately + +# try UUCP traffic as a local address +R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 +R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3 + +# hostnames ending in class P are always canonical +R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 +R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4 +R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 +R$* CC $* $| $* $: $3 +# pass to name server to make hostname canonical +R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4 +R$* $| $* $: $2 + +# local host aliases and pseudo-domains are always canonical +R$* < @ $=w > $* $: $1 < @ $2 . > $3 +R$* < @ $=M > $* $: $1 < @ $2 . > $3 +R$* < @ $* . . > $* $1 < @ $2 . > $3 + + +################################################## +### Ruleset 4 -- Final Output Post-rewriting ### +################################################## +Sfinal=4 + +R$+ :; <@> $@ $1 : handle <list:;> +R$* <@> $@ handle <> and list:; + +# strip trailing dot off possibly canonical name +R$* < @ $+ . > $* $1 < @ $2 > $3 + +# eliminate internal code +R$* < @ *LOCAL* > $* $1 < @ $j > $2 + +# externalize local domain info +R$* < $+ > $* $1 $2 $3 defocus +R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical +R@ $* $@ @ $1 ... and exit + +# UUCP must always be presented in old form +R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u + +# delete duplicate local names +R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host + + + +############################################################## +### Ruleset 97 -- recanonicalize and call ruleset zero ### +### (used for recursive calls) ### +############################################################## + +SRecurse=97 +R$* $: $>canonify $1 +R$* $@ $>parse $1 + + +###################################### +### Ruleset 0 -- Parse Address ### +###################################### + +Sparse=0 + +R$* $: $>Parse0 $1 initial parsing +R<@> $#local $: <@> special case error msgs +R$* $: $>ParseLocal $1 handle local hacks +R$* $: $>Parse1 $1 final parsing + +# +# Parse0 -- do initial syntax checking and eliminate local addresses. +# This should either return with the (possibly modified) input +# or return with a #error mailer. It should not return with a +# #mailer other than the #error mailer. +# + +SParse0 +R<@> $@ <@> special case error msgs +R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses" +R@ <@ $* > < @ $1 > catch "@@host" bogosity +R<@ $+> $#error $@ 5.1.3 $: "553 User address required" +R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required" +R$* $: <> $1 +R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4 +R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4 +R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address" +R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3 +R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part" +R<> $* $1 +R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" +R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" +R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address" +R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address" +R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address" + + +# now delete the local info -- note $=O to find characters that cause forwarding +R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user +R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ... +R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here +R< @ $+ > $#error $@ 5.1.3 $: "553 User address required" +R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ... +R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo" +R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required" +R$* $=O $* < @ *LOCAL* > + $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ... +R$* < @ *LOCAL* > $: $1 + +# +# Parse1 -- the bottom half of ruleset 0. +# + +SParse1 + +# handle numeric address spec +R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec +R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path +R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send +R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer +R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer + + +# short circuit local delivery so forwarded email works + + +R$=L < @ $=w . > $#local $: @ $1 special local names +R$+ < @ $=w . > $#local $: $1 regular local name + + +# resolve remotely connected UUCP links (if any) + +# resolve fake top level domains by forwarding to other hosts + + + +# pass names that still have a host to a smarthost (if defined) +R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name + +# deal with other remote names +R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain + +# handle locally delivered names +R$=L $#local $: @ $1 special local names +R$+ $#local $: $1 regular local names + +########################################################################### +### Ruleset 5 -- special rewriting after aliases have been expanded ### +########################################################################### + +SLocal_localaddr +Slocaladdr=5 +R$+ $: $1 $| $>"Local_localaddr" $1 +R$+ $| $#ok $@ $1 no change +R$+ $| $#$* $#$2 +R$+ $| $* $: $1 + + + + +# deal with plussed users so aliases work nicely +R$+ + * $#local $@ $&h $: $1 +R$+ + $* $#local $@ + $2 $: $1 + * + +# prepend an empty "forward host" on the front +R$+ $: <> $1 + + + +R< > $+ $: < > < $1 <> $&h > nope, restore +detail + +R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail +R< > < $+ <> $* > $: < > < $1 > else discard +R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part +R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra + +R< > < $+ > $@ $1 no +detail +R$+ $: $1 <> $&h add +detail back in + +R$+ <> + $* $: $1 + $2 check whether +detail +R$+ <> $* $: $1 else discard +R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension +R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension + +R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 > + +R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 > + + +################################################################### +### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ### +################################################################### + +SMailerToTriple=95 +R< > $* $@ $1 strip off null relay +R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 +R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2 +R< local : $* > $* $>CanonLocal < $1 > $2 +R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user +R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer +R< $=w > $* $@ $2 delete local host +R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer + +################################################################### +### Ruleset CanonLocal -- canonify local: syntax ### +################################################################### + +SCanonLocal +# strip local host from routed addresses +R< $* > < @ $+ > : $+ $@ $>Recurse $3 +R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4 + +# strip trailing dot from any host name that may appear +R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 > + +# handle local: syntax -- use old user, either with or without host +R< > $* < @ $* > $* $#local $@ $1@$2 $: $1 +R< > $+ $#local $@ $1 $: $1 + +# handle local:user@host syntax -- ignore host part +R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 > + +# handle local:user syntax +R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1 +R< $+ > $* $#local $@ $2 $: $1 + +################################################################### +### Ruleset 93 -- convert header names to masqueraded form ### +################################################################### + +SMasqHdr=93 + + +# do not masquerade anything in class N +R$* < @ $* $=N . > $@ $1 < @ $2 $3 . > + +R$* < @ *LOCAL* > $@ $1 < @ $j . > + +################################################################### +### Ruleset 94 -- convert envelope names to masqueraded form ### +################################################################### + +SMasqEnv=94 +R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 + +################################################################### +### Ruleset 98 -- local part of ruleset zero (can be null) ### +################################################################### + +SParseLocal=98 + +# addresses sent to foo@host.REDIRECT will give a 551 error code +R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} > +R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. > +R$* < @ $+ .REDIRECT. > < $- > $#error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2> + + + + + +###################################################################### +### CanonAddr -- Convert an address into a standard form for +### relay checking. Route address syntax is +### crudely converted into a %-hack address. +### +### Parameters: +### $1 -- full recipient address +### +### Returns: +### parsed address, not in source route form +###################################################################### + +SCanonAddr +R$* $: $>Parse0 $>canonify $1 make domain canonical + + +###################################################################### +### ParseRecipient -- Strip off hosts in $=R as well as possibly +### $* $=m or the access database. +### Check user portion for host separators. +### +### Parameters: +### $1 -- full recipient address +### +### Returns: +### parsed, non-local-relaying address +###################################################################### + +SParseRecipient +R$* $: <?> $>CanonAddr $1 +R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots +R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part + +# if no $=O character, no host in the user portion, we are done +R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4> +R<?> $* $@ $1 + + +R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 > + + + +R<RELAY> $* < @ $* > $@ $>ParseRecipient $1 +R<$+> $* $@ $2 + + +###################################################################### +### check_relay -- check hostname/address on SMTP startup +###################################################################### + +SLocal_check_relay +Scheck_relay +R$* $: $1 $| $>"Local_check_relay" $1 +R$* $| $* $| $#$* $#$3 +R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2 + +SBasic_check_relay +# check for deferred delivery mode +R$* $: < $&{deliveryMode} > $1 +R< d > $* $@ deferred +R< $* > $* $: $2 + + + + +###################################################################### +### check_mail -- check SMTP `MAIL FROM:' command argument +###################################################################### + +SLocal_check_mail +Scheck_mail +R$* $: $1 $| $>"Local_check_mail" $1 +R$* $| $#$* $#$2 +R$* $| $* $@ $>"Basic_check_mail" $1 + +SBasic_check_mail +# check for deferred delivery mode +R$* $: < $&{deliveryMode} > $1 +R< d > $* $@ deferred +R< $* > $* $: $2 + +# authenticated? +R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL +R$* $| $#$+ $#$2 +R$* $| $* $: $1 + +R<> $@ <OK> we MUST accept <> (RFC 1123) +R$+ $: <?> $1 +R<?><$+> $: <@> <$1> +R<?>$+ $: <@> <$1> +R$* $: $&{daemon_flags} $| $1 +R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 > +R$* u $* $| <@> < $* > $: <?> < $3 > +R$* $| $* $: $2 +# handle case of @localhost on address +R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost > +R<@> < $* @ [127.0.0.1] > + $: < ? $&{client_name} > < $1 @ [127.0.0.1] > +R<@> < $* @ localhost.$m > + $: < ? $&{client_name} > < $1 @ localhost.$m > +R<@> < $* @ localhost.UUCP > + $: < ? $&{client_name} > < $1 @ localhost.UUCP > +R<@> $* $: $1 no localhost as domain +R<? $=w> $* $: $2 local client: ok +R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address" +R<?> $* $: $1 +R$* $: <?> $>CanonAddr $1 canonify sender address and mark it +R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots +# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) +R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 > +R<?> $* < @ $j > $: <OKR> $1 < @ $j > +R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > +R<? $* <$->> $* < @ $+ > + $: <$2> $3 < @ $4 > + + +# handle case of no @domain on address +R<?> $* $: $&{daemon_flags} $| <?> $1 +R$* u $* $| <?> $* $: <OKR> $3 +R$* $| $* $: $2 +R<?> $* $: < ? $&{client_addr} > $1 +R<?> $* $@ <OKR> ...local unqualed ok +R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f + ...remote is not +# check results +R<?> $* $: @ $1 mark address: nothing known about it +R<$={ResOk}> $* $@ <OKR> domain ok: stop +R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve" +R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist" + +###################################################################### +### check_rcpt -- check SMTP `RCPT TO:' command argument +###################################################################### + +SLocal_check_rcpt +Scheck_rcpt +R$* $: $1 $| $>"Local_check_rcpt" $1 +R$* $| $#$* $#$2 +R$* $| $* $@ $>"Basic_check_rcpt" $1 + +SBasic_check_rcpt +# empty address? +R<> $#error $@ nouser $: "553 User address required" +R$@ $#error $@ nouser $: "553 User address required" +# check for deferred delivery mode +R$* $: < $&{deliveryMode} > $1 +R< d > $* $@ deferred +R< $* > $* $: $2 + + +###################################################################### +R$* $: $1 $| @ $>"Rcpt_ok" $1 +R$* $| @ $#TEMP $+ $: $1 $| T $2 +R$* $| @ $#$* $#$2 +R$* $| @ RELAY $@ RELAY +R$* $| @ $* $: O $| $>"Relay_ok" $1 +R$* $| T $+ $: T $2 $| $>"Relay_ok" $1 +R$* $| $#TEMP $+ $#error $2 +R$* $| $#$* $#$2 +R$* $| RELAY $@ RELAY +R T $+ $| $* $#error $1 +# anything else is bogus +R$* $#error $@ 5.7.1 $: "550 Relaying denied" + + +###################################################################### +### Rcpt_ok: is the recipient ok? +###################################################################### +SRcpt_ok +R$* $: $>ParseRecipient $1 strip relayable hosts + + + + +# authenticated via TLS? +R$* $: $1 $| $>RelayTLS client authenticated? +R$* $| $# $+ $# $2 error/ok? +R$* $| $* $: $1 no + +R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type} +R$* $| $# $* $# $2 +R$* $| NO $: $1 +R$* $| $* $: $1 $| $&{auth_type} +R$* $| $: $1 +R$* $| $={TrustAuthMech} $# RELAY +R$* $| $* $: $1 +# anything terminating locally is ok +R$+ < @ $=w > $@ RELAY +R$+ < @ $* $=R > $@ RELAY + + + +# check for local user (i.e. unqualified address) +R$* $: <?> $1 +R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 > +# local user is ok +R<?> $+ $@ RELAY +R<$+> $* $: $2 + +###################################################################### +### Relay_ok: is the relay/sender ok? +###################################################################### +SRelay_ok +# anything originating locally is ok +# check IP address +R$* $: $&{client_addr} +R$@ $@ RELAY originated locally +R0 $@ RELAY originated locally +R127.0.0.1 $@ RELAY originated locally +RIPv6:::1 $@ RELAY originated locally +R$=R $* $@ RELAY relayable IP address +R$* $: [ $1 ] put brackets around it... +R$=w $@ RELAY ... and see if it is local + + +# check client name: first: did it resolve? +R$* $: < $&{client_resolve} > +R<TEMP> $#TEMP $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} +R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} +R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} +R$* $: <@> $&{client_name} +# pass to name server to make hostname canonical +R<@> $* $=P $:<?> $1 $2 +R<@> $+ $:<?> $[ $1 $] +R$* . $1 strip trailing dots +R<?> $=w $@ RELAY +R<?> $* $=R $@ RELAY + + + + +###################################################################### +### trust_auth: is user trusted to authenticate as someone else? +### +### Parameters: +### $1: AUTH= parameter from MAIL command +###################################################################### + +SLocal_trust_auth +Strust_auth +R$* $: $&{auth_type} $| $1 +# required by RFC 2554 section 4. +R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated" +R$* $| $&{auth_authen} $@ identical +R$* $| <$&{auth_authen}> $@ identical +R$* $| $* $: $1 $| $>"Local_trust_auth" $1 +R$* $| $#$* $#$2 +R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author} + +###################################################################### +### Relay_Auth: allow relaying based on authentication? +### +### Parameters: +### $1: ${auth_type} +###################################################################### +SLocal_Relay_Auth + + + +###################################################################### +### tls_client: is connection with client "good" enough? +### (done in server) +### +### Parameters: +### ${verify} $| (MAIL|STARTTLS) +###################################################################### +Stls_client +R$* $| $* $@ $>"TLS_connection" $1 + +###################################################################### +### tls_server: is connection with server "good" enough? +### (done in client) +### +### Parameter: +### ${verify} +###################################################################### +Stls_server +R$* $@ $>"TLS_connection" $1 + +###################################################################### +### TLS_connection: is TLS connection "good" enough? +### +### Parameters: +### ${verify} +### Requirement: RHS from access map, may be ? for none. +###################################################################### +STLS_connection +RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." + + +###################################################################### +### RelayTLS: allow relaying based on TLS authentication +### +### Parameters: +### none +###################################################################### +SRelayTLS +# authenticated? + +###################################################################### +### authinfo: lookup authinfo in the access map +### +### Parameters: +### $1: {server_name} +### $2: {server_addr} +###################################################################### +Sauthinfo + +# +###################################################################### +###################################################################### +##### +##### MAIL FILTER DEFINITIONS +##### +###################################################################### +###################################################################### + +# +###################################################################### +###################################################################### +##### +##### MAILER DEFINITIONS +##### +###################################################################### +###################################################################### + + +################################################## +### Local and Program Mailer specification ### +################################################## + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +# +# Envelope sender rewriting +# +SEnvFromL +R<@> $n errors to mailer-daemon +R@ <@ $*> $n temporarily bypass Sun bogosity +R$+ $: $>AddDomain $1 add local domain if needed +R$* $: $>MasqEnv $1 do masquerading + +# +# Envelope recipient rewriting +# +SEnvToL +R$+ < @ $* > $: $1 strip host part +R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type +R<e s> $+ + $* $: $1 remove +detail for sender +R< $* > $+ $: $2 else remove mark + +# +# Header sender rewriting +# +SHdrFromL +R<@> $n errors to mailer-daemon +R@ <@ $*> $n temporarily bypass Sun bogosity +R$+ $: $>AddDomain $1 add local domain if needed +R$* $: $>MasqHdr $1 do masquerading + +# +# Header recipient rewriting +# +SHdrToL +R$+ $: $>AddDomain $1 add local domain if needed +R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 + +# +# Common code to add local domain name (only if always-add-domain) +# +SAddDomain + +Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, + T=DNS/RFC822/X-Unix, + A=procmail -Y -a $h -d $u +Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/, + T=X-Unix/X-Unix/X-Unix, + A=smrsh -c $u + +##################################### +### SMTP Mailer specification ### +##################################### + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +# +# common sender and masquerading recipient rewriting +# +SMasqSMTP +R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified +R$+ $@ $1 < @ *LOCAL* > add local qualification + +# +# convert pseudo-domain addresses to real domain addresses +# +SPseudoToReal + +# pass <route-addr>s through +R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> + +# output fake domains as user%fake@relay + +# do UUCP heuristics; note that these are shared with UUCP mailers +R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form +R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form + +# leave these in .UUCP form to avoid further tampering +R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > +R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > +R< $&h ! > $+ $@ $1 < @ $&h .UUCP. > +R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY +R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part +R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY + + +# +# envelope sender rewriting +# +SEnvFromSMTP +R$+ $: $>PseudoToReal $1 sender/recipient common +R$* :; <@> $@ list:; special case +R$* $: $>MasqSMTP $1 qualify unqual'ed names +R$+ $: $>MasqEnv $1 do masquerading + + +# +# envelope recipient rewriting -- +# also header recipient if not masquerading recipients +# +SEnvToSMTP +R$+ $: $>PseudoToReal $1 sender/recipient common +R$+ $: $>MasqSMTP $1 qualify unqual'ed names +R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 + +# +# header sender and masquerading header recipient rewriting +# +SHdrFromSMTP +R$+ $: $>PseudoToReal $1 sender/recipient common +R:; <@> $@ list:; special case + +# do special header rewriting +R$* <@> $* $@ $1 <@> $2 pass null host through +R< @ $* > $* $@ < @ $1 > $2 pass route-addr through +R$* $: $>MasqSMTP $1 qualify unqual'ed names +R$+ $: $>MasqHdr $1 do masquerading + + +# +# relay mailer header masquerading recipient rewriting +# +SMasqRelay +R$+ $: $>MasqSMTP $1 +R$+ $: $>MasqHdr $1 + +Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040, + T=DNS/RFC822/SMTP, + A=TCP $h + + +######################*****############## +### PROCMAIL Mailer specification ### +##################*****################## + +##### $Id: sendmail-procmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +Mprocmail, P=/usr/bin/procmail, F=DFMSPhnu9, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP, + T=DNS/RFC822/X-Unix, + A=procmail -Y -m $h $f $u + diff --git a/mail-mta/sendmail/files/sendmail-procmail.mc b/mail-mta/sendmail/files/sendmail-procmail.mc new file mode 100644 index 000000000000..e578f8c5d0ed --- /dev/null +++ b/mail-mta/sendmail/files/sendmail-procmail.mc @@ -0,0 +1,32 @@ +divert(-1) +# +# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. +# All rights reserved. +# Copyright (c) 1983 Eric P. Allman. All rights reserved. +# Copyright (c) 1988, 1993 +# The Regents of the University of California. All rights reserved. +# +# By using this file, you agree to the terms and conditions set +# forth in the LICENSE file which can be found at the top level of +# the sendmail distribution. +# +# + +# +# This is a generic configuration file for Linux. +# It has support for local and SMTP mail only. If you want to +# customize it, copy it to a name appropriate for your environment +# and do the modifications there. +# + +divert(0)dnl +include(`/usr/share/sendmail-cf/m4/cf.m4')dnl +VERSIONID(`$Id: sendmail-procmail.mc,v 1.1 2004/05/30 09:20:40 robbat2 Exp $')dnl +OSTYPE(linux)dnl +DOMAIN(generic)dnl +FEATURE(`smrsh',`/usr/sbin/smrsh')dnl +FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl +FEATURE(`local_procmail')dnl +MAILER(local)dnl +MAILER(smtp)dnl +MAILER(procmail)dnl diff --git a/mail-mta/sendmail/files/sendmail.cf b/mail-mta/sendmail/files/sendmail.cf new file mode 100644 index 000000000000..b8d5106fbead --- /dev/null +++ b/mail-mta/sendmail/files/sendmail.cf @@ -0,0 +1,1382 @@ +# +# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. +# All rights reserved. +# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. +# Copyright (c) 1988, 1993 +# The Regents of the University of California. All rights reserved. +# +# By using this file, you agree to the terms and conditions set +# forth in the LICENSE file which can be found at the top level of +# the sendmail distribution. +# +# + +###################################################################### +###################################################################### +##### +##### SENDMAIL CONFIGURATION FILE +##### +##### built by root@orange-pc.ces.clemson.edu on Thu Jul 4 00:56:51 EDT 2002 +##### in /usr/portage/net-mail/sendmail/files +##### using /usr/share/sendmail-cf/ as configuration include directory +##### +###################################################################### +##### +##### DO NOT EDIT THIS FILE! Only edit the source .mc file. +##### +###################################################################### +###################################################################### + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +# level 10 config file format +V10/Berkeley + +# override file safeties - setting this option compromises system security, +# addressing the actual file configuration problem is preferred +# need to set this before any file actions are encountered in the cf file +#O DontBlameSendmail=safe + +# default LDAP map specification +# need to set this now before any LDAP maps are defined +#O LDAPDefaultSpec=-h localhost + +################## +# local info # +################## + +# my LDAP cluster +# need to set this before any LDAP lookups are done (including classes) +#D{sendmailMTACluster}$m + +Cwlocalhost +# file containing names of hosts for which we receive email +Fw/etc/mail/local-host-names + +# my official domain name +# ... define this only if sendmail cannot automatically determine your domain +#Dj$w.Foo.COM + +CP. + +# "Smart" relay host (may be null) +DS + + +# operators that cannot be in local usernames (i.e., network indicators) +CO @ % ! + +# a class with just dot (for identifying canonical names) +C.. + +# a class with just a left bracket (for identifying domain literals) +C[[ + + +# Resolve map (to check if a host exists in check_mail) +Kresolve host -a<OKR> -T<TEMP> +C{ResOk}OKR + + +# Hosts for which relaying is permitted ($=R) +FR-o /etc/mail/relay-domains + +# arithmetic map +Karith arith + + + + + +# dequoting map +Kdequote dequote + +# class E: names that should be exposed as from this host, even if we masquerade +# class L: names that should be delivered locally, even if we have a relay +# class M: domains that should be converted to $M +# class N: domains that should not be converted to $M +#CL root +C{E}root + + + +# my name for error messages +DnMAILER-DAEMON + + +CPREDIRECT + +# Configuration version number +DZ8.12.4 + + +############### +# Options # +############### + +# strip message body to 7 bits on input? +O SevenBitInput=False + +# 8-bit data handling +#O EightBitMode=pass8 + +# wait for alias file rebuild (default units: minutes) +O AliasWait=10 + +# location of alias file +O AliasFile=/etc/mail/aliases + +# minimum number of free blocks on filesystem +O MinFreeBlocks=100 + +# maximum message size +#O MaxMessageSize=1000000 + +# substitution for space (blank) characters +O BlankSub=. + +# avoid connecting to "expensive" mailers on initial submission? +O HoldExpensive=False + +# checkpoint queue runs after every N successful deliveries +#O CheckpointInterval=10 + +# default delivery mode +O DeliveryMode=background + +# error message header/file +#O ErrorHeader=/etc/mail/error-header + +# error mode +#O ErrorMode=print + +# save Unix-style "From_" lines at top of header? +#O SaveFromLine=False + +# queue file mode (qf files) +#O QueueFileMode=0600 + +# temporary file mode +O TempFileMode=0600 + +# match recipients against GECOS field? +#O MatchGECOS=False + +# maximum hop count +#O MaxHopCount=25 + +# location of help file +O HelpFile=/etc/mail/helpfile + +# ignore dots as terminators in incoming messages? +#O IgnoreDots=False + +# name resolver options +#O ResolverOptions=+AAONLY + +# deliver MIME-encapsulated error messages? +O SendMimeErrors=True + +# Forward file search path +O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward + +# open connection cache size +O ConnectionCacheSize=2 + +# open connection cache timeout +O ConnectionCacheTimeout=5m + +# persistent host status directory +#O HostStatusDirectory=.hoststat + +# single thread deliveries (requires HostStatusDirectory)? +#O SingleThreadDelivery=False + +# use Errors-To: header? +O UseErrorsTo=False + +# log level +O LogLevel=9 + +# send to me too, even in an alias expansion? +#O MeToo=True + +# verify RHS in newaliases? +O CheckAliases=False + +# default messages to old style headers if no special punctuation? +O OldStyleHeaders=True + +# SMTP daemon options +O DaemonPortOptions=Name=MTA +O DaemonPortOptions=Port=587, Name=MSA, M=E + +# SMTP client options +#O ClientPortOptions=Family=inet, Address=0.0.0.0 + +# Modifiers to define {daemon_flags} for direct submissions +#O DirectSubmissionModifiers + +# Use as mail submission program? See sendmail/SECURITY +#O UseMSP + +# privacy flags +O PrivacyOptions=authwarnings + +# who (if anyone) should get extra copies of error messages +#O PostmasterCopy=Postmaster + +# slope of queue-only function +#O QueueFactor=600000 + +# limit on number of concurrent queue runners +#O MaxQueueChildren + +# maximum number of queue-runners per queue-grouping with multiple queues +#O MaxRunnersPerQueue=1 + +# priority of queue runners (nice(3)) +#O NiceQueueRun + +# shall we sort the queue by hostname first? +#O QueueSortOrder=priority + +# minimum time in queue before retry +#O MinQueueAge=30m + +# how many jobs can you process in the queue? +#O MaxQueueRunSize=10000 + +# perform initial split of envelope without checking MX records +#O FastSplit=1 + +# queue directory +O QueueDirectory=/var/spool/mqueue + +# key for shared memory; 0 to turn off +#O SharedMemoryKey=0 + + + +# timeouts (many of these) +#O Timeout.initial=5m +#O Timeout.connect=5m +#O Timeout.aconnect=0s +#O Timeout.iconnect=5m +#O Timeout.helo=5m +#O Timeout.mail=10m +#O Timeout.rcpt=1h +#O Timeout.datainit=5m +#O Timeout.datablock=1h +#O Timeout.datafinal=1h +#O Timeout.rset=5m +#O Timeout.quit=2m +#O Timeout.misc=2m +#O Timeout.command=1h +#O Timeout.ident=5s +#O Timeout.fileopen=60s +#O Timeout.control=2m +O Timeout.queuereturn=5d +#O Timeout.queuereturn.normal=5d +#O Timeout.queuereturn.urgent=2d +#O Timeout.queuereturn.non-urgent=7d +O Timeout.queuewarn=4h +#O Timeout.queuewarn.normal=4h +#O Timeout.queuewarn.urgent=1h +#O Timeout.queuewarn.non-urgent=12h +#O Timeout.hoststatus=30m +#O Timeout.resolver.retrans=5s +#O Timeout.resolver.retrans.first=5s +#O Timeout.resolver.retrans.normal=5s +#O Timeout.resolver.retry=4 +#O Timeout.resolver.retry.first=4 +#O Timeout.resolver.retry.normal=4 +#O Timeout.lhlo=2m +#O Timeout.auth=10m +#O Timeout.starttls=1h + +# time for DeliverBy; extension disabled if less than 0 +#O DeliverByMin=0 + +# should we not prune routes in route-addr syntax addresses? +#O DontPruneRoutes=False + +# queue up everything before forking? +O SuperSafe=True + +# status file +O StatusFile=/etc/mail/statistics + +# time zone handling: +# if undefined, use system default +# if defined but null, use TZ envariable passed in +# if defined and non-null, use that info +#O TimeZoneSpec= + +# default UID (can be username or userid:groupid) +#O DefaultUser=mailnull + +# list of locations of user database file (null means no lookup) +#O UserDatabaseSpec=/etc/mail/userdb + +# fallback MX host +#O FallbackMXhost=fall.back.host.net + +# if we are the best MX host for a site, try it directly instead of config err +#O TryNullMXList=False + +# load average at which we just queue messages +#O QueueLA=8 + +# load average at which we refuse connections +#O RefuseLA=12 + +# load average at which we delay connections; 0 means no limit +#O DelayLA=0 + +# maximum number of children we allow at one time +#O MaxDaemonChildren=12 + +# maximum number of new connections per second +#O ConnectionRateThrottle=0 + +# work recipient factor +#O RecipientFactor=30000 + +# deliver each queued job in a separate process? +#O ForkEachJob=False + +# work class factor +#O ClassFactor=1800 + +# work time factor +#O RetryFactor=90000 + +# default character set +#O DefaultCharSet=iso-8859-1 + +# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others) +#O ServiceSwitchFile=/etc/mail/service.switch + +# hosts file (normally /etc/hosts) +#O HostsFile=/etc/hosts + +# dialup line delay on connection failure +#O DialDelay=10s + +# action to take if there are no recipients in the message +#O NoRecipientAction=add-to-undisclosed + +# chrooted environment for writing to files +#O SafeFileEnvironment=/arch + +# are colons OK in addresses? +#O ColonOkInAddr=True + +# shall I avoid expanding CNAMEs (violates protocols)? +#O DontExpandCnames=False + +# SMTP initial login message (old $e macro) +O SmtpGreetingMessage=$j Sendmail $v/$Z; $b + +# UNIX initial From header format (old $l macro) +O UnixFromLine=From $g $d + +# From: lines that have embedded newlines are unwrapped onto one line +#O SingleLineFromHeader=False + +# Allow HELO SMTP command that does not include a host name +#O AllowBogusHELO=False + +# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) +#O MustQuoteChars=. + +# delimiter (operator) characters (old $o macro) +O OperatorChars=.:%@!^/[]+ + +# shall I avoid calling initgroups(3) because of high NIS costs? +#O DontInitGroups=False + +# are group-writable :include: and .forward files (un)trustworthy? +# True (the default) means they are not trustworthy. +#O UnsafeGroupWrites=True + + +# where do errors that occur when sending errors get sent? +#O DoubleBounceAddress=postmaster + +# where to save bounces if all else fails +#O DeadLetterDrop=/var/tmp/dead.letter + +# what user id do we assume for the majority of the processing? +#O RunAsUser=sendmail + +# maximum number of recipients per SMTP envelope +#O MaxRecipientsPerMessage=100 + +# limit the rate recipients per SMTP envelope are accepted +# once the threshold number of recipients have been rejected +#O BadRcptThrottle=20 + +# shall we get local names from our installed interfaces? +#O DontProbeInterfaces=False + +# Return-Receipt-To: header implies DSN request +#O RrtImpliesDsn=False + +# override connection address (for testing) +#O ConnectOnlyTo=0.0.0.0 + +# Trusted user for file ownership and starting the daemon +#O TrustedUser=root + +# Control socket for daemon management +#O ControlSocketName=/var/spool/mqueue/.control + +# Maximum MIME header length to protect MUAs +#O MaxMimeHeaderLength=0/0 + +# Maximum length of the sum of all headers +O MaxHeadersLength=32768 + +# Maximum depth of alias recursion +#O MaxAliasRecursion=10 + +# location of pid file +#O PidFile=/var/run/sendmail.pid + +# Prefix string for the process title shown on 'ps' listings +#O ProcessTitlePrefix=prefix + +# Data file (df) memory-buffer file maximum size +#O DataFileBufferSize=4096 + +# Transcript file (xf) memory-buffer file maximum size +#O XscriptFileBufferSize=4096 + +# lookup type to find information about local mailboxes +#O MailboxDatabase=pw + +# list of authentication mechanisms +#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 + +# default authentication information for outgoing connections +#O DefaultAuthInfo=/etc/mail/default-auth-info + +# SMTP AUTH flags +#O AuthOptions + +# SMTP AUTH maximum encryption strength +#O AuthMaxBits + +# SMTP STARTTLS server options +#O TLSSrvOptions + +# Input mail filters +#O InputMailFilters + + + +# CA directory +#O CACERTPath +# CA file +#O CACERTFile +# Server Cert +#O ServerCertFile +# Server private key +#O ServerKeyFile +# Client Cert +#O ClientCertFile +# Client private key +#O ClientKeyFile +# DHParameters (only required if DSA/DH is used) +#O DHParameters +# Random data source (required for systems without /dev/urandom under OpenSSL) +#O RandFile + +############################ +# QUEUE GROUP DEFINITIONS # +############################ + + +########################### +# Message precedences # +########################### + +Pfirst-class=0 +Pspecial-delivery=100 +Plist=-30 +Pbulk=-60 +Pjunk=-100 + +##################### +# Trusted users # +##################### + +# this is equivalent to setting class "t" +#Ft/etc/mail/trusted-users +Troot +Tdaemon +Tuucp + +######################### +# Format of headers # +######################### + +H?P?Return-Path: <$g> +HReceived: $?sfrom $s $.$?_($?s$|from $.$_) + $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.) + $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version} + (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u + for $u; $|; + $.$b +H?D?Resent-Date: $a +H?D?Date: $a +H?F?Resent-From: $?x$x <$g>$|$g$. +H?F?From: $?x$x <$g>$|$g$. +H?x?Full-Name: $x +# HPosted-Date: $a +# H?l?Received-Date: $b +H?M?Resent-Message-Id: <$t.$i@$j> +H?M?Message-Id: <$t.$i@$j> + +# +###################################################################### +###################################################################### +##### +##### REWRITING RULES +##### +###################################################################### +###################################################################### + +############################################ +### Ruleset 3 -- Name Canonicalization ### +############################################ +Scanonify=3 + +# handle null input (translate to <@> special case) +R$@ $@ <@> + +# strip group: syntax (not inside angle brackets!) and trailing semicolon +R$* $: $1 <@> mark addresses +R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> +R@ $* <@> $: @ $1 unmark @host:... +R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr +R$* :: $* <@> $: $1 :: $2 unmark node::addr +R:include: $* <@> $: :include: $1 unmark :include:... +R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon +R$* : $* <@> $: $2 strip colon if marked +R$* <@> $: $1 unmark +R$* ; $1 strip trailing semi +R$* < $+ :; > $* $@ $2 :; <@> catch <list:;> +R$* < $* ; > $1 < $2 > bogus bracketed semi + +# null input now results from list:; syntax +R$@ $@ :; <@> + +# strip angle brackets -- note RFC733 heuristic to get innermost item +R$* $: < $1 > housekeeping <> +R$+ < $* > < $2 > strip excess on left +R< $* > $+ < $1 > strip excess on right +R<> $@ < @ > MAIL FROM:<> case +R< $+ > $: $1 remove housekeeping <> + +# strip route address <@a,@b,@c:user@d> -> <user@d> +R@ $+ , $+ $2 +R@ [ $* ] : $+ $2 +R@ $+ : $+ $2 + +# find focus for list syntax +R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax +R $+ : $* ; $@ $1 : $2; list syntax + +# find focus for @ syntax addresses +R$+ @ $+ $: $1 < @ $2 > focus on domain +R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right +R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical + + +# convert old-style addresses to a domain-based address +R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names +R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps +R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains + +# if we have % signs, take the rightmost one +R$* % $* $1 @ $2 First make them all @s. +R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. +R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish + +# else we must be a local name +R$* $@ $>Canonify2 $1 + + +################################################ +### Ruleset 96 -- bottom half of ruleset 3 ### +################################################ + +SCanonify2=96 + +# handle special cases for local names +R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all +R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain +R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain + +# check for IPv4/IPv6 domain literal +R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr] +R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal +R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr + + + + + +# if really UUCP, handle it immediately + +# try UUCP traffic as a local address +R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 +R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3 + +# hostnames ending in class P are always canonical +R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 +R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4 +R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 +R$* CC $* $| $* $: $3 +# pass to name server to make hostname canonical +R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4 +R$* $| $* $: $2 + +# local host aliases and pseudo-domains are always canonical +R$* < @ $=w > $* $: $1 < @ $2 . > $3 +R$* < @ $=M > $* $: $1 < @ $2 . > $3 +R$* < @ $* . . > $* $1 < @ $2 . > $3 + + +################################################## +### Ruleset 4 -- Final Output Post-rewriting ### +################################################## +Sfinal=4 + +R$+ :; <@> $@ $1 : handle <list:;> +R$* <@> $@ handle <> and list:; + +# strip trailing dot off possibly canonical name +R$* < @ $+ . > $* $1 < @ $2 > $3 + +# eliminate internal code +R$* < @ *LOCAL* > $* $1 < @ $j > $2 + +# externalize local domain info +R$* < $+ > $* $1 $2 $3 defocus +R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical +R@ $* $@ @ $1 ... and exit + +# UUCP must always be presented in old form +R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u + +# delete duplicate local names +R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host + + + +############################################################## +### Ruleset 97 -- recanonicalize and call ruleset zero ### +### (used for recursive calls) ### +############################################################## + +SRecurse=97 +R$* $: $>canonify $1 +R$* $@ $>parse $1 + + +###################################### +### Ruleset 0 -- Parse Address ### +###################################### + +Sparse=0 + +R$* $: $>Parse0 $1 initial parsing +R<@> $#local $: <@> special case error msgs +R$* $: $>ParseLocal $1 handle local hacks +R$* $: $>Parse1 $1 final parsing + +# +# Parse0 -- do initial syntax checking and eliminate local addresses. +# This should either return with the (possibly modified) input +# or return with a #error mailer. It should not return with a +# #mailer other than the #error mailer. +# + +SParse0 +R<@> $@ <@> special case error msgs +R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses" +R@ <@ $* > < @ $1 > catch "@@host" bogosity +R<@ $+> $#error $@ 5.1.3 $: "553 User address required" +R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required" +R$* $: <> $1 +R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4 +R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4 +R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address" +R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3 +R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part" +R<> $* $1 +R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" +R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" +R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address" +R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address" +R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address" + + +# now delete the local info -- note $=O to find characters that cause forwarding +R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user +R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ... +R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here +R< @ $+ > $#error $@ 5.1.3 $: "553 User address required" +R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ... +R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo" +R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required" +R$* $=O $* < @ *LOCAL* > + $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ... +R$* < @ *LOCAL* > $: $1 + +# +# Parse1 -- the bottom half of ruleset 0. +# + +SParse1 + +# handle numeric address spec +R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec +R$* < @ [ $+ ] > $* $1 < @ [ $2 ] : $S > $3 Add smart host to path +R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send +R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer +R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer + + +# short circuit local delivery so forwarded email works + + +R$=L < @ $=w . > $#local $: @ $1 special local names +R$+ < @ $=w . > $#local $: $1 regular local name + + +# resolve remotely connected UUCP links (if any) + +# resolve fake top level domains by forwarding to other hosts + + + +# pass names that still have a host to a smarthost (if defined) +R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name + +# deal with other remote names +R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain + +# handle locally delivered names +R$=L $#local $: @ $1 special local names +R$+ $#local $: $1 regular local names + +########################################################################### +### Ruleset 5 -- special rewriting after aliases have been expanded ### +########################################################################### + +SLocal_localaddr +Slocaladdr=5 +R$+ $: $1 $| $>"Local_localaddr" $1 +R$+ $| $#ok $@ $1 no change +R$+ $| $#$* $#$2 +R$+ $| $* $: $1 + + + + +# deal with plussed users so aliases work nicely +R$+ + * $#local $@ $&h $: $1 +R$+ + $* $#local $@ + $2 $: $1 + * + +# prepend an empty "forward host" on the front +R$+ $: <> $1 + + + +R< > $+ $: < > < $1 <> $&h > nope, restore +detail + +R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail +R< > < $+ <> $* > $: < > < $1 > else discard +R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part +R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra + +R< > < $+ > $@ $1 no +detail +R$+ $: $1 <> $&h add +detail back in + +R$+ <> + $* $: $1 + $2 check whether +detail +R$+ <> $* $: $1 else discard +R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension +R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension + +R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 > + +R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 > + + +################################################################### +### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ### +################################################################### + +SMailerToTriple=95 +R< > $* $@ $1 strip off null relay +R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 +R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2 +R< local : $* > $* $>CanonLocal < $1 > $2 +R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user +R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer +R< $=w > $* $@ $2 delete local host +R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer + +################################################################### +### Ruleset CanonLocal -- canonify local: syntax ### +################################################################### + +SCanonLocal +# strip local host from routed addresses +R< $* > < @ $+ > : $+ $@ $>Recurse $3 +R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4 + +# strip trailing dot from any host name that may appear +R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 > + +# handle local: syntax -- use old user, either with or without host +R< > $* < @ $* > $* $#local $@ $1@$2 $: $1 +R< > $+ $#local $@ $1 $: $1 + +# handle local:user@host syntax -- ignore host part +R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 > + +# handle local:user syntax +R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1 +R< $+ > $* $#local $@ $2 $: $1 + +################################################################### +### Ruleset 93 -- convert header names to masqueraded form ### +################################################################### + +SMasqHdr=93 + + +# do not masquerade anything in class N +R$* < @ $* $=N . > $@ $1 < @ $2 $3 . > + +R$* < @ *LOCAL* > $@ $1 < @ $j . > + +################################################################### +### Ruleset 94 -- convert envelope names to masqueraded form ### +################################################################### + +SMasqEnv=94 +R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 + +################################################################### +### Ruleset 98 -- local part of ruleset zero (can be null) ### +################################################################### + +SParseLocal=98 + +# addresses sent to foo@host.REDIRECT will give a 551 error code +R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} > +R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. > +R$* < @ $+ .REDIRECT. > < $- > $#error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2> + + + + + +###################################################################### +### CanonAddr -- Convert an address into a standard form for +### relay checking. Route address syntax is +### crudely converted into a %-hack address. +### +### Parameters: +### $1 -- full recipient address +### +### Returns: +### parsed address, not in source route form +###################################################################### + +SCanonAddr +R$* $: $>Parse0 $>canonify $1 make domain canonical + + +###################################################################### +### ParseRecipient -- Strip off hosts in $=R as well as possibly +### $* $=m or the access database. +### Check user portion for host separators. +### +### Parameters: +### $1 -- full recipient address +### +### Returns: +### parsed, non-local-relaying address +###################################################################### + +SParseRecipient +R$* $: <?> $>CanonAddr $1 +R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots +R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part + +# if no $=O character, no host in the user portion, we are done +R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4> +R<?> $* $@ $1 + + +R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 > + + + +R<RELAY> $* < @ $* > $@ $>ParseRecipient $1 +R<$+> $* $@ $2 + + +###################################################################### +### check_relay -- check hostname/address on SMTP startup +###################################################################### + +SLocal_check_relay +Scheck_relay +R$* $: $1 $| $>"Local_check_relay" $1 +R$* $| $* $| $#$* $#$3 +R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2 + +SBasic_check_relay +# check for deferred delivery mode +R$* $: < $&{deliveryMode} > $1 +R< d > $* $@ deferred +R< $* > $* $: $2 + + + + +###################################################################### +### check_mail -- check SMTP `MAIL FROM:' command argument +###################################################################### + +SLocal_check_mail +Scheck_mail +R$* $: $1 $| $>"Local_check_mail" $1 +R$* $| $#$* $#$2 +R$* $| $* $@ $>"Basic_check_mail" $1 + +SBasic_check_mail +# check for deferred delivery mode +R$* $: < $&{deliveryMode} > $1 +R< d > $* $@ deferred +R< $* > $* $: $2 + +# authenticated? +R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL +R$* $| $#$+ $#$2 +R$* $| $* $: $1 + +R<> $@ <OK> we MUST accept <> (RFC 1123) +R$+ $: <?> $1 +R<?><$+> $: <@> <$1> +R<?>$+ $: <@> <$1> +R$* $: $&{daemon_flags} $| $1 +R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 > +R$* u $* $| <@> < $* > $: <?> < $3 > +R$* $| $* $: $2 +# handle case of @localhost on address +R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost > +R<@> < $* @ [127.0.0.1] > + $: < ? $&{client_name} > < $1 @ [127.0.0.1] > +R<@> < $* @ localhost.$m > + $: < ? $&{client_name} > < $1 @ localhost.$m > +R<@> < $* @ localhost.UUCP > + $: < ? $&{client_name} > < $1 @ localhost.UUCP > +R<@> $* $: $1 no localhost as domain +R<? $=w> $* $: $2 local client: ok +R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address" +R<?> $* $: $1 +R$* $: <?> $>CanonAddr $1 canonify sender address and mark it +R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots +# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) +R<?> $* < @ $* $=P > $: <OK> $1 < @ $2 $3 > +R<?> $* < @ $j > $: <OK> $1 < @ $j > +R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > +R<? $* <$->> $* < @ $+ > + $: <$2> $3 < @ $4 > + + +# handle case of no @domain on address +R<?> $* $: $&{daemon_flags} $| <?> $1 +R$* u $* $| <?> $* $: <OKR> $3 +R$* $| $* $: $2 +R<?> $* $: < ? $&{client_name} > $1 +R<?> $* $@ <OK> ...local unqualed ok +R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f + ...remote is not +# check results +R<?> $* $: @ $1 mark address: nothing known about it +R<$={ResOk}> $* $@ <OKR> domain ok: stop +R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve" +R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist" + +###################################################################### +### check_rcpt -- check SMTP `RCPT TO:' command argument +###################################################################### + +SLocal_check_rcpt +Scheck_rcpt +R$* $: $1 $| $>"Local_check_rcpt" $1 +R$* $| $#$* $#$2 +R$* $| $* $@ $>"Basic_check_rcpt" $1 + +SBasic_check_rcpt +# empty address? +R<> $#error $@ nouser $: "553 User address required" +R$@ $#error $@ nouser $: "553 User address required" +# check for deferred delivery mode +R$* $: < $&{deliveryMode} > $1 +R< d > $* $@ deferred +R< $* > $* $: $2 + + +###################################################################### +R$* $: $1 $| @ $>"Rcpt_ok" $1 +R$* $| @ $#TEMP $+ $: $1 $| T $2 +R$* $| @ $#$* $#$2 +R$* $| @ RELAY $@ RELAY +R$* $| @ $* $: O $| $>"Relay_ok" $1 +R$* $| T $+ $: T $2 $| $>"Relay_ok" $1 +R$* $| $#TEMP $+ $#error $2 +R$* $| $#$* $#$2 +R$* $| RELAY $@ RELAY +R T $+ $| $* $#error $1 +# anything else is bogus +R$* $#error $@ 5.7.1 $: "550 Relaying denied" + + +###################################################################### +### Rcpt_ok: is the recipient ok? +###################################################################### +SRcpt_ok +R$* $: $>ParseRecipient $1 strip relayable hosts + + + + +# authenticated via TLS? +R$* $: $1 $| $>RelayTLS client authenticated? +R$* $| $# $+ $# $2 error/ok? +R$* $| $* $: $1 no + +R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type} +R$* $| $# $* $# $2 +R$* $| NO $: $1 +R$* $| $* $: $1 $| $&{auth_type} +R$* $| $: $1 +R$* $| $={TrustAuthMech} $# RELAY +R$* $| $* $: $1 +# anything terminating locally is ok +R$+ < @ $=w > $@ RELAY +R$+ < @ $* $=R > $@ RELAY + + + +# check for local user (i.e. unqualified address) +R$* $: <?> $1 +R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 > +# local user is ok +R<?> $+ $@ RELAY +R<$+> $* $: $2 + +###################################################################### +### Relay_ok: is the relay/sender ok? +###################################################################### +SRelay_ok +# anything originating locally is ok +# check IP address +R$* $: $&{client_addr} +R$@ $@ RELAY originated locally +R0 $@ RELAY originated locally +R$=R $* $@ RELAY relayable IP address +R$* $: [ $1 ] put brackets around it... +R$=w $@ RELAY ... and see if it is local + + +# check client name: first: did it resolve? +R$* $: < $&{client_resolve} > +R<TEMP> $#TEMP $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} +R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} +R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} +R$* $: <@> $&{client_name} +R<@> $@ RELAY +# pass to name server to make hostname canonical +R<@> $* $=P $:<?> $1 $2 +R<@> $+ $:<?> $[ $1 $] +R$* . $1 strip trailing dots +R<?> $=w $@ RELAY +R<?> $* $=R $@ RELAY + + + + +###################################################################### +### trust_auth: is user trusted to authenticate as someone else? +### +### Parameters: +### $1: AUTH= parameter from MAIL command +###################################################################### + +SLocal_trust_auth +Strust_auth +R$* $: $&{auth_type} $| $1 +# required by RFC 2554 section 4. +R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated" +R$* $| $&{auth_authen} $@ identical +R$* $| <$&{auth_authen}> $@ identical +R$* $| $* $: $1 $| $>"Local_trust_auth" $1 +R$* $| $#$* $#$2 +R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author} + +###################################################################### +### Relay_Auth: allow relaying based on authentication? +### +### Parameters: +### $1: ${auth_type} +###################################################################### +SLocal_Relay_Auth + + + +###################################################################### +### tls_client: is connection with client "good" enough? +### (done in server) +### +### Parameters: +### ${verify} $| (MAIL|STARTTLS) +###################################################################### +Stls_client +R$* $| $* $@ $>"TLS_connection" $1 + +###################################################################### +### tls_server: is connection with server "good" enough? +### (done in client) +### +### Parameter: +### ${verify} +###################################################################### +Stls_server +R$* $@ $>"TLS_connection" $1 + +###################################################################### +### TLS_connection: is TLS connection "good" enough? +### +### Parameters: +### ${verify} +### Requirement: RHS from access map, may be ? for none. +###################################################################### +STLS_connection +RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." + + +###################################################################### +### RelayTLS: allow relaying based on TLS authentication +### +### Parameters: +### none +###################################################################### +SRelayTLS +# authenticated? + +###################################################################### +### authinfo: lookup authinfo in the access map +### +### Parameters: +### $1: {server_name} +### $2: {server_addr} +###################################################################### +Sauthinfo + +# +###################################################################### +###################################################################### +##### +##### MAIL FILTER DEFINITIONS +##### +###################################################################### +###################################################################### + +# +###################################################################### +###################################################################### +##### +##### MAILER DEFINITIONS +##### +###################################################################### +###################################################################### + + +################################################## +### Local and Program Mailer specification ### +################################################## + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +# +# Envelope sender rewriting +# +SEnvFromL +R<@> $n errors to mailer-daemon +R@ <@ $*> $n temporarily bypass Sun bogosity +R$+ $: $>AddDomain $1 add local domain if needed +R$* $: $>MasqEnv $1 do masquerading + +# +# Envelope recipient rewriting +# +SEnvToL +R$+ < @ $* > $: $1 strip host part +R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type +R<e s> $+ + $* $: $1 remove +detail for sender +R< $* > $+ $: $2 else remove mark + +# +# Header sender rewriting +# +SHdrFromL +R<@> $n errors to mailer-daemon +R@ <@ $*> $n temporarily bypass Sun bogosity +R$+ $: $>AddDomain $1 add local domain if needed +R$* $: $>MasqHdr $1 do masquerading + +# +# Header recipient rewriting +# +SHdrToL +R$+ $: $>AddDomain $1 add local domain if needed +R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 + +# +# Common code to add local domain name (only if always-add-domain) +# +SAddDomain + +Mlocal, P=/usr/sbin/mail.local, F=lsDFMAw5:/|@qPSXfmnz9, S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL, + T=DNS/RFC822/SMTP, + A=mail.local -l +Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/, + T=X-Unix/X-Unix/X-Unix, + A=smrsh -c $u + +##################################### +### SMTP Mailer specification ### +##################################### + +##### $Id: sendmail.cf,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ ##### + +# +# common sender and masquerading recipient rewriting +# +SMasqSMTP +R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified +R$+ $@ $1 < @ *LOCAL* > add local qualification + +# +# convert pseudo-domain addresses to real domain addresses +# +SPseudoToReal + +# pass <route-addr>s through +R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> + +# output fake domains as user%fake@relay + +# do UUCP heuristics; note that these are shared with UUCP mailers +R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form +R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form + +# leave these in .UUCP form to avoid further tampering +R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > +R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > +R< $&h ! > $+ $@ $1 < @ $&h .UUCP. > +R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY +R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part +R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY + + +# +# envelope sender rewriting +# +SEnvFromSMTP +R$+ $: $>PseudoToReal $1 sender/recipient common +R$* :; <@> $@ list:; special case +R$* $: $>MasqSMTP $1 qualify unqual'ed names +R$+ $: $>MasqEnv $1 do masquerading + + +# +# envelope recipient rewriting -- +# also header recipient if not masquerading recipients +# +SEnvToSMTP +R$+ $: $>PseudoToReal $1 sender/recipient common +R$+ $: $>MasqSMTP $1 qualify unqual'ed names +R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 + +# +# header sender and masquerading header recipient rewriting +# +SHdrFromSMTP +R$+ $: $>PseudoToReal $1 sender/recipient common +R:; <@> $@ list:; special case + +# do special header rewriting +R$* <@> $* $@ $1 <@> $2 pass null host through +R< @ $* > $* $@ < @ $1 > $2 pass route-addr through +R$* $: $>MasqSMTP $1 qualify unqual'ed names +R$+ $: $>MasqHdr $1 do masquerading + + +# +# relay mailer header masquerading recipient rewriting +# +SMasqRelay +R$+ $: $>MasqSMTP $1 +R$+ $: $>MasqHdr $1 + +Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, + T=DNS/RFC822/SMTP, + A=TCP $h +Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040, + T=DNS/RFC822/SMTP, + A=TCP $h + diff --git a/mail-mta/sendmail/files/sendmail.mc b/mail-mta/sendmail/files/sendmail.mc new file mode 100644 index 000000000000..c351d4bcd20a --- /dev/null +++ b/mail-mta/sendmail/files/sendmail.mc @@ -0,0 +1,30 @@ +divert(-1) +# +# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. +# All rights reserved. +# Copyright (c) 1983 Eric P. Allman. All rights reserved. +# Copyright (c) 1988, 1993 +# The Regents of the University of California. All rights reserved. +# +# By using this file, you agree to the terms and conditions set +# forth in the LICENSE file which can be found at the top level of +# the sendmail distribution. +# +# + +# +# This is a generic configuration file for Linux. +# It has support for local and SMTP mail only. If you want to +# customize it, copy it to a name appropriate for your environment +# and do the modifications there. +# + +divert(0)dnl +include(`/usr/share/sendmail-cf/m4/cf.m4')dnl +VERSIONID(`$Id: sendmail.mc,v 1.1 2004/05/30 09:20:40 robbat2 Exp $')dnl +OSTYPE(linux)dnl +DOMAIN(generic)dnl +FEATURE(`smrsh',`/usr/sbin/smrsh')dnl +FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl +MAILER(local)dnl +MAILER(smtp)dnl diff --git a/mail-mta/sendmail/files/site.config.m4 b/mail-mta/sendmail/files/site.config.m4 new file mode 100644 index 000000000000..f95857391f1c --- /dev/null +++ b/mail-mta/sendmail/files/site.config.m4 @@ -0,0 +1,15 @@ +define(`confCCOPTS', `@@confCCOPTS@@') +define(`confMAPDEF', `@@confMAPDEF@@') +define(`confENVDEF', `@@confENVDEF@@') +define(`confLIBS', `@@confLIBS@@') +define(`confSTDIO_TYPE', `portable') +define(`confLDOPTS', `-s') +define(`confMANOWN', `root') +define(`confMANGRP', `root') +define(`confMANMODE', `644') +define(`confMAN1SRC', `1') +define(`confMAN5SRC', `5') +define(`confMAN8SRC', `8') +define(`confLDOPTS_SO', `-shared -Wl') +APPENDDEF(`conf_sendmail_ENVDEF', `@@conf_sendmail_ENVDEF@@') +APPENDDEF(`conf_sendmail_LIBS', `@@conf_sendmail_LIBS@@') diff --git a/mail-mta/sendmail/metadata.xml b/mail-mta/sendmail/metadata.xml new file mode 100644 index 000000000000..7f0c39af38e6 --- /dev/null +++ b/mail-mta/sendmail/metadata.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd>net-mail</herd> +<maintainer><email>gregf@gentoo.org</email></maintainer> +</pkgmetadata> diff --git a/mail-mta/sendmail/sendmail-8.12.10.ebuild b/mail-mta/sendmail/sendmail-8.12.10.ebuild new file mode 100644 index 000000000000..fadbdf0ce4e1 --- /dev/null +++ b/mail-mta/sendmail/sendmail-8.12.10.ebuild @@ -0,0 +1,163 @@ +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-mta/sendmail/sendmail-8.12.10.ebuild,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + +DESCRIPTION="Widely-used Mail Transport Agent (MTA)" +HOMEPAGE="http://www.sendmail.org/" +SRC_URI="ftp://ftp.sendmail.org/pub/${PN}/${PN}.${PV}.tar.gz" + +LICENSE="Sendmail" +SLOT="0" +KEYWORDS="x86 ppc sparc hppa amd64 alpha ia64" +IUSE="ssl ldap sasl berkdb tcpd gdbm mbox" + +DEPEND="!amd64? ( net-dns/hesiod ) + net-mail/mailbase + sys-libs/gdbm + sys-devel/m4 + sasl? ( >=dev-libs/cyrus-sasl-2.1.10 ) + tcpd? ( sys-apps/tcp-wrappers ) + ssl? ( dev-libs/openssl ) + ldap? ( net-nds/openldap ) + || ( + gdbm? ( sys-libs/gdbm ) + berkdb? ( >=sys-libs/db-3.2 ) + sys-libs/gdbm + )" +RDEPEND="${DEPEND} + >=net-mail/mailbase-0.00 + !virtual/mta" +PDEPEND="!mbox? ( net-mail/procmail )" +PROVIDE="virtual/mta" + +src_unpack() { + unpack ${A} + cd ${S} + + confCCOPTS="${CFLAGS}" + confMAPDEF="-DNEWDB -DNIS -DMAP_REGEX" + confENVDEF="-DXDEBUG=0" + confLIBS="-lnsl -lcrypt" + conf_sendmail_ENVDEF="-DFALSE=0 -DTRUE=1" + conf_sendmail_LIBS="" + use sasl && confLIBS="${confLIBS} -lsasl2" \ + && confENVDEF="${confENVDEF} -DSASL=2" \ + && confCCOPTS="${confCCOPTS} -I/usr/include/sasl" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSASL=2" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lsasl2" + use tcpd && confENVDEF="${confENVDEF} -DTCPWRAPPERS" \ + && confLIBS="${confLIBS} -lwrap" + use ssl && confENVDEF="${confENVDEF} -DSTARTTLS" \ + && confLIBS="${confLIBS} -lssl -lcrypto" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSTARTTLS" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lssl -lcrypto" + use ldap && confMAPDEF="${confMAPDEF} -DLDAPMAP" \ + && confLIBS="${confLIBS} -lldap -llber" + if use gdbm || ! use berkdb ; then + confLIBS="${confLIBS} -lgdbm" + fi + sed -e "s:@@confCCOPTS@@:${confCCOPTS}:" \ + -e "s/@@confMAPDEF@@/${confMAPDEF}/" \ + -e "s/@@confENVDEF@@/${confENVDEF}/" \ + -e "s/@@confLIBS@@/${confLIBS}/" \ + -e "s/@@conf_sendmail_ENVDEF@@/${conf_sendmail_ENVDEF}/" \ + -e "s/@@conf_sendmail_LIBS@@/${conf_sendmail_LIBS}/" \ + ${FILESDIR}/site.config.m4 > ${S}/devtools/Site/site.config.m4 +} + +src_compile() { + for x in libmilter libsmutil sendmail mailstats rmail praliases smrsh makemap vacation mail.local + do + pushd ${x} + sh Build + popd + done +} + +src_install () { + OBJDIR="obj.`uname -s`.`uname -r`.`arch`" + dodir /etc/pam.d /usr/bin /usr/include/libmilter /usr/lib + dodir /usr/share/man/man{1,5,8} /usr/sbin /var/log /usr/share/sendmail-cf + dodir /var/spool/{mqueue,clientmqueue} /etc/conf.d + keepdir /var/spool/{clientmqueue,mqueue} + for dir in libmilter libsmutil sendmail mailstats praliases smrsh makemap vacation + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + for dir in rmail mail.local + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + force-install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + fowners root.smmsp /usr/sbin/sendmail + fowners smmsp.smmsp /var/spool/clientmqueue + fperms 770 /var/spool/clientmqueue + fperms 700 /var/spool/mqueue + dosym /usr/sbin/sendmail /usr/lib/sendmail + dosym /usr/sbin/makemap /usr/bin/makemap + dodoc FAQ LICENSE KNOWNBUGS README RELEASE_NOTES doc/op/op.ps + newdoc sendmail/README README.sendmail + newdoc sendmail/SECURITY SECURITY + newdoc sendmail/TUNING TUNING + newdoc smrsh/README README.smrsh + newdoc libmilter/README README.libmilter + newdoc cf/README README.cf + newdoc cf/cf/README README.install-cf + cp -a cf/* ${D}/usr/share/sendmail-cf + insinto /etc/mail + if [ -n "` use mbox `" ] + then + doins ${FILESDIR}/{sendmail.cf,sendmail.mc} + else + newins ${FILESDIR}/sendmail-procmail.cf sendmail.cf + newins ${FILESDIR}/sendmail-procmail.mc sendmail.mc + fi + echo "# local-host-names - include all aliases for your machine here" \ + > ${D}/etc/mail/local-host-names + cat << EOF > ${D}/etc/mail/trusted-users +# trusted-users - users that can send mail as others without a warning +# apache, mailman, majordomo, uucp are good candidates +EOF + cat << EOF > ${D}/etc/mail/access +# Check the /usr/share/doc/sendmail/README.cf file for a description +# of the format of this file. (search for access_db in that file) +# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc +# package. +# +# by default we allow relaying from localhost... +localhost.localdomain RELAY +localhost RELAY +127.0.0.1 RELAY + +EOF +cat << EOF > ${D}/etc/conf.d/sendmail +# Config file for /etc/init.d/sendmail +# add start-up options here +SENDMAIL_OPTS="-bd -q30m -L sm-mta" # default daemon mode +CLIENTMQUEUE_OPTS="-Ac -q30m -L sm-cm" # clientmqueue +KILL_OPTS="" # add -9/-15/your favorite evil SIG level here + +EOF + exeinto /etc/init.d + doexe ${FILESDIR}/sendmail + mkdir -p ${D}/usr/adm/sm.bin/ + touch ${D}/usr/adm/sm.bin/.keep +} + +pkg_postinst() { + + einfo "This ebuild uses mbox support by default. If you are" + einfo "looking for maildir support put -mbox into your USE variables." + +} diff --git a/mail-mta/sendmail/sendmail-8.12.11-r1.ebuild b/mail-mta/sendmail/sendmail-8.12.11-r1.ebuild new file mode 100644 index 000000000000..3808ba72c302 --- /dev/null +++ b/mail-mta/sendmail/sendmail-8.12.11-r1.ebuild @@ -0,0 +1,161 @@ +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-mta/sendmail/sendmail-8.12.11-r1.ebuild,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + +DESCRIPTION="Widely-used Mail Transport Agent (MTA)" +HOMEPAGE="http://www.sendmail.org/" +SRC_URI="ftp://ftp.sendmail.org/pub/${PN}/${PN}.${PV}.tar.gz" + +LICENSE="Sendmail" +SLOT="0" +KEYWORDS="~x86 ~ppc ~sparc ~hppa ~alpha ~ia64" +IUSE="ssl ldap sasl berkdb tcpd gdbm mbox" + +DEPEND="net-dns/hesiod + net-mail/mailbase + sys-libs/gdbm + sys-devel/m4 + sasl? ( >=dev-libs/cyrus-sasl-2.1.10 ) + tcpd? ( sys-apps/tcp-wrappers ) + ssl? ( dev-libs/openssl ) + ldap? ( net-nds/openldap ) + || ( + gdbm? ( sys-libs/gdbm ) + berkdb? ( >=sys-libs/db-3.2 ) + sys-libs/gdbm + )" +RDEPEND="${DEPEND} + >=net-mail/mailbase-0.00 + net-mail/mailwrapper" +PDEPEND="!mbox? ( net-mail/procmail )" +PROVIDE="virtual/mta" + +src_unpack() { + unpack ${A} + cd ${S} + + confCCOPTS="${CFLAGS}" + confMAPDEF="-DNEWDB -DNIS -DMAP_REGEX" + confENVDEF="-DXDEBUG=0" + confLIBS="-lnsl -lcrypt" + conf_sendmail_ENVDEF="-DFALSE=0 -DTRUE=1" + conf_sendmail_LIBS="" + use sasl && confLIBS="${confLIBS} -lsasl2" \ + && confENVDEF="${confENVDEF} -DSASL=2" \ + && confCCOPTS="${confCCOPTS} -I/usr/include/sasl" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSASL=2" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lsasl2" + use tcpd && confENVDEF="${confENVDEF} -DTCPWRAPPERS" \ + && confLIBS="${confLIBS} -lwrap" + use ssl && confENVDEF="${confENVDEF} -DSTARTTLS" \ + && confLIBS="${confLIBS} -lssl -lcrypto" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSTARTTLS" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lssl -lcrypto" + use ldap && confMAPDEF="${confMAPDEF} -DLDAPMAP" \ + && confLIBS="${confLIBS} -lldap -llber" + if use gdbm || ! use berkdb ; then + confLIBS="${confLIBS} -lgdbm" + fi + sed -e "s:@@confCCOPTS@@:${confCCOPTS}:" \ + -e "s/@@confMAPDEF@@/${confMAPDEF}/" \ + -e "s/@@confENVDEF@@/${confENVDEF}/" \ + -e "s/@@confLIBS@@/${confLIBS}/" \ + -e "s/@@conf_sendmail_ENVDEF@@/${conf_sendmail_ENVDEF}/" \ + -e "s/@@conf_sendmail_LIBS@@/${conf_sendmail_LIBS}/" \ + ${FILESDIR}/site.config.m4 > ${S}/devtools/Site/site.config.m4 +} + +src_compile() { + for x in libmilter libsmutil sendmail mailstats rmail praliases smrsh makemap vacation mail.local + do + pushd ${x} + sh Build + popd + done +} + +src_install () { + OBJDIR="obj.`uname -s`.`uname -r`.`arch`" + dodir /etc/pam.d /usr/bin /usr/include/libmilter /usr/lib + dodir /usr/share/man/man{1,5,8} /usr/sbin /var/log /usr/share/sendmail-cf + dodir /var/spool/{mqueue,clientmqueue} /etc/conf.d + keepdir /var/spool/{clientmqueue,mqueue} + for dir in libmilter libsmutil sendmail mailstats praliases smrsh makemap vacation + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + for dir in rmail mail.local + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + force-install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + mv ${D}/usr/sbin/sendmail ${D}/usr/sbin/sendmail.sendmail + fowners root:smmsp /usr/sbin/sendmail.sendmail + fowners smmsp:smmsp /var/spool/clientmqueue + fperms 2555 /usr/sbin/sendmail.sendmail + fperms 770 /var/spool/clientmqueue + fperms 700 /var/spool/mqueue + dosym /usr/sbin/sendmail /usr/lib/sendmail + dosym /usr/sbin/makemap /usr/bin/makemap + dodoc FAQ LICENSE KNOWNBUGS README RELEASE_NOTES doc/op/op.ps + newdoc sendmail/README README.sendmail + newdoc sendmail/SECURITY SECURITY + newdoc sendmail/TUNING TUNING + newdoc smrsh/README README.smrsh + newdoc libmilter/README README.libmilter + newdoc cf/README README.cf + newdoc cf/cf/README README.install-cf + cp -a cf/* ${D}/usr/share/sendmail-cf + insinto /etc + doins ${FILESDIR}/mailer.conf + insinto /etc/mail + if [ -n "` use mbox `" ] + then + doins ${FILESDIR}/{sendmail.cf,sendmail.mc} + else + newins ${FILESDIR}/sendmail-procmail.cf sendmail.cf + newins ${FILESDIR}/sendmail-procmail.mc sendmail.mc + fi + echo "# local-host-names - include all aliases for your machine here" \ + > ${D}/etc/mail/local-host-names + cat << EOF > ${D}/etc/mail/trusted-users +# trusted-users - users that can send mail as others without a warning +# apache, mailman, majordomo, uucp are good candidates +EOF + cat << EOF > ${D}/etc/mail/access +# Check the /usr/share/doc/sendmail/README.cf file for a description +# of the format of this file. (search for access_db in that file) +# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc +# package. +# +# by default we allow relaying from localhost... +localhost.localdomain RELAY +localhost RELAY +127.0.0.1 RELAY + +EOF +cat << EOF > ${D}/etc/conf.d/sendmail +# Config file for /etc/init.d/sendmail +# add start-up options here +SENDMAIL_OPTS="-bd -q30m -L sm-mta" # default daemon mode +CLIENTMQUEUE_OPTS="-Ac -q30m -L sm-cm" # clientmqueue +KILL_OPTS="" # add -9/-15/your favorite evil SIG level here + +EOF + exeinto /etc/init.d + doexe ${FILESDIR}/sendmail + dosed 's/} sendmail/} sendmail.sendmail/' /etc/init.d/sendmail + keepdir /usr/adm/sm.bin +} + diff --git a/mail-mta/sendmail/sendmail-8.12.11-r2.ebuild b/mail-mta/sendmail/sendmail-8.12.11-r2.ebuild new file mode 100644 index 000000000000..ee788fdebec2 --- /dev/null +++ b/mail-mta/sendmail/sendmail-8.12.11-r2.ebuild @@ -0,0 +1,164 @@ +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-mta/sendmail/sendmail-8.12.11-r2.ebuild,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + +DESCRIPTION="Widely-used Mail Transport Agent (MTA)" +HOMEPAGE="http://www.sendmail.org/" +SRC_URI="ftp://ftp.sendmail.org/pub/${PN}/${PN}.${PV}.tar.gz" + +LICENSE="Sendmail" +SLOT="0" +KEYWORDS="~x86 ~ppc ~sparc ~hppa ~alpha ~ia64 s390" +IUSE="ssl ldap sasl tcpd mbox milter" + +DEPEND="net-mail/mailbase + sys-devel/m4 + sasl? ( >=dev-libs/cyrus-sasl-2.1.10 ) + tcpd? ( sys-apps/tcp-wrappers ) + ssl? ( dev-libs/openssl ) + ldap? ( net-nds/openldap ) + >=sys-libs/db-3.2 + " +RDEPEND="${DEPEND} + >=net-mail/mailbase-0.00 + net-mail/mailwrapper" +PDEPEND="!mbox? ( net-mail/procmail )" +PROVIDE="virtual/mta" + +src_unpack() { + unpack ${A} + cd ${S} + + confCCOPTS="${CFLAGS}" + confMAPDEF="-DMAP_REGEX" + conf_sendmail_LIBS="" + use sasl && confLIBS="${confLIBS} -lsasl2" \ + && confENVDEF="${confENVDEF} -DSASL=2" \ + && confCCOPTS="${confCCOPTS} -I/usr/include/sasl" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSASL=2" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lsasl2" + use tcpd && confENVDEF="${confENVDEF} -DTCPWRAPPERS" \ + && confLIBS="${confLIBS} -lwrap" + use ssl && confENVDEF="${confENVDEF} -DSTARTTLS" \ + && confLIBS="${confLIBS} -lssl -lcrypto" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSTARTTLS" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lssl -lcrypto" + use ldap && confMAPDEF="${confMAPDEF} -DLDAPMAP" \ + && confLIBS="${confLIBS} -lldap -llber" + use milter && confENVDEF="${confENVDEF} -DMILTER" + sed -e "s:@@confCCOPTS@@:${confCCOPTS}:" \ + -e "s/@@confMAPDEF@@/${confMAPDEF}/" \ + -e "s/@@confENVDEF@@/${confENVDEF}/" \ + -e "s/@@confLIBS@@/${confLIBS}/" \ + -e "s/@@conf_sendmail_ENVDEF@@/${conf_sendmail_ENVDEF}/" \ + -e "s/@@conf_sendmail_LIBS@@/${conf_sendmail_LIBS}/" \ + ${FILESDIR}/site.config.m4 > ${S}/devtools/Site/site.config.m4 +} + +src_compile() { + sh Build + + if [ -n "` use milter `" ] + then + pushd libmilter + sh Build + popd + fi +} + +src_install () { + OBJDIR="obj.`uname -s`.`uname -r`.`arch`" + dodir /etc/pam.d /usr/bin /usr/lib + dodir /usr/share/man/man{1,5,8} /usr/sbin /var/log /usr/share/sendmail-cf + dodir /var/spool/{mqueue,clientmqueue} /etc/conf.d + keepdir /var/spool/{clientmqueue,mqueue} + for dir in libsmutil sendmail mailstats praliases smrsh makemap vacation editmap + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + for dir in rmail mail.local + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + force-install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + + if [ -n "` use milter `" ] + then + dodir /usr/include/libmilter + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + install -C ${OBJDIR}/libmilter \ + || die "install failed" + fi + + mv ${D}/usr/sbin/sendmail ${D}/usr/sbin/sendmail.sendmail + fowners root:smmsp /usr/sbin/sendmail.sendmail + fowners smmsp:smmsp /var/spool/clientmqueue + fperms 2555 /usr/sbin/sendmail.sendmail + fperms 770 /var/spool/clientmqueue + fperms 700 /var/spool/mqueue + dosym /usr/sbin/sendmail /usr/lib/sendmail + dosym /usr/sbin/makemap /usr/bin/makemap + dodoc FAQ LICENSE KNOWNBUGS README RELEASE_NOTES doc/op/op.ps + newdoc sendmail/README README.sendmail + newdoc sendmail/SECURITY SECURITY + newdoc sendmail/TUNING TUNING + newdoc smrsh/README README.smrsh + + if [ -n "` use milter `" ] + then + newdoc libmilter/README README.libmilter + fi + + newdoc cf/README README.cf + newdoc cf/cf/README README.install-cf + cp -a cf/* ${D}/usr/share/sendmail-cf + insinto /etc/mail + if [ -n "` use mbox `" ] + then + doins ${FILESDIR}/{sendmail.cf,sendmail.mc} + else + newins ${FILESDIR}/sendmail-procmail.cf sendmail.cf + newins ${FILESDIR}/sendmail-procmail.mc sendmail.mc + fi + echo "# local-host-names - include all aliases for your machine here" \ + > ${D}/etc/mail/local-host-names + cat << EOF > ${D}/etc/mail/trusted-users +# trusted-users - users that can send mail as others without a warning +# apache, mailman, majordomo, uucp are good candidates +EOF + cat << EOF > ${D}/etc/mail/access +# Check the /usr/share/doc/sendmail/README.cf file for a description +# of the format of this file. (search for access_db in that file) +# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc +# package. +# + +EOF +cat << EOF > ${D}/etc/conf.d/sendmail +# Config file for /etc/init.d/sendmail +# add start-up options here +SENDMAIL_OPTS="-bd -q30m -L sm-mta" # default daemon mode +CLIENTMQUEUE_OPTS="-Ac -q30m -L sm-cm" # clientmqueue +KILL_OPTS="" # add -9/-15/your favorite evil SIG level here + +EOF + exeinto /etc/init.d + doexe ${FILESDIR}/sendmail + dosed 's/} sendmail/} sendmail.sendmail/' /etc/init.d/sendmail + keepdir /usr/adm/sm.bin +} diff --git a/mail-mta/sendmail/sendmail-8.12.11.ebuild b/mail-mta/sendmail/sendmail-8.12.11.ebuild new file mode 100644 index 000000000000..5864189e4ecd --- /dev/null +++ b/mail-mta/sendmail/sendmail-8.12.11.ebuild @@ -0,0 +1,163 @@ +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-mta/sendmail/sendmail-8.12.11.ebuild,v 1.1 2004/05/30 09:20:40 robbat2 Exp $ + +DESCRIPTION="Widely-used Mail Transport Agent (MTA)" +HOMEPAGE="http://www.sendmail.org/" +SRC_URI="ftp://ftp.sendmail.org/pub/${PN}/${PN}.${PV}.tar.gz" + +LICENSE="Sendmail" +SLOT="0" +KEYWORDS="~x86 ~ppc ~sparc ~hppa ~alpha ~ia64" +IUSE="ssl ldap sasl berkdb tcpd gdbm mbox" + +DEPEND="net-dns/hesiod + net-mail/mailbase + sys-libs/gdbm + sys-devel/m4 + sasl? ( >=dev-libs/cyrus-sasl-2.1.10 ) + tcpd? ( sys-apps/tcp-wrappers ) + ssl? ( dev-libs/openssl ) + ldap? ( net-nds/openldap ) + || ( + gdbm? ( sys-libs/gdbm ) + berkdb? ( >=sys-libs/db-3.2 ) + sys-libs/gdbm + )" +RDEPEND="${DEPEND} + >=net-mail/mailbase-0.00 + !virtual/mta" +PDEPEND="!mbox? ( net-mail/procmail )" +PROVIDE="virtual/mta" + +src_unpack() { + unpack ${A} + cd ${S} + + confCCOPTS="${CFLAGS}" + confMAPDEF="-DNEWDB -DNIS -DMAP_REGEX" + confENVDEF="-DXDEBUG=0" + confLIBS="-lnsl -lcrypt" + conf_sendmail_ENVDEF="-DFALSE=0 -DTRUE=1" + conf_sendmail_LIBS="" + use sasl && confLIBS="${confLIBS} -lsasl2" \ + && confENVDEF="${confENVDEF} -DSASL=2" \ + && confCCOPTS="${confCCOPTS} -I/usr/include/sasl" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSASL=2" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lsasl2" + use tcpd && confENVDEF="${confENVDEF} -DTCPWRAPPERS" \ + && confLIBS="${confLIBS} -lwrap" + use ssl && confENVDEF="${confENVDEF} -DSTARTTLS" \ + && confLIBS="${confLIBS} -lssl -lcrypto" \ + && conf_sendmail_ENVDEF="${conf_sendmail_ENVDEF} -DSTARTTLS" \ + && conf_sendmail_LIBS="${conf_sendmail_LIBS} -lssl -lcrypto" + use ldap && confMAPDEF="${confMAPDEF} -DLDAPMAP" \ + && confLIBS="${confLIBS} -lldap -llber" + if use gdbm || ! use berkdb ; then + confLIBS="${confLIBS} -lgdbm" + fi + sed -e "s:@@confCCOPTS@@:${confCCOPTS}:" \ + -e "s/@@confMAPDEF@@/${confMAPDEF}/" \ + -e "s/@@confENVDEF@@/${confENVDEF}/" \ + -e "s/@@confLIBS@@/${confLIBS}/" \ + -e "s/@@conf_sendmail_ENVDEF@@/${conf_sendmail_ENVDEF}/" \ + -e "s/@@conf_sendmail_LIBS@@/${conf_sendmail_LIBS}/" \ + ${FILESDIR}/site.config.m4 > ${S}/devtools/Site/site.config.m4 +} + +src_compile() { + for x in libmilter libsmutil sendmail mailstats rmail praliases smrsh makemap vacation mail.local + do + pushd ${x} + sh Build + popd + done +} + +src_install () { + OBJDIR="obj.`uname -s`.`uname -r`.`arch`" + dodir /etc/pam.d /usr/bin /usr/include/libmilter /usr/lib + dodir /usr/share/man/man{1,5,8} /usr/sbin /var/log /usr/share/sendmail-cf + dodir /var/spool/{mqueue,clientmqueue} /etc/conf.d + keepdir /var/spool/{clientmqueue,mqueue} + for dir in libmilter libsmutil sendmail mailstats praliases smrsh makemap vacation + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + for dir in rmail mail.local + do + make DESTDIR=${D} MANROOT=/usr/share/man/man \ + SBINOWN=root SBINGRP=root UBINOWN=root UBINGRP=root \ + MANOWN=root MANGRP=root INCOWN=root INCGRP=root \ + LIBOWN=root LIBGRP=root GBINOWN=root GBINGRP=root \ + MSPQOWN=root CFOWN=root CFGRP=root \ + force-install -C ${OBJDIR}/${dir} \ + || die "install failed" + done + fowners root.smmsp /usr/sbin/sendmail + fowners smmsp.smmsp /var/spool/clientmqueue + fperms 770 /var/spool/clientmqueue + fperms 700 /var/spool/mqueue + dosym /usr/sbin/sendmail /usr/lib/sendmail + dosym /usr/sbin/makemap /usr/bin/makemap + dodoc FAQ LICENSE KNOWNBUGS README RELEASE_NOTES doc/op/op.ps + newdoc sendmail/README README.sendmail + newdoc sendmail/SECURITY SECURITY + newdoc sendmail/TUNING TUNING + newdoc smrsh/README README.smrsh + newdoc libmilter/README README.libmilter + newdoc cf/README README.cf + newdoc cf/cf/README README.install-cf + cp -a cf/* ${D}/usr/share/sendmail-cf + insinto /etc/mail + if [ -n "` use mbox `" ] + then + doins ${FILESDIR}/{sendmail.cf,sendmail.mc} + else + newins ${FILESDIR}/sendmail-procmail.cf sendmail.cf + newins ${FILESDIR}/sendmail-procmail.mc sendmail.mc + fi + echo "# local-host-names - include all aliases for your machine here" \ + > ${D}/etc/mail/local-host-names + cat << EOF > ${D}/etc/mail/trusted-users +# trusted-users - users that can send mail as others without a warning +# apache, mailman, majordomo, uucp are good candidates +EOF + cat << EOF > ${D}/etc/mail/access +# Check the /usr/share/doc/sendmail/README.cf file for a description +# of the format of this file. (search for access_db in that file) +# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc +# package. +# +# by default we allow relaying from localhost... +localhost.localdomain RELAY +localhost RELAY +127.0.0.1 RELAY + +EOF +cat << EOF > ${D}/etc/conf.d/sendmail +# Config file for /etc/init.d/sendmail +# add start-up options here +SENDMAIL_OPTS="-bd -q30m -L sm-mta" # default daemon mode +CLIENTMQUEUE_OPTS="-Ac -q30m -L sm-cm" # clientmqueue +KILL_OPTS="" # add -9/-15/your favorite evil SIG level here + +EOF + exeinto /etc/init.d + doexe ${FILESDIR}/sendmail + mkdir -p ${D}/usr/adm/sm.bin/ + touch ${D}/usr/adm/sm.bin/.keep +} + +pkg_postinst() { + + einfo "This ebuild uses mbox support by default. If you are" + einfo "looking for maildir support put -mbox into your USE variables." + +} |