File sendmail-8.14.5.dif of Package sendmail

--- cf/README
+++ cf/README	2006-08-10 09:32:28.000000000 +0000
@@ -344,7 +344,7 @@ LOCAL_MAILER_DSN_DIAGNOSTIC_CODE
 			local mailer.  This should be changed with care.
 LOCAL_SHELL_PATH	[/bin/sh] The shell used to deliver piped email.
 LOCAL_SHELL_FLAGS	[eu9] The flags used by the shell mailer.  The
-			flags lsDFM are always included.
+			flags lsDFMoq are always included.
 LOCAL_SHELL_ARGS	[sh -c $u] The arguments passed to deliver "prog"
 			mail.
 LOCAL_SHELL_DIR		[$z:/] The directory search path in which the
--- cf/domain/generic.m4
+++ cf/domain/generic.m4	2006-08-10 09:32:28.000000000 +0000
@@ -25,4 +25,4 @@ define(`confFORWARD_PATH', `$z/.forward.
 define(`confMAX_HEADERS_LENGTH', `32768')dnl
 FEATURE(`redirect')dnl
 FEATURE(`use_cw_file')dnl
-EXPOSED_USER(`root')
+ifdef(`_MAILER_uucp_', `EXPOSED_USER(`root uucp')',`EXPOSED_USER(`root')')dnl
--- cf/feature/dialup.m4
+++ cf/feature/dialup.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,50 @@
+divert(-1)
+#
+# Copyright (c) 1999 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Dialup setup: configuration for sendmail on dialup clients,
+#               try to avoid dialups.
+#
+
+divert(0)
+VERSIONID(`@(#)dialup.m4   0.2 (SuSE Linux) 2003/04/15')
+divert(-1)
+ifdef(`_MAILER_smtp_', `errprint(`*** MAILER(smtp) must appear after HACK(dialup)'
+)')dnl
+dnl
+dnl For dialup connections (SMTP or UUCP) the queueing time
+dnl depends on the daily connection.
+dnl
+define(`confTO_QUEUEWARN',		`1d')dnl
+define(`confTO_QUEUEWARN_URGENT',	`4h')dnl
+define(`confTO_QUEUERETURN',		`7d')dnl
+dnl
+dnl If a connection fails, wait this long and try again.
+dnl Zero means "don't retry".
+dnl
+define(`confDIAL_DELAY',		`1m')dnl
+dnl
+dnl On most dialup clients we want to spool without
+dnl a expensive DNS lookup with a dial on demand.
+dnl (deliver mode `defer' skips deliver even on loopback)
+dnl
+dnl define(`confDELIVERY_MODE',		`defer')dnl
+FEATURE(`delay_checks')dnl
+dnl
+dnl Do not probe all active net interfaces and their FQDNs
+dnl to avoid expensive dialups.
+dnl
+define(`confDONT_PROBE_INTERFACES',	`True')dnl
+dnl
+dnl If we do not probe we should know who we are, shouldn't we.
+dnl
+ifelse(_ARG_,`',`dnl', `define(`confDOMAIN_NAME',_ARG_)')
+divert(0)dnl
+ifelse(_ARG_,`',`dnl',
+LOCAL_CONFIG
+CONCAT(CG,_ARG_)
+CONCAT(Cw,_ARG_))
+dnl
--- cf/feature/expensive.m4
+++ cf/feature/expensive.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1999 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Expensive setup: configuration for sendmail on dailup clients.
+#
+
+divert(0)
+VERSIONID(`@(#)expensive.m4   0.3 (SuSE Linux) 2006/06/20')
+divert(-1)
+ifdef(`_MAILER_smtp_', `errprint(`*** MAILER(smtp) must appear after FEATURE(expensive)'
+)')dnl
+dnl
+dnl SMTP is expensive, e.g. over dialup connections
+dnl
+define(`confCON_EXPENSIVE',	`True')dnl
+MODIFY_MAILER_FLAGS(`SMTP',	`+e')dnl
+dnl
+dnl Shorten initial connect, do not block other connections
+dnl
+define(`confTO_ICONNECT',	`10s')dnl
+dnl
+divert(0)dnl
--- cf/feature/ldap.m4
+++ cf/feature/ldap.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1999,2000 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Accordingly to http://www.stanford.edu/~bbense/ldap/:
+# try to add an alias definition with openldap.
+# Therefore the rule S5 has to be extended.
+# We choose an other name for the mentioned luser
+# to avoid conflicts with LUSER_RELAY.
+#
+
+divert(0)
+VERSIONID(`@(#)ldap.m4	0.2 (SuSE Linux) 2000/03/22')
+divert(-1)
+
+ifelse(_ARGS_,`',`errprint(`FEATURE(ldap) requires argument!
+')m4exit(1)')dnl
+define(`_LDAP_', `')dnl
+ifdef(`ALIAS_FILE', define(`ALIAS_FILE', ALIAS_FILE`,sequence:ldap'))dnl
+LOCAL_CONFIG
+# For a description see http://www.stanford.edu/~bbense/ldap/,
+# the name `ldap' instead of `luser' is used for the map.
+Kldap ldap _ARGS_
--- cf/feature/masquerade_envelope.m4
+++ cf/feature/masquerade_envelope.m4	2006-08-10 09:32:28.000000000 +0000
@@ -17,3 +17,5 @@ VERSIONID(`$Id: masquerade_envelope.m4,v
 divert(-1)
 
 define(`_MASQUERADE_ENVELOPE_', 1)
+
+divert(0)dnl
--- cf/feature/msp.m4
+++ cf/feature/msp.m4	2008-02-20 17:46:35.000000000 +0000
@@ -20,7 +20,7 @@ define(`confPRIVACY_FLAGS', `goaway,noet
 define(`confDONT_PROBE_INTERFACES', `True')
 dnl ---------------------------------------------
 dnl run as this user (even if called by root)
-ifdef(`confRUN_AS_USER',,`define(`confRUN_AS_USER', `smmsp')')
+ifdef(`confRUN_AS_USER',,`define(`confRUN_AS_USER', `mail')')
 ifdef(`confTRUSTED_USER',,`define(`confTRUSTED_USER',
 `ifelse(index(confRUN_AS_USER,`:'), -1, `confRUN_AS_USER',
 `substr(confRUN_AS_USER,0,index(confRUN_AS_USER,`:'))')')')
@@ -62,11 +62,18 @@ MODIFY_MAILER_FLAGS(`ESMTP', `+k5')dnl
 MODIFY_MAILER_FLAGS(`DSMTP', `+k5')dnl
 MODIFY_MAILER_FLAGS(`SMTP8', `+k5')dnl
 MODIFY_MAILER_FLAGS(`RELAY', `+k')dnl
+define(`SMTP_MAILER_ARGS',  `TCP $h ${MTAPort}')dnl
+define(`ESMTP_MAILER_ARGS', `TCP $h ${MTAPort}')dnl
+define(`DSMTP_MAILER_ARGS', `TCP $h ${MTAPort}')dnl
+define(`SMTP8_MAILER_ARGS', `TCP $h ${MTAPort}')dnl
+ifelse(_ARG2_, `', `define(`RELAY_MAILER_ARGS', `TCP $h ${MTAPort}')')dnl
+ifdef(`confMTAPort', `define(`_MTA_PORT_', confMTAPort)', `define(`_MTA_PORT_', `smtp')')dnl
 MAILER(`local')dnl
 MAILER(`smtp')dnl
 
 LOCAL_CONFIG
 D{MTAHost}_MTA_HOST_
+D{MTAPort}_MTA_PORT_
 
 LOCAL_RULESETS
 SLocal_localaddr
--- cf/feature/no_local_masquerading.m4
+++ cf/feature/no_local_masquerading.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,17 @@
+divert(-1)
+#
+# Copyright (c) 2000 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Avoid masquerading of local senders if recipients are local too.
+#
+
+divert(0)
+VERSIONID(`@(#)no_local_masquerading.m4  0.1 (SuSE Linux) 2000/03/21')
+divert(-1)
+ifdef(`_MAILER_local_',
+	`errprint(`*** MAILER(local) must appear after FEATURE(no_local_masquerading)'
+)')dnl
+define(`_LOCAL_NO_MASQUERADE_', 1)dnl
--- cf/feature/use_cw_file.m4
+++ cf/feature/use_cw_file.m4	2006-08-10 09:32:28.000000000 +0000
@@ -22,4 +22,4 @@ divert(-1)
 
 define(`USE_CW_FILE', `')
 
-divert(0)
+divert(0)dnl
--- cf/hack/nodns.m4
+++ cf/hack/nodns.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1999 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+
+divert(0)
+VERSIONID(`@(#)nodns.m4	0.3 (SuSE Linux) 2006/19/06')
+divert(-1)
+dnl
+dnl We can not resolve unqualified senders or domains
+dnl without an expensive DNS lookup.
+dnl
+FEATURE(`accept_unresolvable_domains')dnl
+FEATURE(`accept_unqualified_senders')dnl
+dnl
+dnl Use an alternated service switch file with no DNS or other
+dnl expensive dialups. This requires a well configured /etc/hosts.
+dnl
+define(`confSERVICE_SWITCH_FILE',	`/etc/mail/service-nodns.switch')dnl
+dnl
+dnl Avoid address canonification, because we do not have DNS.
+dnl
+ifdef(`_NO_CANONIFY_',`dnl',`FEATURE(`nocanonify')')dnl
+define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')dnl
+dnl
+divert(0)dnl
--- cf/m4/cfhead.m4
+++ cf/m4/cfhead.m4	2008-02-20 18:00:46.000000000 +0000
@@ -304,6 +304,7 @@ define(`confMILTER_MACROS_HELO', ``{tls_
 define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
 define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
 define(`confMILTER_MACROS_EOM', `{msg_id}')
+undefine(`confMTAPort')
 
 
 divert(0)dnl
--- cf/m4/proto.m4
+++ cf/m4/proto.m4	2006-08-10 09:32:28.000000000 +0000
@@ -1245,6 +1245,12 @@ ifdef(`_PRESERVE_LUSER_HOST_', `dnl
 R< $+ > $+		$: < $1 > $2 $&{Host}')
 dnl')
 
+ifdef(`_LDAP_', `dnl
+# Now attempt to lookup in ldap (ldap map)
+R< $L > $+		$: < $L > $(ldap $1 $)		look up user
+R< $*  > $+ @ $+	$: < $3 > $2			rewrite if forward',
+`dnl')
+
 ifdef(`MAIL_HUB', `dnl
 R< > $+			$: < $H > $1			try hub', `dnl')
 ifdef(`LOCAL_RELAY', `dnl
--- cf/mailer/bsmtp.m4
+++ cf/mailer/bsmtp.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,56 @@
+PUSHDIVERT(-1)
+dnl Copyright (c) 1995-1997 Felix Schroeter <felix@mamba.pond.sub.org>
+dnl
+dnl Redistribution and use in source and binary forms, with or without
+dnl modification, are permitted provided that the following conditions
+dnl are met:
+dnl  1. Redistributions of source code must retain the above copyright
+dnl     notice, this list of conditions and the following disclaimer,
+dnl     either in a separate file included with the distribution, or
+dnl     copied into the source files.
+dnl  2. Redistributions in binary form must reproduce the above copyright
+dnl     notice, this list of conditions and the following disclaimer in the
+dnl     documentation and/or other materials provided with the distribution.
+dnl  3. All advertising materials mentioning features or use of this software
+dnl     must display the following acknowledgement:
+dnl       This product includes software developed by Felix Schroeter
+dnl       and his contributors.
+dnl     Optionally you may add a contact address for Felix Schroeter to the
+dnl     notice.
+dnl  4. Neither the name of the author nor the names of his contributors
+dnl     may be used to endorse or promote products derived from this software
+dnl     without specific prior written permission.
+dnl
+dnl THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND HIS CONTRIBUTORS ``AS IS'' AND
+dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+dnl ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR HIS CONTRIBUTORS BE LIABLE
+dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+dnl SUCH DAMAGE.
+dnl
+
+ifdef(`_MAILER_smtp_', `',
+	`errprint(`*** MAILER(`smtp') must appear before MAILER(`procmail')')')
+
+_DEFIFNOT(`_DEF_BSMTP_MAILER_FLAGS', `DFmMnuX8')
+_DEFIFNOT(`BSMTP_MAILER_FLAGS', SMTP_MAILER_FLAGS)
+ifdef(`BSMTP_MAILER_ARGS',, `define(`BSMTP_MAILER_ARGS', `bsmtp -f $g $h $u')')
+
+POPDIVERT
+
+######################################
+###   BSMTP Mailer specification   ###
+######################################
+
+VERSIONID(`@(#) bsmtp.m4	0.2 (felix@subnet.sub.net) 8/15/95')
+
+MAILER_DEFINITIONS
+Mbsmtp,		P=/usr/lib/bsmtp/bsmtp, F=_MODMF_(CONCAT(_DEF_BSMTP_MAILER_FLAGS, BSMTP_MAILER_FLAGS), `BSMTP'),
+		S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990,
+		_OPTINS(`BSMTP_MAILER_MAX', `M=', `, ')_OPTINS(`BSMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`BSMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
+		A=BSMTP_MAILER_ARGS
--- cf/mailer/cyrus.m4
+++ cf/mailer/cyrus.m4	2006-08-10 09:32:28.000000000 +0000
@@ -36,7 +36,7 @@ PUSHDIVERT(-1)
 #
 
 _DEFIFNOT(`CYRUS_MAILER_FLAGS', `Ah5@/:|')
-ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', /usr/cyrus/bin/deliver)')
+ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', `/usr/lib/cyrus/bin/deliver')')
 ifdef(`CYRUS_MAILER_ARGS',, `define(`CYRUS_MAILER_ARGS', `deliver -e -m $h -- $u')')
 ifdef(`CYRUS_MAILER_USER',, `define(`CYRUS_MAILER_USER', `cyrus:mail')')
 _DEFIFNOT(`CYRUS_BB_MAILER_FLAGS', `u')
@@ -51,6 +51,7 @@ POPDIVERT
 
 VERSIONID(`$Id: cyrus.m4,v 8.23 2001/11/12 23:11:34 ca Exp $ (Carnegie Mellon)')
 
+MAILER_DEFINITIONS
 Mcyrus,		P=CYRUS_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), `CYRUS'), S=EnvFromL, R=EnvToL/HdrToL,
 		ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER, T=DNS/RFC822/X-Unix,_CYRUS_QGRP
 		A=CYRUS_MAILER_ARGS
--- cf/mailer/fax.m4
+++ cf/mailer/fax.m4	2006-08-10 09:32:28.000000000 +0000
@@ -30,6 +30,7 @@ POPDIVERT
 
 VERSIONID(`$Id: fax.m4,v 8.16 2001/11/12 23:11:34 ca Exp $')
 
+MAILER_DEFINITIONS
 Mfax,		P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24,
 		M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,_FAX_QGRP
 		A=FAX_MAILER_ARGS
--- cf/mailer/fido.m4
+++ cf/mailer/fido.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,25 @@
+PUSHDIVERT(-1)
+
+ifdef(`_MAILER_uucp_', `',
+        `errprint(`*** MAILER(`uucp') must appear before MAILER(`fido')')')
+ifdef(`_MAILER_smtp_', `',
+        `errprint(`*** MAILER(`smtp') must appear before MAILER(`fido')')')
+
+ifdef(`FIDO_MAILER_PATH',,`define(`FIDO_MAILER_PATH', /usr/lib/ifmail/ifmail)')
+_DEFIFNOT(`_DEF_FIDO_MAILER_FLAGS', `msSDFMuC')
+_DEFIFNOT(`FIDO_MAILER_FLAGS', `')
+ifdef(`FIDO_MAILER_ARGS',, `define(`FIDO_MAILER_ARGS', `ifmail $u -r$h')')
+
+POPDIVERT
+
+#################################
+### FIDO Mailer specification ###
+#################################
+
+VERSIONID(`@(#) fido.m4 8.10.0-0.2 (SuSE Linux) 23/03/2000')
+
+MAILER_DEFINITIONS
+Mfido,		P=FIDO_MAILER_PATH, F=_MODMF_(CONCAT(_DEF_FIDO_MAILER_FLAGS, FIDO_MAILER_FLAGS), `FIDO'), S=EnvFromUD/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'),
+		M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
+		A=FIDO_MAILER_ARGS
+
--- cf/mailer/local.m4
+++ cf/mailer/local.m4	2006-08-10 09:32:28.000000000 +0000
@@ -34,6 +34,7 @@ POPDIVERT
 
 VERSIONID(`$Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $')
 
+LOCAL_RULESETS
 #
 #  Envelope sender rewriting
 #
@@ -85,6 +86,7 @@ R$+			$@ $1 < @ *LOCAL* >	add local qual
 `R$+			$@ $1 < @ _ALWAYS_ADD_DOMAIN_ >	add qualification')',
 `dnl')
 
+MAILER_DEFINITIONS
 Mlocal,		P=LOCAL_MAILER_PATH, F=_MODMF_(CONCAT(_DEF_LOCAL_MAILER_FLAGS, LOCAL_MAILER_FLAGS), `LOCAL'), LOCAL_RWR,_OPTINS(`LOCAL_MAILER_EOL', ` E=', `, ')
 		_OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`LOCAL_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/LOCAL_MAILER_DSN_DIAGNOSTIC_CODE,_LOCAL_QGRP
 		A=LOCAL_MAILER_ARGS
--- cf/mailer/mail11.m4
+++ cf/mailer/mail11.m4	2006-08-10 09:32:28.000000000 +0000
@@ -34,7 +34,7 @@ R$* < @ $=w .DECNET. >		$#_LOCAL_ $: $1
 R$+ < @ $+ .DECNET. >		$#mail11 $@ $2 $: $1		DECnet user
 POPDIVERT
 
-PUSHDIVERT(6)
+LOCAL_CONFIG
 CPDECNET
 POPDIVERT
 
@@ -44,6 +44,7 @@ POPDIVERT
 
 VERSIONID(`$Id: mail11.m4,v 8.22 2001/11/12 23:11:34 ca Exp $')
 
+LOCAL_RULESETS
 SMail11To
 R$+ < @ $- .UUCP >	$: $2 ! $1		back to old style
 R$+ < @ $- .DECNET >	$: $2 :: $1		convert to DECnet style
@@ -56,6 +57,7 @@ SMail11From
 R$+			$: $>Mail11To $1	preprocess
 R$w :: $+		$@ $w :: $1		ready to go
 
-Mmail11, P=MAIL11_MAILER_PATH, F=_MODMF_(MAIL11_MAILER_FLAGS, `MAIL11'), S=Mail11From, R=Mail11To,
-	T=DNS/X-DECnet/X-Unix,_MAIL11_QGRP
-	A=MAIL11_MAILER_ARGS
+MAILER_DEFINITIONS
+Mmail11,	P=MAIL11_MAILER_PATH, F=_MODMF_(MAIL11_MAILER_FLAGS, `MAIL11'), S=Mail11From, R=Mail11To,
+		T=DNS/X-DECnet/X-Unix,_MAIL11_QGRP
+		A=MAIL11_MAILER_ARGS
--- cf/mailer/mail500.m4
+++ cf/mailer/mail500.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,57 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1999,2000 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Define mail500 accordingly to the manual page of mail500(1)
+# of the openldap package.  We use a more flexible rule for
+# domains given in class {mail500} similar to those of uucp
+# mailers. The host part of header and envelope is removed
+# for the recipient just like in local mailer part.
+# 
+# `MAIL500_SERVER_HOST'  alternate host on which the LDAP server is running.
+# `MAIL500_CONFIG_PATH'  only for new OpenLDAP
+# `MAIL500_MAILER_PATH'  path of mail500 binary
+# `MAIL500_MAILER_FLAGS' the flags for sendmail (see op.txt)
+# `MAIL500_MAILER_ARGS'  the mailer arguments (see mail500(1))
+#
+
+ifelse(_ARG_,`',`errprint(`*** MAILER(`mail500') requires domain name(s) as argument!
+')')dnl
+
+ifdef(`_MAILER_smtp_', `',
+	`errprint(`*** MAILER(`smtp') must appear before MAILER(`mail500', `ldap-domain')')')dnl
+
+_DEFIFNOT(`_USE_MAIL500_MAILER_ARGS', `mail500')
+_DEFIFNOT(`_DEF_MAIL500_MAILER_FLAGS', `DFM')
+
+dnl _DEFIFNOT(`MAIL500_CONFIG_PATH', `/etc/openldap/mail500.conf')
+_DEFIFNOT(`MAIL500_MAILER_PATH', `/usr/libexec/openldap/mail500')
+_DEFIFNOT(`MAIL500_MAILER_FLAGS', `SmnXuh')
+_DEFIFNOT(`MAIL500_MAILER_ARGS', `-f $f -m $n@$w $u')
+
+define(`_USE_MAIL500_MAILER_ARGS', CONCAT(`_USE_MAIL500_MAILER_ARGS', _OPTINS(`MAIL500_SERVER_HOST', ` -l ', `')))
+define(`_USE_MAIL500_MAILER_ARGS', CONCAT(`_USE_MAIL500_MAILER_ARGS', _OPTINS(`MAIL500_CONFIG_PATH', ` -C ', `')))
+define(`_USE_MAIL500_MAILER_ARGS', CONCAT(`_USE_MAIL500_MAILER_ARGS', _OPTINS(`MAIL500_MAILER_ARGS', ` ', `')))
+
+POPDIVERT
+
+########################################
+###   MAIL500 Mailer specification   ###
+########################################
+
+VERSIONID(`@(#) mail500.m4 0.1 (SuSE Linux) 2000/03/22')
+
+MAILER_DEFINITIONS
+Mmail500,	P=MAIL500_MAILER_PATH, F=_MODMF_(CONCAT(_DEF_MAIL500_MAILER_FLAGS, MAIL500_MAILER_FLAGS), `MAIL500'), S=EnvFromSMTP/HdrFromSMTP, R=EnvToL/HdrToL
+		ifdef(`MAIL500_MAILER_MAX', `M=MAIL500_MAILER_MAX, ')T=DNS/RFC822/X-Unix,
+		A=_USE_MAIL500_MAILER_ARGS
+
+LOCAL_RULE_0
+# redirect messages for domain given in Class for mail500
+R$* < @ $={mail500} > $*	$#mail500 $@ $2 $: <$1@$2>
+
+LOCAL_CONFIG
+C{mail500}`'_ARG_
--- cf/mailer/phquery.m4
+++ cf/mailer/phquery.m4	2006-08-10 09:32:28.000000000 +0000
@@ -27,6 +27,7 @@ POPDIVERT
 
 VERSIONID(`$Id: phquery.m4,v 8.17 2001/11/12 23:11:34 ca Exp $')
 
+MAILER_DEFINITIONS
 Mph,		P=PH_MAILER_PATH, F=_MODMF_(CONCAT(`nrDFM', PH_MAILER_FLAGS), `PH'), S=EnvFromL, R=EnvToL/HdrToL,
 		T=DNS/RFC822/X-Unix,_PH_QGRP
 		A=PH_MAILER_ARGS
--- cf/mailer/pop.m4
+++ cf/mailer/pop.m4	2006-08-10 09:32:28.000000000 +0000
@@ -25,6 +25,7 @@ POPDIVERT
 
 VERSIONID(`$Id: pop.m4,v 8.22 2001/11/12 23:11:34 ca Exp $')
 
+MAILER_DEFINITIONS
 Mpop,		P=POP_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMq', POP_MAILER_FLAGS), `POP'), S=EnvFromL, R=EnvToL/HdrToL,
 		T=DNS/RFC822/X-Unix,_POP_QGRP
 		A=POP_MAILER_ARGS
--- cf/mailer/procmail.m4
+++ cf/mailer/procmail.m4	2006-08-10 09:32:28.000000000 +0000
@@ -29,6 +29,7 @@ POPDIVERT
 
 VERSIONID(`$Id: procmail.m4,v 8.22 2001/11/12 23:11:34 ca Exp $')
 
+MAILER_DEFINITIONS
 Mprocmail,	P=PROCMAIL_MAILER_PATH, F=_MODMF_(CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), `PROCMAIL'), S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP,
 		ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')T=DNS/RFC822/X-Unix,_PROCMAIL_QGRP
 		A=PROCMAIL_MAILER_ARGS
--- cf/mailer/qpage.m4
+++ cf/mailer/qpage.m4	2006-08-10 09:32:28.000000000 +0000
@@ -26,6 +26,7 @@ POPDIVERT
 
 VERSIONID(`$Id: qpage.m4,v 8.10 2001/11/12 23:11:34 ca Exp $')
 
+MAILER_DEFINITIONS
 Mqpage, P=QPAGE_MAILER_PATH, F=_MODMF_(QPAGE_MAILER_FLAGS, `QPAGE'),
 	M=QPAGE_MAILER_MAX,  T=DNS/RFC822/X-Unix,_QPAGE_QGRP
 	A=QPAGE_MAILER_ARGS
--- cf/mailer/smtp.m4
+++ cf/mailer/smtp.m4	2007-04-05 13:27:42.000000000 +0000
@@ -33,6 +33,7 @@ POPDIVERT
 
 VERSIONID(`$Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $')
 
+LOCAL_RULESETS
 #
 #  common sender and masquerading recipient rewriting
 #
@@ -107,6 +108,7 @@ SMasqRelay
 R$+			$: $>MasqSMTP $1
 R$+			$: $>MasqHdr $1
 
+MAILER_DEFINITIONS
 Msmtp,		P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, SMTP_MAILER_FLAGS), `SMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
 		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_SMTP_QGRP
 		A=SMTP_MAILER_ARGS
--- cf/mailer/usenet.m4
+++ cf/mailer/usenet.m4	2006-08-10 09:32:28.000000000 +0000
@@ -23,6 +23,7 @@ POPDIVERT
 
 VERSIONID(`$Id: usenet.m4,v 8.22 2003/02/20 21:16:13 ca Exp $')
 
+MAILER_DEFINITIONS
 Musenet,	P=USENET_MAILER_PATH, F=_MODMF_(USENET_MAILER_FLAGS, `USENET'), S=EnvFromL, R=EnvToL,
 		_OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,_USENET_QGRP
 		A=USENET_MAILER_ARGS $u
--- cf/mailer/uucp.m4
+++ cf/mailer/uucp.m4	2006-08-10 09:32:28.000000000 +0000
@@ -26,6 +26,7 @@ POPDIVERT
 
 VERSIONID(`$Id: uucp.m4,v 8.44 2001/08/24 19:49:08 ca Exp $')
 
+LOCAL_RULESETS
 #
 #  envelope and header sender rewriting
 #
@@ -122,6 +123,7 @@ R$* < @ $=Y . UUCP. > $*	$#uucp-new $@ $
 R$* < @ $=U . UUCP. > $*	$#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3
 POPDIVERT
 
+MAILER_DEFINITIONS
 #
 #  There are innumerable variations on the UUCP mailer.  It really
 #  is rather absurd.
@@ -154,4 +156,3 @@ Muucp-uudom,	P=UUCP_MAILER_PATH, F=_MODM
 		M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
 		A=UUCP_MAILER_ARGS')
 
-
--- cf/ostype/suse-linux.m4
+++ cf/ostype/suse-linux.m4	2006-08-10 09:32:28.000000000 +0000
@@ -0,0 +1,82 @@
+divert(-1)
+#
+# Copyright (c) 1999,2000 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+
+divert(0)
+VERSIONID(`@(#) suse-linux.m4	0.8 (SuSE Linux) 2005/11/11')
+define(`confCF_VERSION', `SuSE Linux 0.8')dnl
+dnl
+dnl Flags
+dnl
+define(`confDEF_USER_ID',		`daemon:daemon')dnl
+define(`confCOPY_ERRORS_TO',		`Postmaster')dnl
+define(`UUCP_MAILER_MAX',		`2000000')dnl
+define(`confMAX_MIME_HEADER_LENGTH',	`256/128')dnl
+define(`confMAX_HEADERS_LENGTH',	`32768')dnl
+dnl define(`confQUEUE_LA',		`12')dnl
+dnl define(`confREFUSE_LA',		`18')dnl
+define(`confMAX_DAEMON_CHILDREN',	`15')dnl
+define(`confTO_ICONNECT',		`30s')dnl
+dnl Many sysadmins have disabled IDENT
+define(`confTO_IDENT',			`0s')dnl
+dnl Should we set noreceipts aka disable DSN?
+define(`confPRIVACY_FLAGS',		`authwarnings,needmailhelo,novrfy,noexpn,noverb')dnl
+define(`confTRUSTED_USERS',		`mdom vscan wwwrun root uucp daemon mail')dnl
+define(`confNO_RCPT_ACTION',		`add-to-undisclosed')dnl
+dnl Note: RFC1891 says that, but often misused
+dnl define(`confRRT_IMPLIES_DSN',	`True')dnl
+FEATURE(`always_add_domain')dnl
+dnl
+dnl Mailer
+dnl
+define(`PROCMAIL_MAILER_PATH',		`/usr/bin/procmail')dnl
+define(`PROCMAIL_MAILER_ARGS',		`procmail -m $h $f $u')dnl
+FEATURE(`local_procmail')dnl
+define(`LOCAL_SHELL_FLAGS',		`eu09')dnl
+define(`LOCAL_MAILER_ARGS',		`procmail -a $h -d $u')dnl
+define(`LOCAL_MAILER_FLAGS',		`SPfhn09')dnl
+define(`USENET_MAILER_PATH',		`/usr/bin/inews')dnl
+dnl
+dnl The default data base type is hash
+dnl
+define(`DATABASE_MAP_TYPE', `hash')dnl
+dnl
+dnl Main paths
+dnl
+define(`SMLIBDIR',			`/usr/lib/sendmail.d')dnl
+define(`MAIL_SETTINGS_DIR',		`/etc/mail/')dnl
+define(`confDEAD_LETTER_DROP',		`/var/log/dead.letter')dnl
+define(`STATUS_FILE',			`/var/lib/sendmail/statistics')dnl
+define(`QUEUE_DIR',			`/var/spool/mqueue')dnl
+define(`confHOST_STATUS_DIRECTORY',	`.hoststat')dnl
+define(`HELP_FILE',			 SMLIBDIR`/helpfile')dnl
+define(`ALIAS_FILE',			`/etc/aliases')dnl
+define(`confHOSTS_FILE',		`/etc/hosts')dnl
+FEATURE(`use_ct_file')dnl
+define(`confCT_FILE',			`-o /etc/mail/trusted-users %[^\#]')dnl
+define(`confCW_FILE',			`-o /etc/mail/local-host-names %[^\#]')dnl
+define(`confCR_FILE',			`-o /etc/mail/relay-domains %[^\#]')dnl
+define(`confUSERDB_SPEC',		`/etc/mail/userdb.db')dnl
+define(`confSERVICE_SWITCH_FILE',	`/etc/mail/service.switch')dnl
+define(`confEBINDIR',			 SMLIBDIR`/bin')dnl
+define(`confDONT_BLAME_SENDMAIL',	`AssumeSafeChown,TrustStickyBit,GroupReadableSASLDBFile')dnl
+define(`confCONTROL_SOCKET_NAME',	`/var/run/sendmail/control')dnl
+define(`CERT_DIR',			 MAIL_SETTINGS_DIR`certs')dnl
+define(`confCACERT_PATH',		 CERT_DIR)dnl
+define(`AUTH_DIR',			 MAIL_SETTINGS_DIR`auth')dnl
+dnl
+dnl Daemon (disable new Message Submission Agent)
+dnl
+FEATURE(`no_default_msa')dnl
+dnl
+dnl Common features
+dnl
+FEATURE(`mailertable',			`hash -o /etc/mail/mailertable.db')dnl
+FEATURE(`genericstable',		`hash -o /etc/mail/genericstable.db')dnl
+FEATURE(`virtusertable',		`hash -o /etc/mail/virtusertable.db')dnl
+dnl
+LOCAL_CONFIG
--- cf/sh/makeinfo.sh
+++ cf/sh/makeinfo.sh	2006-08-10 09:32:28.000000000 +0000
@@ -22,7 +22,7 @@ do
 	then
 		p="."
 	fi
-	if [ -f $p/whoami ]
+	if [ -x $p/whoami ]
 	then
 		usewhoami=1
 		if [ $usehostname -ne 0 ]
@@ -30,7 +30,7 @@ do
 			break;
 		fi
 	fi
-	if [ -f $p/hostname ]
+	if [ -x $p/hostname ]
 	then
 		usehostname=1
 		if [ $usewhoami -ne 0 ]
@@ -48,11 +48,17 @@ fi
 
 if [ $usehostname -ne 0 ]
 then
-	host=`hostname`
+	[ -r /etc/rc.config ] && host="$( . /etc/rc.config &> /dev/null ; echo $FQHOSTNAME)"
+	[ -z "$host" -a -r /etc/HOSTNAME ] && read host < /etc/HOSTNAME
+	[ -z "$host" ] && host=`hostname -f`
 else
 	host=`uname -n`
 fi
 echo '#####' built by $user@$host on `date`
+if [ -r /etc/SuSE-release ] ; then
+	read line < /etc/SuSE-release
+	echo '#####' on $line
+fi
 echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
 echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//'
 echo "define(\`__HOST__', $host)dnl"
--- contrib/bounce-resender.pl
+++ contrib/bounce-resender.pl	2006-08-10 09:32:28.000000000 +0000
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl -w
+#!/usr/bin/perl -w
 #
 # bounce-resender: constructs mail queue from bounce spool for
 #  subsequent reprocessing by sendmail
@@ -30,7 +30,7 @@ $uname = "PhilOS";  # You don't want to
 $myname = $0;
 $myname =~ s,.*/([^/]*),$1,;
 
-chomp($hostname = `hostname`);
+chomp($hostname = `hostname -f`);
 chomp($uname = `uname`);
 
 # FIXME: Define the functions "major" and "minor" for your OS.
--- contrib/doublebounce.pl
+++ contrib/doublebounce.pl	2006-08-10 09:32:28.000000000 +0000
@@ -111,6 +111,11 @@ EOT
   return $result;
 }
 
+sub cleanup
+{
+        unlink("$tmpfile");
+}
+
 sub main {
   # Get our command line options
   getopts('d');
@@ -127,6 +132,10 @@ sub main {
   # it in memory, get a temporary file.
   $tmpfile = tmpnam();
 
+  $SIG{'INT'}  = "cleanup";
+  $SIG{'TERM'} = "cleanup";
+  $SIG{'HUP'}  = "cleanup";
+
   if (!open(MSG, ">$tmpfile")) {
     syslog('err', "Unable to open temporary file $tmpfile");
     exit(75); # 75 is a temporary failure, sendmail should retry
@@ -222,4 +231,3 @@ sub main {
 
 main();
 exit(0);
-
--- contrib/etrn.pl
+++ contrib/etrn.pl	2006-08-10 09:32:28.000000000 +0000
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl -w
+#!/usr/bin/perl -w
 #
 # Copyright (c) 1996-2000 by John T. Beck <john@beck.org>
 # All rights reserved.
--- contrib/expn.pl
+++ contrib/expn.pl	2006-08-10 09:32:28.000000000 +0000
@@ -101,6 +101,7 @@ use Fcntl;
 
 $have_nslookup = 1;	# we have the nslookup program
 $port = 'smtp';
+$tmp_dir = "/tmp/.expn$$";
 $av0 = $0;
 $ENV{'PATH'} .= ":/usr/etc" unless $ENV{'PATH'} =~ m,/usr/etc,;
 $ENV{'PATH'} .= ":/usr/ucb" unless $ENV{'PATH'} =~ m,/usr/ucb,;
@@ -112,6 +113,19 @@ chop($name = `hostname || uname -n`);
 $0 = "$av0 - lookup host FQDN and IP addr";
 ($hostname,$aliases,$type,$len,$thisaddr) = gethostbyname($name);
 
+mkdir("$tmp_dir",0700) || die "mkdir $tmp_dir: $!";
+
+sub cleanup
+{
+	unlink("/tmp/.expn$$/expn$$");
+	rmdir $tmp_dir;
+	exit(1);
+}
+
+$SIG{'INT'}  = "cleanup";
+$SIG{'TERM'} = "cleanup";
+$SIG{'HUP'}  = "cleanup";
+
 $0 = "$av0 - parsing args";
 $usage = "Usage: $av0 [-1avwd] user[\@host] [user2[host2] ...]";
 for $a (@ARGV) {
@@ -402,7 +416,9 @@ select(STDOUT);
 for $f (sort @final) {
 	print "$f\n";
 }
-unlink("/tmp/expn$$");
+unlink("/tmp/.expn$$/expn$$");
+rmdir $tmp_dir;
+
 exit(0);
 
 
@@ -1000,13 +1016,13 @@ sub mxlookup
 	}
 
 	$0 = "$av0 - nslookup of $server";
-	sysopen(T,"/tmp/expn$$",O_RDWR|O_CREAT|O_EXCL,0600) || die "open > /tmp/expn$$: $!\n";
+	sysopen(T,"/tmp/.expn$$/expn$$",O_RDWR|O_CREAT|O_EXCL,0600) || die "open > /tmp/.expn$$/expn$$: $!\n";
 	print T "set querytype=MX\n";
 	print T "$server\n";
 	close(T);
 	$cpref = 1.0E12;
 	undef $nserver;
-	open(NSLOOKUP,"nslookup < /tmp/expn$$ 2>&1 |") || die "open nslookup: $!";
+	open(NSLOOKUP,"nslookup < /tmp/.expn$$/expn$$ 2>&1 |") || die "open nslookup: $!";
 	while(<NSLOOKUP>) {
 		print if ($debug > 2);
 		if (/mail exchanger = ([-A-Za-z_.0-9+]+)/) {
@@ -1037,7 +1053,7 @@ sub mxlookup
 				
 	}
 	close(NSLOOKUP);
-	unlink("/tmp/expn$$");
+	unlink("/tmp/.expn$$/expn$$");
 	unless ($nserver) {
 		$0 = "$o0 - finished mxlookup";
 		return 0 unless $lastchance;
@@ -1309,7 +1325,7 @@ it is possible to eliminate bugs.
 No environment variables are used.
 .SH FILES
 .PD 0
-.B /tmp/expn$$
+.B /tmp/.expn$$/expn$$
 .B temporary file used as input to 
 .BR nslookup .
 .SH SEE ALSO
--- contrib/passwd-to-alias.pl
+++ contrib/passwd-to-alias.pl	2006-08-10 09:32:28.000000000 +0000
@@ -1,4 +1,4 @@
-#!/bin/perl
+#!/usr/bin/perl
 
 #
 #  Convert GECOS information in password files to alias syntax.
--- contrib/smcontrol.pl
+++ contrib/smcontrol.pl	2006-08-10 09:32:28.000000000 +0000
@@ -25,7 +25,7 @@ sub get_controlname
 	my $cn = undef;
 	my $qd = undef;
  
-	open(CF, "</etc/mail/sendmail.cf") or return $cn;
+	open(CF, "</etc/sendmail.cf") or open(CF, "</etc/mail/sendmail.cf") or return $cn;
 	while (<CF>)
 	{
 		chomp;
--- devtools/M4/UNIX/manpage.m4
+++ devtools/M4/UNIX/manpage.m4	2007-04-05 13:33:07.000000000 +0000
@@ -69,7 +69,7 @@ ifdef(`confNO_MAN_INSTALL', `divert(-1)'
 define(`bldMAN_INSTALL_CMD', 
 `ifdef(`confDONT_INSTALL_CATMAN', `dnl', 
 `	ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}; else :; fi ')
-	${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'')
+	${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN'}/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'')
 ifdef(`confINSTALL_RAWMAN', 
 `	ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}; else :; fi ')
 	${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1) `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'', `dnl')'
--- devtools/M4/depend/CC-M.m4
+++ devtools/M4/depend/CC-M.m4	2007-04-05 15:00:45.000000000 +0000
@@ -3,6 +3,6 @@ depend: ${BEFORE} ${LINKS}
 	@mv Makefile Makefile.old
 	@sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
 	@echo "# Do not edit or remove this line or anything below it." >> Makefile
-	${CC} -M ${COPTS} ${SRCS} >> Makefile
+	${CC} -M ${O} ${COPTS} ${SRCS} >> Makefile
 
 #	End of $RCSfile: CC-M.m4,v $
--- devtools/M4/header.m4
+++ devtools/M4/header.m4	2008-09-30 13:06:57.000000000 +0000
@@ -34,3 +34,6 @@ define(`PUSHDIVERT', `pushdef(`__D__', d
 define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
 define(`APPENDDEF', `define(`$1', ifdef(`$1', `$1 $2', `$2'))')
 define(`PREPENDDEF', `define(`$1', ifdef(`$1', `$2 $1', `$2'))')
+define(`REPLACEDEF', `define(`_$1', `esyscmd(`x='$1`;echo -n ${x//$2/$3}')')dnl
+define(`$1', _$1)dnl
+undefine(`_$1')')
--- devtools/Site/site.config.m4
+++ devtools/Site/site.config.m4	2010-01-26 14:58:45.000000000 +0000
@@ -0,0 +1,158 @@
+dnl
+dnl Sendmail site file for SuSE Linux
+dnl Author: Werner Fink <werner@suse.de>
+dnl
+dnl Short cuts
+dnl
+define(`appdef',			defn(`APPENDDEF'))dnl
+dnl
+dnl Compiler, flags, ...
+dnl
+define(`confCC',			`gcc')dnl
+define(`confENVDEF',			`-DLDAP_DEPRECATED -Dlint -DHASFLOCK=0 -DHASFCHMOD=1')dnl
+define(`confOPTIMIZE',			`$(RPM_OPT_FLAGS) -Wall -pipe')dnl
+define(`confMTCCOPTS',			`-D_THREAD_SAFE -D_REENTRANT')dnl
+define(`confCCOPTS_SO',			`-fPIC')dnl
+define(`confCCOPTS',			`-fPIE')dnl
+define(`confLDOPTS',			`-pie -Wl,--warn-common')dnl
+define(`confDEPEND_TYPE',		`CC-M')dnl
+define(`_lib',				`esyscmd(`echo -n ${ARCH_LIB}')')dnl
+ifelse(_lib, `', dnl
+`define(`_lib',				`lib')', `')dnl
+define(`confLIBDIR',			`/usr/'_lib)dnl
+define(`confSHAREDLIBDIR',		`/usr/'_lib)dnl
+define(`SMLDAP',			`-lldap -llber -lssl -lcrypto -lsasl2')
+dnl syscmd(`test -f /usr/'_lib`/libdb1.so')dnl
+dnl ifelse(sysval, 0, dnl
+dnl `define(`SMDB',				`-ldb1')', dnl
+dnl `define(`SMDB',				`-ldb')')dnl
+define(`SMDB',				`-ldb')')dnl
+syscmd(`test -f /usr/in'`clude/rpcsvc/nis.h')dnl
+ifelse(sysval, 0, dnl
+`define(`SMNIS',			`-DNIS -DNISPLUS')', dnl
+`define(`SMNIS',			`-DNIS')')dnl
+dnl
+dnl Common defines and paths
+dnl
+define(`SMLIBDIR',			`/usr/lib/sendmail.d')dnl
+define(`confFORCE_RMAIL',		`true')dnl
+define(`confFORCE_MAILLOCAL',		`true')dnl
+define(`confHFDIR',			 SMLIBDIR)dnl
+define(`confHFFILE',			`helpfile')dnl
+define(`confGBINGRP',			 mail)dnl
+define(`confMSPQOWN',			 mail)dnl
+define(`confINCGRP',			 root)dnl
+define(`confLIBGRP',			 root)dnl
+define(`confLIBMODE',			 0755)dnl
+define(`confEBINDIR',			 SMLIBDIR`/bin')dnl
+define(`confUBINDIR',			`/usr/bin')dnl
+define(`confSBINDIR',			`/usr/sbin')dnl
+define(`confMBINDIR',			`/usr/sbin')dnl
+define(`confSTDIR',			`/var/lib/sendmail')dnl
+define(`confSTFILE',			`statistics')dnl
+define(`confSBINOWN',			`root')dnl
+define(`confSBINGRP',			`root')dnl
+define(`confSBINMODE',			`0755')dnl
+define(`confUBINOWN',			`root')dnl
+define(`confUBINGRP',			`root')dnl
+define(`confUBINMODE',			`0755')dnl
+define(`confMBINGRP',			 root)dnl
+define(`confMANROOT',			`/usr/share/man')dnl
+define(`confMANROOTMAN',		`/usr/share/man/man')dnl
+define(`confMANOWN',			`root')dnl
+define(`confMANGRP',			`root')dnl
+define(`confMANMODE',			`0644')dnl
+define(`confMAN1SRC',			`man')dnl
+define(`confMAN5SRC',			`man')dnl
+define(`confMAN8SRC',			`man')dnl
+define(`confNROFF',			`cat')dnl
+define(`confINSTALL_RAWMAN',		 false)dnl
+define(`confDONT_INSTALL_CATMAN',	 false)dnl
+define(`confMANDOC',			`-u')dnl
+define(`confVENDORCF',			`/etc/sendmail.cf')dnl
+dnl
+dnl Common defines
+dnl
+define(`confLIBSEARCHPATH',		 `/usr/'_lib` /'_lib)dnl
+define(`confLIBSEARCH',			`')dnl
+define(`confLIBS',			`')dnl
+ifelse(SMDB, `-ldb1', dnl
+`define(`confINCDIRS',			`-I/usr/in'`clude/db1')', dnl
+`define(`confINCDIRS',			`')')dnl
+appdef(`confENVDEF',			`-D_PATH_SENDMAILCF=\"'confVENDORCF`\"')dnl
+appdef(`confENVDEF',			`-D_PATH_VENDOR_CF=\"'confVENDORCF`\"')dnl
+appdef(`confENVDEF',			`-D_PATH_SENDMAIL=\"'confSBINDIR`/sendmail\"')dnl
+dnl
+dnl Various maps
+dnl
+define(`confMAPDEF',			`-DNEWDB')dnl
+appdef(`confMAPDEF',			 SMNIS)dnl
+ifelse(SMLDAP, `-lssl -lcrypto -lsasl2', `', dnl
+`appdef(`confMAPDEF',			`-DLDAPMAP')')dnl
+appdef(`confMAPDEF',			`-DMAP_REGEX')dnl
+appdef(`confMAPDEF',			`-DDNSMAP')dnl
+appdef(`confMAPDEF',			`-DSOCKETMAP')dnl
+dnl
+dnl Sendmail
+dnl
+ifelse(SMLDAP, `-lssl -lcrypto -lsasl2', `', dnl
+`appdef(`conf_sendmail_ENVDEF',		`-DLDAP_REFERRALS')')dnl
+appdef(`conf_sendmail_ENVDEF',		`-DTCPWRAPPERS=1')dnl
+appdef(`conf_sendmail_ENVDEF',		`-DXDEBUG=0')dnl
+dnl appdef(`conf_sendmail_ENVDEF',	`-DPICKY_HELO_CHECK')dnl
+appdef(`conf_sendmail_ENVDEF',		`-D_PATH_SENDMAILPID=\"/var/run/sendmail.pid\"')dnl
+appdef(`conf_sendmail_ENVDEF',		`-DSTARTTLS -DEGD -DSASL=2')dnl
+appdef(`conf_sendmail_ENVDEF',		`-D_FFR_TLS_1')dnl
+appdef(`conf_sendmail_ENVDEF',		`-DSM_CONF_SHM')dnl
+appdef(`conf_sendmail_LIB_POST',	 SMDB)dnl
+appdef(`conf_sendmail_LIB_POST',	`-lnsl -lresolv 'SMLDAP` -lwrap')dnl
+dnl
+dnl libsm
+dnl
+appdef(`conf_libsm_LIB_POST',		SMLDAP)dnl
+dnl
+dnl Smrsh
+dnl
+appdef(`conf_smrsh_ENVDEF',		`-DCMDDIR=\"'confEBINDIR`\"')dnl
+appdef(`conf_smrsh_ENVDEF',		`-DPATH=\"/bin:/usr/bin\"')dnl
+appdef(`conf_smrsh_LIB_POST',		 SMLDAP)dnl
+dnl
+dnl Rmail
+dnl
+appdef(`conf_rmail_LIB_POST',		 SMLDAP)dnl
+dnl
+dnl Makemap
+dnl
+appdef(`conf_makemap_LIB_POST',		 SMDB)dnl
+appdef(`conf_makemap_LIB_POST',		 SMLDAP)dnl
+dnl
+dnl Praliases
+dnl
+appdef(`conf_praliases_LIB_POST',	 SMDB)dnl
+appdef(`conf_praliases_LIB_POST',	 SMLDAP)dnl
+dnl
+dnl mail.local
+dnl
+appdef(`conf_mail_local_LIB_POST',	 SMLDAP)dnl
+dnl
+dnl mail.local
+dnl
+appdef(`conf_vacation_LIB_POST',	 SMDB)dnl
+appdef(`conf_vacation_LIB_POST',	 SMLDAP)dnl
+dnl
+dnl Milter
+dnl
+appdef(`confENVDEF',			`-DMILTER')dnl
+dnl
+dnl
+dnl Mailstats
+dnl
+appdef(`conf_mailstats_ENVDEF',		`-D_PATH_SENDMAILCF=\"'confVENDORCF`\"')dnl
+appdef(`conf_mailstats_LIB_POST',	 SMLDAP)dnl
+dnl
+dnl Editmap
+dnl
+appdef(`conf_editmap_ENVDEF',		`-D_PATH_SENDMAILCF=\"'confVENDORCF`\"')dnl
+appdef(`conf_editmap_LIB_POST',		 SMDB)dnl
+appdef(`conf_editmap_LIB_POST',		 SMLDAP)dnl
+dnl
--- devtools/bin/install.sh
+++ devtools/bin/install.sh	2007-02-12 15:02:36.000000000 +0000
@@ -16,6 +16,7 @@ owner=""
 group=""
 mode=""
 strip=""
+id=$(id -u)
 
 # chown program -- ultrix keeps it in /etc/chown and /usr/etc/chown
 if [ -f /etc/chown ]
@@ -102,7 +103,7 @@ then
 fi
 
 # Change owner if requested
-if [ ! -z "$owner" ]
+if [ ! -z "$owner" -a $id -eq 0 ]
 then
 	$chown $owner $dst
 	if [ $? != 0 ]
@@ -112,7 +113,7 @@ then
 fi
 
 # Change group if requested
-if [ ! -z "$group" ]
+if [ ! -z "$group" -a $id -eq 0 ]
 then
 	chgrp $group $dst
 	if [ $? != 0 ]
--- doc/op/op.me
+++ doc/op/op.me	2006-08-10 09:32:28.000000000 +0000
@@ -588,7 +588,7 @@ The binary for
 .i sendmail
 is located in /usr/\*(SD\**.
 .(f
-\**This is usually
+\** This is usually
 /usr/sbin
 on 4.4BSD and newer systems;
 many systems install it in
@@ -602,7 +602,7 @@ For security reasons,
 /, /usr, and /usr/\*(SD
 should be owned by root, mode 0755\**.
 .(f
-\**Some vendors ship them owned by bin;
+\** Some vendors ship them owned by bin;
 this creates a security hole that is not actually related to
 .i sendmail .
 Other important directories that should have restrictive ownerships
@@ -614,7 +614,7 @@ and permissions are
 This is the main configuration file for
 .i sendmail \**.
 .(f
-\**Actually, the pathname varies depending on the operating system;
+\** Actually, the pathname varies depending on the operating system;
 /etc/mail is the preferred directory.
 Some older systems install it in
 .b /usr/lib/sendmail.cf ,
@@ -630,7 +630,7 @@ This is one of the two non-library file
 .i sendmail \**,
 the other is /etc/mail/submit.cf.
 .(f
-\**The system libraries can reference other files;
+\** The system libraries can reference other files;
 in particular, system library subroutines that
 .i sendmail
 calls probably reference
@@ -1054,7 +1054,7 @@ are logged under the
 .sm LOG_MAIL
 facility\**.
 .(f
-\**Except on Ultrix,
+\** Except on Ultrix,
 which does not support facilities in the syslog.
 .)f
 .sh 3 "Format"
@@ -1068,7 +1068,7 @@ the word
 .q sendmail: ,
 and a message\**.
 .(f
-\**This format may vary slightly if your vendor has changed
+\** This format may vary slightly if your vendor has changed
 the syntax.
 .)f
 Most messages are a sequence of
@@ -1518,7 +1518,7 @@ The disk based host information is store
 directory called
 .b \&.hoststat \**.
 .(f
-\**This is the usual value of the
+\** This is the usual value of the
 .b HostStatusDirectory
 option;
 it can, of course, go anywhere you like in your filesystem.
@@ -1569,7 +1569,7 @@ and sendmail knows about it,
 will use the native version.
 Ultrix, Solaris, and DEC OSF/1 are examples of such systems\**.
 .(f
-\**HP-UX 10 has service switch support,
+\** HP-UX 10 has service switch support,
 but since the APIs are apparently not available in the libraries
 .i sendmail
 does not use the native service switch in this release.
@@ -1662,7 +1662,7 @@ will not have the desired effect
 (except on prep.ai.MIT.EDU,
 and they probably don't want me)\**.
 .(f
-\**Actually, any mailer that has the `A' mailer flag set
+\** Actually, any mailer that has the `A' mailer flag set
 will permit aliasing;
 this is normally limited to the local mailer.
 .)f
@@ -1677,7 +1677,7 @@ are comments.
 The second form is processed by the
 .i ndbm \|(3)\**
 .(f
-\**The
+\** The
 .i gdbm
 package does not work.
 .)f
@@ -1815,7 +1815,7 @@ Before
 will access the database,
 it checks to insure that this entry exists\**.
 .(f
-\**The
+\** The
 .b AliasWait
 option is required in the configuration
 for this action to occur.
@@ -2238,7 +2238,7 @@ Some options have security implications.
 Sendmail allows you to set these,
 but relinquishes its set-user-ID or set-group-ID permissions thereafter\**.
 .(f
-\**That is, it sets its effective uid to the real uid;
+\** That is, it sets its effective uid to the real uid;
 thus, if you are executing as root,
 as from root's crontab file or during system startup
 the root permissions will still be honored.
@@ -2606,7 +2606,7 @@ the time to wait for another command.
 The timeout waiting for a reply to an IDENT query
 [5s\**, unspecified].
 .(f
-\**On some systems the default is zero to turn the protocol off entirely.
+\** On some systems the default is zero to turn the protocol off entirely.
 .)f
 .ip lhlo
 The wait for a reply to an LMTP LHLO command
@@ -3855,7 +3855,7 @@ and
 is looked up in the host database(s)
 and replaced by the canonical name\**.
 .(f
-\**This is actually
+\** This is actually
 completely equivalent
 to $(host \fIhostname\fP$).
 In particular, a
@@ -3940,7 +3940,7 @@ part.
 If the mailer is local
 the host part may be omitted\**.
 .(f
-\**You may want to use it for special
+\** You may want to use it for special
 .q "per user"
 extensions.
 For example, in the address
@@ -4681,7 +4681,7 @@ for interpolation into argv's for mailer
 or for other contexts.
 The ones marked \(dg are information passed into sendmail\**,
 .(f
-\**As of version 8.6,
+\** As of version 8.6,
 all of these macros have reasonable defaults.
 Previous versions required that they be defined.
 .)f
@@ -5208,7 +5208,7 @@ and then passing that to
 .i gethostbyname (3)
 which is supposed to return the canonical version of that host name.\**
 .(f
-\**For example, on some systems
+\** For example, on some systems
 .i gethostname
 might return
 .q foo
@@ -5236,7 +5236,7 @@ it is imperative that the config file se
 .b $j
 to the fully qualified domain name\**.
 .(f
-\**Older versions of sendmail didn't pre-define
+\** Older versions of sendmail didn't pre-define
 .b $j
 at all, so up until 8.6,
 config files
@@ -6933,7 +6933,7 @@ will run as this user.
 Defaults to 1:1.
 The value can also be given as a symbolic user name.\**
 .(f
-\**The old
+\** The old
 .b g
 option has been combined into the
 .b DefaultUser
@@ -7663,7 +7663,7 @@ noactualrecipient	Don't put X-Actual-Rec
 		which reveal the actual account that addresses map to.
 .)b
 .(f
-\**N.B.:
+\** N.B.:
 the
 .b noreceipts
 flag turns off support for RFC 1891
@@ -7903,7 +7903,7 @@ If set to a non-zero (non-root) value,
 .i sendmail
 will change to this user id shortly after startup\**.
 .(f
-\**When running as a daemon,
+\** When running as a daemon,
 it changes to this user after accepting a connection
 but before reading any
 .sm SMTP
@@ -8534,7 +8534,7 @@ line may have an optional
 to indicate that this configuration file uses modifications
 specific to a particular vendor\**.
 .(f
-\**And of course, vendors are encouraged to add themselves
+\** And of course, vendors are encouraged to add themselves
 to the list of recognized vendors by editing the routine
 .i setvendor
 in
@@ -9711,7 +9711,7 @@ gets their outgoing mail stamped as
 but people not listed in the database use the local hostname.
 .sh 3 "Creating the database\**"
 .(f
-\**These instructions are known to be incomplete.
+\** These instructions are known to be incomplete.
 Other features are available which provide similar functionality,
 e.g., virtual hosting and mapping local addresses into a
 generic form as explained in cf/README.
@@ -10268,7 +10268,7 @@ and
 fields are always scanned on ARPANET mail
 to determine the sender\**;
 .(f
-\**Actually, this is no longer true in SMTP;
+\** Actually, this is no longer true in SMTP;
 this information is contained in the envelope.
 The older ARPANET protocols did not completely distinguish
 envelope from header.
@@ -10496,7 +10496,7 @@ The distribution includes several possib
 If you are porting to a new environment
 you may need to add some new tweaks.\**
 .(f
-\**If you do, please send updates to
+\** If you do, please send updates to
 sendmail@Sendmail.ORG.
 .)f
 .sh 2 "Configuration in sendmail/daemon.c"
@@ -11340,7 +11340,7 @@ the following is a queue file sent to
 and
 .q bostic@okeeffe.CS.Berkeley.EDU \**:
 .(f
-\**This example is contrived and probably inaccurate for your environment.
+\** This example is contrived and probably inaccurate for your environment.
 Glance over it to get an idea;
 nothing can replace looking at what your own system generates.
 .)f
--- include/sm/conf.h
+++ include/sm/conf.h	2011-05-31 10:06:29.000000000 +0000
@@ -1457,23 +1457,47 @@ extern void		*malloc();
 #   define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 #  endif /* !defined(KERNEL_VERSION) */
 #  define BSD		1	/* include BSD defines */
+#  include <features.h>
+#  if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+#   undef  GLIBC_VERSION
+#   define GLIBC_VERSION ((__GLIBC__ << 8) + __GLIBC_MINOR__)
+#   define HASSTRERROR	1	/* has strerror(3) */
+#  endif /* __GLIBC__ && __GLIBC_MINOR__ */
 #  define HASSETREGID	1	/* use setregid(2) to set saved gid */
 #  ifndef REQUIRES_DIR_FSYNC
 #   define REQUIRES_DIR_FSYNC	1	/* requires fsync() on directory */
 #  endif /* REQUIRES_DIR_FSYNC */
-#  ifndef USESETEUID
-#   define USESETEUID	0	/* has it due to POSIX, but doesn't work */
-#  endif /* USESETEUID */
+#  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0))
+#   if defined (GLIBC_VERSION) && (GLIBC_VERSION >= 0x201)
+#    define USESETEUID	1	/* It works */
+#   else /* GLIBC_VERSION >= 0x201 */
+#    define USESETEUID	0	/* has it due to POSIX, but doesn't work */
+#   endif /* GLIBC_VERSION >= 0x201 */
+#   if defined (GLIBC_VERSION) && (GLIBC_VERSION >= 0x200)
+#    define HASSETREUID	1	/* has setreuid(2) call */
+#   endif /* GLIBC_VERSION >= 0x200 */
+#  else  /* LINUX_VERSION_CODE < 2.2.0 */
+#   ifndef USESETEUID
+#    define USESETEUID	0	/* has it due to POSIX, but doesn't work */
+#   endif /* USESETEUID */
+#  endif /* LINUX_VERSION_CODE < 2.2.0 */
 #  define SM_CONF_GETOPT	0	/* need a replacement for getopt(3) */
 #  define HASUNAME	1	/* use System V uname(2) system call */
 #  define HASUNSETENV	1	/* has unsetenv(3) call */
 #  define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
 #  define GIDSET_T	gid_t	/* from <linux/types.h> */
+#  define HAVE_NANOSLEEP	1		/* moved from librt to libc in S11 */
+#  define SOCKADDR_LEN_T	socklen_t	/* arg#3 to accept, getsockname */
+#  define SOCKOPT_LEN_T		socklen_t	/* arg#5 to getsockopt */
 #  ifndef HASGETUSERSHELL
 #   define HASGETUSERSHELL 0	/* getusershell(3) broken in Slackware 2.0 */
 #  endif /* HASGETUSERSHELL */
 #  ifndef IP_SRCROUTE
-#   define IP_SRCROUTE	0	/* linux <= 1.2.8 doesn't support IP_OPTIONS */
+#   if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0))
+#    define IP_SRCROUTE	1	/* can check IP source routing */
+#   else
+#    define IP_SRCROUTE	0	/* linux <= 1.2.8 doesn't support IP_OPTIONS */
+#   endif
 #  endif /* ! IP_SRCROUTE */
 #  ifndef HAS_IN_H
 #   define HAS_IN_H	1	/* use netinet/in.h */
@@ -1482,15 +1506,15 @@ extern void		*malloc();
 #   define USE_SIGLONGJMP	1 /* sigsetjmp needed for signal handling */
 #  endif /* ! USE_SIGLONGJMP */
 #  ifndef HASFLOCK
-#   if LINUX_VERSION_CODE < 66399
+#   if (LINUX_VERSION_CODE < KERNEL_VERSION(1,3,95))
 #    define HASFLOCK	0	/* flock(2) is broken after 0.99.13 */
-#   else /* LINUX_VERSION_CODE < 66399 */
+#   else /* (LINUX_VERSION_CODE < KERNEL_VERSION(1,3,95)) */
 #     if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
 #      define HASFLOCK	1	/* flock(2) fixed after 1.3.95 */
 #     else /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */
 #      define HASFLOCK	0	/* flock(2) is broken (again) after 2.4.0 */
 #     endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */
-#   endif /* LINUX_VERSION_CODE < 66399 */
+#   endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(1,3,95)) */
 #  endif /* ! HASFLOCK */
 #  ifndef LA_TYPE
 #   define LA_TYPE	LA_PROCSTR
@@ -1504,6 +1528,7 @@ extern void		*malloc();
 #  endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) */
 #  if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
 #   define HASSTRERROR	1	/* has strerror(3) */
+#   define HASSNPRINTF	1	/* has snprintf */
 #  endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */
 #  ifndef TZ_TYPE
 #   define TZ_TYPE	TZ_NONE		/* no standard for Linux */
@@ -1516,6 +1541,10 @@ extern void		*malloc();
 #  endif /* ! _PATH_SENDMAILPID */
 #  include <sys/sysmacros.h>
 #  undef atol			/* wounded in <stdlib.h> */
+#  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0))
+#   undef NETINET6
+#   define NETINET6	1	/* IPv6 added in 2.2 and upper */
+#  endif /* LINUX_VERSION_CODE >= 2.2.0 */
 #  if NETINET6
    /*
    **  Linux doesn't have a good way to tell userland what interfaces are
@@ -1529,8 +1558,7 @@ extern void		*malloc();
    **  Indirectly included from glibc's <feature.h>.  IPv6 support is native
    **  in 2.1 and later, but the APIs appear before the functions.
    */
-#   if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
-#    define GLIBC_VERSION ((__GLIBC__ << 8) + __GLIBC_MINOR__)
+#   if defined(GLIBC_VERSION)
 #    if (GLIBC_VERSION >= 0x201)
 #     undef IPPROTO_ICMPV6	/* linux #defines, glibc enums */
 #    else /* (GLIBC_VERSION >= 0x201) */
@@ -1541,7 +1569,7 @@ extern void		*malloc();
 #     define NEEDSGETIPNODE	1
 #    endif /* (GLIBC_VERSION >= 0x201 && !defined(NEEDSGETIPNODE)) */
 #    undef GLIBC_VERSION
-#   endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */
+#   endif /* defined(GLIBC_VERSION) */
 #  endif /* NETINET6 */
 #  ifndef HASFCHOWN
 #   define HASFCHOWN	1	/* fchown(2) */
--- libmilter/Makefile.m4
+++ libmilter/Makefile.m4	2008-09-30 13:05:15.000000000 +0000
@@ -12,6 +12,8 @@ PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR}
 bldPRODUCT_START(`library', `libmilter')
 define(`bldINSTALLABLE', `true')
 define(`LIBMILTER_EXTRAS', `errstring.c strl.c')
+REPLACEDEF(`confCCOPTS', `-fPIE')
+APPENDDEF(`confCCOPTS', `-fPIC')
 APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL -Dsm_snprintf=snprintf')
 define(`bldSOURCES', `main.c engine.c listener.c worker.c handler.c comm.c smfi.c signal.c sm_gethost.c monitor.c LIBMILTER_EXTRAS ')
 define(`confBEFORE', `LIBMILTER_EXTRAS')
--- libsm/Makefile.m4
+++ libsm/Makefile.m4	2008-09-30 13:09:07.000000000 +0000
@@ -4,8 +4,11 @@ include(confBUILDTOOLSDIR`/M4/switch.m4'
 
 define(`confREQUIRE_LIBSM', `true')
 define(`confREQUIRE_SM_OS_H', `true')
+REPLACEDEF(`confCCOPTS', `-fPIE')
+APPENDDEF(`confCCOPTS', `-fPIC')
 PREPENDDEF(`confENVDEF', `confMAPDEF')
 bldPRODUCT_START(`library', `libsm')
+define(`bldINSTALLABLE', `true')
 define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c path.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c ')
 bldPRODUCT_END
 dnl msg.c
--- libsmutil/Makefile.m4
+++ libsmutil/Makefile.m4	2008-09-30 13:10:14.000000000 +0000
@@ -6,8 +6,11 @@ define(`confREQUIRE_SM_OS_H', `true')
 SMSRCDIR=	ifdef(`confSMSRCDIR', `confSMSRCDIR', `${SRCDIR}/sendmail')
 PREPENDDEF(`confENVDEF', `confMAPDEF')
 PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
+REPLACEDEF(`confCCOPTS', `-fPIE')
+APPENDDEF(`confCCOPTS', `-fPIC')
 
 bldPRODUCT_START(`library', `libsmutil')
+define(`bldINSTALLABLE', `true')
 define(`bldSOURCES', `debug.c err.c lockfile.c safefile.c snprintf.c cf.c ')
 APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL')
 bldPRODUCT_END
--- mail.local/Makefile.m4
+++ mail.local/Makefile.m4	2006-08-10 09:32:28.000000000 +0000
@@ -20,8 +20,12 @@ bldPRODUCT_START(`manpage', `mail.local'
 define(`bldSOURCES', `mail.local.8')
 bldPRODUCT_END
 
+MAILLOCAL=ifdef(`confFORCE_MAILLOCAL', `force-install', `defeat-install')
+
 divert(bldTARGETS_SECTION)
-install:
+install: ${MAILLOCAL}
+
+defeat-install:
 	@echo "NOTE: This version of mail.local is not suited for some operating"
 	@echo "      systems such as HP-UX and Solaris.  Please consult the"
 	@echo "      README file in the mail.local directory.  You can force"
--- mail.local/mail.local.8
+++ mail.local/mail.local.8	2006-08-10 09:32:28.000000000 +0000
@@ -123,10 +123,10 @@ Used to set the appropriate time zone on
 /tmp/local.XXXXXX
 temporary files
 .TP
-/var/mail/user
+/var/spool/mail/user
 user's default mailbox directory
 .TP 
-/var/mail/user.lock
+/var/spool/mail/user.lock
 lock file for a user's default mailbox
 .PD
 .SH SEE ALSO
--- mailstats/mailstats.8
+++ mailstats/mailstats.8	2006-08-10 09:32:28.000000000 +0000
@@ -108,10 +108,13 @@ The default
 .B sendmail
 configuration file.
 .TP
-/etc/mail/statistics
+/var/lib/sendmail/statistics
 The default
 .B sendmail
 statistics file.
+.TP
+/etc/mail/statistics
+The symbolic link to the statistics file.
 .PD
 .SH SEE ALSO
 mailq(1), 
--- makemap/makemap.8
+++ makemap/makemap.8	2006-08-10 09:32:28.000000000 +0000
@@ -44,20 +44,13 @@ It reads input from the standard input
 and outputs them to the indicated
 .I mapname.
 .PP
-Depending on how it is compiled,
 .B makemap
-handles up to three different database formats, 
+handles two different database formats, 
 selected using the
 .I maptype
 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 
--- praliases/Makefile.m4
+++ praliases/Makefile.m4	2006-08-10 09:32:28.000000000 +0000
@@ -9,7 +9,8 @@ PREPENDDEF(`confENVDEF', `confMAPDEF')
 PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
 
 bldPRODUCT_START(`executable', `praliases')
-define(`bldINSTALL_DIR', `S')
+define(`bldBIN_TYPE', `U')
+define(`bldINSTALL_DIR', `')
 define(`bldSOURCES', `praliases.c ')
 bldPUSH_SMLIB(`sm')
 bldPUSH_SMLIB(`smutil')
--- rmail/rmail.c
+++ rmail/rmail.c	2006-08-10 09:32:28.000000000 +0000
@@ -276,7 +276,7 @@ main(argc, argv)
 	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++] = "-odi";		/* deliver in the foreground. */
 	args[i++] = "-oi";		/* Ignore '.' on a line by itself. */
 
 	/* set from system and protocol used */
--- sendmail/Makefile.m4
+++ sendmail/Makefile.m4	2007-02-12 16:04:53.000000000 +0000
@@ -49,13 +49,16 @@ ${DESTDIR}/etc/mail/submit.cf:
 	cd ${SRCDIR}/cf/cf && make install-submit-cf
 
 MSPQ=ifdef(`confMSP_QUEUE_DIR', `confMSP_QUEUE_DIR', `/var/spool/clientmqueue')
+ID=`$(shell id -u)'
 
 ${DESTDIR}${MSPQ}:
 	@echo "Please read INSTALL if anything fails while installing the binary."
 	@echo "You must have setup a new user ${MSPQOWN} and a new group ${GBINGRP}"
 	@echo "as explained in sendmail/SECURITY."
 	mkdir -p ${DESTDIR}${MSPQ}
+	test ${ID} -ne 0 || \
 	chown ${MSPQOWN} ${DESTDIR}${MSPQ}
+	test ${ID} -ne 0 || \
 	chgrp ${GBINGRP} ${DESTDIR}${MSPQ}
 	chmod 0770 ${DESTDIR}${MSPQ}
 
--- sendmail/SECURITY
+++ sendmail/SECURITY	2006-08-10 09:32:28.000000000 +0000
@@ -49,14 +49,14 @@ The default configuration starting with
 sendmail binary which acts differently based on operation mode and
 supplied options.
 
-sendmail must be a set-group-ID (default group: smmsp, recommended
-gid: 25) program to allow for queueing mail in a group-writable
+sendmail must be a set-group-ID (default group: mail, recommended
+gid: 12) program to allow for queueing mail in a group-writable
 directory.  Two .cf files are required:  sendmail.cf for the daemon
 and submit.cf for the submission program.  The following permissions
 should be used:
 
--r-xr-sr-x	root   smmsp	... /PATH/TO/sendmail
-drwxrwx---	smmsp  smmsp	... /var/spool/clientmqueue
+-r-xr-sr-x	root   mail	... /PATH/TO/sendmail
+drwxrwx---	mail   mail	... /var/spool/clientmqueue
 drwx------	root   wheel	... /var/spool/mqueue
 -r--r--r--	root   wheel	... /etc/mail/sendmail.cf
 -r--r--r--	root   wheel	... /etc/mail/submit.cf
@@ -64,10 +64,10 @@ drwx------	root   wheel	... /var/spool/m
 [Notice: On some OS "wheel" is not used but "bin" or "root" instead,
 however, this is not important here.]
 
-That is, the owner of sendmail is root, the group is smmsp, and
+That is, the owner of sendmail is root, the group is mail, and
 the binary is set-group-ID.  The client mail queue is owned by
-smmsp with group smmsp and is group writable.  The client mail
-queue directory must be writable by smmsp, but it must not be
+mail with group mail and is group writable.  The client mail
+queue directory must be writable by mail, but it must not be
 accessible for others. That is, do not use world read or execute
 permissions.  In submit.cf the option UseMSP must be set, and
 QueueFileMode must be set to 0660.  submit.cf is available in
@@ -83,7 +83,7 @@ sendmail.cf.  This selection can be chan
 
 The daemon must be started by root as usual, e.g.,
 
-/PATH/TO/sendmail -L sm-mta -bd -q1h
+/PATH/TO/sendmail -L sendmail -bd -q1h
 
 (replace /PATH/TO with the right path for your OS, e.g.,
 /usr/sbin or /usr/lib).
@@ -102,15 +102,15 @@ which, however, may have undesired side
 a discussion.  In general it is necessary to clean the queue either
 via a cronjob or by running a daemon, e.g.,
 
-/PATH/TO/sendmail -L sm-msp-queue -Ac -q30m
+/PATH/TO/sendmail -L sendmail-client -Ac -q30m
 
 If the option UseMSP is not set, sendmail will complain during
 queue runs about bogus file permission.  If you want a queue runner
 for the client queue, you probably have to change OS specific
 scripts to accomplish this (check the man pages of your OS for more
 information.)  You can start this program as root, it will change
-its user id to RunAsUser (smmsp by default, recommended uid: 25).
-This way smmsp does not need a valid shell.
+its user id to RunAsUser (mail by default, recommended uid: 8).
+This way mail does not need a valid shell.
 
 Summary
 -------
@@ -120,7 +120,7 @@ This is a brief summary how the two conf
 sendmail.cf	For the MTA (mail transmission agent)
 	The MTA is started by root as daemon:
 
-		/PATH/TO/sendmail -L sm-mta -bd -q1h
+		/PATH/TO/sendmail -L sendmail -bd -q1h
 
 	it accepts SMTP connections (on ports 25 and 587 by default);
 	it runs the main queue (/var/spool/mqueue by default).
@@ -131,20 +131,20 @@ submit.cf	For the MSP (mail submission p
 	daemon; it uses /var/spool/clientmqueue by default; it
 	can be started to run that queue periodically:
 
-		/PATH/TO/sendmail -L sm-msp-queue -Ac -q30m
+		/PATH/TO/sendmail -L sendmail-client -Ac -q30m
 
 
 Hints and Troubleshooting
 -------------------------
 
-RunAsUser: FEATURE(`msp') sets the option RunAsUser to smmsp.
-This user must have the group smmsp, i.e., the same group as the
+RunAsUser: FEATURE(`msp') sets the option RunAsUser to mail.
+This user must have the group mail, i.e., the same group as the
 clientmqueue directory.  If you specify a user whose primary group
 is not the same as that of the clientmqueue directory, then you
 should explicitly set the group, e.g.,
 
 	FEATURE(`msp')
-	define(`confRUN_AS_USER', `mailmsp:smmsp')
+	define(`confRUN_AS_USER', `mailmsp:mail')
 
 STARTTLS: If sendmail is compiled with STARTTLS support on a platform
 that does not have HASURANDOMDEV defined, you either need to specify
--- sendmail/control.c
+++ sendmail/control.c	2006-08-10 09:32:28.000000000 +0000
@@ -137,7 +137,7 @@ opencontrolsocket()
 		}
 	}
 
-	if (chmod(ControlSocketName, S_IRUSR|S_IWUSR) < 0)
+	if (chmod(ControlSocketName, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) < 0)
 	{
 		save_errno = errno;
 		closecontrolsocket(true);
--- sendmail/domain.c
+++ sendmail/domain.c	2006-08-10 09:32:28.000000000 +0000
@@ -870,14 +870,20 @@ cnameloop:
 		if (qtype == initial)
 			gotmx = false;
 		if (tTd(8, 5))
+# if NETINET6
 			sm_dprintf("dns_getcanonname: trying %s.%s (%s)\n",
 				host, *dp,
-# if NETINET6
 				qtype == T_AAAA ? "AAAA" :
-# endif /* NETINET6 */
 				qtype == T_A ? "A" :
 				qtype == T_MX ? "MX" :
 				"???");
+#else /* NETINET6 */
+			sm_dprintf("dns_getcanonname: trying %s.%s (%s)\n",
+				host, *dp,
+				qtype == T_A ? "A" :
+				qtype == T_MX ? "MX" :
+				"???");
+# endif /* NETINET6 */
 		errno = 0;
 		ret = res_querydomain(host, *dp, C_IN, qtype,
 				      answer.qb2, sizeof(answer.qb2));
--- sendmail/readcf.c
+++ sendmail/readcf.c	2006-08-10 09:32:28.000000000 +0000
@@ -1570,15 +1570,20 @@ makemailer(line)
 #endif /* NETUNIX */
 		    )
 		{
+#if NETUNIX
 			(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
 					     "M%s: Warning: first argument in %s mailer must be %s\n",
 					     m->m_name, m->m_mailer,
-#if NETUNIX
 					     "TCP or FILE"
+					     "TCP"
+				     );
 #else /* NETUNIX */
+			(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
+					     "M%s: Warning: first argument in %s mailer must be %s\n",
+					     m->m_name, m->m_mailer,
 					     "TCP"
-#endif /* NETUNIX */
 				     );
+#endif /* NETUNIX */
 		}
 		if (m->m_mtatype == NULL)
 			m->m_mtatype = "dns";
--- sendmail/sendmail.h
+++ sendmail/sendmail.h	2006-08-10 09:32:29.000000000 +0000
@@ -145,14 +145,14 @@ SM_UNUSED(static char SmailId[]) = "@(#)
 #   define SASL SASL_VERSION
 #  else /* SASL == 1 || SASL == 2 */
 #   if SASL != SASL_VERSION
-  ERROR README: -DSASL (SASL) does not agree with the version of the CYRUS_SASL library (SASL_VERSION)
-  ERROR README: see README!
+#    error  ERROR README: -DSASL (SASL) does not agree with the version of the CYRUS_SASL library (SASL_VERSION)
+#    error  ERROR README: see README!
 #   endif /* SASL != SASL_VERSION */
 #  endif /* SASL == 1 || SASL == 2 */
 # else /* defined(SASL_VERSION_MAJOR) && defined(SASL_VERSION_MINOR) && defined(SASL_VERSION_STEP) */
 #  if SASL == 1
-  ERROR README: please set -DSASL to the version of the CYRUS_SASL library
-  ERROR README: see README!
+#    error  ERROR README: please set -DSASL to the version of the CYRUS_SASL library
+#    error  ERROR README: see README!
 #  endif /* SASL == 1 */
 # endif /* defined(SASL_VERSION_MAJOR) && defined(SASL_VERSION_MINOR) && defined(SASL_VERSION_STEP) */
 #endif /* SASL */
--- sendmail/udb.c
+++ sendmail/udb.c	2006-08-10 09:32:29.000000000 +0000
@@ -1040,24 +1040,29 @@ _udbx_init(e)
 
 #  if DB_VERSION_MAJOR < 2
 					sm_dprintf("dbopen(%s): %s\n",
+						up->udb_dbname,
+						sm_errstring(errno));
 #  else /* DB_VERSION_MAJOR < 2 */
 					sm_dprintf("db_open(%s): %s\n",
-#  endif /* DB_VERSION_MAJOR < 2 */
 						up->udb_dbname,
 						sm_errstring(errno));
+#  endif /* DB_VERSION_MAJOR < 2 */
 					errno = save_errno;
 				}
 				if (errno != ENOENT && errno != EACCES)
 				{
 					if (LogLevel > 2)
-						sm_syslog(LOG_ERR, e->e_id,
 #  if DB_VERSION_MAJOR < 2
+						sm_syslog(LOG_ERR, e->e_id,
 							  "dbopen(%s): %s",
+							  up->udb_dbname,
+							  sm_errstring(errno));
 #  else /* DB_VERSION_MAJOR < 2 */
+						sm_syslog(LOG_ERR, e->e_id,
 							  "db_open(%s): %s",
-#  endif /* DB_VERSION_MAJOR < 2 */
 							  up->udb_dbname,
 							  sm_errstring(errno));
+#  endif /* DB_VERSION_MAJOR < 2 */
 					up->udb_type = UDB_EOLIST;
 					if (up->udb_dbname != spec)
 						sm_free(up->udb_dbname); /* XXX */
@@ -1071,10 +1076,11 @@ _udbx_init(e)
 			{
 #  if DB_VERSION_MAJOR < 2
 				sm_dprintf("_udbx_init: dbopen(%s)\n",
+					up->udb_dbname);
 #  else /* DB_VERSION_MAJOR < 2 */
 				sm_dprintf("_udbx_init: db_open(%s)\n",
-#  endif /* DB_VERSION_MAJOR < 2 */
 					up->udb_dbname);
+#  endif /* DB_VERSION_MAJOR < 2 */
 			}
 			up->udb_type = UDB_DBFETCH;
 			up->udb_pid = CurrentPid;
--- smrsh/README
+++ smrsh/README	2008-05-06 16:27:14.000000000 +0000
@@ -6,7 +6,7 @@ Software Engineering Institute, Carnegie
 intended as a supplement to the CERT advisory CA-93:16.sendmail.vulnerability,
 and to the software, smrsh.c, written by Eric Allman.
 
-
+* Modified 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
@@ -56,15 +56,15 @@ These can be added to the devtools/Site/
 global M4 macro confENVDEF or the smrsh specific M4 macro
 conf_smrsh_ENVDEF.
 
-As root, install smrsh in /usr/libexec.  Using the Build script:
+As root, install smrsh in /usr/lib/sendmail.d/bin/.  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/lib/sendmail.d/bin/
 directory, with mode 511.
 
-	host.domain# mv smrsh /usr/libexec
-	host.domain# chmod 511 /usr/libexec/smrsh
+	host.domain# mv smrsh /usr/lib/sendmail.d/bin/
+	host.domain# chmod 511 /usr/lib/sendmail.d/bin/smrsh
 
 
 
@@ -79,14 +79,14 @@ to run.  This list of allowable commands
 
 See the man page for aliases(5) if you are unfamiliar with the format of
 these specifications. Additionally, you should include in the list,
-popular commands such as /usr/ucb/vacation.
+popular commands such as /usr/bin/vacation.
 
 You should NOT include interpreter programs such as sh(1), csh(1),
 perl(1), uudecode(1) or the stream editor sed(1) in your list of
 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 /usr/lib/sendmail.d/bin/ 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
@@ -95,22 +95,22 @@ a change in smrsh.c.
 
 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 /usr/lib/sendmail.d/bin/ 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
+/usr/lib/sendmail.d/bin/.  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:
+/usr/lib/sendmail.d/bin/ directory, you should:
 
-	host.domain# cd /usr/adm/sm.bin
-	host.domain# ln -s /usr/ucb/vacation vacation
+	host.domain# cd /usr/lib/sendmail.d/bin/
+	host.domain# ln -s /usr/bin/vacation vacation
 
 
 
 
-After populating the /usr/adm/sm.bin directory, you can now configure
+After populating the /usr/lib/sendmail.d/bin/ 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.
 
@@ -125,7 +125,7 @@ help to locate it.
 
 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/lib/sendmail.d/bin/smrsh.
 
 As an example:
 
@@ -133,14 +133,14 @@ In most Sun Microsystems' sendmail.cf fi
 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/lib/sendmail.d/bin/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/lib/sendmail.d/bin/smrsh, F=lsDFM, A=sh -c $u
 
 
 After modifying the Mprog definition in the sendmail.cf file, if a frozen
--- smrsh/smrsh.8
+++ smrsh/smrsh.8	2006-08-10 09:32:29.000000000 +0000
@@ -39,7 +39,7 @@ Briefly,
 .I smrsh
 limits programs to be in a single directory,
 by default
-/usr/adm/sm.bin,
+/usr/lib/sendmail.d/bin/
 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
@@ -50,16 +50,18 @@ It allows ``||'' and ``&&'' to enable co
 ``"|exec /usr/local/bin/filter || exit 75"''
 .PP
 Initial pathnames on programs are stripped,
-so forwarding to ``/usr/ucb/vacation'',
+so forwarding to ``/usr/bin/vacation'',
 ``/usr/bin/vacation'',
 ``/home/server/mydir/bin/vacation'',
 and
 ``vacation''
 all actually forward to
-``/usr/adm/sm.bin/vacation''.
+`/usr/lib/sendmail.d/bin/vacation''.
 .PP
 System administrators should be conservative about populating
-the sm.bin directory.
+the
+/usr/lib/sendmail.d/bin/
+directory.
 For example, a reasonable additions is
 .IR vacation (1),
 and the like.
@@ -68,10 +70,10 @@ never include any shell or shell-like pr
 (such as
 .IR perl (1))
 in the
-sm.bin
+/usr/lib/sendmail.d/bin/
 directory.
 Note that this does not restrict the use of shell or perl scripts
-in the sm.bin directory (using the ``#!'' syntax);
+in the /usr/lib/sendmail.d/bin/ directory (using the ``#!'' syntax);
 it simply disallows execution of arbitrary programs.
 Also, including mail filtering programs such as
 .IR procmail (1)
@@ -83,16 +85,11 @@ allows users to run arbitrary programs i
 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'')
+(defaults to ``/bin:/usr/bin'')
 and/or \-DSMRSH_CMDDIR=\e"\fIdir\fP\e"
 to change the default program directory
-(defaults to ``/usr/adm/sm.bin'').
+(defaults to ``/usr/lib/sendmail.d/bin/'').
 .SH FILES
-/usr/adm/sm.bin \- default directory for restricted programs on most OSs
-.PP
-/var/adm/sm.bin \- directory for restricted programs on HP UX and Solaris
-.PP
-/usr/libexec/sm.bin \- directory for restricted programs on FreeBSD (>= 3.3) and DragonFly BSD
-
+/usr/lib/sendmail.d/bin/ \- default directory for restricted programs on SuSE Linux
 .SH SEE ALSO
 sendmail(8)
--- suse/Makefile
+++ suse/Makefile	2011-08-12 09:41:31.000000000 +0000
@@ -0,0 +1,57 @@
+#
+# Rebuild databases of sendmail
+#
+
+ETC	=	$(DESTDIR)/etc/
+MAIL	=	$(ETC)mail/
+NOFOLD	=	$(shell . $(ETC)sysconfig/sendmail 2> /dev/null;\
+		  test "$$SENDMAIL_DB_FOLD" = "no" && echo -f)
+CONF	=	$(shell test -n "$(DESTDIR)" && echo "-C $(ETC)sendmail.cf")
+
+all:	$(ETC)aliases.db \
+	$(MAIL)mailertable.db \
+	$(MAIL)genericstable.db \
+	$(MAIL)virtusertable.db \
+	$(MAIL)access.db \
+	$(MAIL)auth/auth-info.db \
+	$(MAIL)domaintable.db \
+	$(MAIL)userdb.db
+
+short:	$(MAIL)mailertable.db \
+	$(MAIL)genericstable.db \
+	$(MAIL)virtusertable.db \
+	$(MAIL)access.db \
+	$(MAIL)auth/auth-info.db \
+	$(MAIL)domaintable.db \
+	$(MAIL)userdb.db
+
+#
+# newaliases
+#
+SHELL      = /bin/sh
+ALIAS_FILE = $(shell find $(ETC)aliases.d/ -type f)
+$(ETC)aliases.db: $(ETC)aliases $(ALIAS_FILE)
+	@echo "Rebuilding $@."
+	sendmail $(CONF) -bi
+	test -e $@ && touch $@
+	chmod --reference=$< $@
+
+#
+# Default db type is hash
+#
+%.db: %
+	@echo "Rebuilding $@."
+	makemap $(CONF) hash $(NOFOLD) $@ < $<
+	test -e $@ && touch $@
+	chmod --reference=$< $@
+
+#
+# For user db we use btree type
+#
+$(MAIL)userdb.db: $(MAIL)userdb
+	@echo "Rebuilding $@."
+	makemap $(CONF) btree $(NOFOLD) $@ < $<
+	test -e $@ && touch $@
+	chmod --reference=$< $@
+
+#
--- suse/NOTICE
+++ suse/NOTICE	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,11 @@
+NOTICE: It is possible to relay mail through a system which the anti-relay rules do not
+prevent: the case of a system that doesn't use FEATURE(`route_uucp') (system A) and
+relays local messages to a mail hub (e.g., via LOCAL_RELAY or LUSER_RELAY) (system B).
+If system B does use FEATURE(`route_uucp'), addresses of the form
+
+  <example.net!user@local.host>
+
+would be relayed to <user@example.net>. System A doesn't recognize `!' as an address
+separator and therefore forwards it to the mail hub which in turns relays it because it
+came from a trusted local host. So if a mailserver allows UUCP (bang-format) addresses,
+all systems from which it allows relaying should do the same. 
--- suse/README
+++ suse/README	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,264 @@
+Copyright (c) 1997-2002 SuSE GmbH Nuernberg, Germany.
+Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+Author: Florian La Roche
+        Werner Fink
+Please send feedback to http://www.suse.de/feedback/
+
+
+simple sendmail configurations:
+===============================
+
+sendmail is the default mail transfer agent (MTA) for SuSE Linux.
+It decides what to do with email: transfer it over the network,
+store it on the local disk or hand it over to other transfer-
+programs like UUCP.
+
+/etc/sendmail.cf is the main sendmail configuration file. If you have
+a simple setup, you can edit /etc/sysconfig/sendmail and
+run /sbin/SuSEconfig to have a working /etc/sendmail.cf.
+
+Before setting up sendmail, you should make sure that the DNS (domain name
+system) data is correctly configured. DNS maps hostnames to IP-adresses.
+For email you should make sure that your wanted email adresse has a valid
+MX (mail exchanger) record in the DNS data. Just use "host my.host.com"
+to find out about your DNS data:
+	$ host my.host.com
+	my.host.com address 192.168.0.14
+	my.host.com mail is handled (pri=10) by my.host.com
+	my.host.com mail is handled (pri=100) by mail-relay.host.com
+If you don't see anything about mail delivery, please ask your responsible
+DNS admin.  For dialup connetions all hosts used for mailing, like
+the local, the mail hub, the smart, and the mail relay host should
+be declared with their IP addresses and the corresponding Full Qualified
+Domain Names (FQDN).
+
+These parameters in /etc/sysconfig/sendmail can be used to
+configure sendmail:
+
+- SENDMAIL_LOCALHOST="localhost host.domain.com www.domain.com"
+  sendmail has to decide what email is delivered locally and what has
+  to be send over the network to another host. Per default only email
+  to the full hostname (FQDN) is stored in local mail-folders. If you
+  need to accept additional email names, just add them here.
+
+  Example: Your computer is known as "host.domain.com" and is also
+  WWW server for the additional hostname "www.domain.com". Use the
+  following parameters in /etc/sysconfig/mail and /etc/sysconfig/sendmail:
+	MAIL_CREATE_CONFIG=yes
+	SENDMAIL_LOCALHOST="localhost host.domain.com www.domain.com"
+
+  Sometimes it is usefull to add these additional hostnames into
+  the /etc/hosts. E.g. if SENDMAIL_EXPENSIVE (see below) is set to
+  yes and dialups should be avoided.
+
+- FROM_HEADER="domain.com" (within /etc/sysconfig/mail)
+  If you do not want your outgoing email to have your full hostname
+  as sender address, you can specify any other hostname here.
+
+  Example: Your machine is called foo.bar.com and you want your email
+  sender address to look like hugo@bar.com, you have the following
+  parameter set in /etc/sysconfig/mail:
+	FROM_HEADER="bar.com"
+
+- SENDMAIL_ALLMASQUERADE="no"
+  Enable this with "yes" to change also the recipient address
+  Don't use this feature, if you don't have the full /etc/aliases
+  and the full /etc/passwd on your host.
+
+- MASQUERADE_DOMAINS="otherdomain.com"
+  Normally, any hosts decided as locally are masqueraded.  If
+  this feature is given, only the hosts listed in MASQUERADE_DOMAINS
+  are masqueraded.  This is useful if you have several domains with
+  disjoint namespaces hosted on the same machine.
+
+- SENDMAIL_SMARTHOST="mail-server.provider.com"
+  For all non-local email, sendmail will contact the destination host
+  given by DNS. So it will try to establish connections all over the
+  internet. If you have a dialup-connection or your machine is not
+  running all the time, you should pass all outgoing email to an email-
+  server which tries to deliver your email to the destination host.
+  (This parameter gives a transport method and also the name of the next
+  destination host.)
+
+  Example 1: You have a dialup-connection and your provider has the host
+  "mail-server.provider.com" as main mail-server. Use the following
+  parameter in /etc/sysconfig/senamil:
+	SENDMAIL_SMARTHOST="smtp:mail-server.provider.com"
+  Example 2: You are a UUCP site and all (non-local) outgoing email
+  should be sent to your UUCP server called "uucp.server.com":
+	SENDMAIL_SMARTHOST="uucp-dom:uucp.server.com"
+
+- SENDMAIL_NOCANONIFY=no
+  sendmail will look at all email hostnames and replace them by their
+  full hostnames. If you only have a dialup-connection and you always
+  use full hostnames for sending email, you can disable this "canonification"
+  of the hostname:
+	SENDMAIL_NOCANONIFY=yes
+
+- NODNS=no
+  If set to yes sendmail is mostly not able to do DNS-queries.  This
+  requires a well configured /etc/hosts to help sendmail to do its job.
+  People using dial on demand should try out SENDMAIL_NOCANONIFY without
+  this option. With this option the file /etc/mail/service-nodns.switch
+  is used. Whereas /etc/mail/service.switch is the regular file.
+  For dial-up users please try out DIALUP=yes and SENDMAIL_EXPENSIVE=yes,
+  beside this you should combine NODNS=yes always with a smart host
+  configured in /etc/hosts and provided with SENDMAIL_SMARTHOST.
+
+- SENDMAIL_EXPENSIVE=no
+  sendmail will immediately try to deliver your email to the next
+  destination host. With SENDMAIL_EXPENSIVE=yes all email that should
+  be sent with smtp to the next host will be kept in your local
+  mail-queue.
+
+- DIALUP=no
+  set to yes sendmail tries to deliver local mails in defer (postpone)
+  mode. This also sets some entries to avoid dialups. This requires
+  a correct FQDN for the local host.
+  
+- SENDMAIL_GENERICS_DOMAIN=""
+  this list will cause certain addresses originating locally (i.e. that
+  are unqualified) or domains to be looked up in a map and turned into
+  another ("generic") form, which can change both the domain name and
+  the user name.  These domains can additional to the local domains be
+  changed in /etc/mail/genericstable
+
+- SENDMAIL_ARGS="-L sendmail -Am -bd -q30m -om"
+  You normally have sendmail runing with these standard parameters:
+  "-q30m" will look every 30 minutes to re-try sending failed email.
+  "-bd" will start sendmail in daemon mode and sendmail will accept
+  email over the network from other hosts.
+  Dialup-hosts might leave out "-q30m" and run "sendmail -q" e.g.
+  in the evening as cron-job or as part of your dialup scripts
+  (Read the comment on SENDMAIL_CLIENT_ARGS).
+
+    SENDMAIL_ARGS="-L sendmail -Am -bd -q30m -om" (default setting)
+    SENDMAIL_ARGS="-L sendmail -Am -bd -q2h -om"  (email delivery every 2 hours)
+    SENDMAIL_ARGS="-L sendmail -Am -bd -om"       (no queue runs at all)
+
+- SENDMAIL_CLIENT_ARGS="-L sendmail-client -Ac -qp1m"
+  This is used to start the sendmail client daemon which runs as user
+  mail and look at /var/spool/clientmqueue/ for any mail which should
+  put to port 25 (smtp port) of localhost on which the master sendmail
+  is listen. Note: if there is no master sendmail running all mails
+  stored by the MTAs (Mail Transfer Agents) like pine or mutt using
+  `sendmail -oi' will stored in /var/spool/clientmqueue/ for ever.
+  For more informations see /usr/share/doc/packages/sendmail/SECURITY.
+
+sendmail.cf supports some more external database files. The default
+configuration uses /etc/aliases, /etc/mail/mailertable,
+/etc/mail/genericstable and /etc/mail/virtusertable.
+These files are normal text files that are converted with "makemap"
+to the real database files (ending in .db). /sbin/SuSEconfig will
+automatically call "makemap" if you have changed one of these files.)
+
+For all outgoing email, sendmail will use the destination hostname
+and look into /etc/mail/mailertable to see how this email should
+be transported to the next destination. Please read that file for
+some examples on email-routing.
+
+If your email is stored locally, then it is normally stored in your
+mail-folder in /var/spool/mail/<login-name>.
+
+If sendmail cannot imediately deliver email (e.g. because of network
+problems), it will store it in the queue directory /var/spool/mqueue.
+Per default sendmail will re-try to deliver the email every 30 minutes.
+
+
+background information about general email things:
+==================================================
+
+Our sendmail package is configured to use /usr/bin/procmail for local
+email delivery into /var/spool/mail. So please read "man procmailrc",
+"man procmailex" and "man procmail" for more infos about this very fine
+program.
+
+The SMTP protocol is used to transfer emails over the network to another
+host. SMTP exchanges the sender and the recipient of the email and then
+the complete email with header and body. These sender/recipient addresses
+are called "envelope from" and "envelope to". sendmail will base all
+email delivery decisions on the envelope information and not on the
+information given in the email header. Please note this small difference
+and also see that the "From:" line in the email header is not used for
+further email delivery. (If you have a ".forward" file that forwards
+your email to a new destination, the "From:" line in your email header will
+remain unchanged, but the envelope information is changed to your new
+address.)
+Once the email is stored in your mail-folder in /var/spool/mail, the
+information about envelope addresses is lost. This is the reason, why
+you cannot use POP to fetch email for a complete domain as POP reads
+a normal mail-folder without any envelope information.
+
+Here is a simple model about what DNS does. It is not really the truth,
+but is a quit good model to learn about the difficulties with configuring
+email. All IP packets are routed by their IP adresses. Whenever you give
+any program a hostname, this will first be translated by a DNS server or
+by /etc/hosts into an IP address.
+DNS uses two translation tables. One is used for normal hostname lookups
+like e.g. "telnet host.com" and one is used only for email. So "telnet"
+might open a connection to a different host than sending email to that
+address. This is the reason you should never configure sendmail to use
+/etc/hosts for hostname translations. Please take the trouble of setting
+up a DNS server if you want to deliver email to several machines.
+If you really don't want to do that, use /etc/mail/mailertable to specify
+a destination IP address for each host without valid DNS data.
+
+Here is a bit more detailed information about DNS tables:
+- One table is used to give you a mapping from all IP addresses to a
+  hostname. This is called a "reverse mapping" as you normally only
+  want to get an IP address from a hostname.
+- You have tables that translate a hostname into one or more IP adresses.
+  These are called "a(ddress) records".
+- You can have entries pointing to other a-records. These are called
+  alias names or "CNAME" by DNS. (The alias names point to the canonical
+  name, CNAME.)
+
+
+background information for more complex sendmail configurations:
+================================================================
+
+If you want to create your own /etc/sendmail.cf, you can set
+MAIL_CREATE_CONFIG=no in /etc/sysconfig/mail .
+
+/usr/share/sendmail contains m4 macro files that are often used to
+generate a sendmail.cf file. (This is also done by /sbin/SuSEconfig
+for the simple configurations with /etc/sysconfig/sendmail and
+/etc/sysconfig/mail.)
+/etc/mail/linux.mc is a sample file with lots of comments about
+possible configurations. Change it to your local needs and call
+
+  m4 /etc/mail/linux.mc > /etc/sendmail.cf
+
+To generate the submit.cf, the configuration of the sendmail
+client, the /etc/mail/linux.submit.mc is the valid start point.
+Change it to your local needs and call
+
+  m4 /etc/mail/linux.submit.mc > /etc/mail/submit.cf
+
+Please look at the available docu files in /usr/share/sendmail and
+/usr/doc/packages/sendmail. Maybe also look at http://www.sendmail.org/.
+I really recommend reading the sendmail book by O'Reilly for complex
+email setups. This readme is much too small to learn you everything
+about email :-)
+
+
+anti-spam support in this sendmail package:
+===========================================
+
+Read /etc/mail/linux.mc carefully.  Check the following pages for the
+newest information about anti-spam measures:
+
+- http://www.sendmail.org/antispam.html
+- http://spam.abuse.net/
+- http://maps.vix.com/rbl/
+- http://www.informatik.uni-kiel.de/%7Eca/email/check.html
+
+You can do the following things against email spam:
+- Stop relaying email for non-local hosts so your site is not mis-used
+  to deliver spam email to other hosts.
+- Refuse to deliver email to local users from a list of well-known
+  spam-sites.
+- Refuse email all emails that do not have a valid MX record.
+  Use a "temporary failure, please try again" so that email is not lost
+  if we cannot get the DNS data due to network problems.
+
--- suse/README.SuSE
+++ suse/README.SuSE	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,50 @@
+Copyright (c) 2000-2002 SuSE GmbH Nuernberg, Germany.
+Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+
+   Changes of sendmail for SuSE Linux
+   ==================================
+
+One major change is the OS type which is chosen to be
+
+  suse-linux
+
+to see, what configuration is used just read
+
+  /usr/share/sendmail/ostype/suse-linux.m4
+
+As you can see in that file, the privacy flags are set to:
+
+  authwarnings,needmailhelo,novrfy,noexpn,noverb
+
+Service providers who use ETRN feature on port 25 should
+use /etc/mail/linux.mc to overwrite this. Read linux.mc
+carefully, change, enable, or disable the configuration
+therein to fit your needs.  For instance if you need
+a MSA (Mail Submission Agent) daemon you could re-enable
+it in /etc/mail/linux.mc.
+
+If you use your own configuration remember to set
+
+  MAIL_CREATE_CONFIG="no"
+
+within
+
+  /etc/sysconfig/mail
+
+and generate your own sendmail.cf by
+
+  m4 < /etc/mail/linux.mc > /etc/sendmail.cf
+
+and your own /etc/mail/submit.cf by
+
+  m4 < /etc/mail/linux.submit.mc > /etc/mail/submit.cf
+
+Before you're doing this you may edit linux.mc and
+linux.submit.mc to fit your needs and configuration.
+
+After restarting sendmail your configuration is activated.
+
+For more information read /etc/mail/README.
+
+
+       Your SuSE team
--- suse/update.sendmail
+++ suse/update.sendmail	2012-07-13 15:30:27.360010250 +0000
@@ -0,0 +1,550 @@
+#!/bin/bash
+# Copyright (c) 1997-2012 SuSE GmbH Nuernberg, Germany.
+# Author: Florian La Roche
+#         Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+
+# Generate a sendmail-m4 to stdout if called with -m4
+# (The usual stdout is redirected to stderr)
+test "$1" = "-m4" && exec 5>&1 1>&2
+
+e=0
+
+VERSION=8.14.5-0.9
+   DATE=2012/05/31
+typeset -i SENDMAIL_MTA_PORT=25
+typeset -i SENDMAIL_UUCP_MAX_MSG=0
+
+test -s /etc/rc.config && . /etc/rc.config
+
+# Know about FQHOSTNAME
+test -s /etc/HOSTNAME && read -t 1 FQHOSTNAME < /etc/HOSTNAME
+
+# Know about FROM_HEADER, NODNS, DIALUP, and NULLCLIENT
+test -s /etc/sysconfig/mail     && . /etc/sysconfig/mail
+
+# sendmail special configuration
+test -s /etc/sysconfig/sendmail && . /etc/sysconfig/sendmail
+
+# See if USE_AMAVIS is set
+if rpm -q amavisd-new &> /dev/null ; then
+  test -s /etc/sysconfig/amavis && . /etc/sysconfig/amavis
+fi
+
+setmask()
+{
+    local mask=$(find $1 -printf '%0.4m' 2>/dev/null)
+    test -n "$mask" && umask $mask
+}
+
+   LIBDIR=/var/lib/sendmail
+   MD5DIR=$LIBDIR/md5
+OLDMD5DIR=/var/adm/SuSEconfig/md5
+mkdir -p $MD5DIR
+
+check_md5_and_move()
+{
+    local FILE=$1
+    local UPDATE=$2
+    local RELPATH=$FILE
+    local MD5FILE=$MD5DIR/${RELPATH#/}
+    local NEWMD5SUM
+    local USERMD5SUM
+    local OLDMD5SUM
+    local TMP
+    #
+    # make sure that the directory exists
+    #
+    mkdir -p ${MD5FILE%/*}
+
+    #
+    # Copy old checks to new location
+    #
+    if test -s $OLDMD5DIR/${FILE#/} ; then
+	mv -f $OLDMD5DIR/${FILE#/} $MD5FILE
+    fi
+    
+    NEWMD5SUM="$(grep -v "^#" $UPDATE | md5sum)"
+    if test ! -s $FILE ; then
+	TMP=$(mktemp ${FILE}.XXXXXX) || exit 1
+	chmod 0644 $TMP
+	mv -f $TMP $FILE
+	rm -f $MD5FILE
+    fi
+    if test "$FORCE_REPLACE" = true ; then
+	cp -p $UPDATE $FILE
+    fi
+    USERMD5SUM="$(grep -v "^#" $FILE | md5sum)"
+    test -e $MD5FILE || echo "$USERMD5SUM" > $MD5FILE
+    read -t 1 OLDMD5SUM < $MD5FILE
+    if test "$USERMD5SUM" != "$OLDMD5SUM" -a \
+	    "$USERMD5SUM" != "$NEWMD5SUM" ; then
+	echo
+	echo "ATTENTION: You have modified $RELPATH.  Leaving it untouched..."
+	echo "You can find my version in $UPDATE..."
+	echo
+    else
+	if test "$USERMD5SUM" != "$NEWMD5SUM" -o "$FORCE_REPLACE" = true ; then
+	    echo "Installing new $RELPATH"
+	    cp -p $UPDATE $FILE
+	else
+	    test "$VERBOSE" = false || echo "No changes for $RELPATH"
+	fi
+	rm -f $UPDATE
+    fi
+    rm -f $MD5FILE
+    echo "$NEWMD5SUM" > $MD5FILE
+}
+
+EXPAND=""
+case "$FQHOSTNAME" in
+*.local) 			;;
+*.home) 			;;
+*.*[a-zA-Z]) EXPAND=$FQHOSTNAME ;;
+esac
+test -z "$FROM_HEADER" -a -n "$EXPAND"	&& FROM_HEADER=$EXPAND
+
+gen_sendmail_m4()
+{
+	cat <<-EOF
+	######################################################################
+	# /etc/sendmail.cf
+	#
+	# Generated by /usr/lib/sendmail.d/update on $(date +'%Y/%m/%d %H:%M:%S')
+	# controlled by /etc/sysconfig/mail and /etc/sysconfig/sendmail
+	#
+	######################################################################
+	divert(-1)
+	include(\`/usr/share/sendmail/m4/cf.m4')
+	divert(0)dnl
+	VERSIONID(\`@(#)Setup for SuSE Linux	$VERSION (SuSE Linux) $DATE')dnl
+	OSTYPE(\`suse-linux')dnl
+	EOF
+	if test $SENDMAIL_MTA_PORT -ne 25 ; then
+		echo "DAEMON_OPTIONS(\`Name=MTA,Port=${SENDMAIL_MTA_PORT}')dnl"
+	fi
+	if test "$USE_ACCESS_DB" = "yes" ; then
+		echo "FEATURE(\`access_db',	\`hash -T<TMPF> -o /etc/mail/access.db')dnl"
+		echo "FEATURE(\`greet_pause',	\`2000')dnl"
+	fi
+	if test -d /etc/aliases.d/ ; then
+		afiles=""
+		for a in /etc/aliases.d/* ; do
+			test -s "$a" || continue
+			case "$a" in
+			*.db|*.dir|*.btree|*.pag) continue ;;
+			esac
+			afiles="${afiles},${a}"
+		done
+		if test -n "${afiles}" ; then
+			echo "ifdef(\`ALIAS_FILE', define(\`ALIAS_FILE', ALIAS_FILE\`${afiles}'))dnl"
+		fi
+		unset a afiles
+	fi
+	if test -n "$SENDMAIL_SMARTHOST" -a "$SENDMAIL_SMARTHOST" != "no" ; then
+		case "$SENDMAIL_SMARTHOST" in
+		*.*.)		;;
+		*.*[a-zA-Z])	SENDMAIL_SMARTHOST="${SENDMAIL_SMARTHOST}."
+		esac
+		echo "define(\`SMART_HOST',	\`$SENDMAIL_SMARTHOST')dnl"
+		echo "undefine(\`confHOST_STATUS_DIRECTORY')dnl"
+		if test "$DIALUP" = yes ; then
+			echo "define(\`confFALLBACK_MX',	\`[${SENDMAIL_SMARTHOST#*:}]')dnl"
+		fi
+	fi
+	if test -n "$SENDMAIL_RELAY" -a "$SENDMAIL_RELAY" != "no" ; then
+		case "$SENDMAIL_RELAY" in
+		*.*.)		;;
+		*.*[a-zA-Z])	SENDMAIL_RELAY="${SENDMAIL_RELAY}."
+		esac
+		echo "define(\`LOCAL_RELAY',	\`$SENDMAIL_RELAY')dnl"
+		echo "define(\`MAIL_HUB',	\`$SENDMAIL_RELAY')dnl"
+	elif test -n "$SENDMAIL_LUSER" -a "$SENDMAIL_LUSER" != "no" ; then
+		echo "define(\`LUSER_RELAY',	\`local:$SENDMAIL_LUSER')dnl"
+	fi
+	if test "$SENDMAIL_EXPENSIVE" = yes ; then
+		echo "FEATURE(\`expensive')dnl"
+	fi
+	if test "$SENDMAIL_NOCANONIFY" = yes ; then
+		echo "FEATURE(\`nocanonify')dnl"
+		echo "define(\`confDIRECT_SUBMISSION_MODIFIERS', \`C')dnl"
+	fi
+	if test "$NODNS" = yes ; then
+		echo "HACK(\`nodns')dnl"
+	fi
+	if test "$DIALUP" = yes -a -n "$FQHOSTNAME" ; then
+		echo "FEATURE(\`dialup',	\`$FQHOSTNAME')dnl"
+	fi
+	if test -n "$SENDMAIL_DNSRBL" -a "$SENDMAIL_DNSRBL" != "no" ; then
+		for dom in $SENDMAIL_DNSRBL; do
+			echo "FEATURE(dnsbl,	\`$dom')dnl"
+		done
+		unset dom
+	fi
+	if test -n "$FROM_HEADER" -a "$FROM_HEADER" != "no" ; then
+		echo "MASQUERADE_AS(\`$FROM_HEADER')dnl"
+		echo "FEATURE(\`masquerade_envelope')dnl"
+		if test "$SENDMAIL_ALLMASQUERADE" = "yes" ; then
+			echo "FEATURE(\`allmasquerade')dnl"
+		fi
+		if test -n "$MASQUERADE_DOMAINS" ; then
+			if test "$MASQUERADE_ENTIRE_DOMAIN" = "yes"; then
+				echo "FEATURE(\`masquerade_entire_domain')dnl"
+			fi
+			echo "MASQUERADE_DOMAIN(\`$MASQUERADE_DOMAINS')dnl"
+			echo "MASQUERADE_DOMAIN_FILE(\`-o /etc/mail/local-host-names %[^\#]')dnl"
+			echo "FEATURE(\`limited_masquerade')dnl"
+		fi
+	fi
+
+	if test "$DOMAINTABLE" = "yes"; then
+		echo "FEATURE(\`domaintable', \`hash -o /etc/mail/domaintable.db')dnl"
+	fi
+
+	if test "$FROM_HEADER" != "$FQHOSTNAME" ; then
+		if test -n "$SENDMAIL_GENERICS_DOMAIN" -a "$SENDMAIL_GENERICS_DOMAIN" != "no" ; then
+			SENDMAIL_GENERICS_DOMAIN="$SENDMAIL_GENERICS_DOMAIN $FQHOSTNAME"
+		else
+			SENDMAIL_GENERICS_DOMAIN="$FQHOSTNAME"
+		fi
+	fi
+	if test -n "$SENDMAIL_GENERICS_DOMAIN" -a "$SENDMAIL_GENERICS_DOMAIN" != "no" ; then
+		echo "FEATURE(\`generics_entire_domain')dnl"
+		if test -n "$FROM_HEADER" ; then
+			echo "GENERICS_DOMAIN(\`$SENDMAIL_GENERICS_DOMAIN $FROM_HEADER')dnl"
+		else
+			echo "GENERICS_DOMAIN(\`$SENDMAIL_GENERICS_DOMAIN')dnl"
+		fi
+		echo "GENERICS_DOMAIN_FILE(\`-o /etc/mail/local-host-names %[^\#]')dnl"
+	else
+		if test -n "$FROM_HEADER" ; then
+			echo "GENERICS_DOMAIN(\`$FROM_HEADER')dnl"
+			echo "GENERICS_DOMAIN_FILE(\`-o /etc/mail/local-host-names %[^\#]')dnl"
+		fi
+	fi
+
+	# Foreign package amavis needs libmilter interface
+	if test "$USE_AMAVIS" = yes ; then
+		echo "define(\`MILTER')dnl"
+		cat <<-EOF
+		divert(-1)
+		INPUT_MAIL_FILTER(\`milter-amavis',\
+				  \`S=local:/var/run/amavis/amavis-milter.sock, T=S:10m;R:10m;E:10m')
+		divert(0)dnl
+		EOF
+	fi
+
+	SMTP_AUTH_MECHANISMS=$(echo "$SMTP_AUTH_MECHANISMS" | tr '[:lower:]' '[:upper:]' 2> /dev/null)
+	SMTP_AUTH_SERVER=$(echo "$SMTP_AUTH_SERVER" | tr '[:lower:]' '[:upper:]' 2> /dev/null)
+
+	# Enable SMTP-AUTH as client (plain, gssapi, digest-md5, and cram-md5)
+	# AUTH_DIR is defined in OSTYPE(`suse-linux') as /etc/mail/auth
+	if test -n "$SMTP_AUTH_MECHANISMS" -a "$SMTP_AUTH_MECHANISMS" != "NO" ; then
+		echo "FEATURE(\`authinfo',		\`hash -o 'AUTH_DIR\`/auth-info')dnl"
+		if test "$SMTP_AUTH_MECHANISMS" != "ALL" ; then
+			echo "define(\`confAUTH_MECHANISMS',	\`$SMTP_AUTH_MECHANISMS')dnl"
+		else
+			echo "define(\`confAUTH_MECHANISMS',dnl"
+			echo "\`GSSAPI OTP DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl"
+		fi
+	fi
+
+	# Enable SMTP-AUTH as server (gssapi, digest-md5, and cram-md5)
+	if test -n "$SMTP_AUTH_SERVER" -a "$SMTP_AUTH_SERVER" != "NO" ; then
+		case "$SMTP_AUTH_SERVER" in
+		*ALL*|*PLAIN*)
+			echo "define(\`confAUTH_OPTIONS',	\`Ay' )dnl" ;;
+		*)	echo "define(\`confAUTH_OPTIONS',	\`Apy')dnl"
+		esac
+		if test "$SMTP_AUTH_SERVER" != "ALL" ; then
+			echo "define(\`confAUTH_MECHANISMS',	\`$SMTP_AUTH_SERVER')dnl"
+			echo "TRUST_AUTH_MECH(\`$SMTP_AUTH_SERVER')dnl"
+		else
+			echo "define(\`confAUTH_MECHANISMS',dnl"
+			echo "\`GSSAPI OTP DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl"
+			echo "TRUST_AUTH_MECH(\`GSSAPI OTP DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')"dnl
+		fi
+	fi
+
+	# Enable STARTTLS Certificates
+	# CERT_DIR is defined in OSTYPE(`suse-linux') as /etc/mail/certs
+	case "$STARTTLS" in
+	server)
+		echo "define(\`confCACERT',		 CERT_DIR\`/CA.cert.pem')dnl"
+		echo "define(\`confSERVER_CERT',	 CERT_DIR\`/MYServer.cert.pem')dnl"
+		echo "define(\`confSERVER_KEY',		 CERT_DIR\`/MYServer.key.pem')dnl"
+		;;
+	client)
+		echo "define(\`confCACERT',		 CERT_DIR\`/CA.cert.pem')dnl"
+		echo "define(\`confCLIENT_CERT',	 CERT_DIR\`/MYClient.cert.pem')dnl"
+		echo "define(\`confCLIENT_KEY',		 CERT_DIR\`/MYClient.key.pem')dnl"
+		;;
+	both)
+		echo "define(\`confCACERT',		 CERT_DIR\`/CA.cert.pem')dnl"
+		echo "define(\`confSERVER_CERT',	 CERT_DIR\`/MYServer.cert.pem')dnl"
+		echo "define(\`confSERVER_KEY',		 CERT_DIR\`/MYServer.key.pem')dnl"
+		echo "define(\`confCLIENT_CERT',	 CERT_DIR\`/MYClient.cert.pem')dnl"
+		echo "define(\`confCLIENT_KEY',		 CERT_DIR\`/MYClient.key.pem')dnl"
+		;;
+	esac
+	if test -n "$STARTTLS" -a "$STARTTLS" != "no" ; then
+		echo "define(\`confAUTH_MECHANISMS',	\`EXTERNAL 'defn(\`confAUTH_MECHANISMS'))dnl"
+		echo "TRUST_AUTH_MECH(\`EXTERNAL')dnl"
+		echo "define(\`confDONT_BLAME_SENDMAIL', defn(\`confDONT_BLAME_SENDMAIL')dnl"
+		echo "\`,GroupWritableSASLDBFile')dnl"
+	fi
+
+	if test $SENDMAIL_UUCP_MAX_MSG -gt 0 ; then
+		echo "define(\`UUCP_MAILER_MAX',	\`$SENDMAIL_UUCP_MAX_MSG')dnl"
+	fi
+
+	cat <<-EOF
+	DOMAIN(\`generic')dnl
+	MAILER(\`local')dnl
+	MAILER(\`smtp')dnl
+	MAILER(\`procmail')dnl
+	MAILER(\`uucp')dnl
+	MAILER(\`bsmtp')dnl
+	MAILER(\`fido')dnl
+	EOF
+	if test -n "$SENDMAIL_LOCALHOST" -a "$SENDMAIL_LOCALHOST" != "no" ; then
+		echo "LOCAL_CONFIG"
+		echo "Cw${SENDMAIL_LOCALHOST}${EXPAND+" $EXPAND"}"
+	fi
+}
+
+gen_submit_m4()
+{
+	cat <<-EOF
+	######################################################################
+	# /etc/mail/submit.cf
+	#
+	# Generated by /usr/lib/sendmail.d/update on $(date +'%Y/%m/%d %H:%M:%S')
+	# controlled by /etc/sysconfig/mail and /etc/sysconfig/sendmail
+	#
+	######################################################################
+	divert(-1)
+	include(\`/usr/share/sendmail/m4/cf.m4')
+	define(\`SMLIBDIR',			\`/usr/lib/sendmail.d')dnl
+	define(\`MAIL_SETTINGS_DIR',		\`/etc/mail/')dnl
+	define(\`confDEAD_LETTER_DROP',		\`/var/log/dead.letter')dnl
+	define(\`HELP_FILE',			 SMLIBDIR\`/helpfile')dnl
+	define(\`confHOSTS_FILE',		\`/etc/hosts')dnl
+	define(\`confCT_FILE',			\`-o /etc/mail/trusted-users %[^\#]')dnl
+	define(\`confCR_FILE',			\`-o /etc/mail/relay-domains %[^\#]')dnl
+	define(\`confSERVICE_SWITCH_FILE',	\`/etc/mail/service.switch')dnl
+	define(\`confEBINDIR',			 SMLIBDIR\`/bin')dnl
+	divert(0)dnl
+	VERSIONID(\`@(#)Setup for SuSE Linux	$VERSION (SuSE Linux) $DATE')dnl
+	EOF
+	#
+	# Enable trusted users file and OS trusted users
+	#
+	echo "FEATURE(\`use_ct_file')dnl"
+	echo $(grep confTRUSTED_USERS /usr/share/sendmail/ostype/suse-linux.m4 2> /dev/null)
+	if test "$SENDMAIL_EXPENSIVE" = yes ; then
+		echo "FEATURE(\`accept_unresolvable_domains')dnl"
+		echo "FEATURE(\`accept_unqualified_senders')dnl"
+	fi
+	if test "$DIALUP" = yes ; then
+		echo "define(\`confTO_QUEUEWARN',		\`1d')dnl"
+		echo "define(\`confTO_QUEUEWARN_URGENT',	\`4h')dnl"
+		echo "define(\`confTO_QUEUERETURN',		\`7d')dnl"
+		echo "define(\`confTRY_NULL_MX_LIST',		 true)dnl"
+	fi
+	if test "$SENDMAIL_NOCANONIFY" = yes ; then
+		echo "FEATURE(\`nocanonify')dnl"
+		echo "define(\`confDIRECT_SUBMISSION_MODIFIERS', \`C')dnl"
+	else
+		echo "FEATURE(\`nocanonify',	\`canonify_hosts')dnl"
+		echo "define(\`confDIRECT_SUBMISSION_MODIFIERS', \`C')dnl"
+	fi
+	if test "$NODNS" = yes ; then
+		echo "HACK(\`nodns')dnl"
+	fi
+	if test "$FROM_HEADER" != "$FQHOSTNAME" ; then
+		if test -n "$SENDMAIL_GENERICS_DOMAIN" -a "$SENDMAIL_GENERICS_DOMAIN" != "no" ; then
+			SENDMAIL_GENERICS_DOMAIN="$SENDMAIL_GENERICS_DOMAIN $FQHOSTNAME"
+		else
+			SENDMAIL_GENERICS_DOMAIN="$FQHOSTNAME"
+		fi
+	fi
+	if test -n "$SENDMAIL_GENERICS_DOMAIN" -a "$SENDMAIL_GENERICS_DOMAIN" != "no" ; then
+		echo "FEATURE(\`generics_entire_domain')dnl"
+		if test -n "$FROM_HEADER" ; then
+			echo "GENERICS_DOMAIN(\`$SENDMAIL_GENERICS_DOMAIN $FROM_HEADER')dnl"
+		else
+			echo "GENERICS_DOMAIN(\`$SENDMAIL_GENERICS_DOMAIN')dnl"
+		fi
+		echo "GENERICS_DOMAIN_FILE(\`-o /etc/mail/local-host-names %[^\#]')dnl"
+	else
+		if test -n "$FROM_HEADER" ; then
+			echo "GENERICS_DOMAIN(\`$FROM_HEADER')dnl"
+			echo "GENERICS_DOMAIN_FILE(\`-o /etc/mail/local-host-names %[^\#]')dnl"
+		fi
+	fi
+	if test $SENDMAIL_MTA_PORT -ne 25 ; then
+		echo "define(\`confMTAPort',	\`${SENDMAIL_MTA_PORT}')dnl"
+	fi
+	cat <<-EOF
+	divert(-1)
+	include(\`/usr/share/sendmail/cf/submit.mc')
+	divert(0)dnl
+	EOF
+}
+
+# Generate a sendmail-m4 to stdout if called with -m4
+# (The usual stdout is redirected to stderr)
+# Part 2
+if test "$1" = "-m4" ; then
+    if test "$2" != "submit" ; then
+	gen_sendmail_m4 >&5
+    else
+	gen_submit_m4   >&5
+    fi
+    exit $?
+fi
+
+if test "$MAIL_CREATE_CONFIG" != no ; then
+	umask 0022
+	sendupdate=$(mktemp /etc/sendmail.cf.XXXXXX) || exit 1
+	submupdate=$(mktemp /etc/mail/submit.cf.XXXXXX)   || exit 1
+	chmod 0644 $sendupdate
+	chmod 0644 $submupdate
+	if test -n "$NULLCLIENT" -a "$NULLCLIENT" != "no" ; then
+		(m4 - > $sendupdate) <<-EOF
+		divert(-1)
+		include(\`/usr/share/sendmail/m4/cf.m4')
+		divert(0)dnl
+		VERSIONID(\`@(#)Setup for SuSE Linux	$VERSION (SuSE Linux) $DATE')
+		OSTYPE(\`suse-linux')dnl
+		FEATURE(\`nocanonify')dnl
+		FEATURE(\`nullclient', \`$NULLCLIENT')dnl
+		LOCAL_CONFIG
+		EOF
+	else
+		gen_sendmail_m4 | m4 - > $sendupdate
+		test $? -eq 0 || e=1
+	fi
+	gen_submit_m4 | m4 - > $submupdate
+	test $? -eq 0 || e=1
+
+	mv -f $sendupdate /etc/sendmail.cf.update
+	sendupdate=/etc/sendmail.cf.update
+	check_md5_and_move /etc/sendmail.cf    $sendupdate
+
+	mv -f $submupdate /etc/submit.cf.update
+	submupdate=/etc/submit.cf.update
+	check_md5_and_move /etc/mail/submit.cf $submupdate
+fi
+
+nofold=""
+test "$SENDMAIL_DB_FOLD" = "no" && nofold=-f
+
+test -e /etc/aliases && \
+	if test /etc/aliases -nt /etc/aliases.db \
+                -o ! -e /etc/aliases.db ; then
+		echo "Rebuilding /etc/aliases.db."
+		setmask /etc/aliases
+		sendmail -bi
+		if test $? -eq 0 ; then
+		   test -e /etc/aliases.db && touch /etc/aliases.db
+		   chmod --reference=/etc/aliases /etc/aliases.db
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/mailertable && \
+	if test /etc/mail/mailertable -nt /etc/mail/mailertable.db \
+                -o ! -e /etc/mail/mailertable.db ; then
+		echo "Rebuilding /etc/mail/mailertable.db."
+		setmask /etc/mail/mailertable
+		makemap hash ${nofold} /etc/mail/mailertable.db < /etc/mail/mailertable
+		if test $? -eq 0 ; then
+		   test -e /etc/mail/mailertable.db && touch /etc/mail/mailertable.db
+		   chmod --reference=/etc/mail/mailertable /etc/mail/mailertable.db
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/genericstable && \
+	if test /etc/mail/genericstable -nt /etc/mail/genericstable.db \
+                -o ! -e /etc/mail/genericstable.db ; then
+		echo "Rebuilding /etc/mail/genericstable.db."
+		setmask /etc/mail/genericstable
+		makemap hash ${nofold} /etc/mail/genericstable.db < /etc/mail/genericstable
+		if test $? -eq 0 ; then
+		   test -e /etc/mail/genericstable.db && touch /etc/mail/genericstable.db
+		   chmod --reference=/etc/mail/genericstable /etc/mail/genericstable.db
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/virtusertable && \
+	if test /etc/mail/virtusertable -nt /etc/mail/virtusertable.db \
+                -o ! -e /etc/mail/virtusertable.db ; then
+		echo "Rebuilding /etc/mail/virtusertable.db."
+		setmask /etc/mail/virtusertable
+		makemap hash ${nofold} /etc/mail/virtusertable.db < /etc/mail/virtusertable
+		if test $? -eq 0 ; then
+		   test -e /etc/mail/virtusertable.db && touch /etc/mail/virtusertable.db
+		   chmod --reference=/etc/mail/virtusertable /etc/mail/virtusertable.db
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/access && \
+	if test /etc/mail/access -nt /etc/mail/access.db \
+                -o ! -e /etc/mail/access.db ; then
+		echo "Rebuilding /etc/mail/access.db."
+		setmask /etc/mail/access
+		makemap hash ${nofold} /etc/mail/access.db < /etc/mail/access
+		if test $? -eq 0 ; then
+		   test -e /etc/mail/access.db && touch /etc/mail/access.db
+		   chmod --reference=/etc/mail/access /etc/mail/access.db
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/userdb && \
+	if test /etc/mail/userdb -nt /etc/mail/userdb.db \
+                -o ! -e /etc/mail/userdb.db ; then
+		echo "Rebuilding /etc/mail/userdb.db."
+		setmask /etc/mail/userdb
+		makemap btree ${nofold} /etc/mail/userdb.db < /etc/mail/userdb
+		if test $? -eq 0 ; then
+		   test -e /etc/mail/userdb.db && touch /etc/mail/userdb.db
+		   chmod --reference=/etc/mail/userdb /etc/mail/userdb.db
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/auth/auth-info && \
+	if test /etc/mail/auth/auth-info -nt /etc/mail/auth/auth-info.db \
+                -o ! -e /etc/mail/auth/auth-info.db ; then
+		echo "Rebuilding /etc/mail/auth/auth-info.db."
+		setmask /etc/mail/auth/auth-info
+		makemap hash ${nofold} /etc/mail/auth/auth-info.db < /etc/mail/auth/auth-info
+		if test $? -eq 0 ; then
+		   touch /etc/mail/auth/auth-info
+		   chmod 0750 /etc/mail/auth
+		   chmod 0600 /etc/mail/auth/auth-info*
+		else
+		   e=1
+		fi
+	fi
+test -e /etc/mail/domaintable && \
+	if test /etc/mail/domaintable -nt /etc/mail/domaintable.db \
+		-o ! -e /etc/mail/domaintable.db ; then
+		echo "Rebuilding /etc/mail/domaintable.db."
+		setmask /etc/mail/domaintable
+		makemap hash ${nofold} /etc/mail/domaintable.db < /etc/mail/domaintable
+		if test $? -eq 0 ; then
+		   test -e /etc/mail/domaintable.db && touch /etc/mail/domaintable.db
+		   chmod --reference=/etc/mail/domaintable /etc/mail/domaintable.db
+		else
+		   e=1
+		fi
+	fi
+
+exit $e
--- suse/access
+++ suse/access	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,50 @@
+# /etc/mail/access
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+#  With this file you can control the access
+#  to your mail server.
+#
+# Note:
+#
+#  To enable this you have to set USE_ACCESS_DB
+#  in /etc/sysconfig/sendmail to "yes" and run
+#  SuSEconfig.  If you're not using SuSEconfig
+#  you may have a look into your /etc/mail/linux.mc
+#
+# Format:
+#
+#<email addr>		<keyword or ### text>
+#<domain name>		<keyword or ### text>
+#<network addr>		<keyword or ### text>
+#              ^^^^^^^^^
+#       (these are <TAB> stops)
+#
+#  Network IP-addresses have to end on octet boundary, e.g. 127.0.0
+#  The right hand side `<keyword or ### text>' could be one of
+#  the keywords
+#
+#    OK        (accept mails even if other rules would reject them)
+#    REJECT    (reject mails even if other rules would accept them)
+#    RELAY     (relay this domain, implicit OK within other rules)
+#    DISCARD   (mail are discard)
+#
+#  or an `###' RFC 821 compliant error code and some text, e.g.
+#
+#    ERROR:"550 We don't accept mail from spammers"
+#
+# Examples:
+#
+#cyberspammer.com	ERROR:"550 We don't accept mail from spammers"
+#sendmail.org		OK
+#192.168		RELAY
+#
+# Extensions:
+#
+#  See /usr/share/sendmail/README for the FEATURE `blacklist_recipients'. 
+#
+# Default for loop back is RELAY
+127		RELAY
--- suse/aliases
+++ suse/aliases	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,86 @@
+# Copyright (c) 1997-1999,2000 SuSE GmbH Nuernberg, Germany.
+# Author: Florian La Roche
+#         Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# The program "newaliases" must be run after changing this file.
+
+# It is probably best to not work as user root and redirect all
+# email to "root" to another account. Then you don't have to check
+# for important email too often on the root account.
+# The "\root" will make sure that email is also delivered to the
+# root-account, but also forwared to the user "joe".
+#root:		joe, \root
+
+# Basic system aliases that MUST be present.
+postmaster:	root
+mailer-daemon:	postmaster
+
+# amavis
+virusalert:	root
+
+# General redirections for pseudo accounts in /etc/passwd.
+administrator:	root
+daemon:		root
+lp:		root
+news:		root
+uucp:		root
+games:		root
+man:		root
+at:		root
+postgres:	root
+mdom:		root
+amanda:		root
+ftp:		root
+wwwrun:		root
+squid:		root
+msql:		root
+gnats:		root
+nobody:		root
+# "bin" used to be in /etc/passwd
+bin:		root
+
+# Further well-known aliases for dns/news/ftp/mail/fax/web/gnats.
+newsadm:	news
+newsadmin:	news
+usenet:		news
+ftpadm:		ftp
+ftpadmin:	ftp
+ftp-adm:	ftp
+ftp-admin:	ftp
+hostmaster:	root
+mail:		postmaster
+postman:	postmaster
+post_office:	postmaster
+# "abuse" is often used to fight against spam email
+abuse:		postmaster
+spam:		postmaster
+faxadm:		root
+faxmaster:	root
+webmaster:	root
+gnats-admin:	root
+mailman:	root
+mailman-owner:	mailman
+
+# Majordomo can be used to have mailinglists on your site.
+#majordomo:		"|/usr/lib/majordomo/wrapper majordomo"
+#owner-majordomo:	root,
+#majordomo-owner:	root,
+
+# sample entry for a majordomo mailing-list called "test"
+# read /usr/doc/packages/majordomo/README.linux for more information
+# replace "test" with a new name and put the administrator into
+# the "owner-test" alias instead of "root".
+#
+#test:			"|/usr/lib/majordomo/wrapper resend -l test test-outgoing"
+#test-outgoing:		:include:/var/lib/majordomo/lists/test
+#test-request:		"|/usr/lib/majordomo/wrapper majordomo -l test"
+#test-approval:		owner-test,
+#owner-test-outgoing:	owner-test,
+#owner-test-request:	owner-test,
+#owner-test:		root,
+#
+# if you have bulk_mailer installed, you can replace the above
+# "test-outgoing" line with the following:
+#test-outgoing:		"|/usr/bin/bulk_mailer owner-test@host.com /var/lib/majordomo/lists/test"
+#
--- suse/auth-info
+++ suse/auth-info	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,33 @@
+# /etc/mail/auth/auth-info
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+# Fill in the rulesets for smtp authentication
+#
+# Note:
+#
+#   This is only useful if SMTP_AUTH_MECHANISMS in /etc/sysconfig/sendmail
+#   has an appropiate authentication mechanism filled in.
+#
+# Format:
+#
+#   The RHS for an AuthInfo entry in the map should consists of a
+#   list of tokens, each of which has the form: "T[:=]string" (including
+#   the quotes).  `T' is a tag which describes the item, followed by 
+#   either `:' for simple text or `=' for a base64 encoded string.
+#   Valid values for the tag are:
+#       U       user (authorization) id
+#       I       authentication id
+#       P       password
+#       R       realm
+#       M       list of mechanisms delimited by spaces (overwrite default)
+#   User or authentication id must exist as well as the password. All other entries
+#   have default values. If one of user or authentication id is missing, the existing
+#   value is used for the missing item. Replace `<...>' (including the brackets!) with
+#   the correct value accordingly your needs
+#
+#AuthInfo:<server_name.dom> "U:<user>" "I:<user_id>" "P:<secret>" "R:<server_name.dom>" "M:DIGEST-MD5"
+#AuthInfo:<server_name.dom> "U:<user>" "P=<base64_encoded_secret>"
--- suse/domaintable
+++ suse/domaintable	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,18 @@
+# /etc/mail/domaintable
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+#  map (un)qualified domains to qualified domains in headers.
+#  This can be used to provide domain name mapping.  Use of
+#  this should really be limited to your own domains.  It may
+#  be useful if you change names (e.g., your company changes
+#  names from oldname.com to newname.com).
+#
+# Format:
+#
+#olddomain.name		newdomain.name
+#              ^^^^^^^^^
+#     (this is a <TAB> stop)
--- suse/fw
+++ suse/fw	2008-08-06 10:05:44.000000000 +0000
@@ -0,0 +1,18 @@
+## Name: SMTP with sendmail
+## Description: Firewall Configuration file for sendmail
+
+# space separated list of allowed TCP ports
+TCP="25 465"
+
+# space separated list of allowed UDP ports
+UDP=""
+
+# space separated list of allowed RPC services
+RPC=""
+
+# space separated list of allowed IP protocols
+IP=""
+
+# space separated list of allowed UDP broadcast ports
+BROADCAST=""
+
--- suse/genericstable
+++ suse/genericstable	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,21 @@
+# /etc/mail/genericstable
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+#  map outgoing sender addresses from the (unqualified) left hand side
+#  to the qualified addresses on the right hand side.  The same types
+#  of addresses as for masquerading are looked up, i.e., only header
+#  sender addresses unless the allmasquerade and/or masquerade_envelope
+#  features are given (/etc/sysconfig/mail -> FROM_HEADER). Qualified addresses
+#  must have the domain part in the list of names given by the by the
+#  macro GENERICS_DOMAIN (/etc/sysconfig/sendmail -> SENDMAIL_GENERICS_DOMAIN).
+#
+# Format:
+#
+#user@uqhost		realuser@fqhost
+#user			realuser@fqhost
+#           ^^^^^^^^^^^^
+#     (these are <TAB> stops)
--- suse/linux.mc
+++ suse/linux.mc	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,305 @@
+divert(-1)
+# Copyright (c) 1997-1999,2000 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Florian La Roche
+#         Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# After the `divert(0)' all lines starting with `dnl' are
+# comments until the next newline character.
+# Putting words into `'-pairs disables macro expansion
+#
+include(`/usr/share/sendmail/m4/cf.m4')
+divert(0)dnl
+VERSIONID(`@(#)Setup for SuSE Linux	0.5 (SuSE Linux) 2004/04/02')dnl
+dnl
+dnl  This is the default configuration for SuSE Linux.
+dnl  See `/usr/share/sendmail/ostype/suse-linux.m4' and take a look
+dnl  into `/usr/share/sendmail/README' for more information.
+dnl
+dnl  The suse-linux.m4 enables the FEATUREs mailertable, genericstable,
+dnl  virtusertable, and access_db.  Just look to those file for some
+dnl  examples.  They are stored in `/etc/mail/'.  If you have changed
+dnl  one or more files you should run SuSEconfig or generate the
+dnl  `.db' files by hand (see /sbin/conf.d/SuSEconfig.sendmail).
+dnl
+dnl  NOTE: YOU HAVE TO CHANGE THE CONFIGURATION TO FIT YOUR NEEDS
+dnl        BEFORE ACTIVTING SOME OF THESE EXAMPLES!
+dnl
+OSTYPE(`suse-linux')dnl
+dnl
+dnl  Turns on the access database feature. The access db gives you the ability
+dnl  to allow or refuse to accept mail from specified domains for administrative
+dnl  reasons. Also adds the greet_pause ruleset enables open proxy
+dnl  and SMTP slamming protection.  Sendmail will wait the specific microseconds
+dnl  before sending the initial 220 SMTP greeting.
+dnl  If any traffic is received before then, a 554 SMTP response is sent and
+dnl  all SMTP commands are rejected during the connection.
+dnl
+dnl FEATURE(`access_db',	`hash -T<TMPF> -o /etc/mail/access.db')dnl
+dnl FEATURE(`greet_pause',	`2000')dnl
+dnl
+dnl  For alias directory extension /etc/aliases.d/ we have to
+dnl  add them into a list or known alias files.
+dnl 
+dnl ifdef(`ALIAS_FILE', define(`ALIAS_FILE', ALIAS_FILE`,/etc/aliases.d/myaliases'))dnl
+dnl
+dnl  By default the MSA (Message Submission Agent) daemon is disabled on
+dnl  SuSE Linux.  If you want to use this service enabled the following.
+dnl
+dnl DAEMON_OPTIONS(`Port=587,Name=MSA,M=E')dnl
+dnl
+dnl  Do not send MIME error messages
+dnl
+dnl define(`confMIME_FORMAT_ERRORS', `False')dnl
+dnl
+dnl  If you have a modem and you use dial on demand, specify the time
+dnl  until you have a working connection. Sendmail will then retry to
+dnl  establish a connection.
+dnl
+dnl define(`confDIAL_DELAY', `10s')dnl
+dnl
+dnl  Timeout before a warning message is sent to the sender telling them
+dnl  that the message has been deferred.  The FEATURE(dialup) will
+dnl  overwrite this.
+dnl
+dnl define(`confTO_QUEUEWARN', `4h')dnl
+dnl
+dnl  Timeout before a message is returned as undeliverable
+dnl
+dnl define(`confTO_QUEUERETURN', `5d')dnl
+dnl
+dnl  If you have lots of users, you might want to add "restrictmailq" and
+dnl  "restrictrunq", but normally they can be left out.  "authwarnings"
+dnl  warns about all people that e.g. use "sendmail -bs" and adds
+dnl  `X-Authentication-Warning:' headers.  Pine users might want to disable this.
+dnl  "noreceipts" disables DSN (Delivery Status Notification) and ignores all
+dnl  `Return-Receipt-To:' headers even if `confRRT_IMPLIES_DSN' is `true'.
+dnl  For service provider using ETRN on port 25 the noetrn could be removed.
+dnl
+dnl define(`confPRIVACY_FLAGS', `authwarnings,needmailhelo,novrfy,noexpn,noetrn,noverb')dnl
+dnl
+dnl  These users given in `/etc/mail/trusted-users' are allowed to modify
+dnl  the email sender address.
+dnl
+dnl FEATURE(`use_ct_file')dnl
+dnl
+dnl  You can specify a smart host either here or in `/etc/mail/mailertable'
+dnl  and if you're using a smart host you may disable confHOST_STATUS_DIRECTORY
+dnl  and set a MX fallback
+dnl
+dnl define(`SMART_HOST',	`smtp:mail.smarthost.other.domain')dnl
+dnl define(`SMART_HOST',	`uucp-dom:otheruucphost')dnl
+dnl undefine(`confHOST_STATUS_DIRECTORY')dnl
+dnl define(`confFALLBACK_MX',	`[your.smarthost.here]')dnl
+dnl
+dnl  For a relay host you nay use the following two lines.
+dnl  Do not deliver any email locally, but send all email
+dnl  to another host.
+dnl
+dnl define(`MAIL_HUB',		`smtp:host.your.domain')dnl
+dnl define(`LOCAL_RELAY',	`smtp:host.your.domain')dnl
+dnl
+dnl  Redirect all email to unknown people to Postmaster.
+dnl
+dnl define(`LUSER_RELAY', `local:postmaster')dnl
+dnl
+dnl  Enable the following SuSE FEATURE, if you have a expensive
+dnl  dialup connection for SMTP and want to queue all email until
+dnl  `sendmail -q' is started.
+dnl
+dnl FEATURE(`expensive')dnl
+dnl
+dnl  This is used for dial-on-demand connections where we don't want to
+dnl  trigger a connection just for a DNS query.
+dnl  Sendmail will give all hostnames to your DNS server and replace the
+dnl  names with the FQDN ones. As nearly all email-programs use the full
+dnl  hostname and you will probably also just use full hostnames as
+dnl  destination addresses, you could disable `nocanonify'.  With `nodns'
+dnl  you should declare the local, the mail hub, the smart, and the mail
+dnl  relay host with their IP addresses and the corresponding Full Qualified
+dnl  Domain Names (in short FQDN which means hostname.domain) /etc/hosts.
+dnl  Do NOT use this together with anti-spam FEATUREs.
+dnl
+dnl FEATURE(`nocanonify')dnl
+dnl HACK(`nodns')dnl
+dnl
+dnl  The following FEATURE provides the possibility to avoid further
+dnl  dialups.  The delivery mode is defer (postpone) therefore this
+dnl  FEATURE should NOT be used in combination with anti-spam FEATUREs.
+dnl  Note, that this FEATURE needs the FQDN as stored in /etc/HOSTNAME
+dnl  read into the variable FQHOSTNAME.  Therefore replace myhost.newdomain.notused!
+dnl
+dnl FEATURE(`dialup', `myhost.newdomain.notused')dnl
+dnl
+dnl  This is a NO NO and only suitable in real intranet.  This because
+dnl  it `provides' a mail really for spam mails even if your local host
+dnl  is connected over a dialup line.  To avoid this miss-FEATURE you
+dnl  should enable FEATURE(`use_cw_file') and declare the hosts to accept
+dnl  in `/etc/mail/local-host-names'.
+dnl  Do NEVER use this together with anti-spam FEATUREs or being connected
+dnl  to the Internet.
+dnl
+dnl FEATURE(`promiscuous_relay')dnl
+dnl  
+dnl  Sendmail only accepts emails as local that use the FQDN. If you want
+dnl  to accept further hostnames as local email, add them here or put
+dnl  them into the `/etc/mail/local-host-names' file.
+dnl
+dnl FEATURE(`use_cw_file')dnl
+dnl
+dnl  This FEATURE enables (open)ldap and requires some arguments. For
+dnl  information see http://www.stanford.edu/~bbense/ldap/.  Note that this
+dnl  FEATURE define a map `ldap' and expand the AliasFile with `sequence:ldap'.
+dnl  We choose an other name for the proposed map name `luser' (see URL) to
+dnl  avoid conflicts with LUSER_RELAY.  The necessary change in rule S5 is
+dnl  already done and will be enabled by this FEATURE.
+dnl
+dnl FEATURE(`ldap', `place_here_your_configuration')dnl
+dnl
+dnl  The ldap_routing FEATURE is part of the official sendmail since 8.10.0.
+dnl  You'll find a description in /usr/share/sendmail/README at `LDAP ROUTING'.
+dnl  You've to replace example.notused, mailHostdefine, mailRoutingAddressdefine,
+dnl  and bounce argument if not `passthru' with your own configuration.
+dnl
+dnl define(`confLDAP_DEFAULT_SPEC', `-h mailHost')dnl
+dnl LDAPROUTE_DOMAIN(`example.notused')dnl
+dnl FEATURE(`ldap_routing', dnl
+dnl `ldap -1 -v mailHost -k (&(objectClass=inetLocalMailRecipient) (mailLocalAddress=%0))', dnl
+dnl `ldap -1 -v mailRoutingAddress -k (&(objectClass=inetLocalMailRecipient) (mailLocalAddress=%0))', dnl
+dnl `bounce')dnl
+dnl
+dnl  To stop spamming from known domains and known senders you should
+dnl  not use the FEATURE(dialup) nor FEATURE(promiscuous_relay) nor HACK(nodns).
+dnl  To turn on the ability to refuse or allow incoming mail for certain
+dnl  recipient usernames, hostnames, or addresses, you should declare them
+dnl  in `/etc/mail/access'.
+dnl  You can provide a black list for the FEATURE below list which is used to
+dnl  block incoming mail for certain recipient usernames, hostnames, or
+dnl  addresses.
+dnl
+dnl FEATURE(`blacklist_recipients')dnl
+dnl
+dnl  Turns on rejection of hosts found in an DNS based rejection list.
+dnl  The first argument is used as the domain in which blocked hosts
+dnl  are listed. Please note that free sites like rbl.maps.vix.com or
+dnl  blackholes.mail-abuse.org or relays.orbs.org do _not_ exist anymore
+dnl  due attacks from spammers side.  You have to search for a site
+dnl  at which you can pay for a RBL service.
+dnl
+dnl FEATURE(`dnsbl',`please.insert.your.rbl.provider', ` Mail from $&{client_addr} rejected')dnl
+dnl
+dnl
+dnl  Just add the local domain if the email address doesn't have one
+dnl
+FEATURE(`always_add_domain')dnl
+dnl
+dnl  Specify the sender email address for all outgoing mail from the local
+dnl  machine. Most people also want to use "masquerade_envelope" to also
+dnl  change the envelope addresses.
+dnl  Use "allmasquerade" to also change the recipient address. Don't use
+dnl  this feature, if you don't have the full /etc/aliases and the full
+dnl  /etc/passwd on your host.
+dnl 
+dnl MASQUERADE_AS(`newdomain.notused')dnl
+dnl FEATURE(`masquerade_envelope')dnl
+dnl FEATURE(`allmasquerade')dnl
+dnl FEATURE(`no_local_masquerading')dnl
+dnl
+dnl  Normally, any hosts decided as locally are masqueraded.  If
+dnl  the feature limited_masquerade is used, only the hosts listed in
+dnl  MASQUERADE_DOMAIN() are masqueraded.  This is useful if you have
+dnl  several domains with disjoint namespaces hosted on the same machine.
+dnl
+dnl MASQUERADE_DOMAIN(`otherdmain.notused')dnl
+dnl FEATURE(`limited_masquerade')dnl
+dnl
+dnl  The list will cause certain addresses originating locally (i.e. that
+dnl  are unqualified) or domains to be looked up in a map and turned into
+dnl  another ("generic") form, which can change both the domain name and
+dnl  the user name.  These domains can additional to the local domains be
+dnl  changed in /etc/mail/genericstable
+dnl
+dnl  Normally we want use genericstable, if not comment it out.
+dnl
+FEATURE(`generics_entire_domain')dnl
+dnl
+dnl GENERICS_DOMAIN(`your.domain')dnl
+dnl
+dnl  This is for the possible aliases of the local host here.
+dnl
+GENERICS_DOMAIN_FILE(`-o /etc/mail/local-host-names %[^\#]')dnl
+dnl
+dnl  Foreign package amavis needs libmilter interface
+dnl
+dnl define(`MILTER')dnl
+dnl divert(-1)
+dnl INPUT_MAIL_FILTER(`milter-amavis', `S=local:/var/run/amavis/amavis-milter.sock, T=S:10m;R:10m;E:10m')
+dnl divert(0)dnl
+dnl
+dnl
+dnl  Enable SMTP-AUTH as client (plain, gssapi, digest-md5, and cram-md5)
+dnl  AUTH_DIR is defined in OSTYPE(`suse-linux') as /etc/mail/auth
+dnl  To use the choosen authentication the appropiate cyrus-sasl package
+dnl  has to be installed: cyrus-sasl-(gssapi|otp|digestmd5|crammd5|plain)
+dnl  Please not that most providers only know about `plain' which means
+dnl  that the user data will not be encrypted.
+dnl
+dnl define(`confAUTH_MECHANISMS',	`place_here_your_auth_mechanism')dnl
+dnl FEATURE(`authinfo',			`hash -o 'AUTH_DIR`/auth-info')dnl
+dnl
+dnl  Enable SMTP-AUTH as server (gssapi, digest-md5, and cram-md5)
+dnl  for an explanation read
+dnl  To use the choosen authentication the appropiate cyrus-sasl package
+dnl  has to be installed: cyrus-sasl-(gssapi|otp|digestmd5|crammd5|plain)
+dnl  /usr/share/sendmail/README, /usr/share/doc/packages/sendmail/op.txt.bz2,
+dnl  and http://www.sendmail.org/~ca/email/auth.html.
+dnl
+dnl define(`confAUTH_OPTIONS',		`Apy')dnl
+dnl TRUST_AUTH_MECH(`place_here_your_auth_mechanism')dnl
+dnl define(`confAUTH_MECHANISMS',	`place_here_your_auth_mechanism')dnl
+dnl
+dnl  Enable STARTTLS Certificates, for an explanation read
+dnl  /usr/share/doc/packages/sendmail/op.txt.bz2 and
+dnl  http://www.sendmail.org/~ca/email/starttls.html
+dnl  The certification and key files are placed at
+dnl  /etc/mail/certs/ as CA.cert.pem, MYServer.cert.pem,
+dnl  MYServer.key.pem (for STARTTLS server) and
+dnl  MYClient.cert.pem, MYClient.key.pem (for STARTTLS client).
+dnl  CERT_DIR is defined in OSTYPE(`suse-linux') as /etc/mail/certs
+dnl
+dnl define(`confCACERT',		CERT_DIR/`CA.cert.pem')dnl"
+dnl define(`confSERVER_CERT',		CERT_DIR/`MYServer.cert.pem')dnl"
+dnl define(`confSERVER_KEY',		CERT_DIR/`MYServer.key.pem')dnl"
+dnl define(`confCLIENT_CERT',		CERT_DIR/`MYClient.cert.pem')dnl"
+dnl define(`confCLIENT_KEY',		CERT_DIR/`MYClient.key.pem')dnl"
+dnl
+dnl  We use the generic m4 macro definition. This defines
+dnl  an extented .forward and redirect mechanism.
+dnl
+DOMAIN(`generic')dnl
+dnl
+dnl  These mailers are available. per default only smtp is used. You have
+dnl  to add entries to /etc/mail/mailertable to enable one of the other
+dnl  mailers.
+dnl
+MAILER(`local')dnl
+MAILER(`smtp')dnl
+MAILER(`procmail')dnl
+MAILER(`uucp')dnl
+MAILER(`bsmtp')dnl
+MAILER(`fido')dnl
+dnl
+dnl  Just an other (open)ldap feature is the usage of maill500 as mailer
+dnl  for a given (open)ldap domain (see manual page mail500).
+dnl
+dnl MAILER(`mail500', `place_here_your_openldap_domain')dnl
+dnl
+dnl  This line is required for formating the /etc/sendmail.cf
+dnl
+LOCAL_CONFIG
+dnl
+dnl  The alternate names of this host:
+dnl
+dnl Cw localhost www.domain.notused
+dnl
--- suse/linux.nullclient.mc
+++ suse/linux.nullclient.mc	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,32 @@
+divert(-1)
+#
+# Copyright (c) 1999 SuSE GmbH Nuernberg, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# This is a special case -- it creates a stripped down configuration
+# file containing nothing but support for forwarding all mail to a
+# central hub via a local SMTP-based network.  The argument is the
+# name of that hub.
+#
+
+include(`/usr/share/sendmail/m4/cf.m4')
+divert(0)dnl
+VERSIONID(`@(#)Setup for SuSE Linux	0.2 (SuSE Linux) 2002/01/14')
+dnl
+dnl  This is the default configuration for SuSE Linux.
+dnl  See /usr/share/sendmail/ostype/suse-linux.m4
+dnl  and /usr/share/sendmail/README for more information.
+dnl
+OSTYPE(`suse-linux')dnl
+dnl
+dnl  A stripped down configuration. Replace the mailhub.domain.notused
+dnl  with your real mailhub.
+dnl
+FEATURE(`nullclient', `mailhub.domain.notused')dnl
+FEATURE(`nocanonify')dnl
+dnl
+dnl  This line is required for formating the /etc/sendmail.cf
+dnl
+LOCAL_CONFIG
--- suse/linux.submit.mc
+++ suse/linux.submit.mc	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,81 @@
+divert(-1)
+# Copyright (c) 2004 SuSE LINUX AG, Germany.
+# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# After the `divert(0)' all lines starting with `dnl' are
+# comments until the next newline character.
+# Putting words into `'-pairs disables macro expansion
+#
+include(`/usr/share/sendmail/m4/cf.m4')
+define(`SMLIBDIR',			`/usr/lib/sendmail.d')dnl
+define(`MAIL_SETTINGS_DIR',		`/etc/mail/')dnl
+define(`confDEAD_LETTER_DROP',		`/var/log/dead.letter')dnl
+define(`HELP_FILE',			SMLIBDIR`/helpfile')dnl
+define(`confHOSTS_FILE',		`/etc/hosts')dnl
+define(`confCT_FILE',			`-o /etc/mail/trusted-users %[^\#]')dnl
+define(`confCR_FILE',			`-o /etc/mail/relay-domains %[^\#]')dnl
+define(`confSERVICE_SWITCH_FILE',	`/etc/mail/service.switch')dnl
+define(`confEBINDIR',			SMLIBDIR`/bin')dnl
+divert(0)dnl
+VERSIONID(`@(#)Setup for SuSE Linux     0.1 (SuSE Linux) 2004/04/02')dnl
+dnl
+dnl  Enable trusted users file and OS trusted users
+dnl
+FEATURE(`use_ct_file')dnl
+dnl
+dnl  You will find the actual value of confTRUSTED_USERS in
+dnl  /usr/share/sendmail/ostype/suse-linux.m4 ... but _note_
+dnl  do _never_ include this file for generating a submit.cf
+dnl
+define(`confTRUSTED_USERS',		`mdom vscan wwwrun root uucp daemon mail')dnl
+dnl
+dnl  If you have an expensive dialup connection for SMTP and want
+dnl  to queue all email until `sendmail -Ac -q' is started.
+dnl
+dnl FEATURE(`accept_unresolvable_domains')dnl
+dnl FEATURE(`accept_unqualified_senders')dnl
+dnl
+dnl  Some useful longer warning defaults for a dialup host.
+dnl
+dnl define(`confTO_QUEUEWARN',		`1d')dnl
+dnl define(`confTO_QUEUEWARN_URGENT',	`4h')dnl
+dnl define(`confTO_QUEUERETURN',	`7d')dnl
+dnl define(`confTRY_NULL_MX_LIST',	true)dnl
+dnl
+dnl  This is used for dial-on-demand connections where we don't
+dnl  want to trigger a connection just for a DNS query ...
+dnl
+dnl FEATURE(`nocanonify')dnl
+dnl define(`confDIRECT_SUBMISSION_MODIFIERS',	`C')dnl
+dnl
+dnl  ... but normally we want canonify hosts.  If you use
+dnl  the two lines above you have to disable following tow
+dnl  lines:
+dnl
+FEATURE(`nocanonify',				`canonify_hosts')dnl
+define(`confDIRECT_SUBMISSION_MODIFIERS',	`C')dnl
+dnl
+dnl  At last but not least for dialup host you may suppress
+dnl  DNS loopups.
+dnl
+dnl HACK(`nodns')dnl
+dnl
+dnl  Normally we want use genericstable, if not comment it out.
+dnl
+FEATURE(`generics_entire_domain')dnl
+dnl
+dnl  You may set you generic domain name to the same as in linux.mc ...
+dnl
+dnl GENERICS_DOMAIN(`your.domain')dnl
+dnl
+dnl  ... and the aliases of the local host here.
+dnl
+GENERICS_DOMAIN_FILE(`-o /etc/mail/local-host-names %[^\#]')dnl
+dnl
+dnl  At least load the submit.mc file
+dnl
+divert(-1)
+include(`/usr/share/sendmail/cf/submit.mc')
+divert(0)dnl
--- suse/local-host-names
+++ suse/local-host-names	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,18 @@
+# /etc/mail/local-host-names
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+# You may include all aliases for your system herein.
+#
+# Note:
+#
+#   This will be done by the variable SENDMAIL_LOCALHOST
+#   in /etc/sysconfig/sendmail and the script tool
+#   SuSEconfig by setting the `Cw' line in /etc/sendmail.cf
+#
+# Format:
+#
+#<aliases for local host>
--- suse/mailertable
+++ suse/mailertable	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,36 @@
+# Copyright (c) 1997-1999 SuSE GmbH Nuernberg, Germany.
+# Author: Florian La Roche
+#
+# sendmail will look for all non-local email into this file to determine
+# the transport way to the next host. the destination hostname is used
+# to find an entry in this file.
+#
+# all uucp examples will use normal domain addressing for email.
+# this should be used by nearly everyone today.
+#
+# this will send all email via uucp to an attached uucp host.
+# a uucp server should have an entry for each attached uucp host.
+#uuhost.domain.com	uucp-dom:uuhost
+#
+# to configure one uucp host that needs to send all non-local mail
+# to a uucp-server called "uuserver", we just configure a smarthost entry:
+#.			uucp-dom:uuserver
+#
+# hosts sending email should be running all the day. if other hosts
+# are down, they can try in regular intervals to deliver email.
+# if you want to work on a machine that is not turned on all the time,
+# you can fetch email from the main email hub and send all outgoing
+# email directly to your local email hub for further delivery.
+# that is called a smarthost-entry:
+#.			smtp:mailhub.domain.com
+#
+# send all email for a special host to another host or to a specific IP:
+#host.sub.org		smtp:host.domain.com
+#host.sub.org		smtp:[192.168.0.1]
+#
+# send email for all hosts below .sub.org to another host:
+#.sub.org		smtp:host.domain.com
+#
+# send all email for a specific host to one local user called "foo":
+#host.sub.org		local:foo
+#
--- suse/messages/sendmail-local-only.de
+++ suse/messages/sendmail-local-only.de	2012-07-13 15:26:34.168510355 +0000
@@ -0,0 +1,14 @@
+Hallo,
+
+sendmail lauscht nur an Port 25 von localhost. Falls Sie einen
+Mailserver betreiben möchten, müssen Sie die Variable
+SMTPD_LISTEN_REMOTE in /etc/sysconfig/mail auf "yes" setzen
+und sendmail mit
+
+   rcsendmail restart
+
+neu starten.
+
+Have a lot of fun...
+
+                        Your SuSE Team
--- suse/messages/sendmail-local-only.en
+++ suse/messages/sendmail-local-only.en	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,14 @@
+Hello,
+
+by default sendmail is listening on port 25 of localhost only.
+If you want to setup a mail server you have to enable the
+port 25 externally by setting the variable SMTPD_LISTEN_REMOTE
+to "yes" in /etc/sysconfig/mail and restart sendmail with
+
+    rcsendmail restart
+
+on the command line.
+
+Have a lot of fun...
+
+                        Your SuSE Team
--- suse/permissions
+++ suse/permissions	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,12 @@
+/usr/sbin/sendmail			root:mail	2555
+/etc/sendmail.cf			root:root	0644
+/etc/init.d/sendmail			root:root	0744
+/etc/mail/auth/				root:root	0750
+/etc/mail/certs/				root:root	0750
+/var/spool/clientmqueue/			mail:mail	0770
+/var/spool/mqueue/			root:root	0700
+/var/spool/mail/				root:root	1777
+/usr/lib/sendmail.d/bin/			root:root	0755
+/usr/lib/sendmail.d/bin/smrsh		root:root	0511
+/usr/lib/sendmail.d/bin/mail.local	root:root	0511
+/var/run/sendmail/			root:root	1750
--- suse/permissions.paranoid
+++ suse/permissions.paranoid	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,12 @@
+/usr/sbin/sendmail			root:mail	0555
+/etc/sendmail.cf			root:root	0644
+/etc/init.d/sendmail			root:root	0744
+/etc/mail/auth/				root:root	0750
+/etc/mail/certs/				root:root	0750
+/var/spool/clientmqueue/			mail:mail	0750
+/var/spool/mqueue/			root:root	0700
+/var/spool/mail/				root:root	1755
+/usr/lib/sendmail.d/bin/			root:root	0755
+/usr/lib/sendmail.d/bin/smrsh		root:root	0511
+/usr/lib/sendmail.d/bin/mail.local	root:root	0511
+/var/run/sendmail/			root:root	1750
--- suse/rc
+++ suse/rc	2011-08-04 13:37:57.000000000 +0000
@@ -0,0 +1,135 @@
+#! /bin/sh
+# Copyright (c) 1996-2002 SuSE Gmbh Nuernberg, Germany.
+# Copyright (c) 2006-2008 SuSE LINUX Products GmbH, Germany.
+#
+# Author: Florian La Roche, 1996, 1997
+#	  Werner Fink, 1996, 1999-2007
+# Please send feedback to http://www.suse.de/feedback/
+#
+### BEGIN INIT INFO
+# Provides:          sendmail smtp
+# Required-Start:    $named $network $remote_fs $syslog $time
+# Required-Stop:     $named $network $remote_fs $syslog
+# Should-Start:      amavis cyrus ldap nscd ypbind
+# Should-Stop:       amavis cyrus ldap nscd ypbind
+# Default-Start:     3 5
+# Default-Stop:
+# Short-Description: Start the Sendmail MTA
+# Description:       Start the Sendmail MTA
+### END INIT INFO
+
+test -s /etc/sysconfig/mail && \
+      . /etc/sysconfig/mail
+
+test -s /etc/sysconfig/sendmail && \
+      . /etc/sysconfig/sendmail
+
+if test -z "$SENDMAIL_ARGS" ; then
+    SENDMAIL_ARGS="-L sendmail -Am -bd -q30m -om"
+fi
+if test -z "$SENDMAIL_CLIENT_ARGS" ; then
+    SENDMAIL_CLIENT_ARGS="-L sendmail-client -Ac -qp30m"
+fi
+
+PortOpts=""
+for cfg in /etc/sendmail.cf /etc/mail/sendmail.cf
+do
+    test -s $cfg || continue
+    PortOpts=$(sed -rn '/^O[[:blank:]]+DaemonPortOptions=.*Name=MTA.*$/I {
+			s/[[:blank:]]+//g
+			s/^O[^=]+=(.*)/\1/p
+		}' $cfg)
+    break
+done
+unset cfg
+
+if test "$SMTPD_LISTEN_REMOTE" != "yes" ; then
+    PortOpts="${PortOpts:+${PortOpts},}Addr=127.0.0.1"
+    SENDMAIL_ARGS="-O DaemonPortOptions=${PortOpts} $SENDMAIL_ARGS"
+fi
+
+msppid=/var/spool/clientmqueue/sm-client.pid
+srvpid=/var/run/sendmail.pid
+
+#
+# This function polls ten seconds on port 25 of localhost
+#
+poll25 ()
+{
+    local timeout=1000
+    local port=25
+    local opt
+
+    for opt in ${PortOpts//,/ } ; do
+	case "${opt%=*}" in
+	[Pp]ort) port=${opt#*=}
+	esac
+    done
+
+    while ! fuser -sn tcp $port > /dev/null 2>&1 ; do
+	test $timeout -eq 0 && return 1
+	usleep 10000
+	: $((timeout--))
+    done
+    return 0
+}
+
+. /etc/rc.status
+rc_reset
+case "$1" in
+    start)
+	echo -n "Initializing SMTP port (sendmail)"
+	test -d /var/run          || mkdir --mode 0755 /var/run
+	test -d /var/run/sendmail || mkdir --mode 1750 /var/run/sendmail
+	startproc -p $srvpid -i $msppid /usr/sbin/sendmail $SENDMAIL_ARGS
+	rc_status && \
+	poll25
+	rc_status && \
+	startproc -p $msppid -i $srvpid /usr/sbin/sendmail $SENDMAIL_CLIENT_ARGS
+	rc_status -v
+	;;
+    stop)
+	echo -n "Shutting down SMTP port"
+	killproc  -p $msppid -i $srvpid /usr/sbin/sendmail
+	rc_status
+	killproc  -p $srvpid -i $msppid /usr/sbin/sendmail
+	rc_status -v
+	;;
+    try-restart)
+	$0 stop && $0 start
+	rc_status
+	;;
+    restart)
+	$0 stop
+	$0 start
+	rc_status
+	;;
+    reload|force-reload)
+	echo -n "Reload service sendmail"
+	killproc  -p $msppid -i $srvpid /usr/sbin/sendmail
+	rc_status
+	startproc -p $msppid -i $srvpid /usr/sbin/sendmail $SENDMAIL_CLIENT_ARGS
+	rc_status
+	killproc  -p $srvpid -i $msppid -HUP  /usr/sbin/sendmail
+	rc_status -v
+	;;
+    status)
+	echo -n "Checking for service sendmail: "
+	checkproc -p $srvpid -i $msppid /usr/sbin/sendmail
+	rc_status
+	checkproc -p $msppid -i $srvpid /usr/sbin/sendmail
+	rc_status -v
+	;;
+    probe)
+	todo=""
+	test /etc/sendmail.cf    -nt $srvpid && todo=reload
+	test /etc/mail/submit.cf -nt $msppid && todo=reload
+	checkproc -p $srvpid -i $msppid /usr/sbin/sendmail || todo=restart
+	checkproc -p $msppid -i $srvpid /usr/sbin/sendmail || todo=restart
+	test -z "$todo" || echo "$todo"
+	;;
+    *)
+	echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
+	exit 1
+esac
+rc_exit
--- suse/relay-domains
+++ suse/relay-domains	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,18 @@
+# /etc/mail/relay-domains
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+#  All domain names given herein are allowed to relay and
+#  being relays for us in addition to the class R.
+#
+# Note:
+#
+#  If the FEATURE(`relay_hosts_only') is used only fully
+#  qualified domain host names are allowed.
+#  
+# Format:
+#
+#<domain-names>
--- suse/sendmail.nissl
+++ suse/sendmail.nissl	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,445 @@
+#!/usr/bin/perl
+#
+#	original by Tom Christiansen <tchrist@convex.com>
+#
+#	Paul O'Neill
+#	Coastal Imaging Lab
+#	Oregon State University
+#
+#	18 jun 90
+#	fix various bugs
+#	add sorted output
+#
+# 19 Apr 95, Frank Scholz ( dev@artus.pf.bawue.de )
+# changed several things to support sendmail V8 logs, hope so :-)
+#
+#
+# summarize sendmail syslog
+#
+# V 1.2  13 Jun 97, Len Charest <len@cogent.net>
+# Added -w option to provide another way of specifying local domains
+# during address reduction. Based on code written by Gildas Perrot
+# <perrot@francenet.fr>. Fixed bug re: $END variable was not being
+# set; also based on code from Gildas Perrot.
+#
+# V 1.1  30 Apr 97, Len Charest <len@cogent.net>
+# Added -T option to print totals only. This is the logical inverse
+# of the -t option in the original ssl program.
+# Suggested by chris andrichak <chris@i-planet.com>.
+#
+# V 1.0  08 Apr 97, Len Charest <len@cogent.net>
+# Fixed pernicious bugs; added virtusertable support, more sorting
+# options, and error filtering.
+#
+# BUGS FIXED
+#
+# The call to study() in the main program loop is erroneous when
+# running under perl version 5.002 (at least). The symptom is that
+# lines of input which should match either of the "from=" or "to="
+# patterns simply do not match. The root cause seems to be that the
+# data structures built by study() for line n will persist for line
+# n+1, and so on. The fix is to simply remove the call to study(),
+# thereby guaranteeing that no stale data structures are used in any
+# pattern match. An alternate fix would be to move the study() to the
+# top of the main program loop. However, the complexity of the
+# "from=" and "to=" patterns and the presence of the -E option
+# probably voids the effectiveness of study() in this script.
+#
+# The full alphanumeric sendmail message queue id is now used as the
+# key in the message size cache (%ID_SIZE).
+#
+# The "to=" pattern was not checking the status reported by sendmail,
+# so deferred and undeliverable messages were being counted in the
+# program output. Any line that matches the "to=" pattern is now also
+# matched against /stat=Sent/.
+#
+# The block following a "to=" pattern match should not assume that
+# there was an earlier "from=" pattern match, and therefore a cached
+# message size. Even so, the script now only prints a warning on cache
+# misses for message size.
+#
+# The hash_passwd() subroutine has been simplified under the
+# assumption that NIS/YP works transparently through the *pwent()
+# routines.
+#
+# FEATURES ADDED
+#
+# The -s option lets you choose by which column ouput is sorted. If -s
+# is not given then sorting defaults to the address column.
+#
+# The -T option suppresses address-by-address output and prints totals
+# only.
+#
+# The -E option allows selective printing of "strange" input lines.
+# This option takes a perl regex as an argument.
+#
+# The -r option has been heavily augmented to facilitate address
+# reduction on mail servers that implement "virtual domains" via the
+# virtusertable feature in sendmail V8. There are four new options
+# that may be used only when -r is given:
+#
+#   -l filters the program output so that only local users are
+#      printed.
+#   -d takes a domain name as an argument. Address reduction will be
+#      attempted for all addresses whose domain part is the same as
+#      the given domain.  All other domains are considered non-local
+#      and are not reduced.
+#   -D takes a perl regex as an argument. Address reduction will be
+#      attempted for all addresses whose domain part matches the given
+#      pattern. This option supersedes -d.
+#   -v takes a spec of the form "format:filename" as an argument. The
+#      spec describes the virtusertable of the local mail server. A
+#      virtusertable is a feature of sendmail V8 that implements
+#      arbitrary recipient address remapping, and therefore may be
+#      used to provide "virtual domains" for mail. The only format
+#      currently supported is "text".
+#
+# Example use:
+#
+# sendmail.nissl -e -r -l -D '(cogent.net|cogsoft.com)$' \
+#   -v text:/etc/mail/virtusertable < mail.log > mail.sum 2> mail.err
+#
+# Note that -v and one of -d, -D or -w are necessary to properly reduce
+# all addresses that point to local users.
+
+use Getopt::Std;
+
+($Z = $0) =~ s~.*/~~;
+
+%ALL_ADDRS = ();	# save random-access list of unique addresses
+%LUSER = ();		# map local user to uid
+%VUSER = ();		# map virtusertable address to local user or alias
+%CW = ();		# identify local domains per local-host-names
+%CLEANUP_CACHE = ();	# memoize results of cleanup_addr()
+%REDUCE_CACHE = ();	# memoize results of reduce_addr()
+%ID_SIZE = ();		# per id message size in bytes
+%FROM_USER_SIZE = ();	# per user cumulative outgoing message bytes
+%FROM_USER_COUNT = ();	# per user cumulative outgoing message count
+$FROM_TOTAL_SIZE = 0;
+$FROM_TOTAL_COUNT = 0;
+%TO_USER_SIZE = ();	# per user cumulative incoming message bytes
+%TO_USER_COUNT = ();	# per user cumulative incoming message count
+$TO_TOTAL_SIZE = 0;
+$TO_TOTAL_COUNT = 0;
+$HEADER = <<"END";
+-START %s
+-END %s
+---------TO---------  --------FROM--------  ---------
+-MSGS-  ----SIZE----  -MSGS-  ----SIZE----  -ADDRESS-
+END
+$FORMAT = "%6d  %12d  %6d  %12d  %s\n";
+$DEFDOM = undef;	# local mail domain as literal string or regex pattern
+$ERRORS = 0;		# count of errors trapped by -e or -E
+$SORTBY = 'address';	# sorting column for output
+@COLNAMES = qw(to-count to-size from-count from-size address);
+$START = undef;
+$END = undef;
+
+# stifle compiler
+$opt_h = undef;
+$opt_s = undef;
+$opt_e = undef;
+$opt_E = undef;
+$opt_r = undef;
+$opt_l = undef;
+$opt_d = undef;
+$opt_D = undef;
+$opt_w = undef;
+$opt_v = undef;
+$opt_q = undef;
+$opt_T = undef;
+
+if (!getopts('hs:eE:rld:D:w:v:qT') or $opt_h) {
+    usage();
+}
+
+# init for reduce operations
+if ($opt_r) {
+    hash_passwd();
+    hash_virtusertable(reverse(split(/:/, $opt_v, 2))) if $opt_v;
+    hash_cw($opt_w) if $opt_w;
+    $opt_d ? $DEFDOM = $opt_d : chop($DEFDOM = `hostname`);
+    # -D overrides -d
+    $DEFDOM = $opt_D if $opt_D;
+}
+
+# check custom sorting
+$SORTBY = lc($opt_s) if $opt_s;
+unless (grep($SORTBY eq $_, @COLNAMES)) {
+    warn "$Z: bad sorting option: $SORTBY\n";
+    usage();
+}
+
+# init error reporting
+$opt_E and $opt_e = 1;
+
+$_ = <>;
+$START = substr($_, 0, 16);	
+
+while ($_) {
+
+    # "from=" pattern match
+    if (/sendmail\[\d+\]: ([A-Za-z0-9]+): from=(.+), size=(\d+)/) {
+	($id, $from, $size) = ($1, $2, $3);
+
+        # assume that the "from" line for a given message-id always appears
+        # before the "to" line so we may propagate the message size
+	$ID_SIZE{$id} = $size;
+
+	$from = cleanup_addr($from);
+	($from = reduce_addr($from) or next) if $opt_r;
+
+	$ALL_ADDRS{$from} = 1;
+	$FROM_USER_SIZE{$from} += $size;
+	$FROM_USER_COUNT{$from}++;
+	$FROM_TOTAL_SIZE += $size;
+	$FROM_TOTAL_COUNT++;
+    }
+
+    # "to=" pattern match
+    elsif (/sendmail\[\d+\]: ([A-Za-z0-9]+): to=(.+), delay=/) {
+	($id, $addrlist) = ($1, $2);
+        next unless /stat=Sent/;
+
+	# check our assumption from above ...
+	defined($ID_SIZE{$id}) or
+	    warn "$Z: line $., size not found for id $id\n" unless $opt_q;
+
+	foreach $to (split(/,/, $addrlist)) {
+	    # discard the ctladdr information  (dev)
+	    if ($to !~ /ctladdr=/) {
+
+		$to = cleanup_addr($to);
+		($to = reduce_addr($to) or next) if $opt_r;
+
+		$ALL_ADDRS{$to} = 1;
+		$TO_USER_SIZE{$to} += $ID_SIZE{$id};
+		$TO_USER_COUNT{$to}++;
+		$TO_TOTAL_SIZE += $ID_SIZE{$id};
+		$TO_TOTAL_COUNT++;
+	    }
+	} 
+    }
+
+    # maybe print strange lines
+    elsif ($opt_e && !$opt_q) {
+	# study; --------------> BUG <--------------
+	# next if /message-id/;
+	# next if /locked/;
+	# next if /alias database (auto|)rebuilt/;
+	# next if /aliases/;
+	# next if /rebuilding alias database/;
+	if ($opt_E) {
+	    print STDERR "$Z: $_" if /$opt_E/;
+	}
+	else {
+	    print STDERR "$Z: $_";
+	}
+	$ERRORS++;
+    }
+}
+continue {
+    $END = $_;
+    $_ = <>;
+}
+
+$END = substr($END, 0, 16);	
+
+warn "$Z: found $ERRORS errors\n" if ($ERRORS && $opt_e && !$opt_q);
+
+printf $HEADER, $START, $END;
+printf $FORMAT,
+    $TO_TOTAL_COUNT, $TO_TOTAL_SIZE, 
+    $FROM_TOTAL_COUNT, $FROM_TOTAL_SIZE, "GRAND-TOTAL";
+
+unless ($opt_T) {
+    $SORTBY =~ tr/-/_/;
+    $SORTBY .= "_sort";
+    
+    # this sort will be expensive
+    foreach $user (sort $SORTBY keys(%ALL_ADDRS)) {
+	printf $FORMAT, 
+	$TO_USER_COUNT{$user}, 
+	$TO_USER_SIZE{$user}, 
+	$FROM_USER_COUNT{$user}, 
+	$FROM_USER_SIZE{$user}, 
+	$user;
+    }
+}
+
+# ----- SUBROUTINES -----
+
+sub to_count_sort {
+    $TO_USER_COUNT{$b} <=> $TO_USER_COUNT{$a};
+}
+
+sub from_count_sort {
+    $FROM_USER_COUNT{$b} <=> $FROM_USER_COUNT{$a};
+}
+
+sub to_size_sort {
+    $TO_USER_SIZE{$b} <=> $TO_USER_SIZE{$a};
+}
+
+sub from_size_sort {
+    $FROM_USER_SIZE{$b} <=> $FROM_USER_SIZE{$a};
+}
+
+sub address_sort {
+    $a cmp $b;
+}
+
+sub hash_passwd {
+    my($name, $pw, $uid);
+    while (($name, $pw, $uid) = getpwent) {
+        # no special case for uid 0 because we only test for defined keys
+        $LUSER{$name} = $uid;
+    }
+    endpwent;
+    # the null address is a local user by fiat
+    $LUSER{'<>'} = 0;
+}
+
+sub hash_cw {
+    my $cw = shift;
+    open(CW, $cw) or die "$Z: cannot read cw file $cw: $!\n";
+    while (<CW>) {
+	next if /^#/;
+	if (/^(\S+)\s*$/) {
+	    $CW{$1} = 1;
+	}
+    }
+    close CW;
+}
+
+sub hash_virtusertable {
+    my($file, $format) = @_;
+    $format =~ tr/a-z/A-Z/;
+
+    if ($format eq TEXT or $format eq "") {
+        open(VUT, $file) or die "$Z: cannot read text file $file: $!\n";
+         local($_);
+         my($vaddr, $laddr);
+         while (<VUT>) {
+             next if /^#/;
+             next if /^\s*$/;
+             chomp;
+             ($vaddr, $laddr) = split;
+             $VUSER{$vaddr} = $laddr;
+         }
+         close VUT;
+    }
+    # support for (n)dbm and berkeley db formats
+    # thanks to Gildas Perrot <perrot@francenet.fr>
+    elsif ($format eq DBM or $format eq DB) {
+	dbmopen(%VUSER, $file, 0644) or
+	    die "$Z: cannot read db(m) file $file: $!\n";
+	dbmclose(%VUSER); 
+    }
+    else {
+         die "$Z: virtusertable format $format not handled\n";
+    }
+}
+
+sub cleanup_addr {
+    my $addr = lc(shift);
+    my $clean;
+
+    # look for cached address
+    if (defined($clean = $CLEANUP_CACHE{$addr})) {
+        # print STDERR "cache hit: cleanup $addr\n";
+        $clean;
+    }
+    # look for address in angle brackets; ".+" guarantees that a null address
+    # "<>" will not become the empty string
+    elsif ($addr =~ /<(.+?)>/) {
+        $CLEANUP_CACHE{$addr} = $1;
+    }
+    else {
+        $clean = $addr;
+        # remove comments in parentheses
+        $clean =~ s/\(.*?\)//g;
+        # remove leading/trailing whitespace
+        $clean =~ s/^\s+//;
+        $clean =~ s/\s+$//;
+        # remove leading backslash from .forward file expansion
+        $clean =~ s/^\\//;
+        $CLEANUP_CACHE{$addr} = $clean;
+    }
+}
+
+sub reduce_addr {
+    my $addr = shift;
+    my($reduced, $domain);
+
+    if (defined($reduced = $REDUCE_CACHE{$addr})) {
+        # print STDERR "cache hit: reduce $addr\n";
+        return $reduced;
+    }
+    
+    # translate virtuser to target address if necessary;
+    # what if target is an alias that expands into multiple addresses?
+    my $origaddr = $addr;
+    $opt_v and defined($reduced = $VUSER{$addr}) and $addr = $reduced;
+
+    if ($addr =~ /\@/) {
+        # should really split on the rightmost occurence of "@"
+        ($reduced, $domain) = ($`, $');
+	if ($opt_w and $CW{$domain} and defined($LUSER{$reduced})) {
+            $REDUCE_CACHE{$origaddr} = $reduced;
+        }
+        elsif ($opt_D and $domain =~ /$DEFDOM/ and defined($LUSER{$reduced})) {
+            $REDUCE_CACHE{$origaddr} = $reduced;
+        }
+        elsif (!$opt_D and $domain eq $DEFDOM and defined($LUSER{$reduced})) {
+            $REDUCE_CACHE{$origaddr} = $reduced;
+        }
+        elsif ($opt_l) {
+            # we only want addresses that resolve to local users
+            undef;
+        }
+        else {
+            # not reduced to local user; do not cache
+            $addr;
+        }
+    }
+    elsif (defined $LUSER{$addr}) {
+	# local address, local user
+	$REDUCE_CACHE{$origaddr} = $addr;
+    }
+    elsif ($opt_l) {
+        # we only want addresses that resolve to local users
+        undef;
+    }
+    else {
+        # not reduced to local user; do not cache
+        $addr;
+    }
+}
+
+sub usage {
+    die <<"END";
+usage: $Z [-eqT] [-E pat] [-s col]
+       $Z [-eqT] [-E pat] [-s col] -r
+            [-l] [-d dom] [-D pat] [-w file] [-v fmt:file]
+
+ -d  Use given domain as local domain in address reduction.
+ -D  Use any match for pattern as local domain in address reduction.
+ -e  Print all strange lines to stderr.
+ -E  Print strange lines matching pattern to stderr.
+ -l  Include only local users in output.
+ -q  Quiet mode. Do not print any warnings at all.
+ -r  Reduce sender/recipient address to local user if possible.
+ -s  Sort output by column. Valid column names are to-count, to-size,
+     from-count, from-size, and address.
+ -T  Print totals only.
+ -w  Consider domains in file (e.g., local-host-names) as local in
+     address reduction.
+ -v  Use virtusertable source per sendmail.cf in address reduction.
+     Supported formats are TEXT, DB and DBM.
+
+Input is read from stdin. Input should be a file of syslog messages
+generated by sendmail.
+END
+    ;
+}
--- suse/service-nodns.switch
+++ suse/service-nodns.switch	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,14 @@
+# /etc/mail/service-nodns.switch
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# The only difference between /etc/nsswitch.conf and
+# this file: There is NO colon after the service.
+# Remark: this setup should avoid dialups.
+#
+# This file is required for HACK(nodns) or SENDMAIL_NODNS.
+#
+#passwd		files
+hosts		files
+aliases		files
--- suse/service.switch
+++ suse/service.switch	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,29 @@
+# /etc/mail/service.switch
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# The only difference between /etc/nsswitch.conf and
+# this file: There is NO colon after the service.
+#
+# This file is used by sendmail to resolve the Fully Qualified
+# Domain Names (FQDN) of hosts.
+#
+# All lines with `#' at the begining are comments.   For Domain Name
+# Service (DNS) the keyword `dns' is used.   For NIS add the keyword
+# `nis'.  The search order is the same order as written herein.  For
+# NISPLUS add the keyword `nisplus'.  Some NIS server do not provide
+# all mappings.  Check out the available maps by calling `ypcat -x'.
+#
+
+#passwd		files
+hosts		files dns
+aliases		files
+
+#passwd		files nis
+#hosts		files nis dns
+#aliases	files nis
+
+#passwd		files nisplus nis
+#hosts		files nisplus nis dns
+#aliases	files nisplus nis
--- suse/smtp
+++ suse/smtp	2007-04-24 16:23:23.000000000 +0000
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth     include        common-auth
+account  include        common-account
+password include        common-password
+session  include        common-session
+
--- suse/sysconfig.mail-sendmail
+++ suse/sysconfig.mail-sendmail	2012-06-19 15:07:56.140945839 +0000
@@ -0,0 +1,32 @@
+## Path:        Network/Mail/General
+## Description: General configuration of mail interface
+## Type:        yesno
+## Default:     yes
+## Config:      sendmail,postfix
+#
+# Set this to no, if SuSEconfig should not generate the configuration
+# files (e.g. you want to generate your /etc/sendmail.cf yourself).
+# Do  you want to generate a sendmail-configuration /etc/sendmail.cf from
+# parameters given in /etc/sysconfig/sendmail then use "yes"
+#
+MAIL_CREATE_CONFIG="yes"
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# From:-Line in email and News postings
+# (otherwise the FQDN is used)
+#
+FROM_HEADER=""
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+#
+# Set this to "yes" if mails from remote should be accepted
+# this is necessary for any mail server.
+# If set to "no" or empty the only mails from localhost
+# are accepted.
+#
+SMTPD_LISTEN_REMOTE="no"
--- suse/sysconfig.sendmail
+++ suse/sysconfig.sendmail	2012-06-19 15:09:12.596510166 +0000
@@ -0,0 +1,312 @@
+## Path:        Network/Mail/Sendmail
+## Description: Configuration of sendmail
+## Type:        string
+## Default:     ""
+## Config:      sendmail
+## ServiceReload: sendmail
+## Command:     /usr/lib/sendmail.d/update
+#
+# smarthost - this host gets all outgoing email from us
+# normally used for uucp-connected sites or for dialup connections
+# use "uucp-dom:server.uucp.com" to deliver all email to "server.uucp.com"
+#
+SENDMAIL_SMARTHOST=""
+
+## Type:        string(localhost)
+## Default:     localhost
+## Command:     /usr/lib/sendmail.d/update
+#
+# sendmail assumes the following space-separated host-names to be
+# the local host (this must just be used for names differrent to the
+# hostname, for e.g. aliases like www.nowhere.com)
+# Note: Any hosts listed in here will cause reply-to: with the same
+# hostname be rewritten to FROM_HEADER in outgoing emails. Starting
+# with SuSE Linux 8.0, headers will only be rewritten if listed in
+# MASQUERADE_DOMAINS.
+# Host _not_ listed in here will get "relaying denied".  Note that
+# an entry in /etc/mail/virtusertable will NOT make any difference.
+# Also the file /etc/mail/local-host-names is a bad choice, because
+# in this case any masquerading will be taken into affect and rewrite
+# the adresses in the header.  For real relaying you have to use the
+# file /etc/mail/relay-domains to allow relaying in both directions
+# for listed domain names therein.  The other way to allow relaying
+# is to use a rule within the file /etc/mail/access together with
+# USE_ACCESS_DB enabled. This is then used to generate the access db.
+#
+SENDMAIL_LOCALHOST="localhost"
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+# enable this to change also the recipient address.
+# Don't use this feature, if you don't have the full /etc/aliases
+# and the full /etc/passwd on your host.
+#
+SENDMAIL_ALLMASQUERADE="no"
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# do not deliver any email locally, but send all email to another host
+# this can just be used with another system that has the same users on it
+# and you probably also want to set the FROM_HEADER to the other host
+#
+SENDMAIL_RELAY=""
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# Used if no SENDMAIL_RELAY is defined to place all mails for unknown local
+# names or unknown local aliases to the configured user name.
+# All these mails are redirected to the user given defined with SENDMAIL_LUSER,
+# e.g.  # SENDMAIL_LUSER="postmaster" or SENDMAIL_LUSER="root". Note that this
+# may violate the privacy of those mails.
+#
+SENDMAIL_LUSER=""
+
+## Type:	yesno
+## Default:	yes
+## Command:     /usr/lib/sendmail.d/update
+#
+# Turns on the access database feature. The access db gives you the ability
+# to allow or refuse to accept mail from specified domains for administrative
+# reasons. This option also adds the greet_pause ruleset enables open proxy
+# and SMTP slamming protection.  Sendmail will wait some seconds sending the
+# initial 220 SMTP greeting.
+# If any traffic is received before then, a 554 SMTP response is sent and
+# all SMTP commands are rejected during the connection.
+#
+USE_ACCESS_DB="yes"
+
+## Type:        string
+## Default:     "-L sendmail -Am -bd -q30m -om"
+## Command:     /usr/lib/sendmail.d/update
+#
+# with what parameters should sendmail be started?
+# normal sites use "-Am -bd -q30m -om".
+# "-Am" will force sendmail to use sendmail.cf. "-q30m" will look every 30
+# minutes to re-try sending failed email. "-bd" will start sendmail in daemon
+# mode and sendmail will accept email over the network from other hosts.
+# If you set SENDMAIL_EXPENSIVE and you have a dialup ISDN connection,
+# you probably want to set this to "-bd -om" and run "sendmail -q"
+# from your crontab.
+#
+SENDMAIL_ARGS="-L sendmail -Am -bd -q30m -om"
+
+## Type:        string
+## Default:     "-L sendmail-client -Ac -qp1m"
+## Command:     /usr/lib/sendmail.d/update
+#
+# with what parameters should sendmail _client_ be started?
+# This is used to start the sendmail client daemon which runs as user
+# mail and look at /var/spool/clientmqueue/ for any mail which should
+# put to port 25 (smtp port) of localhost on which the master sendmail
+# is listen.
+# "-Ac" will force sendmail to use submit.cf. "-qp1m" will look every
+# minute with the help of a persistent child for the queue to deliver
+# mails to the port 25 of localhost where master sendmail daemon is listen.
+# Note: to ensure that local mails will be delivered as fast as possible
+# the full qualified host name should be part of SENDMAIL_LOCALHOST.
+#
+SENDMAIL_CLIENT_ARGS="-L sendmail-client -Ac -qp1m"
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+#
+# sendmail will only queue email in /var/spool/mqueue and will only start
+# to deliver it if "sendmail -q" is run
+#
+SENDMAIL_EXPENSIVE="no"
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+#
+# sendmail will not try to canonify hostnames in your email
+# so much less DNS-queries are send
+# you probably want to enable this on a SENDMAIL_EXPENSIVE system.
+# Don't forget to add the local, the mail hub, smart, and mail relay host
+# with their IP addresses and the corresponding Full Qualified Domain Names
+# to /etc/hosts.  For most people using dial on demand SENDMAIL_NOCANONIFY
+# should work and no NODNS (see /etc/sysconfig/mail) is required.
+#
+SENDMAIL_NOCANONIFY="no"
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# A null client is a machine that can only send mail. It receives no
+# mail from the network, and it does not deliver any mail locally.
+# A null client typically uses POP or NFS for mailbox access.
+# Possible values for NULLCLIENT are "" or the full qualified domain
+# name of the mail server used for redirecting all mails.
+#
+NULLCLIENT=""
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+#
+# This option mostly forbids DNS-queries.  It requires a well configured
+# /etc/hosts. Sendmail users should also read /etc/sysconfig/sendmail
+# the description of the variable SENDMAIL_NOCANONIFY.
+# For dial-up users please try out DIALUP=yes and SENDMAIL_EXPENSIVE=yes,
+# beside this you should combine NODNS=yes always with a smart host
+# configured in /etc/hosts and provided with SENDMAIL_SMARTHOST.
+#
+NODNS="no"
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+#
+# If set to yes, mail that will be delivered via smtp will stay
+# in the queue unless someone issues "sendmail -q" or equivalent.
+# A correct FQHOSTNAME for the local host is required.
+#
+DIALUP="no"
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# these domains can additional to the local domains be changed
+# in /etc/mail/genericstable
+#
+SENDMAIL_GENERICS_DOMAIN=""
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# this is useful if you have several domains with disjoint namespaces
+# hosted on the same machine.  Include them as space-separated list
+# of doamins.
+# Note: Domains listed here will have their headers rewritten, like
+# "Reply-To: user@myhost.dyndns.org" is rewritten by sendmail to  
+# "Reply-To: user@$FROM_HEADER" on outgoing mail.  
+# To be able to receive mail under the dynamic DNS name, the name must
+# also be listed in SENDMAIL_LOCALHOST (or a "relaying denied" results).
+# If this list is non-empty, envelope from will be the FQHOSTNAME and
+# not $FROM_HEADER (resulting in rejects if FQHOSTNAME is something.local),
+# unless the FQHOSTNAME is listed here is well.
+#
+MASQUERADE_DOMAINS=""
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+#
+# this is usefull if FROM_HEADER is set and you want to replay all
+# all names within MASQUERADE_DOMAINS even if some names with several
+# leading subdomains are not put into MASQUERADE_DOMAINS.
+# 
+MASQUERADE_ENTIRE_DOMAIN="no"
+
+## Type:        yesno
+## Default:     no
+## Command:     /usr/lib/sendmail.d/update
+# 
+#  map (un)qualified domains to qualified domains in mail headers.
+#  This can be used to provide domain name mapping in the file
+#  /etc/mail/domaintable.   Use of this should really be limited
+#  to your own domains.  It may be useful if you change names
+#  (e.g., your company changes names from oldname.com to newname.com).
+#
+DOMAINTABLE="no"
+
+## Type:        list(gssapi,otp,digest-md5,cram-md5,plain,login,all)
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# enable SMTP AUTHENTICATION to other servers if required, possible
+# values are e.g. plain, gssapi, digest-md5, and cram-md5.
+# To use the choosen authentication the appropiate cyrus-sasl package
+# has to be installed: cyrus-sasl-(gssapi|otp|digestmd5|crammd5|plain)
+# Please not that most providers only know about `plain' which means
+# that the user data will not be encrypted.
+# You will have to identify yourself using the information in
+# /etc/mail/auth/auth-info.
+#
+SMTP_AUTH_MECHANISMS=""
+
+## Type:        list(gssapi,otp,digest-md5,cram-md5,plain,login,all)
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# enable SMTP AUTHENTICATION as a server, for an explanation read
+# /usr/share/sendmail/README, /usr/share/doc/packages/sendmail/op.txt.bz2,
+# and http://www.sendmail.org/~ca/email/auth.html.
+# Possible values are e.g. gssapi, digest-md5, and cram-md5.
+# To use the choosen authentication the appropiate cyrus-sasl package
+# has to be installed: cyrus-sasl-(gssapi|otp|digestmd5|crammd5|plain)
+# Note that `plain' should be used because data will not be encrypted
+# and that more than one value separated by spaces is allowed.
+#
+SMTP_AUTH_SERVER=""
+
+## Type:        list(server,client,both)
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# STARTTLS certification, for an explanation read
+# /usr/share/doc/packages/sendmail/op.txt.bz2 and
+# http://www.sendmail.org/~ca/email/starttls.html
+# The certification and key files are placed at
+# /etc/mail/certs/ as CA.cert.pem, MYServer.cert.pem,
+# MYServer.key.pem (for STARTTLS server) and
+# MYClient.cert.pem, MYClient.key.pem (for STARTTLS client)
+# possible values are `server', `client', or `both'.
+#
+STARTTLS=""
+
+## Type:        yesno
+## Default:     yes
+## Command:     /usr/lib/sendmail.d/update
+#
+# Normally all upper case letters of the keys in the db files of sendmail
+# will be folded to lower case. You may change this to "no" and break the
+# normal behaviour at your own risk.
+#
+SENDMAIL_DB_FOLD="yes"
+
+## Type:        string
+## Default:     ""
+## Command:     /usr/lib/sendmail.d/update
+#
+# Use real-time black-hole lists. Sendmail will refuse to receive mail from
+# any IP number which is listed in any of the RBL lookups given here.
+# Space seperated list of host names to query via DNS, e.g.:
+#     zen.spamhaus.org -> http://www.spamhaus.org/zen/
+#     cbl.abuseat.org  -> http://cbl.abuseat.org/
+#     <activationcode>.r.mail-abuse.com
+# some of them are commercial providers, the service requires a payment
+# for the e.g. <activationcode> for accessing the DNSRBL site.
+#
+SENDMAIL_DNSRBL=""
+
+## Type:	integer(1000000:10000000)
+## Default:	2000000
+## Command:     /usr/lib/sendmail.d/update
+#
+# The maximum size of UUCP mesages in bytes. For real modem connection this
+# should not more than 1MB.  For ISDN/DSL you may choose much more if the
+# UUCP connection type is TCP which means that not modem is used but a UUCP
+# tunnel through TCP/IP.
+#
+SENDMAIL_UUCP_MAX_MSG=2000000
+
+## Type:	integer(1:50000)
+## Default:	25
+## Command:     /usr/lib/sendmail.d/update
+#
+# The standard port for Simple Mail Transfer Protocol (SMTP).
+# This is the default port for any local and remote mail
+# transfer and should not be changed.
+#
+SENDMAIL_MTA_PORT=25
+
--- suse/trusted-users
+++ suse/trusted-users	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,19 @@
+# /etc/mail/trusted-users
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+# Fill in users that can send mail as others without a warning
+# apache, mailman, majordomo, uucp, ...
+#
+# Note:
+#
+#   The OSTYPE(`suse-linux') already already uses
+#   mdom, wwwrun, root, uucp, daemon, and mail
+#   set with the variable confTRUSTED_USERS.
+#
+# Format:
+#
+#<user>
--- suse/userdb
+++ suse/userdb	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,9 @@
+# /etc/mail/userdb
+#
+# maps incoming and outgoing email - in many cases it may
+# work better if you use virtusertable and genericstable !
+#
+# bar:mailname			foo.name@domain.com
+# foo.name@domain.com:maildrop	bar
+# (Note: separate with tabs   ^^  here !!)
+#
--- suse/virtusertable
+++ suse/virtusertable	2006-08-10 09:32:29.000000000 +0000
@@ -0,0 +1,20 @@
+# /etc/mail/virtusertable
+#
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback/
+#
+# Description:
+#
+#  A domain-specific form of aliasing, allowing multiple virtual
+#  domains to be hosted on one machine.
+#
+# Examples:
+#
+#info@foo.com		foo-info
+#info@bar.com		bar-info
+#joe@bar.com		error:nouser No such user here
+#jax@bar.com		error:D.S.N:unavailable Address invalid
+#@baz.org		jane@example.net
+#            ^^^^^^^^^^^
+#     (these are <TAB> stops)
+#
--- vacation/vacation.c
+++ vacation/vacation.c	2006-08-10 09:32:29.000000000 +0000
@@ -699,6 +699,7 @@ junkmail(from)
 		{ "uucp",		4	},
 		{ "mailer-daemon",	13	},
 		{ "mailer",		6	},
+		{ "bugzilla-daemon",	15	},
 		{ NULL,			0	}
 	};
 
@@ -707,6 +708,8 @@ junkmail(from)
 		{ "-request",		8	},
 		{ "-relay",		6	},
 		{ "-owner",		6	},
+		{ "-activists",		10	},
+		{ "-programmers",	12	},
 		{ NULL,			0	}
 	};
 
openSUSE Build Service is sponsored by