Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.3
sendmail
sendmail-8.14.5.dif
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
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 } };
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor