diff options
author | cvs2svn <cvs2svn@FreeBSD.org> | 2005-06-14 02:23:15 +0000 |
---|---|---|
committer | cvs2svn <cvs2svn@FreeBSD.org> | 2005-06-14 02:23:15 +0000 |
commit | a3949f0034fc918cf70aad34a7a26fc5dbe25af2 (patch) | |
tree | 478650075bb5f29f06f2042ebbbcf9f386e2bff5 /contrib/sendmail/cf | |
parent | 0c97652c0b3dbc161167bac72bd860ec7d0f48ab (diff) |
Notes
Diffstat (limited to 'contrib/sendmail/cf')
174 files changed, 0 insertions, 14805 deletions
diff --git a/contrib/sendmail/cf/README b/contrib/sendmail/cf/README deleted file mode 100644 index 646163b047d68..0000000000000 --- a/contrib/sendmail/cf/README +++ /dev/null @@ -1,4586 +0,0 @@ - - SENDMAIL CONFIGURATION FILES - -This document describes the sendmail configuration files. It -explains how to create a sendmail.cf file for use with sendmail. -It also describes how to set options for sendmail which are explained -in the Sendmail Installation and Operation guide (doc/op/op.me). - -To get started, you may want to look at tcpproto.mc (for TCP-only -sites) and clientproto.mc (for clusters of clients using a single -mail host), or the generic-*.mc files as operating system-specific -examples. - -Table of Content: - -INTRODUCTION AND EXAMPLE -A BRIEF INTRODUCTION TO M4 -FILE LOCATIONS -OSTYPE -DOMAINS -MAILERS -FEATURES -HACKS -SITE CONFIGURATION -USING UUCP MAILERS -TWEAKING RULESETS -MASQUERADING AND RELAYING -USING LDAP FOR ALIASES, MAPS, AND CLASSES -LDAP ROUTING -ANTI-SPAM CONFIGURATION CONTROL -CONNECTION CONTROL -STARTTLS -SMTP AUTHENTICATION -ADDING NEW MAILERS OR RULESETS -ADDING NEW MAIL FILTERS -QUEUE GROUP DEFINITIONS -NON-SMTP BASED CONFIGURATIONS -WHO AM I? -ACCEPTING MAIL FOR MULTIPLE NAMES -USING MAILERTABLES -USING USERDB TO MAP FULL NAMES -MISCELLANEOUS SPECIAL FEATURES -SECURITY NOTES -TWEAKING CONFIGURATION OPTIONS -MESSAGE SUBMISSION PROGRAM -FORMAT OF FILES AND MAPS -DIRECTORY LAYOUT -ADMINISTRATIVE DETAILS - - -+--------------------------+ -| INTRODUCTION AND EXAMPLE | -+--------------------------+ - -Configuration files are contained in the subdirectory "cf", with a -suffix ".mc". They must be run through "m4" to produce a ".cf" file. -You must pre-load "cf.m4": - - m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf - -Alternatively, you can simply: - - cd ${CFDIR}/cf - ./Build config.cf - -where ${CFDIR} is the root of the cf directory and config.mc is the -name of your configuration file. If you are running a version of M4 -that understands the __file__ builtin (versions of GNU m4 >= 0.75 do -this, but the versions distributed with 4.4BSD and derivatives do not) -or the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory. -For "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST -use -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash! For example: - - m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf - -Let's examine a typical .mc file: - - divert(-1) - # - # Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers. - # All rights reserved. - # Copyright (c) 1983 Eric P. Allman. All rights reserved. - # Copyright (c) 1988, 1993 - # The Regents of the University of California. All rights reserved. - # - # By using this file, you agree to the terms and conditions set - # forth in the LICENSE file which can be found at the top level of - # the sendmail distribution. - # - - # - # This is a Berkeley-specific configuration file for HP-UX 9.x. - # It applies only to the Computer Science Division at Berkeley, - # and should not be used elsewhere. It is provided on the sendmail - # distribution as a sample only. To create your own configuration - # file, create an appropriate domain file in ../domain, change the - # `DOMAIN' macro below to reference that file, and copy the result - # to a name of your own choosing. - # - divert(0) - -The divert(-1) will delete the crud in the resulting output file. -The copyright notice can be replaced by whatever your lawyers require; -our lawyers require the one that is included in these files. A copyleft -is a copyright by another name. The divert(0) restores regular output. - - VERSIONID(`<SCCS or RCS version id>') - -VERSIONID is a macro that stuffs the version information into the -resulting file. You could use SCCS, RCS, CVS, something else, or -omit it completely. This is not the same as the version id included -in SMTP greeting messages -- this is defined in m4/version.m4. - - OSTYPE(`hpux9')dnl - -You must specify an OSTYPE to properly configure things such as the -pathname of the help and status files, the flags needed for the local -mailer, and other important things. If you omit it, you will get an -error when you try to build the configuration. Look at the ostype -directory for the list of known operating system types. - - DOMAIN(`CS.Berkeley.EDU')dnl - -This example is specific to the Computer Science Division at Berkeley. -You can use "DOMAIN(`generic')" to get a sufficiently bland definition -that may well work for you, or you can create a customized domain -definition appropriate for your environment. - - MAILER(`local') - MAILER(`smtp') - -These describe the mailers used at the default CS site. The local -mailer is always included automatically. Beware: MAILER declarations -should only be followed by LOCAL_* sections. The general rules are -that the order should be: - - VERSIONID - OSTYPE - DOMAIN - FEATURE - local macro definitions - MAILER - LOCAL_CONFIG - LOCAL_RULE_* - LOCAL_RULESETS - -There are a few exceptions to this rule. Local macro definitions which -influence a FEATURE() should be done before that feature. For example, -a define(`PROCMAIL_MAILER_PATH', ...) should be done before -FEATURE(`local_procmail'). - -******************************************************************* -*** BE SURE YOU CUSTOMIZE THESE FILES! They have some *** -*** Berkeley-specific assumptions built in, such as the name *** -*** of their UUCP-relay. You'll want to create your own *** -*** domain description, and use that in place of *** -*** domain/Berkeley.EDU.m4. *** -******************************************************************* - - -+----------------------------+ -| A BRIEF INTRODUCTION TO M4 | -+----------------------------+ - -Sendmail uses the M4 macro processor to ``compile'' the configuration -files. The most important thing to know is that M4 is stream-based, -that is, it doesn't understand about lines. For this reason, in some -places you may see the word ``dnl'', which stands for ``delete -through newline''; essentially, it deletes all characters starting -at the ``dnl'' up to and including the next newline character. In -most cases sendmail uses this only to avoid lots of unnecessary -blank lines in the output. - -Other important directives are define(A, B) which defines the macro -``A'' to have value ``B''. Macros are expanded as they are read, so -one normally quotes both values to prevent expansion. For example, - - define(`SMART_HOST', `smart.foo.com') - -One word of warning: M4 macros are expanded even in lines that appear -to be comments. For example, if you have - - # See FEATURE(`foo') above - -it will not do what you expect, because the FEATURE(`foo') will be -expanded. This also applies to - - # And then define the $X macro to be the return address - -because ``define'' is an M4 keyword. If you want to use them, surround -them with directed quotes, `like this'. - -Since m4 uses single quotes (opening "`" and closing "'") to quote -arguments, those quotes can't be used in arguments. For example, -it is not possible to define a rejection message containing a single -quote. Usually there are simple workarounds by changing those -messages; in the worst case it might be ok to change the value -directly in the generated .cf file, which however is not advised. - - -Notice: -------- - -This package requires a post-V7 version of m4; if you are running the -4.2bsd, SysV.2, or 7th Edition version. SunOS's /usr/5bin/m4 or -BSD-Net/2's m4 both work. GNU m4 version 1.1 or later also works. -Unfortunately, the M4 on BSDI 1.0 doesn't work -- you'll have to use a -Net/2 or GNU version. GNU m4 is available from -ftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the latest version). -EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x is fine). Use GNU -m4 on this platform. - - -+----------------+ -| FILE LOCATIONS | -+----------------+ - -sendmail 8.9 has introduced a new configuration directory for sendmail -related files, /etc/mail. The new files available for sendmail 8.9 -- -the class {R} /etc/mail/relay-domains and the access database -/etc/mail/access -- take advantage of this new directory. Beginning with -8.10, all files will use this directory by default (some options may be -set by OSTYPE() files). This new directory should help to restore -uniformity to sendmail's file locations. - -Below is a table of some of the common changes: - -Old filename New filename ------------- ------------ -/etc/bitdomain /etc/mail/bitdomain -/etc/domaintable /etc/mail/domaintable -/etc/genericstable /etc/mail/genericstable -/etc/uudomain /etc/mail/uudomain -/etc/virtusertable /etc/mail/virtusertable -/etc/userdb /etc/mail/userdb - -/etc/aliases /etc/mail/aliases -/etc/sendmail/aliases /etc/mail/aliases -/etc/ucbmail/aliases /etc/mail/aliases -/usr/adm/sendmail/aliases /etc/mail/aliases -/usr/lib/aliases /etc/mail/aliases -/usr/lib/mail/aliases /etc/mail/aliases -/usr/ucblib/aliases /etc/mail/aliases - -/etc/sendmail.cw /etc/mail/local-host-names -/etc/mail/sendmail.cw /etc/mail/local-host-names -/etc/sendmail/sendmail.cw /etc/mail/local-host-names - -/etc/sendmail.ct /etc/mail/trusted-users - -/etc/sendmail.oE /etc/mail/error-header - -/etc/sendmail.hf /etc/mail/helpfile -/etc/mail/sendmail.hf /etc/mail/helpfile -/usr/ucblib/sendmail.hf /etc/mail/helpfile -/etc/ucbmail/sendmail.hf /etc/mail/helpfile -/usr/lib/sendmail.hf /etc/mail/helpfile -/usr/share/lib/sendmail.hf /etc/mail/helpfile -/usr/share/misc/sendmail.hf /etc/mail/helpfile -/share/misc/sendmail.hf /etc/mail/helpfile - -/etc/service.switch /etc/mail/service.switch - -/etc/sendmail.st /etc/mail/statistics -/etc/mail/sendmail.st /etc/mail/statistics -/etc/mailer/sendmail.st /etc/mail/statistics -/etc/sendmail/sendmail.st /etc/mail/statistics -/usr/lib/sendmail.st /etc/mail/statistics -/usr/ucblib/sendmail.st /etc/mail/statistics - -Note that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR -to create the pathnames. The default value of this variable is -`/etc/mail/'. If you set this macro to a different value, you MUST include -a trailing slash. - -Notice: all filenames used in a .mc (or .cf) file should be absolute -(starting at the root, i.e., with '/'). Relative filenames most -likely cause surprises during operations (unless otherwise noted). - - -+--------+ -| OSTYPE | -+--------+ - -You MUST define an operating system environment, or the configuration -file build will puke. There are several environments available; look -at the "ostype" directory for the current list. This macro changes -things like the location of the alias file and queue directory. Some -of these files are identical to one another. - -It is IMPERATIVE that the OSTYPE occur before any MAILER definitions. -In general, the OSTYPE macro should go immediately after any version -information, and MAILER definitions should always go last. - -Operating system definitions are usually easy to write. They may define -the following variables (everything defaults, so an ostype file may be -empty). Unfortunately, the list of configuration-supported systems is -not as broad as the list of source-supported systems, since many of -the source contributors do not include corresponding ostype files. - -ALIAS_FILE [/etc/mail/aliases] The location of the text version - of the alias file(s). It can be a comma-separated - list of names (but be sure you quote values with - commas in them -- for example, use - define(`ALIAS_FILE', `a,b') - to get "a" and "b" both listed as alias files; - otherwise the define() primitive only sees "a"). -HELP_FILE [/etc/mail/helpfile] The name of the file - containing information printed in response to - the SMTP HELP command. -QUEUE_DIR [/var/spool/mqueue] The directory containing - queue files. To use multiple queues, supply - a value ending with an asterisk. For - example, /var/spool/mqueue/qd* will use all of the - directories or symbolic links to directories - beginning with 'qd' in /var/spool/mqueue as queue - directories. The names 'qf', 'df', and 'xf' are - reserved as specific subdirectories for the - corresponding queue file types as explained in - doc/op/op.me. See also QUEUE GROUP DEFINITIONS. -MSP_QUEUE_DIR [/var/spool/clientmqueue] The directory containing - queue files for the MSP (Mail Submission Program, - see sendmail/SECURITY). -STATUS_FILE [/etc/mail/statistics] The file containing status - information. -LOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail. -LOCAL_MAILER_FLAGS [Prmn9] The flags used by the local mailer. The - flags lsDFMAw5:/|@q are always included. -LOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local - mail. -LOCAL_MAILER_MAX [undefined] If defined, the maximum size of local - mail that you are willing to accept. -LOCAL_MAILER_MAXMSGS [undefined] If defined, the maximum number of - messages to deliver in a single connection. Only - useful for LMTP local mailers. -LOCAL_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data - that ARRIVE from an address that resolves to the - local mailer and which are converted to MIME will be - labeled with this character set. -LOCAL_MAILER_EOL [undefined] If defined, the string to use as the - end of line for the local mailer. -LOCAL_MAILER_DSN_DIAGNOSTIC_CODE - [X-Unix] The DSN Diagnostic-Code value for the - 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. -LOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog" - mail. -LOCAL_SHELL_DIR [$z:/] The directory search path in which the - shell should run. -LOCAL_MAILER_QGRP [undefined] The queue group for the local mailer. -USENET_MAILER_PATH [/usr/lib/news/inews] The name of the program - used to submit news. -USENET_MAILER_FLAGS [rsDFMmn] The mailer flags for the usenet mailer. -USENET_MAILER_ARGS [-m -h -n] The command line arguments for the - usenet mailer. NOTE: Some versions of inews - (such as those shipped with newer versions of INN) - use different flags. Double check the defaults - against the inews man page. -USENET_MAILER_MAX [undefined] The maximum size of messages that will - be accepted by the usenet mailer. -USENET_MAILER_QGRP [undefined] The queue group for the usenet mailer. -SMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default - flags are `mDFMuX' for all SMTP-based mailers; the - "esmtp" mailer adds `a'; "smtp8" adds `8'; and - "dsmtp" adds `%'. -RELAY_MAILER_FLAGS [undefined] Flags added to the relay mailer. Default - flags are `mDFMuX' for all SMTP-based mailers; the - relay mailer adds `a8'. If this is not defined, - then SMTP_MAILER_FLAGS is used. -SMTP_MAILER_MAX [undefined] The maximum size of messages that will - be transported using the smtp, smtp8, esmtp, or dsmtp - mailers. -SMTP_MAILER_MAXMSGS [undefined] If defined, the maximum number of - messages to deliver in a single connection for the - smtp, smtp8, esmtp, or dsmtp mailers. -SMTP_MAILER_MAXRCPTS [undefined] If defined, the maximum number of - recipients to deliver in a single connection for the - smtp, smtp8, esmtp, or dsmtp mailers. -SMTP_MAILER_ARGS [TCP $h] The arguments passed to the smtp mailer. - About the only reason you would want to change this - would be to change the default port. -ESMTP_MAILER_ARGS [TCP $h] The arguments passed to the esmtp mailer. -SMTP8_MAILER_ARGS [TCP $h] The arguments passed to the smtp8 mailer. -DSMTP_MAILER_ARGS [TCP $h] The arguments passed to the dsmtp mailer. -RELAY_MAILER_ARGS [TCP $h] The arguments passed to the relay mailer. -SMTP_MAILER_QGRP [undefined] The queue group for the smtp mailer. -ESMTP_MAILER_QGRP [undefined] The queue group for the esmtp mailer. -SMTP8_MAILER_QGRP [undefined] The queue group for the smtp8 mailer. -DSMTP_MAILER_QGRP [undefined] The queue group for the dsmtp mailer. -RELAY_MAILER_QGRP [undefined] The queue group for the relay mailer. -RELAY_MAILER_MAXMSGS [undefined] If defined, the maximum number of - messages to deliver in a single connection for the - relay mailer. -SMTP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data - that ARRIVE from an address that resolves to one of - the SMTP mailers and which are converted to MIME will - be labeled with this character set. -UUCP_MAILER_PATH [/usr/bin/uux] The program used to send UUCP mail. -UUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default - flags are `DFMhuU' (and `m' for uucp-new mailer, - minus `U' for uucp-dom mailer). -UUCP_MAILER_ARGS [uux - -r -z -a$g -gC $h!rmail ($u)] The arguments - passed to the UUCP mailer. -UUCP_MAILER_MAX [100000] The maximum size message accepted for - transmission by the UUCP mailers. -UUCP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data - that ARRIVE from an address that resolves to one of - the UUCP mailers and which are converted to MIME will - be labeled with this character set. -UUCP_MAILER_QGRP [undefined] The queue group for the UUCP mailers. -FAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to - submit FAX messages. -FAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX - mailer. -FAX_MAILER_MAX [100000] The maximum size message accepted for - transmission by FAX. -POP_MAILER_PATH [/usr/lib/mh/spop] The pathname of the POP mailer. -POP_MAILER_FLAGS [Penu] Flags added to POP mailer. Flags lsDFMq - are always added. -POP_MAILER_ARGS [pop $u] The arguments passed to the POP mailer. -POP_MAILER_QGRP [undefined] The queue group for the pop mailer. -PROCMAIL_MAILER_PATH [/usr/local/bin/procmail] The path to the procmail - program. This is also used by - FEATURE(`local_procmail'). -PROCMAIL_MAILER_FLAGS [SPhnu9] Flags added to Procmail mailer. Flags - DFM are always set. This is NOT used by - FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS - instead. -PROCMAIL_MAILER_ARGS [procmail -Y -m $h $f $u] The arguments passed to - the Procmail mailer. This is NOT used by - FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS - instead. -PROCMAIL_MAILER_MAX [undefined] If set, the maximum size message that - will be accepted by the procmail mailer. -PROCMAIL_MAILER_QGRP [undefined] The queue group for the procmail mailer. -MAIL11_MAILER_PATH [/usr/etc/mail11] The path to the mail11 mailer. -MAIL11_MAILER_FLAGS [nsFx] Flags for the mail11 mailer. -MAIL11_MAILER_ARGS [mail11 $g $x $h $u] Arguments passed to the mail11 - mailer. -MAIL11_MAILER_QGRP [undefined] The queue group for the mail11 mailer. -PH_MAILER_PATH [/usr/local/etc/phquery] The path to the phquery - program. -PH_MAILER_FLAGS [ehmu] Flags for the phquery mailer. Flags nrDFM - are always set. -PH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer. -PH_MAILER_QGRP [undefined] The queue group for the ph mailer. -CYRUS_MAILER_FLAGS [Ah5@/:|] The flags used by the cyrus mailer. The - flags lsDFMnPq are always included. -CYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The program used to deliver - cyrus mail. -CYRUS_MAILER_ARGS [deliver -e -m $h -- $u] The arguments passed - to deliver cyrus mail. -CYRUS_MAILER_MAX [undefined] If set, the maximum size message that - will be accepted by the cyrus mailer. -CYRUS_MAILER_USER [cyrus:mail] The user and group to become when - running the cyrus mailer. -CYRUS_MAILER_QGRP [undefined] The queue group for the cyrus mailer. -CYRUS_BB_MAILER_FLAGS [u] The flags used by the cyrusbb mailer. - The flags lsDFMnP are always included. -CYRUS_BB_MAILER_ARGS [deliver -e -m $u] The arguments passed - to deliver cyrusbb mail. -CYRUSV2_MAILER_FLAGS [A@/:|m] The flags used by the cyrusv2 mailer. The - flags lsDFMnqXz are always included. -CYRUSV2_MAILER_MAXMSGS [undefined] If defined, the maximum number of - messages to deliver in a single connection for the - cyrusv2 mailer. -CYRUSV2_MAILER_MAXRCPTS [undefined] If defined, the maximum number of - recipients to deliver in a single connection for the - cyrusv2 mailer. -CYRUSV2_MAILER_ARGS [FILE /var/imap/socket/lmtp] The arguments passed - to the cyrusv2 mailer. This can be used to - change the name of the Unix domain socket, or - to switch to delivery via TCP (e.g., `TCP $h lmtp') -CYRUSV2_MAILER_QGRP [undefined] The queue group for the cyrusv2 mailer. -CYRUSV2_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data - that ARRIVE from an address that resolves to one the - Cyrus mailer and which are converted to MIME will - be labeled with this character set. -confEBINDIR [/usr/libexec] The directory for executables. - Currently used for FEATURE(`local_lmtp') and - FEATURE(`smrsh'). -QPAGE_MAILER_FLAGS [mDFMs] The flags used by the qpage mailer. -QPAGE_MAILER_PATH [/usr/local/bin/qpage] The program used to deliver - qpage mail. -QPAGE_MAILER_ARGS [qpage -l0 -m -P$u] The arguments passed - to deliver qpage mail. -QPAGE_MAILER_MAX [4096] If set, the maximum size message that - will be accepted by the qpage mailer. -QPAGE_MAILER_QGRP [undefined] The queue group for the qpage mailer. -LOCAL_PROG_QGRP [undefined] The queue group for the prog mailer. - -Note: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS: -MODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of -the macro Name_MAILER_FLAGS and change can be: flags that should -be used directly (thus overriding the default value), or if it -starts with `+' (`-') then those flags are added to (removed from) -the default value. Example: - - MODIFY_MAILER_FLAGS(`LOCAL', `+e') - -will add the flag `e' to LOCAL_MAILER_FLAGS. Notice: there are -several smtp mailers all of which are manipulated individually. -See the section MAILERS for the available mailer names. -WARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS -unconditionally, i.e., without respecting any definitions in an -OSTYPE setting. - - -+---------+ -| DOMAINS | -+---------+ - -You will probably want to collect domain-dependent defines into one -file, referenced by the DOMAIN macro. For example, the Berkeley -domain file includes definitions for several internal distinguished -hosts: - -UUCP_RELAY The host that will accept UUCP-addressed email. - If not defined, all UUCP sites must be directly - connected. -BITNET_RELAY The host that will accept BITNET-addressed email. - If not defined, the .BITNET pseudo-domain won't work. -DECNET_RELAY The host that will accept DECNET-addressed email. - If not defined, the .DECNET pseudo-domain and addresses - of the form node::user will not work. -FAX_RELAY The host that will accept mail to the .FAX pseudo-domain. - The "fax" mailer overrides this value. -LOCAL_RELAY The site that will handle unqualified names -- that - is, names without an @domain extension. - Normally MAIL_HUB is preferred for this function. - LOCAL_RELAY is mostly useful in conjunction with - FEATURE(`stickyhost') -- see the discussion of - stickyhost below. If not set, they are assumed to - belong on this machine. This allows you to have a - central site to store a company- or department-wide - alias database. This only works at small sites, - and only with some user agents. -LUSER_RELAY The site that will handle lusers -- that is, apparently - local names that aren't local accounts or aliases. To - specify a local user instead of a site, set this to - ``local:username''. - -Any of these can be either ``mailer:hostname'' (in which case the -mailer is the internal mailer name, such as ``uucp-new'' and the hostname -is the name of the host as appropriate for that mailer) or just a -``hostname'', in which case a default mailer type (usually ``relay'', -a variant on SMTP) is used. WARNING: if you have a wildcard MX -record matching your domain, you probably want to define these to -have a trailing dot so that you won't get the mail diverted back -to yourself. - -The domain file can also be used to define a domain name, if needed -(using "DD<domain>") and set certain site-wide features. If all hosts -at your site masquerade behind one email name, you could also use -MASQUERADE_AS here. - -You do not have to define a domain -- in particular, if you are a -single machine sitting off somewhere, it is probably more work than -it's worth. This is just a mechanism for combining "domain dependent -knowledge" into one place. - - -+---------+ -| MAILERS | -+---------+ - -There are fewer mailers supported in this version than the previous -version, owing mostly to a simpler world. As a general rule, put the -MAILER definitions last in your .mc file. - -local The local and prog mailers. You will almost always - need these; the only exception is if you relay ALL - your mail to another site. This mailer is included - automatically. - -smtp The Simple Mail Transport Protocol mailer. This does - not hide hosts behind a gateway or another other - such hack; it assumes a world where everyone is - running the name server. This file actually defines - five mailers: "smtp" for regular (old-style) SMTP to - other servers, "esmtp" for extended SMTP to other - servers, "smtp8" to do SMTP to other servers without - converting 8-bit data to MIME (essentially, this is - your statement that you know the other end is 8-bit - clean even if it doesn't say so), "dsmtp" to do on - demand delivery, and "relay" for transmission to the - RELAY_HOST, LUSER_RELAY, or MAIL_HUB. - -uucp The UNIX-to-UNIX Copy Program mailer. Actually, this - defines two mailers, "uucp-old" (a.k.a. "uucp") and - "uucp-new" (a.k.a. "suucp"). The latter is for when you - know that the UUCP mailer at the other end can handle - multiple recipients in one transfer. If the smtp mailer - is included in your configuration, two other mailers - ("uucp-dom" and "uucp-uudom") are also defined [warning: you - MUST specify MAILER(`smtp') before MAILER(`uucp')]. When you - include the uucp mailer, sendmail looks for all names in - class {U} and sends them to the uucp-old mailer; all - names in class {Y} are sent to uucp-new; and all - names in class {Z} are sent to uucp-uudom. Note that - this is a function of what version of rmail runs on - the receiving end, and hence may be out of your control. - See the section below describing UUCP mailers in more - detail. - -usenet Usenet (network news) delivery. If this is specified, - an extra rule is added to ruleset 0 that forwards all - local email for users named ``group.usenet'' to the - ``inews'' program. Note that this works for all groups, - and may be considered a security problem. - -fax Facsimile transmission. This is experimental and based - on Sam Leffler's HylaFAX software. For more information, - see http://www.hylafax.org/. - -pop Post Office Protocol. - -procmail An interface to procmail (does not come with sendmail). - This is designed to be used in mailertables. For example, - a common question is "how do I forward all mail for a given - domain to a single person?". If you have this mailer - defined, you could set up a mailertable reading: - - host.com procmail:/etc/procmailrcs/host.com - - with the file /etc/procmailrcs/host.com reading: - - :0 # forward mail for host.com - ! -oi -f $1 person@other.host - - This would arrange for (anything)@host.com to be sent - to person@other.host. In a procmail script, $1 is the - name of the sender and $2 is the name of the recipient. - If you use this with FEATURE(`local_procmail'), the FEATURE - should be listed first. - - Of course there are other ways to solve this particular - problem, e.g., a catch-all entry in a virtusertable. - -mail11 The DECnet mail11 mailer, useful only if you have the mail11 - program from gatekeeper.dec.com:/pub/DEC/gwtools (and - DECnet, of course). This is for Phase IV DECnet support; - if you have Phase V at your site you may have additional - problems. - -phquery The phquery program. This is somewhat counterintuitively - referenced as the "ph" mailer internally. It can be used - to do CCSO name server lookups. The phquery program, which - this mailer uses, is distributed with the ph client. - -cyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to - a local cyrus user. this mailer can make use of the - "user+detail@local.host" syntax (see - FEATURE(`preserve_local_plus_detail')); it will deliver the - mail to the user's "detail" mailbox if the mailbox's ACL - permits. The cyrusbb mailer delivers to a system-wide - cyrus mailbox if the mailbox's ACL permits. The cyrus - mailer must be defined after the local mailer. - -cyrusv2 The mailer for Cyrus v2.x. The cyrusv2 mailer delivers to - local cyrus users via LMTP. This mailer can make use of the - "user+detail@local.host" syntax (see - FEATURE(`preserve_local_plus_detail')); it will deliver the - mail to the user's "detail" mailbox if the mailbox's ACL - permits. The cyrusv2 mailer must be defined after the - local mailer. - -qpage A mailer for QuickPage, a pager interface. See - http://www.qpage.org/ for further information. - -The local mailer accepts addresses of the form "user+detail", where -the "+detail" is not used for mailbox matching but is available -to certain local mail programs (in particular, see -FEATURE(`local_procmail')). For example, "eric", "eric+sendmail", and -"eric+sww" all indicate the same user, but additional arguments <null>, -"sendmail", and "sww" may be provided for use in sorting mail. - - -+----------+ -| FEATURES | -+----------+ - -Special features can be requested using the "FEATURE" macro. For -example, the .mc line: - - FEATURE(`use_cw_file') - -tells sendmail that you want to have it read an /etc/mail/local-host-names -file to get values for class {w}. A FEATURE may contain up to 9 -optional parameters -- for example: - - FEATURE(`mailertable', `dbm /usr/lib/mailertable') - -The default database map type for the table features can be set with - - define(`DATABASE_MAP_TYPE', `dbm') - -which would set it to use ndbm databases. The default is the Berkeley DB -hash database format. Note that you must still declare a database map type -if you specify an argument to a FEATURE. DATABASE_MAP_TYPE is only used -if no argument is given for the FEATURE. It must be specified before any -feature that uses a map. - -Also, features which can take a map definition as an argument can also take -the special keyword `LDAP'. If that keyword is used, the map will use the -LDAP definition described in the ``USING LDAP FOR ALIASES, MAPS, AND -CLASSES'' section below. - -Available features are: - -use_cw_file Read the file /etc/mail/local-host-names file to get - alternate names for this host. This might be used if you - were on a host that MXed for a dynamic set of other hosts. - If the set is static, just including the line "Cw<name1> - <name2> ..." (where the names are fully qualified domain - names) is probably superior. The actual filename can be - overridden by redefining confCW_FILE. - -use_ct_file Read the file /etc/mail/trusted-users file to get the - names of users that will be ``trusted'', that is, able to - set their envelope from address using -f without generating - a warning message. The actual filename can be overridden - by redefining confCT_FILE. - -redirect Reject all mail addressed to "address.REDIRECT" with - a ``551 User has moved; please try <address>'' message. - If this is set, you can alias people who have left - to their new address with ".REDIRECT" appended. - -nouucp Don't route UUCP addresses. This feature takes one - parameter: - `reject': reject addresses which have "!" in the local - part unless it originates from a system - that is allowed to relay. - `nospecial': don't do anything special with "!". - Warnings: 1. See the notice in the anti-spam section. - 2. don't remove "!" from OperatorChars if `reject' is - given as parameter. - -nocanonify Don't pass addresses to $[ ... $] for canonification - by default, i.e., host/domain names are considered canonical, - except for unqualified names, which must not be used in this - mode (violation of the standard). It can be changed by - setting the DaemonPortOptions modifiers (M=). That is, - FEATURE(`nocanonify') will be overridden by setting the - 'c' flag. Conversely, if FEATURE(`nocanonify') is not used, - it can be emulated by setting the 'C' flag - (DaemonPortOptions=Modifiers=C). This would generally only - be used by sites that only act as mail gateways or which have - user agents that do full canonification themselves. You may - also want to use - "define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off - the usual resolver options that do a similar thing. - - An exception list for FEATURE(`nocanonify') can be - specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE, - i.e., a list of domains which are nevertheless passed to - $[ ... $] for canonification. This is useful to turn on - canonification for local domains, e.g., use - CANONIFY_DOMAIN(`my.domain my') to canonify addresses - which end in "my.domain" or "my". - Another way to require canonification in the local - domain is CANONIFY_DOMAIN(`$=m'). - - A trailing dot is added to addresses with more than - one component in it such that other features which - expect a trailing dot (e.g., virtusertable) will - still work. - - If `canonify_hosts' is specified as parameter, i.e., - FEATURE(`nocanonify', `canonify_hosts'), then - addresses which have only a hostname, e.g., - <user@host>, will be canonified (and hopefully fully - qualified), too. - -stickyhost This feature is sometimes used with LOCAL_RELAY, - although it can be used for a different effect with - MAIL_HUB. - - When used without MAIL_HUB, email sent to - "user@local.host" are marked as "sticky" -- that - is, the local addresses aren't matched against UDB, - don't go through ruleset 5, and are not forwarded to - the LOCAL_RELAY (if defined). - - With MAIL_HUB, mail addressed to "user@local.host" - is forwarded to the mail hub, with the envelope - address still remaining "user@local.host". - Without stickyhost, the envelope would be changed - to "user@mail_hub", in order to protect against - mailing loops. - -mailertable Include a "mailer table" which can be used to override - routing for particular domains (which are not in class {w}, - i.e. local host names). The argument of the FEATURE may be - the key definition. If none is specified, the definition - used is: - - hash /etc/mail/mailertable - - Keys in this database are fully qualified domain names - or partial domains preceded by a dot -- for example, - "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU". As a - special case of the latter, "." matches any domain not - covered by other keys. Values must be of the form: - mailer:domain - where "mailer" is the internal mailer name, and "domain" - is where to send the message. These maps are not - reflected into the message header. As a special case, - the forms: - local:user - will forward to the indicated user using the local mailer, - local: - will forward to the original user in the e-mail address - using the local mailer, and - error:code message - error:D.S.N:code message - will give an error message with the indicated SMTP reply - code and message, where D.S.N is an RFC 1893 compliant - error code. - -domaintable Include a "domain table" which 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). The argument of the - FEATURE may be the key definition. If none is specified, - the definition used is: - - hash /etc/mail/domaintable - - The key in this table is the domain name; the value is - the new (fully qualified) domain. Anything in the - domaintable is reflected into headers; that is, this - is done in ruleset 3. - -bitdomain Look up bitnet hosts in a table to try to turn them into - internet addresses. The table can be built using the - bitdomain program contributed by John Gardiner Myers. - The argument of the FEATURE may be the key definition; if - none is specified, the definition used is: - - hash /etc/mail/bitdomain - - Keys are the bitnet hostname; values are the corresponding - internet hostname. - -uucpdomain Similar feature for UUCP hosts. The default map definition - is: - - hash /etc/mail/uudomain - - At the moment there is no automagic tool to build this - database. - -always_add_domain - Include the local host domain even on locally delivered - mail. Normally it is not added on unqualified names. - However, if you use a shared message store but do not use - the same user name space everywhere, you may need the host - name on local names. An optional argument specifies - another domain to be added than the local. - -allmasquerade If masquerading is enabled (using MASQUERADE_AS), this - feature will cause recipient addresses to also masquerade - as being from the masquerade host. Normally they get - the local hostname. Although this may be right for - ordinary users, it can break local aliases. For example, - if you send to "localalias", the originating sendmail will - find that alias and send to all members, but send the - message with "To: localalias@masqueradehost". Since that - alias likely does not exist, replies will fail. Use this - feature ONLY if you can guarantee that the ENTIRE - namespace on your masquerade host supersets all the - local entries. - -limited_masquerade - Normally, any hosts listed in class {w} are masqueraded. If - this feature is given, only the hosts listed in class {M} (see - below: MASQUERADE_DOMAIN) are masqueraded. This is useful - if you have several domains with disjoint namespaces hosted - on the same machine. - -masquerade_entire_domain - If masquerading is enabled (using MASQUERADE_AS) and - MASQUERADE_DOMAIN (see below) is set, this feature will - cause addresses to be rewritten such that the masquerading - domains are actually entire domains to be hidden. All - hosts within the masquerading domains will be rewritten - to the masquerade name (used in MASQUERADE_AS). For example, - if you have: - - MASQUERADE_AS(`masq.com') - MASQUERADE_DOMAIN(`foo.org') - MASQUERADE_DOMAIN(`bar.com') - - then *foo.org and *bar.com are converted to masq.com. Without - this feature, only foo.org and bar.com are masqueraded. - - NOTE: only domains within your jurisdiction and - current hierarchy should be masqueraded using this. - -local_no_masquerade - This feature prevents the local mailer from masquerading even - if MASQUERADE_AS is used. MASQUERADE_AS will only have effect - on addresses of mail going outside the local domain. - -masquerade_envelope - If masquerading is enabled (using MASQUERADE_AS) or the - genericstable is in use, this feature will cause envelope - addresses to also masquerade as being from the masquerade - host. Normally only the header addresses are masqueraded. - -genericstable This feature will cause unqualified addresses (i.e., without - a domain) and addresses with a domain listed in class {G} - to be looked up in a map and turned into another ("generic") - form, which can change both the domain name and the user name. - Notice: if you use an MSP (as it is default starting with - 8.12), the MTA will only receive qualified addresses from the - MSP (as required by the RFCs). Hence you need to add your - domain to class {G}. This feature is similar to the userdb - functionality. 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. Qualified addresses must have the domain - part in class {G}; entries can be added to this class by the - macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE (analogously - to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE, see below). - - The argument of FEATURE(`genericstable') may be the map - definition; the default map definition is: - - hash /etc/mail/genericstable - - The key for this table is either the full address, the domain - (with a leading @; the localpart is passed as first argument) - or the unqualified username (tried in the order mentioned); - the value is the new user address. If the new user address - does not include a domain, it will be qualified in the standard - manner, i.e., using $j or the masquerade name. Note that the - address being looked up must be fully qualified. For local - mail, it is necessary to use FEATURE(`always_add_domain') - for the addresses to be qualified. - The "+detail" of an address is passed as %1, so entries like - - old+*@foo.org new+%1@example.com - gen+*@foo.org %1@example.com - - and other forms are possible. - -generics_entire_domain - If the genericstable is enabled and GENERICS_DOMAIN or - GENERICS_DOMAIN_FILE is used, this feature will cause - addresses to be searched in the map if their domain - parts are subdomains of elements in class {G}. - -virtusertable A domain-specific form of aliasing, allowing multiple - virtual domains to be hosted on one machine. For example, - if the virtuser table contained: - - info@foo.com foo-info - info@bar.com bar-info - joe@bar.com error:nouser 550 No such user here - jax@bar.com error:5.7.0:550 Address invalid - @baz.org jane@example.net - - then mail addressed to info@foo.com will be sent to the - address foo-info, mail addressed to info@bar.com will be - delivered to bar-info, and mail addressed to anyone at baz.org - will be sent to jane@example.net, mail to joe@bar.com will - be rejected with the specified error message, and mail to - jax@bar.com will also have a RFC 1893 compliant error code - 5.7.0. - - The username from the original address is passed - as %1 allowing: - - @foo.org %1@example.com - - meaning someone@foo.org will be sent to someone@example.com. - Additionally, if the local part consists of "user+detail" - then "detail" is passed as %2 and "+detail" is passed as %3 - when a match against user+* is attempted, so entries like - - old+*@foo.org new+%2@example.com - gen+*@foo.org %2@example.com - +*@foo.org %1%3@example.com - X++@foo.org Z%3@example.com - @bar.org %1%3 - - and other forms are possible. Note: to preserve "+detail" - for a default case (@domain) %1%3 must be used as RHS. - There are two wildcards after "+": "+" matches only a non-empty - detail, "*" matches also empty details, e.g., user+@foo.org - matches +*@foo.org but not ++@foo.org. This can be used - to ensure that the parameters %2 and %3 are not empty. - - All the host names on the left hand side (foo.com, bar.com, - and baz.org) must be in class {w} or class {VirtHost}. The - latter can be defined by the macros VIRTUSER_DOMAIN or - VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and - MASQUERADE_DOMAIN_FILE, see below). If VIRTUSER_DOMAIN or - VIRTUSER_DOMAIN_FILE is used, then the entries of class - {VirtHost} are added to class {R}, i.e., relaying is allowed - to (and from) those domains. The default map definition is: - - hash /etc/mail/virtusertable - - A new definition can be specified as the second argument of - the FEATURE macro, such as - - FEATURE(`virtusertable', `dbm /etc/mail/virtusers') - -virtuser_entire_domain - If the virtusertable is enabled and VIRTUSER_DOMAIN or - VIRTUSER_DOMAIN_FILE is used, this feature will cause - addresses to be searched in the map if their domain - parts are subdomains of elements in class {VirtHost}. - -ldap_routing Implement LDAP-based e-mail recipient routing according to - the Internet Draft draft-lachman-laser-ldap-mail-routing-01. - This provides a method to re-route addresses with a - domain portion in class {LDAPRoute} to either a - different mail host or a different address. Hosts can - be added to this class using LDAPROUTE_DOMAIN and - LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and - MASQUERADE_DOMAIN_FILE, see below). - - See the LDAP ROUTING section below for more information. - -nodns If you aren't running DNS at your site (for example, - you are UUCP-only connected). It's hard to consider - this a "feature", but hey, it had to go somewhere. - Actually, as of 8.7 this is a no-op -- remove "dns" from - the hosts service switch entry instead. - -nullclient This is a special case -- it creates a 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. - - The only other feature that should be used in conjunction - with this one is FEATURE(`nocanonify'). No mailers - should be defined. No aliasing or forwarding is done. - -local_lmtp Use an LMTP capable local mailer. The argument to this - feature is the pathname of an LMTP capable mailer. By - default, mail.local is used. This is expected to be the - mail.local which came with the 8.9 distribution which is - LMTP capable. The path to mail.local is set by the - confEBINDIR m4 variable -- making the default - LOCAL_MAILER_PATH /usr/libexec/mail.local. - If a different LMTP capable mailer is used, its pathname - can be specified as second parameter and the arguments - passed to it (A=) as third parameter, e.g., - - FEATURE(`local_lmtp', `/usr/local/bin/lmtp', `lmtp') - - WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, - i.e., without respecting any definitions in an OSTYPE setting. - -local_procmail Use procmail or another delivery agent as the local mailer. - The argument to this feature is the pathname of the - delivery agent, which defaults to PROCMAIL_MAILER_PATH. - Note that this does NOT use PROCMAIL_MAILER_FLAGS or - PROCMAIL_MAILER_ARGS for the local mailer; tweak - LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or - specify the appropriate parameters. When procmail is used, - the local mailer can make use of the - "user+indicator@local.host" syntax; normally the +indicator - is just tossed, but by default it is passed as the -a - argument to procmail. - - This feature can take up to three arguments: - - 1. Path to the mailer program - [default: /usr/local/bin/procmail] - 2. Argument vector including name of the program - [default: procmail -Y -a $h -d $u] - 3. Flags for the mailer [default: SPfhn9] - - Empty arguments cause the defaults to be taken. - Note that if you are on a system with a broken - setreuid() call, you may need to add -f $f to the procmail - argument vector to pass the proper sender to procmail. - - For example, this allows it to use the maildrop - (http://www.flounder.net/~mrsam/maildrop/) mailer instead - by specifying: - - FEATURE(`local_procmail', `/usr/local/bin/maildrop', - `maildrop -d $u') - - or scanmails using: - - FEATURE(`local_procmail', `/usr/local/bin/scanmails') - - WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, - i.e., without respecting any definitions in an OSTYPE setting. - -bestmx_is_local Accept mail as though locally addressed for any host that - lists us as the best possible MX record. This generates - additional DNS traffic, but should be OK for low to - medium traffic hosts. The argument may be a set of - domains, which will limit the feature to only apply to - these domains -- this will reduce unnecessary DNS - traffic. THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH - WILDCARD MX RECORDS!!! If you have a wildcard MX record - that matches your domain, you cannot use this feature. - -smrsh Use the SendMail Restricted SHell (smrsh) provided - with the distribution instead of /bin/sh for mailing - to programs. This improves the ability of the local - system administrator to control what gets run via - e-mail. If an argument is provided it is used as the - pathname to smrsh; otherwise, the path defined by - confEBINDIR is used for the smrsh binary -- by default, - /usr/libexec/smrsh is assumed. - -promiscuous_relay - By default, the sendmail configuration files do not permit - mail relaying (that is, accepting mail from outside your - local host (class {w}) and sending it to another host than - your local host). This option sets your site to allow - mail relaying from any site to any site. In almost all - cases, it is better to control relaying more carefully - with the access map, class {R}, or authentication. Domains - can be added to class {R} by the macros RELAY_DOMAIN or - RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and - MASQUERADE_DOMAIN_FILE, see below). - -relay_entire_domain - This option allows any host in your domain as defined by - class {m} to use your server for relaying. Notice: make - sure that your domain is not just a top level domain, - e.g., com. This can happen if you give your host a name - like example.com instead of host.example.com. - -relay_hosts_only - By default, names that are listed as RELAY in the access - db and class {R} are treated as domain names, not host names. - For example, if you specify ``foo.com'', then mail to or - from foo.com, abc.foo.com, or a.very.deep.domain.foo.com - will all be accepted for relaying. This feature changes - the behaviour to lookup individual host names only. - -relay_based_on_MX - Turns on the ability to allow relaying based on the MX - records of the host portion of an incoming recipient; that - is, if an MX record for host foo.com points to your site, - you will accept and relay mail addressed to foo.com. See - description below for more information before using this - feature. Also, see the KNOWNBUGS entry regarding bestmx - map lookups. - - FEATURE(`relay_based_on_MX') does not necessarily allow - routing of these messages which you expect to be allowed, - if route address syntax (or %-hack syntax) is used. If - this is a problem, add entries to the access-table or use - FEATURE(`loose_relay_check'). - -relay_mail_from - Allows relaying if the mail sender is listed as RELAY in - the access map. If an optional argument `domain' (this - is the literal word `domain', not a placeholder) is given, - relaying can be allowed just based on the domain portion - of the sender address. This feature should only be used if - absolutely necessary as the sender address can be easily - forged. Use of this feature requires the "From:" tag to - be used for the key in the access map; see the discussion - of tags and FEATURE(`relay_mail_from') in the section on - anti-spam configuration control. - -relay_local_from - Allows relaying if the domain portion of the mail sender - is a local host. This should only be used if absolutely - necessary as it opens a window for spammers. Specifically, - they can send mail to your mail server that claims to be - from your domain (either directly or via a routed address), - and you will go ahead and relay it out to arbitrary hosts - on the Internet. - -accept_unqualified_senders - Normally, MAIL FROM: commands in the SMTP session will be - refused if the connection is a network connection and the - sender address does not include a domain name. If your - setup sends local mail unqualified (i.e., MAIL FROM: <joe>), - you will need to use this feature to accept unqualified - sender addresses. Setting the DaemonPortOptions modifier - 'u' overrides the default behavior, i.e., unqualified - addresses are accepted even without this FEATURE. - If this FEATURE is not used, the DaemonPortOptions modifier - 'f' can be used to enforce fully qualified addresses. - -accept_unresolvable_domains - Normally, MAIL FROM: commands in the SMTP session will be - refused if the host part of the argument to MAIL FROM: - cannot be located in the host name service (e.g., an A or - MX record in DNS). If you are inside a firewall that has - only a limited view of the Internet host name space, this - could cause problems. In this case you probably want to - use this feature to accept all domains on input, even if - they are unresolvable. - -access_db 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. Moreover, - it can control the behavior of sendmail in various situations. - By default, the access database specification is: - - hash -T<TMPF> /etc/mail/access - - See the anti-spam configuration control section for further - important information about this feature. Notice: - "-T<TMPF>" is meant literal, do not replace it by anything. - -blacklist_recipients - Turns on the ability to block incoming mail for certain - recipient usernames, hostnames, or addresses. For - example, you can block incoming mail to user nobody, - host foo.mydomain.com, or guest@bar.mydomain.com. - These specifications are put in the access db as - described in the anti-spam configuration control section - later in this document. - -delay_checks The rulesets check_mail and check_relay will not be called - when a client connects or issues a MAIL command, respectively. - Instead, those rulesets will be called by the check_rcpt - ruleset; they will be skipped under certain circumstances. - See "Delay all checks" in the anti-spam configuration control - section. Note: this feature is incompatible to the versions - in 8.10 and 8.11. - -use_client_ptr If this feature is enabled then check_relay will override - its first argument with $&{client_ptr}. This is useful for - rejections based on the unverified hostname of client, - which turns on the same behavior as in earlier sendmail - versions when delay_checks was not in use. See doc/op/op.* - about check_relay, {client_name}, and {client_ptr}. - -dnsbl Turns on rejection of hosts found in an DNS based rejection - list. If an argument is provided it is used as the domain - in which blocked hosts are listed; otherwise it defaults to - blackholes.mail-abuse.org. An explanation for an DNS based - rejection list can be found at http://mail-abuse.org/rbl/. - A second argument can be used to change the default error - message. Without that second argument, the error message - will be - Rejected: IP-ADDRESS listed at SERVER - where IP-ADDRESS and SERVER are replaced by the appropriate - information. By default, temporary lookup failures are - ignored. This behavior can be changed by specifying a - third argument, which must be either `t' or a full error - message. See the anti-spam configuration control section for - an example. The dnsbl feature can be included several times - to query different DNS based rejection lists. See also - enhdnsbl for an enhanced version. - - Set the DNSBL_MAP mc option to change the default map - definition from `host'. Set the DNSBL_MAP_OPT mc option - to add additional options to the map specification used. - - Some DNS based rejection lists cause failures if asked - for AAAA records. If your sendmail version is compiled - with IPv6 support (NETINET6) and you experience this - problem, add - - define(`DNSBL_MAP', `dns -R A') - - before the first use of this feature. Alternatively you - can use enhdnsbl instead (see below). Moreover, this - statement can be used to reduce the number of DNS retries, - e.g., - - define(`DNSBL_MAP', `dns -R A -r2') - - See below (EDNSBL_TO) for an explanation. - - NOTE: The default DNS blacklist, blackholes.mail-abuse.org, - is a service offered by the Mail Abuse Prevention System - (MAPS). As of July 31, 2001, MAPS is a subscription - service, so using that network address won't work if you - haven't subscribed. Contact MAPS to subscribe - (http://mail-abuse.org/). - -enhdnsbl Enhanced version of dnsbl (see above). Further arguments - (up to 5) can be used to specify specific return values - from lookups. Temporary lookup failures are ignored unless - a third argument is given, which must be either `t' or a full - error message. By default, any successful lookup will - generate an error. Otherwise the result of the lookup is - compared with the supplied argument(s), and only if a match - occurs an error is generated. For example, - - FEATURE(`enhdnsbl', `dnsbl.example.com', `', `t', `127.0.0.2.') - - will reject the e-mail if the lookup returns the value - ``127.0.0.2.'', or generate a 451 response if the lookup - temporarily failed. The arguments can contain metasymbols - as they are allowed in the LHS of rules. As the example - shows, the default values are also used if an empty argument, - i.e., `', is specified. This feature requires that sendmail - has been compiled with the flag DNSMAP (see sendmail/README). - - Set the EDNSBL_TO mc option to change the DNS retry count - from the default value of 5, this can be very useful when - a DNS server is not responding, which in turn may cause - clients to time out (an entry stating - - did not issue MAIL/EXPN/VRFY/ETRN - - will be logged). - -ratecontrol Enable simple ruleset to do connection rate control - checking. This requires entries in access_db of the form - - ClientRate:IP.ADD.RE.SS LIMIT - - The RHS specifies the maximum number of connections - (an integer number) over the time interval defined - by ConnectionRateWindowSize, where 0 means unlimited. - - Take the following example: - - ClientRate:10.1.2.3 4 - ClientRate:127.0.0.1 0 - ClientRate: 10 - - 10.1.2.3 can only make up to 4 connections, the - general limit it 10, and 127.0.0.1 can make an unlimited - number of connections per ConnectionRateWindowSize. - - See also CONNECTION CONTROL. - -conncontrol Enable a simple check of the number of incoming SMTP - connections. This requires entries in access_db of the - form - - ClientConn:IP.ADD.RE.SS LIMIT - - The RHS specifies the maximum number of open connections - (an integer number). - - Take the following example: - - ClientConn:10.1.2.3 4 - ClientConn:127.0.0.1 0 - ClientConn: 10 - - 10.1.2.3 can only have up to 4 open connections, the - general limit it 10, and 127.0.0.1 does not have any - explicit limit. - - See also CONNECTION CONTROL. - -mtamark Experimental support for "Marking Mail Transfer Agents in - Reverse DNS with TXT RRs" (MTAMark), see - draft-stumpf-dns-mtamark-01. Optional arguments are: - - 1. Error message, default: - - 550 Rejected: $&{client_addr} not listed as MTA - - 2. Temporary lookup failures are ignored unless a second - argument is given, which must be either `t' or a full - error message. - - 3. Lookup prefix, default: _perm._smtp._srv. This should - not be changed unless the draft changes it. - - Example: - - FEATURE(`mtamark', `', `t') - -lookupdotdomain Look up also .domain in the access map. This allows to - match only subdomains. It does not work well with - FEATURE(`relay_hosts_only'), because most lookups for - subdomains are suppressed by the latter feature. - -loose_relay_check - Normally, if % addressing is used for a recipient, e.g. - user%site@othersite, and othersite is in class {R}, the - check_rcpt ruleset will strip @othersite and recheck - user@site for relaying. This feature changes that - behavior. It should not be needed for most installations. - -authinfo Provide a separate map for client side authentication - information. See SMTP AUTHENTICATION for details. - By default, the authinfo database specification is: - - hash /etc/mail/authinfo - -preserve_luser_host - Preserve the name of the recipient host if LUSER_RELAY is - used. Without this option, the domain part of the - recipient address will be replaced by the host specified as - LUSER_RELAY. This feature only works if the hostname is - passed to the mailer (see mailer triple in op.me). Note - that in the default configuration the local mailer does not - receive the hostname, i.e., the mailer triple has an empty - hostname. - -preserve_local_plus_detail - Preserve the +detail portion of the address when passing - address to local delivery agent. Disables alias and - .forward +detail stripping (e.g., given user+detail, only - that address will be looked up in the alias file; user+* and - user will not be looked up). Only use if the local - delivery agent in use supports +detail addressing. - -compat_check Enable ruleset check_compat to look up pairs of addresses - with the Compat: tag -- Compat:sender<@>recipient -- in the - access map. Valid values for the RHS include - DISCARD silently discard recipient - TEMP: return a temporary error - ERROR: return a permanent error - In the last two cases, a 4xy/5xy SMTP reply code should - follow the colon. - -no_default_msa Don't generate the default MSA daemon, i.e., - DAEMON_OPTIONS(`Port=587,Name=MSA,M=E') - To define a MSA daemon with other parameters, use this - FEATURE and introduce new settings via DAEMON_OPTIONS(). - -msp Defines config file for Message Submission Program. - See sendmail/SECURITY for details and cf/cf/submit.mc how - to use it. An optional argument can be used to override - the default of `[localhost]' to use as host to send all - e-mails to. Note that MX records will be used if the - specified hostname is not in square brackets (e.g., - [hostname]). If `MSA' is specified as second argument then - port 587 is used to contact the server. Example: - - FEATURE(`msp', `', `MSA') - - Some more hints about possible changes can be found below - in the section MESSAGE SUBMISSION PROGRAM. - - Note: Due to many problems, submit.mc uses - - FEATURE(`msp', `[127.0.0.1]') - - by default. If you have a machine with IPv6 only, - change it to - - FEATURE(`msp', `[IPv6:::1]') - - If you want to continue using '[localhost]', (the behavior - up to 8.12.6), use - - FEATURE(`msp') - -queuegroup A simple example how to select a queue group based - on the full e-mail address or the domain of the - recipient. Selection is done via entries in the - access map using the tag QGRP:, for example: - - QGRP:example.com main - QGRP:friend@some.org others - QGRP:my.domain local - - where "main", "others", and "local" are names of - queue groups. If an argument is specified, it is used - as default queue group. - - Note: please read the warning in doc/op/op.me about - queue groups and possible queue manipulations. - -greet_pause Adds the greet_pause ruleset which enables open proxy - and SMTP slamming protection. The feature can take an - argument specifying the milliseconds to wait: - - FEATURE(`greet_pause', `5000') dnl 5 seconds - - If FEATURE(`access_db') is enabled, an access database - lookup with the GreetPause tag is done using client - hostname, domain, IP address, or subnet to determine the - pause time: - - GreetPause:my.domain 0 - GreetPause:example.com 5000 - GreetPause:10.1.2 2000 - GreetPause:127.0.0.1 0 - - When using FEATURE(`access_db'), the optional - FEATURE(`greet_pause') argument becomes the default if - nothing is found in the access database. A ruleset called - Local_greet_pause can be used for local modifications, e.g., - - LOCAL_RULESETS - SLocal_greet_pause - R$* $: $&{daemon_flags} - R$* a $* $# 0 - -+-------+ -| HACKS | -+-------+ - -Some things just can't be called features. To make this clear, -they go in the hack subdirectory and are referenced using the HACK -macro. These will tend to be site-dependent. The release -includes the Berkeley-dependent "cssubdomain" hack (that makes -sendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU; -this is intended as a short-term aid while moving hosts into -subdomains. - - -+--------------------+ -| SITE CONFIGURATION | -+--------------------+ - - ***************************************************** - * This section is really obsolete, and is preserved * - * only for back compatibility. You should plan on * - * using mailertables for new installations. In * - * particular, it doesn't work for the newer forms * - * of UUCP mailers, such as uucp-uudom. * - ***************************************************** - -Complex sites will need more local configuration information, such as -lists of UUCP hosts they speak with directly. This can get a bit more -tricky. For an example of a "complex" site, see cf/ucbvax.mc. - -The SITECONFIG macro allows you to indirectly reference site-dependent -configuration information stored in the siteconfig subdirectory. For -example, the line - - SITECONFIG(`uucp.ucbvax', `ucbvax', `U') - -reads the file uucp.ucbvax for local connection information. The -second parameter is the local name (in this case just "ucbvax" since -it is locally connected, and hence a UUCP hostname). The third -parameter is the name of both a macro to store the local name (in -this case, {U}) and the name of the class (e.g., {U}) in which to store -the host information read from the file. Another SITECONFIG line reads - - SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W') - -This says that the file uucp.ucbarpa contains the list of UUCP sites -connected to ucbarpa.Berkeley.EDU. Class {W} will be used to -store this list, and $W is defined to be ucbarpa.Berkeley.EDU, that -is, the name of the relay to which the hosts listed in uucp.ucbarpa -are connected. [The machine ucbarpa is gone now, but this -out-of-date configuration file has been left around to demonstrate -how you might do this.] - -Note that the case of SITECONFIG with a third parameter of ``U'' is -special; the second parameter is assumed to be the UUCP name of the -local site, rather than the name of a remote site, and the UUCP name -is entered into class {w} (the list of local hostnames) as $U.UUCP. - -The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing -more than a sequence of SITE macros describing connectivity. For -example: - - SITE(`cnmat') - SITE(`sgi olympus') - -The second example demonstrates that you can use two names on the -same line; these are usually aliases for the same host (or are at -least in the same company). - -The macro LOCAL_UUCP can be used to add rules into the generated -cf file at the place where MAILER(`uucp') inserts its rules. This -should only be used if really necessary. - -+--------------------+ -| USING UUCP MAILERS | -+--------------------+ - -It's hard to get UUCP mailers right because of the extremely ad hoc -nature of UUCP addressing. These config files are really designed -for domain-based addressing, even for UUCP sites. - -There are four UUCP mailers available. The choice of which one to -use is partly a matter of local preferences and what is running at -the other end of your UUCP connection. Unlike good protocols that -define what will go over the wire, UUCP uses the policy that you -should do what is right for the other end; if they change, you have -to change. This makes it hard to do the right thing, and discourages -people from updating their software. In general, if you can avoid -UUCP, please do. - -The major choice is whether to go for a domainized scheme or a -non-domainized scheme. This depends entirely on what the other -end will recognize. If at all possible, you should encourage the -other end to go to a domain-based system -- non-domainized addresses -don't work entirely properly. - -The four mailers are: - - uucp-old (obsolete name: "uucp") - This is the oldest, the worst (but the closest to UUCP) way of - sending messages across UUCP connections. It does bangify - everything and prepends $U (your UUCP name) to the sender's - address (which can already be a bang path itself). It can - only send to one address at a time, so it spends a lot of - time copying duplicates of messages. Avoid this if at all - possible. - - uucp-new (obsolete name: "suucp") - The same as above, except that it assumes that in one rmail - command you can specify several recipients. It still has a - lot of other problems. - - uucp-dom - This UUCP mailer keeps everything as domain addresses. - Basically, it uses the SMTP mailer rewriting rules. This mailer - is only included if MAILER(`smtp') is specified before - MAILER(`uucp'). - - Unfortunately, a lot of UUCP mailer transport agents require - bangified addresses in the envelope, although you can use - domain-based addresses in the message header. (The envelope - shows up as the From_ line on UNIX mail.) So.... - - uucp-uudom - This is a cross between uucp-new (for the envelope addresses) - and uucp-dom (for the header addresses). It bangifies the - envelope sender (From_ line in messages) without adding the - local hostname, unless there is no host name on the address - at all (e.g., "wolf") or the host component is a UUCP host name - instead of a domain name ("somehost!wolf" instead of - "some.dom.ain!wolf"). This is also included only if MAILER(`smtp') - is also specified earlier. - -Examples: - -On host grasp.insa-lyon.fr (UUCP host name "grasp"), the following -summarizes the sender rewriting for various mailers. - -Mailer sender rewriting in the envelope ------- ------ ------------------------- -uucp-{old,new} wolf grasp!wolf -uucp-dom wolf wolf@grasp.insa-lyon.fr -uucp-uudom wolf grasp.insa-lyon.fr!wolf - -uucp-{old,new} wolf@fr.net grasp!fr.net!wolf -uucp-dom wolf@fr.net wolf@fr.net -uucp-uudom wolf@fr.net fr.net!wolf - -uucp-{old,new} somehost!wolf grasp!somehost!wolf -uucp-dom somehost!wolf somehost!wolf@grasp.insa-lyon.fr -uucp-uudom somehost!wolf grasp.insa-lyon.fr!somehost!wolf - -If you are using one of the domainized UUCP mailers, you really want -to convert all UUCP addresses to domain format -- otherwise, it will -do it for you (and probably not the way you expected). For example, -if you have the address foo!bar!baz (and you are not sending to foo), -the heuristics will add the @uucp.relay.name or @local.host.name to -this address. However, if you map foo to foo.host.name first, it -will not add the local hostname. You can do this using the uucpdomain -feature. - - -+-------------------+ -| TWEAKING RULESETS | -+-------------------+ - -For more complex configurations, you can define special rules. -The macro LOCAL_RULE_3 introduces rules that are used in canonicalizing -the names. Any modifications made here are reflected in the header. - -A common use is to convert old UUCP addresses to SMTP addresses using -the UUCPSMTP macro. For example: - - LOCAL_RULE_3 - UUCPSMTP(`decvax', `decvax.dec.com') - UUCPSMTP(`research', `research.att.com') - -will cause addresses of the form "decvax!user" and "research!user" -to be converted to "user@decvax.dec.com" and "user@research.att.com" -respectively. - -This could also be used to look up hosts in a database map: - - LOCAL_RULE_3 - R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3 - -This map would be defined in the LOCAL_CONFIG portion, as shown below. - -Similarly, LOCAL_RULE_0 can be used to introduce new parsing rules. -For example, new rules are needed to parse hostnames that you accept -via MX records. For example, you might have: - - LOCAL_RULE_0 - R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.> - -You would use this if you had installed an MX record for cnmat.Berkeley.EDU -pointing at this host; this rule catches the message and forwards it on -using UUCP. - -You can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2. -These rulesets are normally empty. - -A similar macro is LOCAL_CONFIG. This introduces lines added after the -boilerplate option setting but before rulesets. Do not declare rulesets in -the LOCAL_CONFIG section. It can be used to declare local database maps or -whatever. For example: - - LOCAL_CONFIG - Khostmap hash /etc/mail/hostmap - Kyplocal nis -m hosts.byname - - -+---------------------------+ -| MASQUERADING AND RELAYING | -+---------------------------+ - -You can have your host masquerade as another using - - MASQUERADE_AS(`host.domain') - -This causes mail being sent to be labeled as coming from the -indicated host.domain, rather than $j. One normally masquerades as -one of one's own subdomains (for example, it's unlikely that -Berkeley would choose to masquerade as an MIT site). This -behaviour is modified by a plethora of FEATUREs; in particular, see -masquerade_envelope, allmasquerade, limited_masquerade, and -masquerade_entire_domain. - -The masquerade name is not normally canonified, so it is important -that it be your One True Name, that is, fully qualified and not a -CNAME. However, if you use a CNAME, the receiving side may canonify -it for you, so don't think you can cheat CNAME mapping this way. - -Normally the only addresses that are masqueraded are those that come -from this host (that is, are either unqualified or in class {w}, the list -of local domain names). You can augment this list, which is realized -by class {M} using - - MASQUERADE_DOMAIN(`otherhost.domain') - -The effect of this is that although mail to user@otherhost.domain -will not be delivered locally, any mail including any user@otherhost.domain -will, when relayed, be rewritten to have the MASQUERADE_AS address. -This can be a space-separated list of names. - -If these names are in a file, you can use - - MASQUERADE_DOMAIN_FILE(`filename') - -to read the list of names from the indicated file (i.e., to add -elements to class {M}). - -To exempt hosts or subdomains from being masqueraded, you can use - - MASQUERADE_EXCEPTION(`host.domain') - -This can come handy if you want to masquerade a whole domain -except for one (or a few) host(s). If these names are in a file, -you can use - - MASQUERADE_EXCEPTION_FILE(`filename') - -Normally only header addresses are masqueraded. If you want to -masquerade the envelope as well, use - - FEATURE(`masquerade_envelope') - -There are always users that need to be "exposed" -- that is, their -internal site name should be displayed instead of the masquerade name. -Root is an example (which has been "exposed" by default prior to 8.10). -You can add users to this list using - - EXPOSED_USER(`usernames') - -This adds users to class {E}; you could also use - - EXPOSED_USER_FILE(`filename') - -You can also arrange to relay all unqualified names (that is, names -without @host) to a relay host. For example, if you have a central -email server, you might relay to that host so that users don't have -to have .forward files or aliases. You can do this using - - define(`LOCAL_RELAY', `mailer:hostname') - -The ``mailer:'' can be omitted, in which case the mailer defaults to -"relay". There are some user names that you don't want relayed, perhaps -because of local aliases. A common example is root, which may be -locally aliased. You can add entries to this list using - - LOCAL_USER(`usernames') - -This adds users to class {L}; you could also use - - LOCAL_USER_FILE(`filename') - -If you want all incoming mail sent to a centralized hub, as for a -shared /var/spool/mail scheme, use - - define(`MAIL_HUB', `mailer:hostname') - -Again, ``mailer:'' defaults to "relay". If you define both LOCAL_RELAY -and MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will -be sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB. -Note: there is a (long standing) bug which keeps this combination from -working for addresses of the form user+detail. -Names in class {L} will be delivered locally, so you MUST have aliases or -.forward files for them. - -For example, if you are on machine mastodon.CS.Berkeley.EDU and you have -FEATURE(`stickyhost'), the following combinations of settings will have the -indicated effects: - -email sent to.... eric eric@mastodon.CS.Berkeley.EDU - -LOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally) -mail.CS.Berkeley.EDU (no local aliasing) (aliasing done) - -MAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU -mammoth.CS.Berkeley.EDU (aliasing done) (aliasing done) - -Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU -MAIL_HUB set as above (no local aliasing) (aliasing done) - -If you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and -MAIL_HUB act identically, with MAIL_HUB taking precedence. - -If you want all outgoing mail to go to a central relay site, define -SMART_HOST as well. Briefly: - - LOCAL_RELAY applies to unqualified names (e.g., "eric"). - MAIL_HUB applies to names qualified with the name of the - local host (e.g., "eric@mastodon.CS.Berkeley.EDU"). - SMART_HOST applies to names qualified with other hosts or - bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU" - or "eric@[127.0.0.1]"). - -However, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY, -DECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you -really want absolutely everything to go to a single central site you will -need to unset all the other relays -- or better yet, find or build a -minimal config file that does this. - -For duplicate suppression to work properly, the host name is best -specified with a terminal dot: - - define(`MAIL_HUB', `host.domain.') - note the trailing dot ---^ - - -+-------------------------------------------+ -| USING LDAP FOR ALIASES, MAPS, AND CLASSES | -+-------------------------------------------+ - -LDAP can be used for aliases, maps, and classes by either specifying your -own LDAP map specification or using the built-in default LDAP map -specification. The built-in default specifications all provide lookups -which match against either the machine's fully qualified hostname (${j}) or -a "cluster". The cluster allows you to share LDAP entries among a large -number of machines without having to enter each of the machine names into -each LDAP entry. To set the LDAP cluster name to use for a particular -machine or set of machines, set the confLDAP_CLUSTER m4 variable to a -unique name. For example: - - define(`confLDAP_CLUSTER', `Servers') - -Here, the word `Servers' will be the cluster name. As an example, assume -that smtp.sendmail.org, etrn.sendmail.org, and mx.sendmail.org all belong -to the Servers cluster. - -Some of the LDAP LDIF examples below show use of the Servers cluster. -Every entry must have either a sendmailMTAHost or sendmailMTACluster -attribute or it will be ignored. Be careful as mixing clusters and -individual host records can have surprising results (see the CAUTION -sections below). - -See the file cf/sendmail.schema for the actual LDAP schemas. Note that -this schema (and therefore the lookups and examples below) is experimental -at this point as it has had little public review. Therefore, it may change -in future versions. Feedback via sendmail@sendmail.org is encouraged. - -------- -Aliases -------- - -The ALIAS_FILE (O AliasFile) option can be set to use LDAP for alias -lookups. To use the default schema, simply use: - - define(`ALIAS_FILE', `ldap:') - -By doing so, you will use the default schema which expands to a map -declared as follows: - - ldap -k (&(objectClass=sendmailMTAAliasObject) - (sendmailMTAAliasGrouping=aliases) - (|(sendmailMTACluster=${sendmailMTACluster}) - (sendmailMTAHost=$j)) - (sendmailMTAKey=%0)) - -v sendmailMTAAliasValue,sendmailMTAAliasSearch:FILTER:sendmailMTAAliasObject,sendmailMTAAliasURL:URL:sendmailMTAAliasObject - - -NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually -used when the binary expands the `ldap:' token as the AliasFile option is -not actually macro-expanded when read from the sendmail.cf file. - -Example LDAP LDIF entries might be: - - dn: sendmailMTAKey=sendmail-list, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAAlias - objectClass: sendmailMTAAliasObject - sendmailMTAAliasGrouping: aliases - sendmailMTAHost: etrn.sendmail.org - sendmailMTAKey: sendmail-list - sendmailMTAAliasValue: ca@example.org - sendmailMTAAliasValue: eric - sendmailMTAAliasValue: gshapiro@example.com - - dn: sendmailMTAKey=owner-sendmail-list, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAAlias - objectClass: sendmailMTAAliasObject - sendmailMTAAliasGrouping: aliases - sendmailMTAHost: etrn.sendmail.org - sendmailMTAKey: owner-sendmail-list - sendmailMTAAliasValue: eric - - dn: sendmailMTAKey=postmaster, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAAlias - objectClass: sendmailMTAAliasObject - sendmailMTAAliasGrouping: aliases - sendmailMTACluster: Servers - sendmailMTAKey: postmaster - sendmailMTAAliasValue: eric - -Here, the aliases sendmail-list and owner-sendmail-list will be available -only on etrn.sendmail.org but the postmaster alias will be available on -every machine in the Servers cluster (including etrn.sendmail.org). - -CAUTION: aliases are additive so that entries like these: - - dn: sendmailMTAKey=bob, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAAlias - objectClass: sendmailMTAAliasObject - sendmailMTAAliasGrouping: aliases - sendmailMTACluster: Servers - sendmailMTAKey: bob - sendmailMTAAliasValue: eric - - dn: sendmailMTAKey=bobetrn, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAAlias - objectClass: sendmailMTAAliasObject - sendmailMTAAliasGrouping: aliases - sendmailMTAHost: etrn.sendmail.org - sendmailMTAKey: bob - sendmailMTAAliasValue: gshapiro - -would mean that on all of the hosts in the cluster, mail to bob would go to -eric EXCEPT on etrn.sendmail.org in which case it would go to BOTH eric and -gshapiro. - -If you prefer not to use the default LDAP schema for your aliases, you can -specify the map parameters when setting ALIAS_FILE. For example: - - define(`ALIAS_FILE', `ldap:-k (&(objectClass=mailGroup)(mail=%0)) -v mgrpRFC822MailMember') - ----- -Maps ----- - -FEATURE()'s which take an optional map definition argument (e.g., access, -mailertable, virtusertable, etc.) can instead take the special keyword -`LDAP', e.g.: - - FEATURE(`access_db', `LDAP') - FEATURE(`virtusertable', `LDAP') - -When this keyword is given, that map will use LDAP lookups consisting of -the objectClass sendmailMTAClassObject, the attribute sendmailMTAMapName -with the map name, a search attribute of sendmailMTAKey, and the value -attribute sendmailMTAMapValue. - -The values for sendmailMTAMapName are: - - FEATURE() sendmailMTAMapName - --------- ------------------ - access_db access - authinfo authinfo - bitdomain bitdomain - domaintable domain - genericstable generics - mailertable mailer - uucpdomain uucpdomain - virtusertable virtuser - -For example, FEATURE(`mailertable', `LDAP') would use the map definition: - - Kmailertable ldap -k (&(objectClass=sendmailMTAMapObject) - (sendmailMTAMapName=mailer) - (|(sendmailMTACluster=${sendmailMTACluster}) - (sendmailMTAHost=$j)) - (sendmailMTAKey=%0)) - -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject - -An example LDAP LDIF entry using this map might be: - - dn: sendmailMTAMapName=mailer, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAMap - sendmailMTACluster: Servers - sendmailMTAMapName: mailer - - dn: sendmailMTAKey=example.com, sendmailMTAMapName=mailer, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAMap - objectClass: sendmailMTAMapObject - sendmailMTAMapName: mailer - sendmailMTACluster: Servers - sendmailMTAKey: example.com - sendmailMTAMapValue: relay:[smtp.example.com] - -CAUTION: If your LDAP database contains the record above and *ALSO* a host -specific record such as: - - dn: sendmailMTAKey=example.com@etrn, sendmailMTAMapName=mailer, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAMap - objectClass: sendmailMTAMapObject - sendmailMTAMapName: mailer - sendmailMTAHost: etrn.sendmail.org - sendmailMTAKey: example.com - sendmailMTAMapValue: relay:[mx.example.com] - -then these entries will give unexpected results. When the lookup is done -on etrn.sendmail.org, the effect is that there is *NO* match at all as maps -require a single match. Since the host etrn.sendmail.org is also in the -Servers cluster, LDAP would return two answers for the example.com map key -in which case sendmail would treat this as no match at all. - -If you prefer not to use the default LDAP schema for your maps, you can -specify the map parameters when using the FEATURE(). For example: - - FEATURE(`access_db', `ldap:-1 -k (&(objectClass=mapDatabase)(key=%0)) -v value') - -------- -Classes -------- - -Normally, classes can be filled via files or programs. As of 8.12, they -can also be filled via map lookups using a new syntax: - - F{ClassName}mapkey@mapclass:mapspec - -mapkey is optional and if not provided the map key will be empty. This can -be used with LDAP to read classes from LDAP. Note that the lookup is only -done when sendmail is initially started. Use the special value `@LDAP' to -use the default LDAP schema. For example: - - RELAY_DOMAIN_FILE(`@LDAP') - -would put all of the attribute sendmailMTAClassValue values of LDAP records -with objectClass sendmailMTAClass and an attribute sendmailMTAClassName of -'R' into class $={R}. In other words, it is equivalent to the LDAP map -specification: - - F{R}@ldap:-k (&(objectClass=sendmailMTAClass) - (sendmailMTAClassName=R) - (|(sendmailMTACluster=${sendmailMTACluster}) - (sendmailMTAHost=$j))) - -v sendmailMTAClassValue,sendmailMTAClassSearch:FILTER:sendmailMTAClass,sendmailMTAClassURL:URL:sendmailMTAClass - -NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually -used when the binary expands the `@LDAP' token as class declarations are -not actually macro-expanded when read from the sendmail.cf file. - -This can be used with class related commands such as RELAY_DOMAIN_FILE(), -MASQUERADE_DOMAIN_FILE(), etc: - - Command sendmailMTAClassName - ------- -------------------- - CANONIFY_DOMAIN_FILE() Canonify - EXPOSED_USER_FILE() E - GENERICS_DOMAIN_FILE() G - LDAPROUTE_DOMAIN_FILE() LDAPRoute - LDAPROUTE_EQUIVALENT_FILE() LDAPRouteEquiv - LOCAL_USER_FILE() L - MASQUERADE_DOMAIN_FILE() M - MASQUERADE_EXCEPTION_FILE() N - RELAY_DOMAIN_FILE() R - VIRTUSER_DOMAIN_FILE() VirtHost - -You can also add your own as any 'F'ile class of the form: - - F{ClassName}@LDAP - ^^^^^^^^^ -will use "ClassName" for the sendmailMTAClassName. - -An example LDAP LDIF entry would look like: - - dn: sendmailMTAClassName=R, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAClass - sendmailMTACluster: Servers - sendmailMTAClassName: R - sendmailMTAClassValue: sendmail.org - sendmailMTAClassValue: example.com - sendmailMTAClassValue: 10.56.23 - -CAUTION: If your LDAP database contains the record above and *ALSO* a host -specific record such as: - - dn: sendmailMTAClassName=R@etrn.sendmail.org, dc=sendmail, dc=org - objectClass: sendmailMTA - objectClass: sendmailMTAClass - sendmailMTAHost: etrn.sendmail.org - sendmailMTAClassName: R - sendmailMTAClassValue: example.com - -the result will be similar to the aliases caution above. When the lookup -is done on etrn.sendmail.org, $={R} would contain all of the entries (from -both the cluster match and the host match). In other words, the effective -is additive. - -If you prefer not to use the default LDAP schema for your classes, you can -specify the map parameters when using the class command. For example: - - VIRTUSER_DOMAIN_FILE(`@ldap:-k (&(objectClass=virtHosts)(host=*)) -v host') - -Remember, macros can not be used in a class declaration as the binary does -not expand them. - - -+--------------+ -| LDAP ROUTING | -+--------------+ - -FEATURE(`ldap_routing') can be used to implement the IETF Internet Draft -LDAP Schema for Intranet Mail Routing -(draft-lachman-laser-ldap-mail-routing-01). This feature enables -LDAP-based rerouting of a particular address to either a different host -or a different address. The LDAP lookup is first attempted on the full -address (e.g., user@example.com) and then on the domain portion -(e.g., @example.com). Be sure to setup your domain for LDAP routing using -LDAPROUTE_DOMAIN(), e.g.: - - LDAPROUTE_DOMAIN(`example.com') - -Additionally, you can specify equivalent domains for LDAP routing using -LDAPROUTE_EQUIVALENT() and LDAPROUTE_EQUIVALENT_FILE(). 'Equivalent' -hostnames are mapped to $M (the masqueraded hostname for the server) before -the LDAP query. For example, if the mail is addressed to -user@host1.example.com, normally the LDAP lookup would only be done for -'user@host1.example.com' and '@host1.example.com'. However, if -LDAPROUTE_EQUIVALENT(`host1.example.com') is used, the lookups would also be -done on 'user@example.com' and '@example.com' after attempting the -host1.example.com lookups. - -By default, the feature will use the schemas as specified in the draft -and will not reject addresses not found by the LDAP lookup. However, -this behavior can be changed by giving additional arguments to the FEATURE() -command: - - FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, - <detail>, <nodomain>, <tempfail>) - -where <mailHost> is a map definition describing how to lookup an alternative -mail host for a particular address; <mailRoutingAddress> is a map definition -describing how to lookup an alternative address for a particular address; -the <bounce> argument, if present and not the word "passthru", dictates -that mail should be bounced if neither a mailHost nor mailRoutingAddress -is found, if set to "sendertoo", the sender will be rejected if not -found in LDAP; and <detail> indicates what actions to take if the address -contains +detail information -- `strip' tries the lookup with the +detail -and if no matches are found, strips the +detail and tries the lookup again; -`preserve', does the same as `strip' but if a mailRoutingAddress match is -found, the +detail information is copied to the new address; the <nodomain> -argument, if present, will prevent the @domain lookup if the full -address is not found in LDAP; the <tempfail> argument, if set to -"tempfail", instructs the rules to give an SMTP 4XX temporary -error if the LDAP server gives the MTA a temporary failure, or if set to -"queue" (the default), the MTA will locally queue the mail. - -The default <mailHost> map definition is: - - ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient) - (mailLocalAddress=%0)) - -The default <mailRoutingAddress> map definition is: - - ldap -1 -T<TMPF> -v mailRoutingAddress - -k (&(objectClass=inetLocalMailRecipient) - (mailLocalAddress=%0)) - -Note that neither includes the LDAP server hostname (-h server) or base DN -(-b o=org,c=COUNTRY), both necessary for LDAP queries. It is presumed that -your .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with -these settings. If this is not the case, the map definitions should be -changed as described above. The "-T<TMPF>" is required in any user -specified map definition to catch temporary errors. - -The following possibilities exist as a result of an LDAP lookup on an -address: - - mailHost is mailRoutingAddress is Results in - ----------- --------------------- ---------- - set to a set mail delivered to - "local" host mailRoutingAddress - - set to a not set delivered to - "local" host original address - - set to a set mailRoutingAddress - remote host relayed to mailHost - - set to a not set original address - remote host relayed to mailHost - - not set set mail delivered to - mailRoutingAddress - - not set not set delivered to - original address *OR* - bounced as unknown user - -The term "local" host above means the host specified is in class {w}. If -the result would mean sending the mail to a different host, that host is -looked up in the mailertable before delivery. - -Note that the last case depends on whether the third argument is given -to the FEATURE() command. The default is to deliver the message to the -original address. - -The LDAP entries should be set up with an objectClass of -inetLocalMailRecipient and the address be listed in a mailLocalAddress -attribute. If present, there must be only one mailHost attribute and it -must contain a fully qualified host name as its value. Similarly, if -present, there must be only one mailRoutingAddress attribute and it must -contain an RFC 822 compliant address. Some example LDAP records (in LDIF -format): - - dn: uid=tom, o=example.com, c=US - objectClass: inetLocalMailRecipient - mailLocalAddress: tom@example.com - mailRoutingAddress: thomas@mailhost.example.com - -This would deliver mail for tom@example.com to thomas@mailhost.example.com. - - dn: uid=dick, o=example.com, c=US - objectClass: inetLocalMailRecipient - mailLocalAddress: dick@example.com - mailHost: eng.example.com - -This would relay mail for dick@example.com to the same address but redirect -the mail to MX records listed for the host eng.example.com (unless the -mailertable overrides). - - dn: uid=harry, o=example.com, c=US - objectClass: inetLocalMailRecipient - mailLocalAddress: harry@example.com - mailHost: mktmail.example.com - mailRoutingAddress: harry@mkt.example.com - -This would relay mail for harry@example.com to the MX records listed for -the host mktmail.example.com using the new address harry@mkt.example.com -when talking to that host. - - dn: uid=virtual.example.com, o=example.com, c=US - objectClass: inetLocalMailRecipient - mailLocalAddress: @virtual.example.com - mailHost: server.example.com - mailRoutingAddress: virtual@example.com - -This would send all mail destined for any username @virtual.example.com to -the machine server.example.com's MX servers and deliver to the address -virtual@example.com on that relay machine. - - -+---------------------------------+ -| ANTI-SPAM CONFIGURATION CONTROL | -+---------------------------------+ - -The primary anti-spam features available in sendmail are: - -* Relaying is denied by default. -* Better checking on sender information. -* Access database. -* Header checks. - -Relaying (transmission of messages from a site outside your host (class -{w}) to another site except yours) is denied by default. Note that this -changed in sendmail 8.9; previous versions allowed relaying by default. -If you really want to revert to the old behaviour, you will need to use -FEATURE(`promiscuous_relay'). You can allow certain domains to relay -through your server by adding their domain name or IP address to class -{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database -(described below). Note that IPv6 addresses must be prefaced with "IPv6:". -The file consists (like any other file based class) of entries listed on -separate lines, e.g., - - sendmail.org - 128.32 - IPv6:2002:c0a8:02c7 - IPv6:2002:c0a8:51d2::23f4 - host.mydomain.com - [UNIX:localhost] - -Notice: the last entry allows relaying for connections via a UNIX -socket to the MTA/MSP. This might be necessary if your configuration -doesn't allow relaying by other means in that case, e.g., by having -localhost.$m in class {R} (make sure $m is not just a top level -domain). - -If you use - - FEATURE(`relay_entire_domain') - -then any host in any of your local domains (that is, class {m}) -will be relayed (that is, you will accept mail either to or from any -host in your domain). - -You can also allow relaying based on the MX records of the host -portion of an incoming recipient address by using - - FEATURE(`relay_based_on_MX') - -For example, if your server receives a recipient of user@domain.com -and domain.com lists your server in its MX records, the mail will be -accepted for relay to domain.com. This feature may cause problems -if MX lookups for the recipient domain are slow or time out. In that -case, mail will be temporarily rejected. It is usually better to -maintain a list of hosts/domains for which the server acts as relay. -Note also that this feature will stop spammers from using your host -to relay spam but it will not stop outsiders from using your server -as a relay for their site (that is, they set up an MX record pointing -to your mail server, and you will relay mail addressed to them -without any prior arrangement). Along the same lines, - - FEATURE(`relay_local_from') - -will allow relaying if the sender specifies a return path (i.e. -MAIL FROM: <user@domain>) domain which is a local domain. This is a -dangerous feature as it will allow spammers to spam using your mail -server by simply specifying a return address of user@your.domain.com. -It should not be used unless absolutely necessary. -A slightly better solution is - - FEATURE(`relay_mail_from') - -which allows relaying if the mail sender is listed as RELAY in the -access map. If an optional argument `domain' (this is the literal -word `domain', not a placeholder) is given, the domain portion of -the mail sender is also checked to allowing relaying. This option -only works together with the tag From: for the LHS of the access -map entries. This feature allows spammers to abuse your mail server -by specifying a return address that you enabled in your access file. -This may be harder to figure out for spammers, but it should not -be used unless necessary. Instead use SMTP AUTH or STARTTLS to -allow relaying for roaming users. - - -If source routing is used in the recipient address (e.g., -RCPT TO: <user%site.com@othersite.com>), sendmail will check -user@site.com for relaying if othersite.com is an allowed relay host -in either class {R}, class {m} if FEATURE(`relay_entire_domain') is used, -or the access database if FEATURE(`access_db') is used. To prevent -the address from being stripped down, use: - - FEATURE(`loose_relay_check') - -If you think you need to use this feature, you probably do not. This -should only be used for sites which have no control over the addresses -that they provide a gateway for. Use this FEATURE with caution as it -can allow spammers to relay through your server if not setup properly. - -NOTICE: It is possible to relay mail through a system which the anti-relay -rules do not prevent: the case of a system that does use FEATURE(`nouucp', -`nospecial') (system A) and relays local messages to a mail hub (e.g., via -LOCAL_RELAY or LUSER_RELAY) (system B). If system B doesn't use -FEATURE(`nouucp') at all, 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 -or reject those addresses. - -As of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has -an unresolvable domain (i.e., one that DNS, your local name service, -or special case rules in ruleset 3 cannot locate). This also applies -to addresses that use domain literals, e.g., <user@[1.2.3.4]>, if the -IP address can't be mapped to a host name. If you want to continue -to accept such domains, e.g., because you are inside a firewall that -has only a limited view of the Internet host name space (note that you -will not be able to return mail to them unless you have some "smart -host" forwarder), use - - FEATURE(`accept_unresolvable_domains') - -Alternatively, you can allow specific addresses by adding them to -the access map, e.g., - - From:unresolvable.domain OK - From:[1.2.3.4] OK - From:[1.2.4] OK - -Notice: domains which are temporarily unresolvable are (temporarily) -rejected with a 451 reply code. If those domains should be accepted -(which is discouraged) then you can use - - LOCAL_CONFIG - C{ResOk}TEMP - -sendmail will also refuse mail if the MAIL FROM: parameter is not -fully qualified (i.e., contains a domain as well as a user). If you -want to continue to accept such senders, use - - FEATURE(`accept_unqualified_senders') - -Setting the DaemonPortOptions modifier 'u' overrides the default behavior, -i.e., unqualified addresses are accepted even without this FEATURE. If -this FEATURE is not used, the DaemonPortOptions modifier 'f' can be used -to enforce fully qualified domain names. - -An ``access'' database can be created to accept or reject mail from -selected domains. For example, you may choose to reject all mail -originating from known spammers. To enable such a database, use - - FEATURE(`access_db') - -Notice: the access database is applied to the envelope addresses -and the connection information, not to the header. - -The FEATURE macro can accept as second parameter the key file -definition for the database; for example - - FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access_map') - -Notice: If a second argument is specified it must contain the option -`-T<TMPF>' as shown above. The optional third and fourth parameters -may be `skip' or `lookupdotdomain'. The former enables SKIP as -value part (see below), the latter is another way to enable the -feature of the same name (see above). - -Remember, since /etc/mail/access is a database, after creating the text -file as described below, you must use makemap to create the database -map. For example: - - makemap hash /etc/mail/access < /etc/mail/access - -The table itself uses e-mail addresses, domain names, and network -numbers as keys. Note that IPv6 addresses must be prefaced with "IPv6:". -For example, - - From:spammer@aol.com REJECT - From:cyberspammer.com REJECT - Connect:cyberspammer.com REJECT - Connect:TLD REJECT - Connect:192.168.212 REJECT - Connect:IPv6:2002:c0a8:02c7 RELAY - Connect:IPv6:2002:c0a8:51d2::23f4 REJECT - -would refuse mail from spammer@aol.com, any user from cyberspammer.com -(or any host within the cyberspammer.com domain), any host in the entire -top level domain TLD, 192.168.212.* network, and the IPv6 address -2002:c0a8:51d2::23f4. It would allow relay for the IPv6 network -2002:c0a8:02c7::/48. - -Entries in the access map should be tagged according to their type. -Three tags are available: - - Connect: connection information (${client_addr}, ${client_name}) - From: envelope sender - To: envelope recipient - -Notice: untagged entries are deprecated. - -If the required item is looked up in a map, it will be tried first -with the corresponding tag in front, then (as fallback to enable -backward compatibility) without any tag, unless the specific feature -requires a tag. For example, - - From:spammer@some.dom REJECT - To:friend.domain RELAY - Connect:friend.domain OK - Connect:from.domain RELAY - From:good@another.dom OK - From:another.dom REJECT - -This would deny mails from spammer@some.dom but you could still -send mail to that address even if FEATURE(`blacklist_recipients') -is enabled. Your system will allow relaying to friend.domain, but -not from it (unless enabled by other means). Connections from that -domain will be allowed even if it ends up in one of the DNS based -rejection lists. Relaying is enabled from from.domain but not to -it (since relaying is based on the connection information for -outgoing relaying, the tag Connect: must be used; for incoming -relaying, which is based on the recipient address, To: must be -used). The last two entries allow mails from good@another.dom but -reject mail from all other addresses with another.dom as domain -part. - - -The value part of the map can contain: - - OK Accept mail even if other rules in the running - ruleset would reject it, for example, if the domain - name is unresolvable. "Accept" does not mean - "relay", but at most acceptance for local - recipients. That is, OK allows less than RELAY. - RELAY Accept mail addressed to the indicated domain or - received from the indicated domain for relaying - through your SMTP server. RELAY also serves as - an implicit OK for the other checks. - REJECT Reject the sender or recipient with a general - purpose message. - DISCARD Discard the message completely using the - $#discard mailer. If it is used in check_compat, - it affects only the designated recipient, not - the whole message as it does in all other cases. - This should only be used if really necessary. - SKIP This can only be used for host/domain names - and IP addresses/nets. It will abort the current - search for this entry without accepting or rejecting - it but causing the default action. - ### any text where ### is an RFC 821 compliant error code and - "any text" is a message to return for the command. - The string should be quoted to avoid surprises, - e.g., sendmail may remove spaces otherwise. - This type is deprecated, use one of the two - ERROR: entries below instead. - ERROR:### any text - as above, but useful to mark error messages as such. - ERROR:D.S.N:### any text - where D.S.N is an RFC 1893 compliant error code - and the rest as above. - QUARANTINE:any text - Quarantine the message using the given text as the - quarantining reason. - -For example: - - From:cyberspammer.com ERROR:"550 We don't accept mail from spammers" - From:okay.cyberspammer.com OK - Connect:sendmail.org RELAY - To:sendmail.org RELAY - Connect:128.32 RELAY - Connect:128.32.2 SKIP - Connect:IPv6:1:2:3:4:5:6:7 RELAY - Connect:suspicious.example.com QUARANTINE:Mail from suspicious host - Connect:[127.0.0.3] OK - Connect:[IPv6:1:2:3:4:5:6:7:8] OK - -would accept mail from okay.cyberspammer.com, but would reject mail -from all other hosts at cyberspammer.com with the indicated message. -It would allow relaying mail from and to any hosts in the sendmail.org -domain, and allow relaying from the IPv6 1:2:3:4:5:6:7:* network -and from the 128.32.*.* network except for the 128.32.2.* network, -which shows how SKIP is useful to exempt subnets/subdomains. The -last two entries are for checks against ${client_name} if the IP -address doesn't resolve to a hostname (or is considered as "may be -forged"). That is, using square brackets means these are host -names, not network numbers. - -Warning: if you change the RFC 821 compliant error code from the default -value of 550, then you should probably also change the RFC 1893 compliant -error code to match it. For example, if you use - - To:user@example.com ERROR:450 mailbox full - -the error returned would be "450 5.0.0 mailbox full" which is wrong. -Use "ERROR:4.2.2:450 mailbox full" instead. - -Note, UUCP users may need to add hostname.UUCP to the access database -or class {R}. - -If you also use: - - FEATURE(`relay_hosts_only') - -then the above example will allow relaying for sendmail.org, but not -hosts within the sendmail.org domain. Note that this will also require -hosts listed in class {R} to be fully qualified host names. - -You can also use the access database to block sender addresses based on -the username portion of the address. For example: - - From:FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted - -Note that you must include the @ after the username to signify that -this database entry is for checking only the username portion of the -sender address. - -If you use: - - FEATURE(`blacklist_recipients') - -then you can add entries to the map for local users, hosts in your -domains, or addresses in your domain which should not receive mail: - - To:badlocaluser@ ERROR:550 Mailbox disabled for badlocaluser - To:host.my.TLD ERROR:550 That host does not accept mail - To:user@other.my.TLD ERROR:550 Mailbox disabled for this recipient - -This would prevent a recipient of badlocaluser in any of the local -domains (class {w}), any user at host.my.TLD, and the single address -user@other.my.TLD from receiving mail. Please note: a local username -must be now tagged with an @ (this is consistent with the check of -the sender address, and hence it is possible to distinguish between -hostnames and usernames). Enabling this feature will keep you from -sending mails to all addresses that have an error message or REJECT -as value part in the access map. Taking the example from above: - - spammer@aol.com REJECT - cyberspammer.com REJECT - -Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com. -That's why tagged entries should be used. - -There are several DNS based blacklists, the first of which was -the RBL (``Realtime Blackhole List'') run by the MAPS project, -see http://mail-abuse.org/. These are databases of spammers -maintained in DNS. To use such a database, specify - - FEATURE(`dnsbl') - -This will cause sendmail to reject mail from any site in the original -Realtime Blackhole List database. This default DNS blacklist, -blackholes.mail-abuse.org, is a service offered by the Mail Abuse -Prevention System (MAPS). As of July 31, 2001, MAPS is a subscription -service, so using that network address won't work if you haven't -subscribed. Contact MAPS to subscribe (http://mail-abuse.org/). - -You can specify an alternative RBL server to check by specifying an -argument to the FEATURE. The default error message is - - Rejected: IP-ADDRESS listed at SERVER - -where IP-ADDRESS and SERVER are replaced by the appropriate -information. A second argument can be used to specify a different -text. By default, temporary lookup failures are ignored and hence -cause the connection not to be rejected by the DNS based rejection -list. This behavior can be changed by specifying a third argument, -which must be either `t' or a full error message. For example: - - FEATURE(`dnsbl', `dnsbl.example.com', `', - `"451 Temporary lookup failure for " $&{client_addr} " in dnsbl.example.com"') - -If `t' is used, the error message is: - - 451 Temporary lookup failure of IP-ADDRESS at SERVER - -where IP-ADDRESS and SERVER are replaced by the appropriate -information. - -This FEATURE can be included several times to query different -DNS based rejection lists, e.g., the dial-up user list (see -http://mail-abuse.org/dul/). - -Notice: to avoid checking your own local domains against those -blacklists, use the access_db feature and add: - - Connect:10.1 OK - Connect:127.0.0.1 RELAY - -to the access map, where 10.1 is your local network. You may -want to use "RELAY" instead of "OK" to allow also relaying -instead of just disabling the DNS lookups in the blacklists. - - -The features described above make use of the check_relay, check_mail, -and check_rcpt rulesets. Note that check_relay checks the SMTP -client hostname and IP address when the connection is made to your -server. It does not check if a mail message is being relayed to -another server. That check is done in check_rcpt. If you wish to -include your own checks, you can put your checks in the rulesets -Local_check_relay, Local_check_mail, and Local_check_rcpt. For -example if you wanted to block senders with all numeric usernames -(i.e. 2312343@bigisp.com), you would use Local_check_mail and the -regex map: - - LOCAL_CONFIG - Kallnumbers regex -a@MATCH ^[0-9]+$ - - LOCAL_RULESETS - SLocal_check_mail - # check address against various regex checks - R$* $: $>Parse0 $>3 $1 - R$+ < @ bigisp.com. > $* $: $(allnumbers $1 $) - R@MATCH $#error $: 553 Header Error - -These rules are called with the original arguments of the corresponding -check_* ruleset. If the local ruleset returns $#OK, no further checking -is done by the features described above and the mail is accepted. If -the local ruleset resolves to a mailer (such as $#error or $#discard), -the appropriate action is taken. Other results starting with $# are -interpreted by sendmail and may lead to unspecified behavior. Note: do -NOT create a mailer with the name OK. Return values that do not start -with $# are ignored, i.e., normal processing continues. - -Delay all checks ----------------- - -By using FEATURE(`delay_checks') the rulesets check_mail and check_relay -will not be called when a client connects or issues a MAIL command, -respectively. Instead, those rulesets will be called by the check_rcpt -ruleset; they will be skipped if a sender has been authenticated using -a "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH(). -If check_mail returns an error then the RCPT TO command will be rejected -with that error. If it returns some other result starting with $# then -check_relay will be skipped. If the sender address (or a part of it) is -listed in the access map and it has a RHS of OK or RELAY, then check_relay -will be skipped. This has an interesting side effect: if your domain is -my.domain and you have - - my.domain RELAY - -in the access map, then any e-mail with a sender address of -<user@my.domain> will not be rejected by check_relay even though -it would match the hostname or IP address. This allows spammers -to get around DNS based blacklist by faking the sender address. To -avoid this problem you have to use tagged entries: - - To:my.domain RELAY - Connect:my.domain RELAY - -if you need those entries at all (class {R} may take care of them). - -FEATURE(`delay_checks') can take an optional argument: - - FEATURE(`delay_checks', `friend') - enables spamfriend test - FEATURE(`delay_checks', `hater') - enables spamhater test - -If such an argument is given, the recipient will be looked up in the -access map (using the tag Spam:). If the argument is `friend', then -the default behavior is to apply the other rulesets and make a SPAM -friend the exception. The rulesets check_mail and check_relay will be -skipped only if the recipient address is found and has RHS FRIEND. If -the argument is `hater', then the default behavior is to skip the rulesets -check_mail and check_relay and make a SPAM hater the exception. The -other two rulesets will be applied only if the recipient address is -found and has RHS HATER. - -This allows for simple exceptions from the tests, e.g., by activating -the friend option and having - - Spam:abuse@ FRIEND - -in the access map, mail to abuse@localdomain will get through (where -"localdomain" is any domain in class {w}). It is also possible to -specify a full address or an address with +detail: - - Spam:abuse@my.domain FRIEND - Spam:me+abuse@ FRIEND - Spam:spam.domain FRIEND - -Note: The required tag has been changed in 8.12 from To: to Spam:. -This change is incompatible to previous versions. However, you can -(for now) simply add the new entries to the access map, the old -ones will be ignored. As soon as you removed the old entries from -the access map, specify a third parameter (`n') to this feature and -the backward compatibility rules will not be in the generated .cf -file. - -Header Checks -------------- - -You can also reject mail on the basis of the contents of headers. -This is done by adding a ruleset call to the 'H' header definition command -in sendmail.cf. For example, this can be used to check the validity of -a Message-ID: header: - - LOCAL_CONFIG - HMessage-Id: $>CheckMessageId - - LOCAL_RULESETS - SCheckMessageId - R< $+ @ $+ > $@ OK - R$* $#error $: 553 Header Error - -The alternative format: - - HSubject: $>+CheckSubject - -that is, $>+ instead of $>, gives the full Subject: header including -comments to the ruleset (comments in parentheses () are stripped -by default). - -A default ruleset for headers which don't have a specific ruleset -defined for them can be given by: - - H*: $>CheckHdr - -Notice: -1. All rules act on tokens as explained in doc/op/op.{me,ps,txt}. -That may cause problems with simple header checks due to the -tokenization. It might be simpler to use a regex map and apply it -to $&{currHeader}. -2. There are no default rulesets coming with this distribution of -sendmail. You can either write your own or you can search the -WWW for examples, e.g., http://www.digitalanswers.org/check_local/ -3. When using a default ruleset for headers, the name of the header -currently being checked can be found in the $&{hdr_name} macro. - -After all of the headers are read, the check_eoh ruleset will be called for -any final header-related checks. The ruleset is called with the number of -headers and the size of all of the headers in bytes separated by $|. One -example usage is to reject messages which do not have a Message-Id: -header. However, the Message-Id: header is *NOT* a required header and is -not a guaranteed spam indicator. This ruleset is an example and should -probably not be used in production. - - LOCAL_CONFIG - Kstorage macro - HMessage-Id: $>CheckMessageId - - LOCAL_RULESETS - SCheckMessageId - # Record the presence of the header - R$* $: $(storage {MessageIdCheck} $@ OK $) $1 - R< $+ @ $+ > $@ OK - R$* $#error $: 553 Header Error - - Scheck_eoh - # Check the macro - R$* $: < $&{MessageIdCheck} > - # Clear the macro for the next message - R$* $: $(storage {MessageIdCheck} $) $1 - # Has a Message-Id: header - R< $+ > $@ OK - # Allow missing Message-Id: from local mail - R$* $: < $&{client_name} > - R< > $@ OK - R< $=w > $@ OK - # Otherwise, reject the mail - R$* $#error $: 553 Header Error - - -+--------------------+ -| CONNECTION CONTROL | -+--------------------+ - -The features ratecontrol and conncontrol allow to establish connection -limits per client IP address or net. These features can limit the -rate of connections (connections per time unit) or the number of -incoming SMTP connections, respectively. If enabled, appropriate -rulesets are called at the end of check_relay, i.e., after DNS -blacklists and generic access_db operations. The features require -FEATURE(`access_db') to be listed earlier in the mc file. - -Note: FEATURE(`delay_checks') delays those connection control checks -after a recipient address has been received, hence making these -connection control features less useful. To run the checks as early -as possible, specify the parameter `nodelay', e.g., - - FEATURE(`ratecontrol', `nodelay') - -In that case, FEATURE(`delay_checks') has no effect on connection -control (and it must be specified earlier in the mc file). - -An optional second argument `terminate' specifies whether the -rulesets should return the error code 421 which will cause -sendmail to terminate the session with that error if it is -returned from check_relay, i.e., not delayed as explained in -the previous paragraph. Example: - - FEATURE(`ratecontrol', `nodelay', `terminate') - - -+----------+ -| STARTTLS | -+----------+ - -In this text, cert will be used as an abbreviation for X.509 certificate, -DN (CN) is the distinguished (common) name of a cert, and CA is a -certification authority, which signs (issues) certs. - -For STARTTLS to be offered by sendmail you need to set at least -these variables (the file names and paths are just examples): - - define(`confCACERT_PATH', `/etc/mail/certs/') - define(`confCACERT', `/etc/mail/certs/CA.cert.pem') - define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem') - define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem') - -On systems which do not have the compile flag HASURANDOM set (see -sendmail/README) you also must set confRAND_FILE. - -See doc/op/op.{me,ps,txt} for more information about these options, -especially the sections ``Certificates for STARTTLS'' and ``PRNG for -STARTTLS''. - -Macros related to STARTTLS are: - -${cert_issuer} holds the DN of the CA (the cert issuer). -${cert_subject} holds the DN of the cert (called the cert subject). -${cn_issuer} holds the CN of the CA (the cert issuer). -${cn_subject} holds the CN of the cert (called the cert subject). -${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1, - TLSv1/SSLv3, SSLv3, SSLv2. -${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA, - EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA. -${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm - used for the connection. -${verify} holds the result of the verification of the presented cert. - Possible values are: - OK verification succeeded. - NO no cert presented. - NOT no cert requested. - FAIL cert presented but could not be verified, - e.g., the cert of the signing CA is missing. - NONE STARTTLS has not been performed. - TEMP temporary error occurred. - PROTOCOL protocol error occurred (SMTP level). - SOFTWARE STARTTLS handshake failed. -${server_name} the name of the server of the current outgoing SMTP - connection. -${server_addr} the address of the server of the current outgoing SMTP - connection. - -Relaying --------- - -SMTP STARTTLS can allow relaying for remote SMTP clients which have -successfully authenticated themselves. If the verification of the cert -failed (${verify} != OK), relaying is subject to the usual rules. -Otherwise the DN of the issuer is looked up in the access map using the -tag CERTISSUER. If the resulting value is RELAY, relaying is allowed. -If it is SUBJECT, the DN of the cert subject is looked up next in the -access map using the tag CERTSUBJECT. If the value is RELAY, relaying -is allowed. - -To make things a bit more flexible (or complicated), the values for -${cert_issuer} and ${cert_subject} can be optionally modified by regular -expressions defined in the m4 variables _CERT_REGEX_ISSUER_ and -_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in -rulesets and map lookups, they are modified as follows: each non-printable -character and the characters '<', '>', '(', ')', '"', '+', ' ' are replaced -by their HEX value with a leading '+'. For example: - -/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email= -darth+cert@endmail.org - -is encoded as: - -/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org - -(line breaks have been inserted for readability). - -The macros which are subject to this encoding are ${cert_subject}, -${cert_issuer}, ${cn_subject}, and ${cn_issuer}. - -Examples: - -To allow relaying for everyone who can present a cert signed by - -/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org - -simply use: - -CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org RELAY - -To allow relaying only for a subset of machines that have a cert signed by - -/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org - -use: - -CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org SUBJECT -CertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN= -DeathStar/Email=deathstar@endmail.org RELAY - -Notes: -- line breaks have been inserted after "CN=" for readability, - each tagged entry must be one (long) line in the access map. -- if OpenSSL 0.9.7 or newer is used then the "Email=" part of a DN - is replaced by "emailAddress=". - -Of course it is also possible to write a simple ruleset that allows -relaying for everyone who can present a cert that can be verified, e.g., - -LOCAL_RULESETS -SLocal_check_rcpt -R$* $: $&{verify} -ROK $# OK - -Allowing Connections --------------------- - -The rulesets tls_server, tls_client, and tls_rcpt are used to decide whether -an SMTP connection is accepted (or should continue). - -tls_server is called when sendmail acts as client after a STARTTLS command -(should) have been issued. The parameter is the value of ${verify}. - -tls_client is called when sendmail acts as server, after a STARTTLS command -has been issued, and from check_mail. The parameter is the value of -${verify} and STARTTLS or MAIL, respectively. - -Both rulesets behave the same. If no access map is in use, the connection -will be accepted unless ${verify} is SOFTWARE, in which case the connection -is always aborted. For tls_server/tls_client, ${client_name}/${server_name} -is looked up in the access map using the tag TLS_Srv/TLS_Clt, which is done -with the ruleset LookUpDomain. If no entry is found, ${client_addr} -(${server_addr}) is looked up in the access map (same tag, ruleset -LookUpAddr). If this doesn't result in an entry either, just the tag is -looked up in the access map (included the trailing colon). Notice: -requiring that e-mail is sent to a server only encrypted, e.g., via - -TLS_Srv:secure.domain ENCR:112 - -doesn't necessarily mean that e-mail sent to that domain is encrypted. -If the domain has multiple MX servers, e.g., - -secure.domain. IN MX 10 mail.secure.domain. -secure.domain. IN MX 50 mail.other.domain. - -then mail to user@secure.domain may go unencrypted to mail.other.domain. -tls_rcpt can be used to address this problem. - -tls_rcpt is called before a RCPT TO: command is sent. The parameter is the -current recipient. This ruleset is only defined if FEATURE(`access_db') -is selected. A recipient address user@domain is looked up in the access -map in four formats: TLS_Rcpt:user@domain, TLS_Rcpt:user@, TLS_Rcpt:domain, -and TLS_Rcpt:; the first match is taken. - -The result of the lookups is then used to call the ruleset TLS_connection, -which checks the requirement specified by the RHS in the access map against -the actual parameters of the current TLS connection, esp. ${verify} and -${cipher_bits}. Legal RHSs in the access map are: - -VERIFY verification must have succeeded -VERIFY:bits verification must have succeeded and ${cipher_bits} must - be greater than or equal bits. -ENCR:bits ${cipher_bits} must be greater than or equal bits. - -The RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary -or permanent error. The default is a temporary error code (403 4.7.0) -unless the macro TLS_PERM_ERR is set during generation of the .cf file. - -If a certain level of encryption is required, then it might also be -possible that this level is provided by the security layer from a SASL -algorithm, e.g., DIGEST-MD5. - -Furthermore, there can be a list of extensions added. Such a list -starts with '+' and the items are separated by '++'. Allowed -extensions are: - -CN:name name must match ${cn_subject} -CN ${server_name} must match ${cn_subject} -CS:name name must match ${cert_subject} -CI:name name must match ${cert_issuer} - -Example: e-mail sent to secure.example.com should only use an encrypted -connection. E-mail received from hosts within the laptop.example.com domain -should only be accepted if they have been authenticated. The host which -receives e-mail for darth@endmail.org must present a cert that uses the -CN smtp.endmail.org. - -TLS_Srv:secure.example.com ENCR:112 -TLS_Clt:laptop.example.com PERM+VERIFY:112 -TLS_Rcpt:darth@endmail.org ENCR:112+CN:smtp.endmail.org - - -Disabling STARTTLS And Setting SMTP Server Features ---------------------------------------------------- - -By default STARTTLS is used whenever possible. However, there are -some broken MTAs that don't properly implement STARTTLS. To be able -to send to (or receive from) those MTAs, the ruleset try_tls -(srv_features) can be used that work together with the access map. -Entries for the access map must be tagged with Try_TLS (Srv_Features) -and refer to the hostname or IP address of the connecting system. -A default case can be specified by using just the tag. For example, -the following entries in the access map: - - Try_TLS:broken.server NO - Srv_Features:my.domain v - Srv_Features: V - -will turn off STARTTLS when sending to broken.server (or any host -in that domain), and request a client certificate during the TLS -handshake only for hosts in my.domain. The valid entries on the RHS -for Srv_Features are listed in the Sendmail Installation and -Operations Guide. - - -Received: Header ----------------- - -The Received: header reveals whether STARTTLS has been used. It contains an -extra line: - -(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify}) - - -+---------------------+ -| SMTP AUTHENTICATION | -+---------------------+ - -The macros ${auth_authen}, ${auth_author}, and ${auth_type} can be -used in anti-relay rulesets to allow relaying for those users that -authenticated themselves. A very simple example is: - -SLocal_check_rcpt -R$* $: $&{auth_type} -R$+ $# OK - -which checks whether a user has successfully authenticated using -any available mechanism. Depending on the setup of the Cyrus SASL -library, more sophisticated rulesets might be required, e.g., - -SLocal_check_rcpt -R$* $: $&{auth_type} $| $&{auth_authen} -RDIGEST-MD5 $| $+@$=w $# OK - -to allow relaying for users that authenticated using DIGEST-MD5 -and have an identity in the local domains. - -The ruleset trust_auth is used to determine whether a given AUTH= -parameter (that is passed to this ruleset) should be trusted. This -ruleset may make use of the other ${auth_*} macros. Only if the -ruleset resolves to the error mailer, the AUTH= parameter is not -trusted. A user supplied ruleset Local_trust_auth can be written -to modify the default behavior, which only trust the AUTH= -parameter if it is identical to the authenticated user. - -Per default, relaying is allowed for any user who authenticated -via a "trusted" mechanism, i.e., one that is defined via -TRUST_AUTH_MECH(`list of mechanisms') -For example: -TRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5') - -If the selected mechanism provides a security layer the number of -bits used for the key of the symmetric cipher is stored in the -macro ${auth_ssf}. - -Providing SMTP AUTH Data when sendmail acts as Client ------------------------------------------------------ - -If sendmail acts as client, it needs some information how to -authenticate against another MTA. This information can be provided -by the ruleset authinfo or by the option DefaultAuthInfo. The -authinfo ruleset looks up {server_name} using the tag AuthInfo: in -the access map. If no entry is found, {server_addr} is looked up -in the same way and finally just the tag AuthInfo: to provide -default values. Note: searches for domain parts or IP nets are -only performed if the access map is used; if the authinfo feature -is used then only up to three lookups are performed (two exact -matches, one default). - -Note: If your daemon does client authentication when sending, and -if it uses either PLAIN or LOGIN authentication, then you *must* -prevent ordinary users from seeing verbose output. Do NOT install -sendmail set-user-ID. Use PrivacyOptions to turn off verbose output -("goaway" works for this). - -Notice: the default configuration file causes the option DefaultAuthInfo -to fail since the ruleset authinfo is in the .cf file. If you really -want to use DefaultAuthInfo (it is deprecated) then you have to -remove the ruleset. - -The RHS for an AuthInfo: entry in the access map should consists of a -list of tokens, each of which has the form: "TDstring" (including -the quotes). T is a tag which describes the item, D is a delimiter, -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 - -Example entries are: - -AuthInfo:other.dom "U:user" "I:user" "P:secret" "R:other.dom" "M:DIGEST-MD5" -AuthInfo:host.more.dom "U:user" "P=c2VjcmV0" - -User id 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. -If "R:" is not specified, realm defaults to $j. The list of mechanisms -defaults to those specified by AuthMechanisms. - -Since this map contains sensitive information, either the access -map must be unreadable by everyone but root (or the trusted user) -or FEATURE(`authinfo') must be used which provides a separate map. -Notice: It is not checked whether the map is actually -group/world-unreadable, this is left to the user. - -+--------------------------------+ -| ADDING NEW MAILERS OR RULESETS | -+--------------------------------+ - -Sometimes you may need to add entirely new mailers or rulesets. They -should be introduced with the constructs MAILER_DEFINITIONS and -LOCAL_RULESETS respectively. For example: - - MAILER_DEFINITIONS - Mmymailer, ... - ... - - LOCAL_RULESETS - Smyruleset - ... - -Local additions for the rulesets srv_features, try_tls, tls_rcpt, -tls_client, and tls_server can be made using LOCAL_SRV_FEATURES, -LOCAL_TRY_TLS, LOCAL_TLS_RCPT, LOCAL_TLS_CLIENT, and LOCAL_TLS_SERVER, -respectively. For example, to add a local ruleset that decides -whether to try STARTTLS in a sendmail client, use: - - LOCAL_TRY_TLS - R... - -Note: you don't need to add a name for the ruleset, it is implicitly -defined by using the appropriate macro. - - -+-------------------------+ -| ADDING NEW MAIL FILTERS | -+-------------------------+ - -Sendmail supports mail filters to filter incoming SMTP messages according -to the "Sendmail Mail Filter API" documentation. These filters can be -configured in your mc file using the two commands: - - MAIL_FILTER(`name', `equates') - INPUT_MAIL_FILTER(`name', `equates') - -The first command, MAIL_FILTER(), simply defines a filter with the given -name and equates. For example: - - MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') - -This creates the equivalent sendmail.cf entry: - - Xarchive, S=local:/var/run/archivesock, F=R - -The INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER -but also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name -of the filter such that the filter will actually be called by sendmail. - -For example, the two commands: - - INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') - INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') - -are equivalent to the three commands: - - MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') - MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') - define(`confINPUT_MAIL_FILTERS', `archive, spamcheck') - -In general, INPUT_MAIL_FILTER() should be used unless you need to define -more filters than you want to use for `confINPUT_MAIL_FILTERS'. - -Note that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER() -commands will clear the list created by the prior INPUT_MAIL_FILTER() -commands. - - -+-------------------------+ -| QUEUE GROUP DEFINITIONS | -+-------------------------+ - -In addition to the queue directory (which is the default queue group -called "mqueue"), sendmail can deal with multiple queue groups, which -are collections of queue directories with the same behaviour. Queue -groups can be defined using the command: - - QUEUE_GROUP(`name', `equates') - -For details about queue groups, please see doc/op/op.{me,ps,txt}. - -+-------------------------------+ -| NON-SMTP BASED CONFIGURATIONS | -+-------------------------------+ - -These configuration files are designed primarily for use by -SMTP-based sites. They may not be well tuned for UUCP-only or -UUCP-primarily nodes (the latter is defined as a small local net -connected to the rest of the world via UUCP). However, there is -one hook to handle some special cases. - -You can define a ``smart host'' that understands a richer address syntax -using: - - define(`SMART_HOST', `mailer:hostname') - -In this case, the ``mailer:'' defaults to "relay". Any messages that -can't be handled using the usual UUCP rules are passed to this host. - -If you are on a local SMTP-based net that connects to the outside -world via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules. -For example: - - define(`SMART_HOST', `uucp-new:uunet') - LOCAL_NET_CONFIG - R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3 - -This will cause all names that end in your domain name ($m) to be sent -via SMTP; anything else will be sent via uucp-new (smart UUCP) to uunet. -If you have FEATURE(`nocanonify'), you may need to omit the dots after -the $m. If you are running a local DNS inside your domain which is -not otherwise connected to the outside world, you probably want to -use: - - define(`SMART_HOST', `smtp:fire.wall.com') - LOCAL_NET_CONFIG - R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3 - -That is, send directly only to things you found in your DNS lookup; -anything else goes through SMART_HOST. - -You may need to turn off the anti-spam rules in order to accept -UUCP mail with FEATURE(`promiscuous_relay') and -FEATURE(`accept_unresolvable_domains'). - - -+-----------+ -| WHO AM I? | -+-----------+ - -Normally, the $j macro is automatically defined to be your fully -qualified domain name (FQDN). Sendmail does this by getting your -host name using gethostname and then calling gethostbyname on the -result. For example, in some environments gethostname returns -only the root of the host name (such as "foo"); gethostbyname is -supposed to return the FQDN ("foo.bar.com"). In some (fairly rare) -cases, gethostbyname may fail to return the FQDN. In this case -you MUST define confDOMAIN_NAME to be your fully qualified domain -name. This is usually done using: - - Dmbar.com - define(`confDOMAIN_NAME', `$w.$m')dnl - - -+-----------------------------------+ -| ACCEPTING MAIL FOR MULTIPLE NAMES | -+-----------------------------------+ - -If your host is known by several different names, you need to augment -class {w}. This is a list of names by which your host is known, and -anything sent to an address using a host name in this list will be -treated as local mail. You can do this in two ways: either create the -file /etc/mail/local-host-names containing a list of your aliases (one per -line), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add -``LOCAL_DOMAIN(`alias.host.name')''. Be sure you use the fully-qualified -name of the host, rather than a short name. - -If you want to have different address in different domains, take -a look at the virtusertable feature, which is also explained at -http://www.sendmail.org/virtual-hosting.html - - -+--------------------+ -| USING MAILERTABLES | -+--------------------+ - -To use FEATURE(`mailertable'), you will have to create an external -database containing the routing information for various domains. -For example, a mailertable file in text format might be: - - .my.domain xnet:%1.my.domain - uuhost1.my.domain uucp-new:uuhost1 - .bitnet smtp:relay.bit.net - -This should normally be stored in /etc/mail/mailertable. The actual -database version of the mailertable is built using: - - makemap hash /etc/mail/mailertable < /etc/mail/mailertable - -The semantics are simple. Any LHS entry that does not begin with -a dot matches the full host name indicated. LHS entries beginning -with a dot match anything ending with that domain name (including -the leading dot) -- that is, they can be thought of as having a -leading ".+" regular expression pattern for a non-empty sequence of -characters. Matching is done in order of most-to-least qualified --- for example, even though ".my.domain" is listed first in the -above example, an entry of "uuhost1.my.domain" will match the second -entry since it is more explicit. Note: e-mail to "user@my.domain" -does not match any entry in the above table. You need to have -something like: - - my.domain esmtp:host.my.domain - -The RHS should always be a "mailer:host" pair. The mailer is the -configuration name of a mailer (that is, an M line in the -sendmail.cf file). The "host" will be the hostname passed to -that mailer. In domain-based matches (that is, those with leading -dots) the "%1" may be used to interpolate the wildcarded part of -the host name. For example, the first line above sends everything -addressed to "anything.my.domain" to that same host name, but using -the (presumably experimental) xnet mailer. - -In some cases you may want to temporarily turn off MX records, -particularly on gateways. For example, you may want to MX -everything in a domain to one machine that then forwards it -directly. To do this, you might use the DNS configuration: - - *.domain. IN MX 0 relay.machine - -and on relay.machine use the mailertable: - - .domain smtp:[gateway.domain] - -The [square brackets] turn off MX records for this host only. -If you didn't do this, the mailertable would use the MX record -again, which would give you an MX loop. Note that the use of -wildcard MX records is almost always a bad idea. Please avoid -using them if possible. - - -+--------------------------------+ -| USING USERDB TO MAP FULL NAMES | -+--------------------------------+ - -The user database was not originally intended for mapping full names -to login names (e.g., Eric.Allman => eric), but some people are using -it that way. (it is recommended that you set up aliases for this -purpose instead -- since you can specify multiple alias files, this -is fairly easy.) The intent was to locate the default maildrop at -a site, but allow you to override this by sending to a specific host. - -If you decide to set up the user database in this fashion, it is -imperative that you not use FEATURE(`stickyhost') -- otherwise, -e-mail sent to Full.Name@local.host.name will be rejected. - -To build the internal form of the user database, use: - - makemap btree /etc/mail/userdb < /etc/mail/userdb.txt - -As a general rule, it is an extremely bad idea to using full names -as e-mail addresses, since they are not in any sense unique. For -example, the UNIX software-development community has at least two -well-known Peter Deutsches, and at one time Bell Labs had two -Stephen R. Bournes with offices along the same hallway. Which one -will be forced to suffer the indignity of being Stephen_R_Bourne_2? -The less famous of the two, or the one that was hired later? - -Finger should handle full names (and be fuzzy). Mail should use -handles, and not be fuzzy. - - -+--------------------------------+ -| MISCELLANEOUS SPECIAL FEATURES | -+--------------------------------+ - -Plussed users - Sometimes it is convenient to merge configuration on a - centralized mail machine, for example, to forward all - root mail to a mail server. In this case it might be - useful to be able to treat the root addresses as a class - of addresses with subtle differences. You can do this - using plussed users. For example, a client might include - the alias: - - root: root+client1@server - - On the server, this will match an alias for "root+client1". - If that is not found, the alias "root+*" will be tried, - then "root". - - -+----------------+ -| SECURITY NOTES | -+----------------+ - -A lot of sendmail security comes down to you. Sendmail 8 is much -more careful about checking for security problems than previous -versions, but there are some things that you still need to watch -for. In particular: - -* Make sure the aliases file is not writable except by trusted - system personnel. This includes both the text and database - version. - -* Make sure that other files that sendmail reads, such as the - mailertable, are only writable by trusted system personnel. - -* The queue directory should not be world writable PARTICULARLY - if your system allows "file giveaways" (that is, if a non-root - user can chown any file they own to any other user). - -* If your system allows file giveaways, DO NOT create a publically - writable directory for forward files. This will allow anyone - to steal anyone else's e-mail. Instead, create a script that - copies the .forward file from users' home directories once a - night (if you want the non-NFS-mounted forward directory). - -* If your system allows file giveaways, you'll find that - sendmail is much less trusting of :include: files -- in - particular, you'll have to have /SENDMAIL/ANY/SHELL/ in - /etc/shells before they will be trusted (that is, before - files and programs listed in them will be honored). - -In general, file giveaways are a mistake -- if you can turn them -off, do so. - - -+--------------------------------+ -| TWEAKING CONFIGURATION OPTIONS | -+--------------------------------+ - -There are a large number of configuration options that don't normally -need to be changed. However, if you feel you need to tweak them, -you can define the following M4 variables. Note that some of these -variables require formats that are defined in RFC 2821 or RFC 2822. -Before changing them you need to make sure you do not violate those -(and other relevant) RFCs. - -This list is shown in four columns: the name you define, the default -value for that definition, the option or macro that is affected -(either Ox for an option or Dx for a macro), and a brief description. -Greater detail of the semantics can be found in the Installation -and Operations Guide. - -Some options are likely to be deprecated in future versions -- that is, -the option is only included to provide back-compatibility. These are -marked with "*". - -Remember that these options are M4 variables, and hence may need to -be quoted. In particular, arguments with commas will usually have to -be ``double quoted, like this phrase'' to avoid having the comma -confuse things. This is common for alias file definitions and for -the read timeout. - -M4 Variable Name Configuration [Default] & Description -================ ============= ======================= -confMAILER_NAME $n macro [MAILER-DAEMON] The sender name used - for internally generated outgoing - messages. -confDOMAIN_NAME $j macro If defined, sets $j. This should - only be done if your system cannot - determine your local domain name, - and then it should be set to - $w.Foo.COM, where Foo.COM is your - domain name. -confCF_VERSION $Z macro If defined, this is appended to the - configuration version name. -confLDAP_CLUSTER ${sendmailMTACluster} macro - If defined, this is the LDAP - cluster to use for LDAP searches - as described above in ``USING LDAP - FOR ALIASES, MAPS, AND CLASSES''. -confFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an - internally generated From: address. -confRECEIVED_HEADER Received: - [$?sfrom $s $.$?_($?s$|from $.$_) - $.$?{auth_type}(authenticated) - $.by $j ($v/$Z)$?r with $r$. id $i$?u - for $u; $|; - $.$b] - The format of the Received: header - in messages passed through this host. - It is unwise to try to change this. -confMESSAGEID_HEADER Message-Id: [<$t.$i@$j>] The format of an - internally generated Message-Id: - header. -confCW_FILE Fw class [/etc/mail/local-host-names] Name - of file used to get the local - additions to class {w} (local host - names). -confCT_FILE Ft class [/etc/mail/trusted-users] Name of - file used to get the local additions - to class {t} (trusted users). -confCR_FILE FR class [/etc/mail/relay-domains] Name of - file used to get the local additions - to class {R} (hosts allowed to relay). -confTRUSTED_USERS Ct class [no default] Names of users to add to - the list of trusted users. This list - always includes root, uucp, and daemon. - See also FEATURE(`use_ct_file'). -confTRUSTED_USER TrustedUser [no default] Trusted user for file - ownership and starting the daemon. - Not to be confused with - confTRUSTED_USERS (see above). -confSMTP_MAILER - [esmtp] The mailer name used when - SMTP connectivity is required. - One of "smtp", "smtp8", - "esmtp", or "dsmtp". -confUUCP_MAILER - [uucp-old] The mailer to be used by - default for bang-format recipient - addresses. See also discussion of - class {U}, class {Y}, and class {Z} - in the MAILER(`uucp') section. -confLOCAL_MAILER - [local] The mailer name used when - local connectivity is required. - Almost always "local". -confRELAY_MAILER - [relay] The default mailer name used - for relaying any mail (e.g., to a - BITNET_RELAY, a SMART_HOST, or - whatever). This can reasonably be - "uucp-new" if you are on a - UUCP-connected site. -confSEVEN_BIT_INPUT SevenBitInput [False] Force input to seven bits? -confEIGHT_BIT_HANDLING EightBitMode [pass8] 8-bit data handling -confALIAS_WAIT AliasWait [10m] Time to wait for alias file - rebuild until you get bored and - decide that the apparently pending - rebuild failed. -confMIN_FREE_BLOCKS MinFreeBlocks [100] Minimum number of free blocks on - queue filesystem to accept SMTP mail. - (Prior to 8.7 this was minfree/maxsize, - where minfree was the number of free - blocks and maxsize was the maximum - message size. Use confMAX_MESSAGE_SIZE - for the second value now.) -confMAX_MESSAGE_SIZE MaxMessageSize [infinite] The maximum size of messages - that will be accepted (in bytes). -confBLANK_SUB BlankSub [.] Blank (space) substitution - character. -confCON_EXPENSIVE HoldExpensive [False] Avoid connecting immediately - to mailers marked expensive. -confCHECKPOINT_INTERVAL CheckpointInterval - [10] Checkpoint queue files every N - recipients. -confDELIVERY_MODE DeliveryMode [background] Default delivery mode. -confERROR_MODE ErrorMode [print] Error message mode. -confERROR_MESSAGE ErrorHeader [undefined] Error message header/file. -confSAVE_FROM_LINES SaveFromLine Save extra leading From_ lines. -confTEMP_FILE_MODE TempFileMode [0600] Temporary file mode. -confMATCH_GECOS MatchGECOS [False] Match GECOS field. -confMAX_HOP MaxHopCount [25] Maximum hop count. -confIGNORE_DOTS* IgnoreDots [False; always False in -bs or -bd - mode] Ignore dot as terminator for - incoming messages? -confBIND_OPTS ResolverOptions [undefined] Default options for DNS - resolver. -confMIME_FORMAT_ERRORS* SendMimeErrors [True] Send error messages as MIME- - encapsulated messages per RFC 1344. -confFORWARD_PATH ForwardPath [$z/.forward.$w:$z/.forward] - The colon-separated list of places to - search for .forward files. N.B.: see - the Security Notes section. -confMCI_CACHE_SIZE ConnectionCacheSize - [2] Size of open connection cache. -confMCI_CACHE_TIMEOUT ConnectionCacheTimeout - [5m] Open connection cache timeout. -confHOST_STATUS_DIRECTORY HostStatusDirectory - [undefined] If set, host status is kept - on disk between sendmail runs in the - named directory tree. This need not be - a full pathname, in which case it is - interpreted relative to the queue - directory. -confSINGLE_THREAD_DELIVERY SingleThreadDelivery - [False] If this option and the - HostStatusDirectory option are both - set, single thread deliveries to other - hosts. That is, don't allow any two - sendmails on this host to connect - simultaneously to any other single - host. This can slow down delivery in - some cases, in particular since a - cached but otherwise idle connection - to a host will prevent other sendmails - from connecting to the other host. -confUSE_ERRORS_TO* UseErrorsTo [False] Use the Errors-To: header to - deliver error messages. This should - not be necessary because of general - acceptance of the envelope/header - distinction. -confLOG_LEVEL LogLevel [9] Log level. -confME_TOO MeToo [True] Include sender in group - expansions. This option is - deprecated and will be removed from - a future version. -confCHECK_ALIASES CheckAliases [False] Check RHS of aliases when - running newaliases. Since this does - DNS lookups on every address, it can - slow down the alias rebuild process - considerably on large alias files. -confOLD_STYLE_HEADERS* OldStyleHeaders [True] Assume that headers without - special chars are old style. -confPRIVACY_FLAGS PrivacyOptions [authwarnings] Privacy flags. -confCOPY_ERRORS_TO PostmasterCopy [undefined] Address for additional - copies of all error messages. -confQUEUE_FACTOR QueueFactor [600000] Slope of queue-only function. -confQUEUE_FILE_MODE QueueFileMode [undefined] Default permissions for - queue files (octal). If not set, - sendmail uses 0600 unless its real - and effective uid are different in - which case it uses 0644. -confDONT_PRUNE_ROUTES DontPruneRoutes [False] Don't prune down route-addr - syntax addresses to the minimum - possible. -confSAFE_QUEUE* SuperSafe [True] Commit all messages to disk - before forking. -confTO_INITIAL Timeout.initial [5m] The timeout waiting for a response - on the initial connect. -confTO_CONNECT Timeout.connect [0] The timeout waiting for an initial - connect() to complete. This can only - shorten connection timeouts; the kernel - silently enforces an absolute maximum - (which varies depending on the system). -confTO_ICONNECT Timeout.iconnect - [undefined] Like Timeout.connect, but - applies only to the very first attempt - to connect to a host in a message. - This allows a single very fast pass - followed by more careful delivery - attempts in the future. -confTO_ACONNECT Timeout.aconnect - [0] The overall timeout waiting for - all connection for a single delivery - attempt to succeed. If 0, no overall - limit is applied. -confTO_HELO Timeout.helo [5m] The timeout waiting for a response - to a HELO or EHLO command. -confTO_MAIL Timeout.mail [10m] The timeout waiting for a - response to the MAIL command. -confTO_RCPT Timeout.rcpt [1h] The timeout waiting for a response - to the RCPT command. -confTO_DATAINIT Timeout.datainit - [5m] The timeout waiting for a 354 - response from the DATA command. -confTO_DATABLOCK Timeout.datablock - [1h] The timeout waiting for a block - during DATA phase. -confTO_DATAFINAL Timeout.datafinal - [1h] The timeout waiting for a response - to the final "." that terminates a - message. -confTO_RSET Timeout.rset [5m] The timeout waiting for a response - to the RSET command. -confTO_QUIT Timeout.quit [2m] The timeout waiting for a response - to the QUIT command. -confTO_MISC Timeout.misc [2m] The timeout waiting for a response - to other SMTP commands. -confTO_COMMAND Timeout.command [1h] In server SMTP, the timeout - waiting for a command to be issued. -confTO_IDENT Timeout.ident [5s] The timeout waiting for a - response to an IDENT query. -confTO_FILEOPEN Timeout.fileopen - [60s] The timeout waiting for a file - (e.g., :include: file) to be opened. -confTO_LHLO Timeout.lhlo [2m] The timeout waiting for a response - to an LMTP LHLO command. -confTO_AUTH Timeout.auth [10m] The timeout waiting for a - response in an AUTH dialogue. -confTO_STARTTLS Timeout.starttls - [1h] The timeout waiting for a - response to an SMTP STARTTLS command. -confTO_CONTROL Timeout.control - [2m] The timeout for a complete - control socket transaction to complete. -confTO_QUEUERETURN Timeout.queuereturn - [5d] The timeout before a message is - returned as undeliverable. -confTO_QUEUERETURN_NORMAL - Timeout.queuereturn.normal - [undefined] As above, for normal - priority messages. -confTO_QUEUERETURN_URGENT - Timeout.queuereturn.urgent - [undefined] As above, for urgent - priority messages. -confTO_QUEUERETURN_NONURGENT - Timeout.queuereturn.non-urgent - [undefined] As above, for non-urgent - (low) priority messages. -confTO_QUEUERETURN_DSN - Timeout.queuereturn.dsn - [undefined] As above, for delivery - status notification messages. -confTO_QUEUEWARN Timeout.queuewarn - [4h] The timeout before a warning - message is sent to the sender telling - them that the message has been - deferred. -confTO_QUEUEWARN_NORMAL Timeout.queuewarn.normal - [undefined] As above, for normal - priority messages. -confTO_QUEUEWARN_URGENT Timeout.queuewarn.urgent - [undefined] As above, for urgent - priority messages. -confTO_QUEUEWARN_NONURGENT - Timeout.queuewarn.non-urgent - [undefined] As above, for non-urgent - (low) priority messages. -confTO_QUEUEWARN_DSN - Timeout.queuewarn.dsn - [undefined] As above, for delivery - status notification messages. -confTO_HOSTSTATUS Timeout.hoststatus - [30m] How long information about host - statuses will be maintained before it - is considered stale and the host should - be retried. This applies both within - a single queue run and to persistent - information (see below). -confTO_RESOLVER_RETRANS Timeout.resolver.retrans - [varies] Sets the resolver's - retransmission time interval (in - seconds). Sets both - Timeout.resolver.retrans.first and - Timeout.resolver.retrans.normal. -confTO_RESOLVER_RETRANS_FIRST Timeout.resolver.retrans.first - [varies] Sets the resolver's - retransmission time interval (in - seconds) for the first attempt to - deliver a message. -confTO_RESOLVER_RETRANS_NORMAL Timeout.resolver.retrans.normal - [varies] Sets the resolver's - retransmission time interval (in - seconds) for all resolver lookups - except the first delivery attempt. -confTO_RESOLVER_RETRY Timeout.resolver.retry - [varies] Sets the number of times - to retransmit a resolver query. - Sets both - Timeout.resolver.retry.first and - Timeout.resolver.retry.normal. -confTO_RESOLVER_RETRY_FIRST Timeout.resolver.retry.first - [varies] Sets the number of times - to retransmit a resolver query for - the first attempt to deliver a - message. -confTO_RESOLVER_RETRY_NORMAL Timeout.resolver.retry.normal - [varies] Sets the number of times - to retransmit a resolver query for - all resolver lookups except the - first delivery attempt. -confTIME_ZONE TimeZoneSpec [USE_SYSTEM] Time zone info -- can be - USE_SYSTEM to use the system's idea, - USE_TZ to use the user's TZ envariable, - or something else to force that value. -confDEF_USER_ID DefaultUser [1:1] Default user id. -confUSERDB_SPEC UserDatabaseSpec - [undefined] User database - specification. -confFALLBACK_MX FallbackMXhost [undefined] Fallback MX host. -confFALLBACK_SMARTHOST FallbackSmartHost - [undefined] Fallback smart host. -confTRY_NULL_MX_LIST TryNullMXList [False] If this host is the best MX - for a host and other arrangements - haven't been made, try connecting - to the host directly; normally this - would be a config error. -confQUEUE_LA QueueLA [varies] Load average at which - queue-only function kicks in. - Default values is (8 * numproc) - where numproc is the number of - processors online (if that can be - determined). -confREFUSE_LA RefuseLA [varies] Load average at which - incoming SMTP connections are - refused. Default values is (12 * - numproc) where numproc is the - number of processors online (if - that can be determined). -confREJECT_LOG_INTERVAL RejectLogInterval [3h] Log interval when - refusing connections for this long. -confDELAY_LA DelayLA [0] Load average at which sendmail - will sleep for one second on most - SMTP commands and before accepting - connections. 0 means no limit. -confMAX_ALIAS_RECURSION MaxAliasRecursion - [10] Maximum depth of alias recursion. -confMAX_DAEMON_CHILDREN MaxDaemonChildren - [undefined] The maximum number of - children the daemon will permit. After - this number, connections will be - rejected. If not set or <= 0, there is - no limit. -confMAX_HEADERS_LENGTH MaxHeadersLength - [32768] Maximum length of the sum - of all headers. -confMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength - [undefined] Maximum length of - certain MIME header field values. -confCONNECTION_RATE_THROTTLE ConnectionRateThrottle - [undefined] The maximum number of - connections permitted per second per - daemon. After this many connections - are accepted, further connections - will be delayed. If not set or <= 0, - there is no limit. -confCONNECTION_RATE_WINDOW_SIZE ConnectionRateWindowSize - [60s] Define the length of the - interval for which the number of - incoming connections is maintained. -confWORK_RECIPIENT_FACTOR - RecipientFactor [30000] Cost of each recipient. -confSEPARATE_PROC ForkEachJob [False] Run all deliveries in a - separate process. -confWORK_CLASS_FACTOR ClassFactor [1800] Priority multiplier for class. -confWORK_TIME_FACTOR RetryFactor [90000] Cost of each delivery attempt. -confQUEUE_SORT_ORDER QueueSortOrder [Priority] Queue sort algorithm: - Priority, Host, Filename, Random, - Modification, or Time. -confMIN_QUEUE_AGE MinQueueAge [0] The minimum amount of time a job - must sit in the queue between queue - runs. This allows you to set the - queue run interval low for better - responsiveness without trying all - jobs in each run. -confDEF_CHAR_SET DefaultCharSet [unknown-8bit] When converting - unlabeled 8 bit input to MIME, the - character set to use by default. -confSERVICE_SWITCH_FILE ServiceSwitchFile - [/etc/mail/service.switch] The file - to use for the service switch on - systems that do not have a - system-defined switch. -confHOSTS_FILE HostsFile [/etc/hosts] The file to use when doing - "file" type access of hosts names. -confDIAL_DELAY DialDelay [0s] If a connection fails, wait this - long and try again. Zero means "don't - retry". This is to allow "dial on - demand" connections to have enough time - to complete a connection. -confNO_RCPT_ACTION NoRecipientAction - [none] What to do if there are no legal - recipient fields (To:, Cc: or Bcc:) - in the message. Legal values can - be "none" to just leave the - nonconforming message as is, "add-to" - to add a To: header with all the - known recipients (which may expose - blind recipients), "add-apparently-to" - to do the same but use Apparently-To: - instead of To: (strongly discouraged - in accordance with IETF standards), - "add-bcc" to add an empty Bcc: - header, or "add-to-undisclosed" to - add the header - ``To: undisclosed-recipients:;''. -confSAFE_FILE_ENV SafeFileEnvironment - [undefined] If set, sendmail will do a - chroot() into this directory before - writing files. -confCOLON_OK_IN_ADDR ColonOkInAddr [True unless Configuration Level > 6] - If set, colons are treated as a regular - character in addresses. If not set, - they are treated as the introducer to - the RFC 822 "group" syntax. Colons are - handled properly in route-addrs. This - option defaults on for V5 and lower - configuration files. -confMAX_QUEUE_RUN_SIZE MaxQueueRunSize [0] If set, limit the maximum size of - any given queue run to this number of - entries. Essentially, this will stop - reading each queue directory after this - number of entries are reached; it does - _not_ pick the highest priority jobs, - so this should be as large as your - system can tolerate. If not set, there - is no limit. -confMAX_QUEUE_CHILDREN MaxQueueChildren - [undefined] Limits the maximum number - of concurrent queue runners active. - This is to keep system resources used - within a reasonable limit. Relates to - Queue Groups and ForkEachJob. -confMAX_RUNNERS_PER_QUEUE MaxRunnersPerQueue - [1] Only active when MaxQueueChildren - defined. Controls the maximum number - of queue runners (aka queue children) - active at the same time in a work - group. See also MaxQueueChildren. -confDONT_EXPAND_CNAMES DontExpandCnames - [False] If set, $[ ... $] lookups that - do DNS based lookups do not expand - CNAME records. This currently violates - the published standards, but the IETF - seems to be moving toward legalizing - this. For example, if "FTP.Foo.ORG" - is a CNAME for "Cruft.Foo.ORG", then - with this option set a lookup of - "FTP" will return "FTP.Foo.ORG"; if - clear it returns "Cruft.FOO.ORG". N.B. - you may not see any effect until your - downstream neighbors stop doing CNAME - lookups as well. -confFROM_LINE UnixFromLine [From $g $d] The From_ line used - when sending to files or programs. -confSINGLE_LINE_FROM_HEADER SingleLineFromHeader - [False] From: lines that have - embedded newlines are unwrapped - onto one line. -confALLOW_BOGUS_HELO AllowBogusHELO [False] Allow HELO SMTP command that - does not include a host name. -confMUST_QUOTE_CHARS MustQuoteChars [.'] Characters to be quoted in a full - name phrase (@,;:\()[] are automatic). -confOPERATORS OperatorChars [.:%@!^/[]+] Address operator - characters. -confSMTP_LOGIN_MSG SmtpGreetingMessage - [$j Sendmail $v/$Z; $b] - The initial (spontaneous) SMTP - greeting message. The word "ESMTP" - will be inserted between the first and - second words to convince other - sendmails to try to speak ESMTP. -confDONT_INIT_GROUPS DontInitGroups [False] If set, the initgroups(3) - routine will never be invoked. You - might want to do this if you are - running NIS and you have a large group - map, since this call does a sequential - scan of the map; in a large site this - can cause your ypserv to run - essentially full time. If you set - this, agents run on behalf of users - will only have their primary - (/etc/passwd) group permissions. -confUNSAFE_GROUP_WRITES UnsafeGroupWrites - [False] If set, group-writable - :include: and .forward files are - considered "unsafe", that is, programs - and files cannot be directly referenced - from such files. World-writable files - are always considered unsafe. -confCONNECT_ONLY_TO ConnectOnlyTo [undefined] override connection - address (for testing). -confCONTROL_SOCKET_NAME ControlSocketName - [undefined] Control socket for daemon - management. -confDOUBLE_BOUNCE_ADDRESS DoubleBounceAddress - [postmaster] If an error occurs when - sending an error message, send that - "double bounce" error message to this - address. If it expands to an empty - string, double bounces are dropped. -confDEAD_LETTER_DROP DeadLetterDrop [undefined] Filename to save bounce - messages which could not be returned - to the user or sent to postmaster. - If not set, the queue file will - be renamed. -confRRT_IMPLIES_DSN RrtImpliesDsn [False] Return-Receipt-To: header - implies DSN request. -confRUN_AS_USER RunAsUser [undefined] If set, become this user - when reading and delivering mail. - Causes all file reads (e.g., .forward - and :include: files) to be done as - this user. Also, all programs will - be run as this user, and all output - files will be written as this user. -confMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage - [infinite] If set, allow no more than - the specified number of recipients in - an SMTP envelope. Further recipients - receive a 452 error code (i.e., they - are deferred for the next delivery - attempt). -confBAD_RCPT_THROTTLE BadRcptThrottle [infinite] If set and the specified - number of recipients in a single SMTP - transaction have been rejected, sleep - for one second after each subsequent - RCPT command in that transaction. -confDONT_PROBE_INTERFACES DontProbeInterfaces - [False] If set, sendmail will _not_ - insert the names and addresses of any - local interfaces into class {w} - (list of known "equivalent" addresses). - If you set this, you must also include - some support for these addresses (e.g., - in a mailertable entry) -- otherwise, - mail to addresses in this list will - bounce with a configuration error. - If set to "loopback" (without - quotes), sendmail will skip - loopback interfaces (e.g., "lo0"). -confPID_FILE PidFile [system dependent] Location of pid - file. -confPROCESS_TITLE_PREFIX ProcessTitlePrefix - [undefined] Prefix string for the - process title shown on 'ps' listings. -confDONT_BLAME_SENDMAIL DontBlameSendmail - [safe] Override sendmail's file - safety checks. This will definitely - compromise system security and should - not be used unless absolutely - necessary. -confREJECT_MSG - [550 Access denied] The message - given if the access database contains - REJECT in the value portion. -confRELAY_MSG - [550 Relaying denied] The message - given if an unauthorized relaying - attempt is rejected. -confDF_BUFFER_SIZE DataFileBufferSize - [4096] The maximum size of a - memory-buffered data (df) file - before a disk-based file is used. -confXF_BUFFER_SIZE XScriptFileBufferSize - [4096] The maximum size of a - memory-buffered transcript (xf) - file before a disk-based file is - used. -confAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5 - CRAM-MD5] List of authentication - mechanisms for AUTH (separated by - spaces). The advertised list of - authentication mechanisms will be the - intersection of this list and the list - of available mechanisms as determined - by the Cyrus SASL library. -confAUTH_REALM AuthRealm [undefined] The authentication realm - that is passed to the Cyrus SASL - library. If no realm is specified, - $j is used. -confDEF_AUTH_INFO DefaultAuthInfo [undefined] Name of file that contains - authentication information for - outgoing connections. This file must - contain the user id, the authorization - id, the password (plain text), the - realm to use, and the list of - mechanisms to try, each on a separate - line and must be readable by root (or - the trusted user) only. If no realm - is specified, $j is used. If no - mechanisms are given in the file, - AuthMechanisms is used. Notice: this - option is deprecated and will be - removed in future versions; it doesn't - work for the MSP since it can't read - the file. Use the authinfo ruleset - instead. See also the section SMTP - AUTHENTICATION. -confAUTH_OPTIONS AuthOptions [undefined] If this option is 'A' - then the AUTH= parameter for the - MAIL FROM command is only issued - when authentication succeeded. - See doc/op/op.me for more options - and details. -confAUTH_MAX_BITS AuthMaxBits [INT_MAX] Limit the maximum encryption - strength for the security layer in - SMTP AUTH (SASL). Default is - essentially unlimited. -confTLS_SRV_OPTIONS TLSSrvOptions If this option is 'V' no client - verification is performed, i.e., - the server doesn't ask for a - certificate. -confLDAP_DEFAULT_SPEC LDAPDefaultSpec [undefined] Default map - specification for LDAP maps. The - value should only contain LDAP - specific settings such as "-h host - -p port -d bindDN", etc. The - settings will be used for all LDAP - maps unless they are specified in - the individual map specification - ('K' command). -confCACERT_PATH CACertPath [undefined] Path to directory - with certs of CAs. -confCACERT CACertFile [undefined] File containing one CA - cert. -confSERVER_CERT ServerCertFile [undefined] File containing the - cert of the server, i.e., this cert - is used when sendmail acts as - server. -confSERVER_KEY ServerKeyFile [undefined] File containing the - private key belonging to the server - cert. -confCLIENT_CERT ClientCertFile [undefined] File containing the - cert of the client, i.e., this cert - is used when sendmail acts as - client. -confCLIENT_KEY ClientKeyFile [undefined] File containing the - private key belonging to the client - cert. -confCRL CRLFile [undefined] File containing certificate - revocation status, useful for X.509v3 - authentication. Note that CRL requires - at least OpenSSL version 0.9.7. -confDH_PARAMETERS DHParameters [undefined] File containing the - DH parameters. -confRAND_FILE RandFile [undefined] File containing random - data (use prefix file:) or the - name of the UNIX socket if EGD is - used (use prefix egd:). STARTTLS - requires this option if the compile - flag HASURANDOM is not set (see - sendmail/README). -confNICE_QUEUE_RUN NiceQueueRun [undefined] If set, the priority of - queue runners is set the given value - (nice(3)). -confDIRECT_SUBMISSION_MODIFIERS DirectSubmissionModifiers - [undefined] Defines {daemon_flags} - for direct submissions. -confUSE_MSP UseMSP [false] Use as mail submission - program, see sendmail/SECURITY. -confDELIVER_BY_MIN DeliverByMin [0] Minimum time for Deliver By - SMTP Service Extension (RFC 2852). -confREQUIRES_DIR_FSYNC RequiresDirfsync [true] RequiresDirfsync can - be used to turn off the compile time - flag REQUIRES_DIR_FSYNC at runtime. - See sendmail/README for details. -confSHARED_MEMORY_KEY SharedMemoryKey [0] Key for shared memory. -confFAST_SPLIT FastSplit [1] If set to a value greater than - zero, the initial MX lookups on - addresses is suppressed when they - are sorted which may result in - faster envelope splitting. If the - mail is submitted directly from the - command line, then the value also - limits the number of processes to - deliver the envelopes. -confMAILBOX_DATABASE MailboxDatabase [pw] Type of lookup to find - information about local mailboxes. -confDEQUOTE_OPTS - [empty] Additional options for the - dequote map. -confINPUT_MAIL_FILTERS InputMailFilters - A comma separated list of filters - which determines which filters and - the invocation sequence are - contacted for incoming SMTP - messages. If none are set, no - filters will be contacted. -confMILTER_LOG_LEVEL Milter.LogLevel [9] Log level for input mail filter - actions, defaults to LogLevel. -confMILTER_MACROS_CONNECT Milter.macros.connect - [j, _, {daemon_name}, {if_name}, - {if_addr}] Macros to transmit to - milters when a session connection - starts. -confMILTER_MACROS_HELO Milter.macros.helo - [{tls_version}, {cipher}, - {cipher_bits}, {cert_subject}, - {cert_issuer}] Macros to transmit to - milters after HELO/EHLO command. -confMILTER_MACROS_ENVFROM Milter.macros.envfrom - [i, {auth_type}, {auth_authen}, - {auth_ssf}, {auth_author}, - {mail_mailer}, {mail_host}, - {mail_addr}] Macros to transmit to - milters after MAIL FROM command. -confMILTER_MACROS_ENVRCPT Milter.macros.envrcpt - [{rcpt_mailer}, {rcpt_host}, - {rcpt_addr}] Macros to transmit to - milters after RCPT TO command. -confMILTER_MACROS_EOM Milter.macros.eom - [{msg_id}] Macros to transmit to - milters after DATA command. - - -See also the description of OSTYPE for some parameters that can be -tweaked (generally pathnames to mailers). - -ClientPortOptions and DaemonPortOptions are special cases since multiple -clients/daemons can be defined. This can be done via - - CLIENT_OPTIONS(`field1=value1,field2=value2,...') - DAEMON_OPTIONS(`field1=value1,field2=value2,...') - -Note that multiple CLIENT_OPTIONS() commands (and therefore multiple -ClientPortOptions settings) are allowed in order to give settings for each -protocol family (e.g., one for Family=inet and one for Family=inet6). A -restriction placed on one family only affects outgoing connections on that -particular family. - -If DAEMON_OPTIONS is not used, then the default is - - DAEMON_OPTIONS(`Port=smtp, Name=MTA') - DAEMON_OPTIONS(`Port=587, Name=MSA, M=E') - -If you use one DAEMON_OPTIONS macro, it will alter the parameters -of the first of these. The second will still be defaulted; it -represents a "Message Submission Agent" (MSA) as defined by RFC -2476 (see below). To turn off the default definition for the MSA, -use FEATURE(`no_default_msa') (see also FEATURES). If you use -additional DAEMON_OPTIONS macros, they will add additional daemons. - -Example 1: To change the port for the SMTP listener, while -still using the MSA default, use - DAEMON_OPTIONS(`Port=925, Name=MTA') - -Example 2: To change the port for the MSA daemon, while still -using the default SMTP port, use - FEATURE(`no_default_msa') - DAEMON_OPTIONS(`Name=MTA') - DAEMON_OPTIONS(`Port=987, Name=MSA, M=E') - -Note that if the first of those DAEMON_OPTIONS lines were omitted, then -there would be no listener on the standard SMTP port. - -Example 3: To listen on both IPv4 and IPv6 interfaces, use - - DAEMON_OPTIONS(`Name=MTA-v4, Family=inet') - DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6') - -A "Message Submission Agent" still uses all of the same rulesets for -processing the message (and therefore still allows message rejection via -the check_* rulesets). In accordance with the RFC, the MSA will ensure -that all domains in envelope addresses are fully qualified if the message -is relayed to another MTA. It will also enforce the normal address syntax -rules and log error messages. Additionally, by using the M=a modifier you -can require authentication before messages are accepted by the MSA. -Notice: Do NOT use the 'a' modifier on a public accessible MTA! Finally, -the M=E modifier shown above disables ETRN as required by RFC 2476. - -Mail filters can be defined using the INPUT_MAIL_FILTER() and MAIL_FILTER() -commands: - - INPUT_MAIL_FILTER(`sample', `S=local:/var/run/f1.sock') - MAIL_FILTER(`myfilter', `S=inet:3333@localhost') - -The INPUT_MAIL_FILTER() command causes the filter(s) to be called in the -same order they were specified by also setting confINPUT_MAIL_FILTERS. A -filter can be defined without adding it to the input filter list by using -MAIL_FILTER() instead of INPUT_MAIL_FILTER() in your .mc file. -Alternatively, you can reset the list of filters and their order by setting -confINPUT_MAIL_FILTERS option after all INPUT_MAIL_FILTER() commands in -your .mc file. - - -+----------------------------+ -| MESSAGE SUBMISSION PROGRAM | -+----------------------------+ - -The purpose of the message submission program (MSP) is explained -in sendmail/SECURITY. This section contains a list of caveats and -a few hints how for those who want to tweak the default configuration -for it (which is installed as submit.cf). - -Notice: do not add options/features to submit.mc unless you are -absolutely sure you need them. Options you may want to change -include: - -- confTRUSTED_USERS, FEATURE(`use_ct_file'), and confCT_FILE for - avoiding X-Authentication warnings. -- confTIME_ZONE to change it from the default `USE_TZ'. -- confDELIVERY_MODE is set to interactive in msp.m4 instead - of the default background mode. -- FEATURE(stickyhost) and LOCAL_RELAY to send unqualified addresses - to the LOCAL_RELAY instead of the default relay. -- confRAND_FILE if you use STARTTLS and sendmail is not compiled with - the flag HASURANDOM. - -The MSP performs hostname canonicalization by default. As also -explained in sendmail/SECURITY, mail may end up for various DNS -related reasons in the MSP queue. This problem can be minimized by -using - - FEATURE(`nocanonify', `canonify_hosts') - define(`confDIRECT_SUBMISSION_MODIFIERS', `C') - -See the discussion about nocanonify for possible side effects. - -Some things are not intended to work with the MSP. These include -features that influence the delivery process (e.g., mailertable, -aliases), or those that are only important for a SMTP server (e.g., -virtusertable, DaemonPortOptions, multiple queues). Moreover, -relaxing certain restrictions (RestrictQueueRun, permissions on -queue directory) or adding features (e.g., enabling prog/file mailer) -can cause security problems. - -Other things don't work well with the MSP and require tweaking or -workarounds. For example, to allow for client authentication it -is not just sufficient to provide a client certificate and the -corresponding key, but it is also necessary to make the key group -(smmsp) readable and tell sendmail not to complain about that, i.e., - - define(`confDONT_BLAME_SENDMAIL', `GroupReadableKeyFile') - -If the MSP should actually use AUTH then the necessary data -should be placed in a map as explained in SMTP AUTHENTICATION: - -FEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/msp-authinfo') - -/etc/mail/msp-authinfo should contain an entry like: - - AuthInfo:127.0.0.1 "U:smmsp" "P:secret" "M:DIGEST-MD5" - -The file and the map created by makemap should be owned by smmsp, -its group should be smmsp, and it should have mode 640. The database -used by the MTA for AUTH must have a corresponding entry. -Additionally the MTA must trust this authentication data so the AUTH= -part will be relayed on to the next hop. This can be achieved by -adding the following to your sendmail.mc file: - - LOCAL_RULESETS - SLocal_trust_auth - R$* $: $&{auth_authen} - Rsmmsp $# OK - -Note: the authentication data can leak to local users who invoke -the MSP with debug options or even with -v. For that reason either -an authentication mechanism that does not show the password in the -AUTH dialogue (e.g., DIGEST-MD5) or a different authentication -method like STARTTLS should be used. - -feature/msp.m4 defines almost all settings for the MSP. Most of -those should not be changed at all. Some of the features and options -can be overridden if really necessary. It is a bit tricky to do -this, because it depends on the actual way the option is defined -in feature/msp.m4. If it is directly defined (i.e., define()) then -the modified value must be defined after - - FEATURE(`msp') - -If it is conditionally defined (i.e., ifdef()) then the desired -value must be defined before the FEATURE line in the .mc file. -To see how the options are defined read feature/msp.m4. - - -+--------------------------+ -| FORMAT OF FILES AND MAPS | -+--------------------------+ - -Files that define classes, i.e., F{classname}, consist of lines -each of which contains a single element of the class. For example, -/etc/mail/local-host-names may have the following content: - -my.domain -another.domain - -Maps must be created using makemap(8) , e.g., - - makemap hash MAP < MAP - -In general, a text file from which a map is created contains lines -of the form - -key value - -where 'key' and 'value' are also called LHS and RHS, respectively. -By default, the delimiter between LHS and RHS is a non-empty sequence -of white space characters. - - -+------------------+ -| DIRECTORY LAYOUT | -+------------------+ - -Within this directory are several subdirectories, to wit: - -m4 General support routines. These are typically - very important and should not be changed without - very careful consideration. - -cf The configuration files themselves. They have - ".mc" suffixes, and must be run through m4 to - become complete. The resulting output should - have a ".cf" suffix. - -ostype Definitions describing a particular operating - system type. These should always be referenced - using the OSTYPE macro in the .mc file. Examples - include "bsd4.3", "bsd4.4", "sunos3.5", and - "sunos4.1". - -domain Definitions describing a particular domain, referenced - using the DOMAIN macro in the .mc file. These are - site dependent; for example, "CS.Berkeley.EDU.m4" - describes hosts in the CS.Berkeley.EDU subdomain. - -mailer Descriptions of mailers. These are referenced using - the MAILER macro in the .mc file. - -sh Shell files used when building the .cf file from the - .mc file in the cf subdirectory. - -feature These hold special orthogonal features that you might - want to include. They should be referenced using - the FEATURE macro. - -hack Local hacks. These can be referenced using the HACK - macro. They shouldn't be of more than voyeuristic - interest outside the .Berkeley.EDU domain, but who knows? - -siteconfig Site configuration -- e.g., tables of locally connected - UUCP sites. - - -+------------------------+ -| ADMINISTRATIVE DETAILS | -+------------------------+ - -The following sections detail usage of certain internal parts of the -sendmail.cf file. Read them carefully if you are trying to modify -the current model. If you find the above descriptions adequate, these -should be {boring, confusing, tedious, ridiculous} (pick one or more). - -RULESETS (* means built in to sendmail) - - 0 * Parsing - 1 * Sender rewriting - 2 * Recipient rewriting - 3 * Canonicalization - 4 * Post cleanup - 5 * Local address rewrite (after aliasing) - 1x mailer rules (sender qualification) - 2x mailer rules (recipient qualification) - 3x mailer rules (sender header qualification) - 4x mailer rules (recipient header qualification) - 5x mailer subroutines (general) - 6x mailer subroutines (general) - 7x mailer subroutines (general) - 8x reserved - 90 Mailertable host stripping - 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail) - 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail) - 98 Local part of ruleset 0 (ruleset 8 in old sendmail) - - -MAILERS - - 0 local, prog local and program mailers - 1 [e]smtp, relay SMTP channel - 2 uucp-* UNIX-to-UNIX Copy Program - 3 netnews Network News delivery - 4 fax Sam Leffler's HylaFAX software - 5 mail11 DECnet mailer - - -MACROS - - A - B Bitnet Relay - C DECnet Relay - D The local domain -- usually not needed - E reserved for X.400 Relay - F FAX Relay - G - H mail Hub (for mail clusters) - I - J - K - L Luser Relay - M Masquerade (who you claim to be) - N - O - P - Q - R Relay (for unqualified names) - S Smart Host - T - U my UUCP name (if you have a UUCP connection) - V UUCP Relay (class {V} hosts) - W UUCP Relay (class {W} hosts) - X UUCP Relay (class {X} hosts) - Y UUCP Relay (all other hosts) - Z Version number - - -CLASSES - - A - B domains that are candidates for bestmx lookup - C - D - E addresses that should not seem to come from $M - F hosts this system forward for - G domains that should be looked up in genericstable - H - I - J - K - L addresses that should not be forwarded to $R - M domains that should be mapped to $M - N host/domains that should not be mapped to $M - O operators that indicate network operations (cannot be in local names) - P top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc. - Q - R domains this system is willing to relay (pass anti-spam filters) - S - T - U locally connected UUCP hosts - V UUCP hosts connected to relay $V - W UUCP hosts connected to relay $W - X UUCP hosts connected to relay $X - Y locally connected smart UUCP hosts - Z locally connected domain-ized UUCP hosts - . the class containing only a dot - [ the class containing only a left bracket - - -M4 DIVERSIONS - - 1 Local host detection and resolution - 2 Local Ruleset 3 additions - 3 Local Ruleset 0 additions - 4 UUCP Ruleset 0 additions - 5 locally interpreted names (overrides $R) - 6 local configuration (at top of file) - 7 mailer definitions - 8 DNS based blacklists - 9 special local rulesets (1 and 2) - -$Revision: 8.694 $, Last updated $Date: 2005/03/23 21:41:09 $ diff --git a/contrib/sendmail/cf/cf/Makefile b/contrib/sendmail/cf/cf/Makefile deleted file mode 100644 index eb4f56870773f..0000000000000 --- a/contrib/sendmail/cf/cf/Makefile +++ /dev/null @@ -1,208 +0,0 @@ -# -# Makefile for configuration files. -# -# $Id: Makefile,v 8.59 2004/08/06 03:54:05 gshapiro Exp $ -# - -# -# Create configuration files using "m4 ../m4/cf.m4 file.mc > file.cf"; -# this may be easier than tweaking the Makefile. You do need to -# have a fairly modern M4 available (GNU m4 works). On SunOS, use -# /usr/5bin/m4. -# - -# name of source for sendmail.cf (without extension) -CF= sendmail -# name of source for submit.cf (without extension) -SUBMIT= submit -# directory for .cf files -MAILDIR=/etc/mail -M4= m4 -CFDIR= .. -SED= sed -ECHO= echo -CHMOD= chmod -ROMODE= 444 -RM= rm -f -# use our own install program; should be really confINSTALL -INSTALL=../../devtools/bin/install.sh -# CF file ownership/permissions -CFOWN=root -CFGRP=bin -CFMODE=0444 - - -.SUFFIXES: .mc .cf - -.mc.cf: - $(RM) $@ - $(M4) ${CFDIR}/m4/cf.m4 $*.mc > $@ || ( $(RM) $@ && exit 1 ) - $(ECHO) "### $*.mc ###" >>$@ - $(SED) -e 's/^/# /' $*.mc >>$@ - $(CHMOD) $(ROMODE) $@ - -GENERIC=generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \ - generic-linux.cf generic-mpeix.cf generic-nextstep3.3.cf \ - generic-osf1.cf generic-solaris.cf \ - generic-sunos4.1.cf generic-ultrix4.cf -BERKELEY=cs-hpux9.cf cs-hpux10.cf cs-osf1.cf cs-solaris.cf \ - cs-sunos4.1.cf cs-ultrix4.cf \ - s2k-osf1.cf s2k-ultrix4.cf \ - chez.cs.cf huginn.cs.cf mail.cs.cf mail.eecs.cf mailspool.cs.cf \ - python.cs.cf ucbarpa.cf ucbvax.cf vangogh.cs.cf -OTHER= knecht.cf -ALL= submit.cf $(GENERIC) $(OTHER) - -all: $(ALL) - -berkeley: $(BERKELEY) -generic: $(GENERIC) -other: $(OTHER) - -clean cleandir: - $(RM) $(ALL) core - -install: - @echo "Before installing the .cf files please make sure you have read the" - @echo "instructions in the file ../../INSTALL. You should have prepared the" - @echo "files \"submit.mc\" (supplied) and \"sendmail.mc\". Then you can use" - @echo "" - @echo " make install-cf" - @echo "" - @echo "If you use a different name than \"sendmail\" for your main .mc file" - - @echo "then you should use" - @echo "" - @echo " make install-cf CF=config" - @echo "" - @echo "where \"config\" is the name of your main .mc file." - -install-cf: install-sendmail-cf install-submit-cf - -install-sendmail-cf: $(CF).cf - $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(CF).cf ${DESTDIR}$(MAILDIR)/sendmail.cf - -install-submit-cf: $(SUBMIT).cf - $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(SUBMIT).cf ${DESTDIR}$(MAILDIR)/submit.cf - -depend: - -# this is overkill, but.... -M4FILES=\ - ${CFDIR}/domain/Berkeley.EDU.m4 \ - ${CFDIR}/domain/CS.Berkeley.EDU.m4 \ - ${CFDIR}/domain/EECS.Berkeley.EDU.m4 \ - ${CFDIR}/domain/S2K.Berkeley.EDU.m4 \ - ${CFDIR}/domain/berkeley-only.m4 \ - ${CFDIR}/domain/generic.m4 \ - ${CFDIR}/feature/accept_unqualified_senders.m4 \ - ${CFDIR}/feature/accept_unresolvable_domains.m4 \ - ${CFDIR}/feature/access_db.m4 \ - ${CFDIR}/feature/allmasquerade.m4 \ - ${CFDIR}/feature/always_add_domain.m4 \ - ${CFDIR}/feature/bestmx_is_local.m4 \ - ${CFDIR}/feature/bitdomain.m4 \ - ${CFDIR}/feature/blacklist_recipients.m4 \ - ${CFDIR}/feature/conncontrol.m4 \ - ${CFDIR}/feature/dnsbl.m4 \ - ${CFDIR}/feature/domaintable.m4 \ - ${CFDIR}/feature/generics_entire_domain.m4 \ - ${CFDIR}/feature/genericstable.m4 \ - ${CFDIR}/feature/ldap_routing.m4 \ - ${CFDIR}/feature/limited_masquerade.m4 \ - ${CFDIR}/feature/local_lmtp.m4 \ - ${CFDIR}/feature/local_procmail.m4 \ - ${CFDIR}/feature/loose_relay_check.m4 \ - ${CFDIR}/feature/mailertable.m4 \ - ${CFDIR}/feature/masquerade_entire_domain.m4 \ - ${CFDIR}/feature/masquerade_envelope.m4 \ - ${CFDIR}/feature/no_default_msa.m4 \ - ${CFDIR}/feature/nocanonify.m4 \ - ${CFDIR}/feature/notsticky.m4 \ - ${CFDIR}/feature/nouucp.m4 \ - ${CFDIR}/feature/nullclient.m4 \ - ${CFDIR}/feature/promiscuous_relay.m4 \ - ${CFDIR}/feature/redirect.m4 \ - ${CFDIR}/feature/ratecontrol.m4 \ - ${CFDIR}/feature/relay_based_on_MX.m4 \ - ${CFDIR}/feature/relay_entire_domain.m4 \ - ${CFDIR}/feature/relay_hosts_only.m4 \ - ${CFDIR}/feature/relay_local_from.m4 \ - ${CFDIR}/feature/relay_mail_from.m4 \ - ${CFDIR}/feature/smrsh.m4 \ - ${CFDIR}/feature/stickyhost.m4 \ - ${CFDIR}/feature/use_ct_file.m4 \ - ${CFDIR}/feature/use_cw_file.m4 \ - ${CFDIR}/feature/uucpdomain.m4 \ - ${CFDIR}/feature/virtuser_entire_domain.m4 \ - ${CFDIR}/feature/virtusertable.m4 \ - ${CFDIR}/hack/cssubdomain.m4 \ - ${CFDIR}/m4/cf.m4 \ - ${CFDIR}/m4/cfhead.m4 \ - ${CFDIR}/m4/proto.m4 \ - ${CFDIR}/m4/version.m4 \ - ${CFDIR}/mailer/cyrus.m4 \ - ${CFDIR}/mailer/fax.m4 \ - ${CFDIR}/mailer/local.m4 \ - ${CFDIR}/mailer/mail11.m4 \ - ${CFDIR}/mailer/phquery.m4 \ - ${CFDIR}/mailer/pop.m4 \ - ${CFDIR}/mailer/procmail.m4 \ - ${CFDIR}/mailer/qpage.m4 \ - ${CFDIR}/mailer/smtp.m4 \ - ${CFDIR}/mailer/usenet.m4 \ - ${CFDIR}/mailer/uucp.m4 \ - ${CFDIR}/ostype/aix3.m4 \ - ${CFDIR}/ostype/aix4.m4 \ - ${CFDIR}/ostype/altos.m4 \ - ${CFDIR}/ostype/amdahl-uts.m4 \ - ${CFDIR}/ostype/a-ux.m4 \ - ${CFDIR}/ostype/bsd4.3.m4 \ - ${CFDIR}/ostype/bsd4.4.m4 \ - ${CFDIR}/ostype/bsdi.m4 \ - ${CFDIR}/ostype/bsdi1.0.m4 \ - ${CFDIR}/ostype/bsdi2.0.m4 \ - ${CFDIR}/ostype/dgux.m4 \ - ${CFDIR}/ostype/domainos.m4 \ - ${CFDIR}/ostype/dragonfly.m4 \ - ${CFDIR}/ostype/dynix3.2.m4 \ - ${CFDIR}/ostype/freebsd4.m4 \ - ${CFDIR}/ostype/freebsd5.m4 \ - ${CFDIR}/ostype/gnu.m4 \ - ${CFDIR}/ostype/hpux10.m4 \ - ${CFDIR}/ostype/hpux11.m4 \ - ${CFDIR}/ostype/hpux9.m4 \ - ${CFDIR}/ostype/irix4.m4 \ - ${CFDIR}/ostype/irix5.m4 \ - ${CFDIR}/ostype/irix6.m4 \ - ${CFDIR}/ostype/isc4.1.m4 \ - ${CFDIR}/ostype/linux.m4 \ - ${CFDIR}/ostype/maxion.m4 \ - ${CFDIR}/ostype/mklinux.m4 \ - ${CFDIR}/ostype/mpeix.m4 \ - ${CFDIR}/ostype/nextstep.m4 \ - ${CFDIR}/ostype/openbsd.m4 \ - ${CFDIR}/ostype/osf1.m4 \ - ${CFDIR}/ostype/powerux.m4 \ - ${CFDIR}/ostype/ptx2.m4 \ - ${CFDIR}/ostype/qnx.m4 \ - ${CFDIR}/ostype/riscos4.5.m4 \ - ${CFDIR}/ostype/sco-uw-2.1.m4 \ - ${CFDIR}/ostype/sco3.2.m4 \ - ${CFDIR}/ostype/sinix.m4 \ - ${CFDIR}/ostype/solaris2.m4 \ - ${CFDIR}/ostype/solaris2.ml.m4 \ - ${CFDIR}/ostype/solaris2.pre5.m4 \ - ${CFDIR}/ostype/solaris8.m4 \ - ${CFDIR}/ostype/sunos3.5.m4 \ - ${CFDIR}/ostype/sunos4.1.m4 \ - ${CFDIR}/ostype/svr4.m4 \ - ${CFDIR}/ostype/ultrix4.m4 \ - ${CFDIR}/ostype/unixware7.m4 \ - ${CFDIR}/ostype/unknown.m4 \ - ${CFDIR}/ostype/uxpds.m4 - -$(ALL): $(M4FILES) -$(BERKELEY): $(M4FILES) -$(GENERIC): $(M4FILES) -$(OTHER): $(M4FILES) diff --git a/contrib/sendmail/cf/cf/README b/contrib/sendmail/cf/cf/README deleted file mode 100644 index d0ac86559d6c3..0000000000000 --- a/contrib/sendmail/cf/cf/README +++ /dev/null @@ -1,34 +0,0 @@ - - SENDMAIL CONFIGURATION FILES INSTALLATION - -This document describes how to install the sendmail configuration files. -Please see ../README about the sendmail configuration files themselves. - -By default you need two .mc files: sendmail.mc and submit.mc. The -latter is an OS independent configuration file for the mail submission -program (MSP). See ../README for details about both files. - -Installation of these two files can be done via: - - make install-cf - -If you use a different name than "sendmail" for your main .mc file" -then you should use - - make install-cf CF=config - -where "config" is the name of your main .mc file. - -The default installation directory is /etc/mail and can be changed -by specifying - - MAILDIR=/other/dir - -The name of the source file for "submit.cf" can be overridden by - - SUBMIT=msp - -For more details see Makefile. - - -$Revision: 1.2 $, Last updated $Date: 2002/02/22 00:33:54 $ diff --git a/contrib/sendmail/cf/cf/chez.cs.mc b/contrib/sendmail/cf/cf/chez.cs.mc deleted file mode 100644 index bb335a49096de..0000000000000 --- a/contrib/sendmail/cf/cf/chez.cs.mc +++ /dev/null @@ -1,34 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in the Computer Science Division at Berkeley, and should -# not be used elsewhere. It is provided on the sendmail distribution -# as a sample only. -# -# This file is for a home machine that wants to masquerade as an -# on-campus machine. Additionally, all addresses without a hostname -# will be forwarded to that machine. -# - -divert(0)dnl -VERSIONID(`$Id: chez.cs.mc,v 8.14 1999/02/07 07:25:59 gshapiro Exp $') -OSTYPE(bsd4.4)dnl -DOMAIN(CS.Berkeley.EDU)dnl -define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl -MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl -FEATURE(use_cw_file)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/clientproto.mc b/contrib/sendmail/cf/cf/clientproto.mc deleted file mode 100644 index ecdbddf2a482e..0000000000000 --- a/contrib/sendmail/cf/cf/clientproto.mc +++ /dev/null @@ -1,29 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This the prototype for a "null client" -- that is, a client that -# does nothing except forward all mail to a mail hub. IT IS NOT -# USABLE AS IS!!! -# -# To use this, you MUST use the nullclient feature with the name of -# the mail hub as its argument. You MUST also define an `OSTYPE' to -# define the location of the queue directories and the like. -# - -divert(0)dnl -VERSIONID(`$Id: clientproto.mc,v 8.16 2000/03/21 21:05:26 ca Exp $') - -OSTYPE(unknown) -FEATURE(nullclient, mailhost.$m) diff --git a/contrib/sendmail/cf/cf/cs-hpux10.mc b/contrib/sendmail/cf/cf/cs-hpux10.mc deleted file mode 100644 index f384b5f7a0c90..0000000000000 --- a/contrib/sendmail/cf/cf/cs-hpux10.mc +++ /dev/null @@ -1,31 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for HP-UX 9.x. -# It applies only to the Computer Science Division at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: cs-hpux10.mc,v 8.13 1999/02/07 07:26:00 gshapiro Exp $') -OSTYPE(hpux10)dnl -DOMAIN(CS.Berkeley.EDU)dnl -define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/cs-hpux9.mc b/contrib/sendmail/cf/cf/cs-hpux9.mc deleted file mode 100644 index 664377e5eaf3e..0000000000000 --- a/contrib/sendmail/cf/cf/cs-hpux9.mc +++ /dev/null @@ -1,31 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for HP-UX 9.x. -# It applies only to the Computer Science Division at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: cs-hpux9.mc,v 8.14 1999/02/07 07:26:00 gshapiro Exp $') -OSTYPE(hpux9)dnl -DOMAIN(CS.Berkeley.EDU)dnl -define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/cs-osf1.mc b/contrib/sendmail/cf/cf/cs-osf1.mc deleted file mode 100644 index 09d6e49160b3f..0000000000000 --- a/contrib/sendmail/cf/cf/cs-osf1.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for OSF/1. -# It applies only to the Computer Science Division at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: cs-osf1.mc,v 8.13 1999/02/07 07:26:00 gshapiro Exp $') -OSTYPE(osf1)dnl -DOMAIN(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/cs-solaris2.mc b/contrib/sendmail/cf/cf/cs-solaris2.mc deleted file mode 100644 index c802b50f89234..0000000000000 --- a/contrib/sendmail/cf/cf/cs-solaris2.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for Solaris 2.x. -# It applies only to the Computer Science Division at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: cs-solaris2.mc,v 8.12 1999/02/07 07:26:00 gshapiro Exp $') -OSTYPE(solaris2)dnl -DOMAIN(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/cs-sunos4.1.mc b/contrib/sendmail/cf/cf/cs-sunos4.1.mc deleted file mode 100644 index 6263e118e0420..0000000000000 --- a/contrib/sendmail/cf/cf/cs-sunos4.1.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for SunOS 4.1.x. -# It applies only to the Computer Science Division at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: cs-sunos4.1.mc,v 8.13 1999/02/07 07:26:01 gshapiro Exp $') -OSTYPE(sunos4.1)dnl -DOMAIN(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/cs-ultrix4.mc b/contrib/sendmail/cf/cf/cs-ultrix4.mc deleted file mode 100644 index 7669823bf33d0..0000000000000 --- a/contrib/sendmail/cf/cf/cs-ultrix4.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for Ultrix 4.x. -# It applies only to the Computer Science Division at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: cs-ultrix4.mc,v 8.13 1999/02/07 07:26:02 gshapiro Exp $') -OSTYPE(ultrix4)dnl -DOMAIN(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/cyrusproto.mc b/contrib/sendmail/cf/cf/cyrusproto.mc deleted file mode 100644 index 8fa00ceee8fcc..0000000000000 --- a/contrib/sendmail/cf/cf/cyrusproto.mc +++ /dev/null @@ -1,40 +0,0 @@ -divert(-1) -# -# (C) Copyright 1995 by Carnegie Mellon University -# -# All Rights Reserved -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, -# provided that the above copyright notice appear in all copies and that -# both that copyright notice and this permission notice appear in -# supporting documentation, and that the name of CMU not be -# used in advertising or publicity pertaining to distribution of the -# software without specific, written prior permission. -# -# CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -# CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -# SOFTWARE. -# -# Contributed to Berkeley by John Gardiner Myers <jgm+@CMU.EDU>. -# -# This sample mc file is for a site that uses the Cyrus IMAP server -# exclusively for local mail. -# - -divert(0)dnl -VERSIONID(`$Id: cyrusproto.mc,v 8.7 1999/09/07 14:57:10 ca Exp $') -define(`confBIND_OPTS',`-DNSRCH -DEFNAMES') -define(`confLOCAL_MAILER', `cyrus') -FEATURE(`nocanonify') -FEATURE(`always_add_domain') -MAILER(`local') -MAILER(`smtp') -MAILER(`cyrus') - -LOCAL_RULE_0 -Rbb + $+ < @ $=w . > $#cyrusbb $: $1 diff --git a/contrib/sendmail/cf/cf/generic-bsd4.4.mc b/contrib/sendmail/cf/cf/generic-bsd4.4.mc deleted file mode 100644 index 18ea8b3b87668..0000000000000 --- a/contrib/sendmail/cf/cf/generic-bsd4.4.mc +++ /dev/null @@ -1,28 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for 4.4 BSD-based systems, -# including 4.4-Lite, BSDi, NetBSD, and FreeBSD. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $') -OSTYPE(bsd4.4)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-hpux10.mc b/contrib/sendmail/cf/cf/generic-hpux10.mc deleted file mode 100644 index deed5f14bcff3..0000000000000 --- a/contrib/sendmail/cf/cf/generic-hpux10.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for HP-UX 10.x. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-hpux10.mc,v 8.13 2001/05/29 17:29:52 ca Exp $') -OSTYPE(hpux10)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-hpux9.mc b/contrib/sendmail/cf/cf/generic-hpux9.mc deleted file mode 100644 index 739207c71449a..0000000000000 --- a/contrib/sendmail/cf/cf/generic-hpux9.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for HP-UX 9.x. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-hpux9.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $') -OSTYPE(hpux9)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-linux.mc b/contrib/sendmail/cf/cf/generic-linux.mc deleted file mode 100644 index f86e2630823a1..0000000000000 --- a/contrib/sendmail/cf/cf/generic-linux.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for Linux. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $') -OSTYPE(linux)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-mpeix.mc b/contrib/sendmail/cf/cf/generic-mpeix.mc deleted file mode 100644 index fa5c57456afab..0000000000000 --- a/contrib/sendmail/cf/cf/generic-mpeix.mc +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for HP MPE/iX. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-mpeix.mc,v 8.1 2001/12/13 23:56:37 gshapiro Exp $') -OSTYPE(mpeix)dnl -DOMAIN(generic)dnl -define(`confFORWARD_PATH', `$z/.forward')dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-nextstep3.3.mc b/contrib/sendmail/cf/cf/generic-nextstep3.3.mc deleted file mode 100644 index 14b46d387df08..0000000000000 --- a/contrib/sendmail/cf/cf/generic-nextstep3.3.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for NEXTSTEP 3.3 systems. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-nextstep3.3.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $') -OSTYPE(nextstep)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-osf1.mc b/contrib/sendmail/cf/cf/generic-osf1.mc deleted file mode 100644 index 9cd4e77b6a24c..0000000000000 --- a/contrib/sendmail/cf/cf/generic-osf1.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for OSF/1. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-osf1.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $') -OSTYPE(osf1)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-solaris.mc b/contrib/sendmail/cf/cf/generic-solaris.mc deleted file mode 100644 index 5f82340e91218..0000000000000 --- a/contrib/sendmail/cf/cf/generic-solaris.mc +++ /dev/null @@ -1,29 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for SunOS 5.x (a.k.a. Solaris 2.x -# and Solaris 7 through the present version). -# -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $') -OSTYPE(solaris2)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-sunos4.1.mc b/contrib/sendmail/cf/cf/generic-sunos4.1.mc deleted file mode 100644 index a27d099e04425..0000000000000 --- a/contrib/sendmail/cf/cf/generic-sunos4.1.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for SunOS 4.1.x. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-sunos4.1.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $') -OSTYPE(sunos4.1)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/generic-ultrix4.mc b/contrib/sendmail/cf/cf/generic-ultrix4.mc deleted file mode 100644 index 913edb58603f9..0000000000000 --- a/contrib/sendmail/cf/cf/generic-ultrix4.mc +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a generic configuration file for Ultrix 4.x. -# It has support for local and SMTP mail only. If you want to -# customize it, copy it to a name appropriate for your environment -# and do the modifications there. -# - -divert(0)dnl -VERSIONID(`$Id: generic-ultrix4.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $') -OSTYPE(ultrix4)dnl -DOMAIN(generic)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/huginn.cs.mc b/contrib/sendmail/cf/cf/huginn.cs.mc deleted file mode 100644 index 117a236af0f9a..0000000000000 --- a/contrib/sendmail/cf/cf/huginn.cs.mc +++ /dev/null @@ -1,43 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in the Computer Science Division at Berkeley, and should -# not be used elsewhere. It is provided on the sendmail distribution -# as a sample only. -# -# This file is for the backup CS Division mail server. -# - -divert(0)dnl -VERSIONID(`$Id: huginn.cs.mc,v 8.15 1999/02/07 07:26:03 gshapiro Exp $') -OSTYPE(hpux9)dnl -DOMAIN(CS.Berkeley.EDU)dnl -MASQUERADE_AS(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl - -LOCAL_CONFIG -DDBerkeley.EDU - -# hosts for which we accept and forward mail (must be in .Berkeley.EDU) -CF CS -FF/etc/sendmail.cw - -LOCAL_RULE_0 -R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ... -R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ... - -R$* < @ $=F . $D . > $#local $: $1 use UDB diff --git a/contrib/sendmail/cf/cf/knecht.mc b/contrib/sendmail/cf/cf/knecht.mc deleted file mode 100644 index 98dbef9eea54d..0000000000000 --- a/contrib/sendmail/cf/cf/knecht.mc +++ /dev/null @@ -1,259 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is specific to Eric's home machine. -# -# Run daemon with -bd -q5m -# - -divert(0) -VERSIONID(`$Id: knecht.mc,v 8.58 2004/01/28 00:54:41 eric Exp $') -OSTYPE(bsd4.4) -DOMAIN(generic) - -define(`ALIAS_FILE', ``/etc/mail/aliases, /etc/mail/lists/sendmail.org/aliases, /var/listmanager/aliases'') -define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward') -define(`confDEF_USER_ID', `mailnull') -define(`confHOST_STATUS_DIRECTORY', `.hoststat') -define(`confTO_ICONNECT', `10s') -define(`confTO_QUEUEWARN', `8h') -define(`confMIN_QUEUE_AGE', `27m') -define(`confTRUSTED_USERS', ``www listmgr'') -define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'') - -define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs') -define(`confCACERT_PATH', `CERT_DIR') -define(`confCACERT', `CERT_DIR/CAcert.pem') -define(`confSERVER_CERT', `CERT_DIR/MYcert.pem') -define(`confSERVER_KEY', `CERT_DIR/MYkey.pem') -define(`confCLIENT_CERT', `CERT_DIR/MYcert.pem') -define(`confCLIENT_KEY', `CERT_DIR/MYkey.pem') - -define(`CYRUS_MAILER_PATH', `/usr/local/cyrus/bin/deliver') - -FEATURE(access_db) -FEATURE(local_lmtp) -FEATURE(virtusertable) -FEATURE(mailertable) - -FEATURE(`nocanonify', `canonify_hosts') -CANONIFY_DOMAIN(`sendmail.org') -CANONIFY_DOMAIN_FILE(`/etc/mail/canonify-domains') - -dnl # at most 10 queue runners -define(`confMAX_QUEUE_CHILDREN', `20') - -define(`confMAX_RUNNERS_PER_QUEUE', `5') - -dnl # run at most 10 concurrent processes for initial submission -define(`confFAST_SPLIT', `10') - -dnl # 10 runners, split into at most 15 recipients per envelope -QUEUE_GROUP(`mqueue', `P=/var/spool/mqueue, R=5, r=15, F=f') - - -dnl # enable spam assassin -INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m') - -MAILER(local) -MAILER(smtp) -MAILER(cyrus) - -LOCAL_RULE_0 -Rcyrus.$+ + $+ < @ $=w . > $#cyrus $@ $2 $: $1 -Rcyrus.$+ < @ $=w . > $#cyrus $: $1 - -LOCAL_CONFIG -# -# Regular expression to reject: -# * numeric-only localparts from aol.com and msn.com -# * localparts starting with a digit from juno.com -# -Kcheckaddress regex -a@MATCH - ^([0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com)\.?> - -###################################################################### -# -# Names that won't be allowed in a To: line (local-part and domains) -# -C{RejectToLocalparts} friend you -C{RejectToDomains} public.com - -LOCAL_RULESETS -HTo: $>CheckTo - -SCheckTo -R$={RejectToLocalparts}@$* $#error $: "553 Header error" -R$*@$={RejectToDomains} $#error $: "553 Header error" - -###################################################################### -HMessage-Id: $>CheckMessageId - -SCheckMessageId -# Record the presence of the header -R$* $: $(storage {MessageIdCheck} $@ OK $) $1 - -# validate syntax -R< $+ @ $+ > $@ OK -R$* $#error $: "554 Header error" - - -###################################################################### -HReceived: $>CheckReceived - -SCheckReceived -# Record the presence of any Received header -R$* $: $(storage {ReceivedCheck} $@ OK $) $1 - -# check syntax -R$* ......................................................... $* - $#error $: "554 Header error" - -###################################################################### -# -# Reject advertising subjects -# - -Kadvsubj regex -b -a@MATCH ±?°í -HSubject: $>+CheckSubject -SCheckSubject -R$* $: $(advsubj $&{currHeader} $: OK $) -ROK $@ OK -R$* $#error $@ 5.7.0 $: 550 5.7.0 spam rejected. - -###################################################################### -# -# Reject certain senders -# Regex match to catch things in quotes -# -HFrom: $>+CheckFrom -KCheckFrom regex -a@MATCH - [^a-z]?(Net-Pa)[^a-z] - -SCheckFrom -R$* $: $( CheckFrom $1 $) -R@MATCH $#error $: "553 Header error" - -LOCAL_RULESETS -SLocal_check_mail -# check address against various regex checks -R$* $: $>Parse0 $>3 $1 -R$+ $: $(checkaddress $1 $) -R@MATCH $#error $: "553 Header error" - -# -# Following code from Anthony Howe <achowe@snert.com>. The check -# for the Outlook Express marker may hit some legal messages, but -# the Content-Disposition is clearly illegal. -# - -######################################################################### -# -# w32.sircam.worm@mm -# -# There are serveral patterns that appear common ONLY to SirCam worm and -# not to Outlook Express, which claims to have sent the worm. There are -# four headers that always appear together and in this order: -# -# X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -# X-Mailer: Microsoft Outlook Express 5.50.4133.2400 -# Content-Type: multipart/mixed; boundary="----27AA9124_Outlook_Express_message_boundary" -# Content-Disposition: Multipart message -# -# Empirical study of the worm message headers vs. true Outlook Express -# (5.50.4133.2400 & 5.50.4522.1200) messages with multipart/mixed attachments -# shows Outlook Express does: -# -# a) NOT supply a Content-Disposition header for multipart/mixed messages. -# b) NOT specify the header X-MimeOLE header name in all-caps -# c) NOT specify boundary tag with the expression "_Outlook_Express_message_boundary" -# -# The solution below catches any one of this three issues. This is not an ideal -# solution, but a temporary measure. A correct solution would be to check for -# the presence of ALL three header attributes. Also the solution is incomplete -# since Outlook Express 5.0 and 4.0 were not compared. -# -# NOTE regex keys are first dequoted and spaces removed before matching. -# This caused me no end of grief. -# -######################################################################### - -LOCAL_RULESETS - -KSirCamWormMarker regex -f -aSUSPECT multipart/mixed;boundary=----.+_Outlook_Express_message_boundary -HContent-Type: $>CheckContentType - -###################################################################### -SCheckContentType -R$+ $: $(SirCamWormMarker $1 $) -RSUSPECT $#error $: "553 Possible virus, see http://www.symantec.com/avcenter/venc/data/w32.sircam.worm@mm.html" - -HContent-Disposition: $>CheckContentDisposition - -###################################################################### -SCheckContentDisposition -R$- $@ OK -R$- ; $+ $@ OK -R$* $#error $: "553 Illegal Content-Disposition" - - -# -# Sobig.F -# - -LOCAL_CONFIG -Kstorage macro - -LOCAL_RULESETS -###################################################################### -### check for the existance of the X-MailScanner Header -HX-MailScanner: $>+CheckXMSc -D{SobigFPat}Found to be clean -D{SobigFMsg}This message may contain the Sobig.F virus. - -SCheckXMSc -### if it exists, and the defined value is set, record the presence -R${SobigFPat} $* $: $(storage {SobigFCheck} $@ SobigF $) $1 -R$* $@ OK - -###################################################################### -Scheck_eoh -# Check if a Message-Id was found -R$* $: < $&{MessageIdCheck} > - -# If Message-Id was found clear the X-MailScanner store and return with OK -R< $+ > $@ OK $>ClearStorage - -# Are we the first Hop? -R$* $: < $&{ReceivedCheck} > -R< $+ > $@ OK $>ClearStorage - -# no Message-Id->check X-Mailscanner presence, too -R$* $: < $&{SobigFCheck} > - -# clear store -R$* $: $>ClearStorage $1 -# no msgid, first hop and Header found? -> reject the message -R < SobigF > $#error $: 553 ${SobigFMsg} - -# No Header! Fine, take the message -R$* $@ OK - -###################################################################### -SClearStorage -R$* $: $(storage {SobigFCheck} $) $1 -R$* $: $(storage {ReceivedCheck} $) $1 -R$* $: $(storage {MessageIdCheck} $) $1 -R$* $@ $1 diff --git a/contrib/sendmail/cf/cf/mail.cs.mc b/contrib/sendmail/cf/cf/mail.cs.mc deleted file mode 100644 index 6bd778258c1d5..0000000000000 --- a/contrib/sendmail/cf/cf/mail.cs.mc +++ /dev/null @@ -1,44 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in the Computer Science Division at Berkeley, and should -# not be used elsewhere. It is provided on the sendmail distribution -# as a sample only. -# -# This file is for the primary CS Division mail server. -# - -divert(0)dnl -VERSIONID(`$Id: mail.cs.mc,v 8.18 1999/02/07 07:26:04 gshapiro Exp $') -OSTYPE(ultrix4)dnl -DOMAIN(Berkeley.EDU)dnl -MASQUERADE_AS(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl -define(`confUSERDB_SPEC', ``/usr/local/lib/users.cs.db,/usr/local/lib/users.eecs.db'')dnl - -LOCAL_CONFIG -DDBerkeley.EDU - -# hosts for which we accept and forward mail (must be in .Berkeley.EDU) -CF CS -FF/etc/sendmail.cw - -LOCAL_RULE_0 -R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ... -R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ... - -R$* < @ $=F . $D . > $#local $: $1 use UDB diff --git a/contrib/sendmail/cf/cf/mail.eecs.mc b/contrib/sendmail/cf/cf/mail.eecs.mc deleted file mode 100644 index bf7d4081ccf2d..0000000000000 --- a/contrib/sendmail/cf/cf/mail.eecs.mc +++ /dev/null @@ -1,44 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in Electrical Engineering and Computer Sciences at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. -# -# This file is for the primary EECS mail server. -# - -divert(0)dnl -VERSIONID(`$Id: mail.eecs.mc,v 8.18 1999/02/07 07:26:04 gshapiro Exp $') -OSTYPE(ultrix4)dnl -DOMAIN(EECS.Berkeley.EDU)dnl -MASQUERADE_AS(EECS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl -define(`confUSERDB_SPEC', `/usr/local/lib/users.eecs.db,/usr/local/lib/users.cs.db,/usr/local/lib/users.coe.db')dnl - -LOCAL_CONFIG -DDBerkeley.EDU - -# hosts for which we accept and forward mail (must be in .Berkeley.EDU) -CF EECS -FF/etc/sendmail.cw - -LOCAL_RULE_0 -R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ... -R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ... - -R$* < @ $=F . $D . > $#local $: $1 use UDB diff --git a/contrib/sendmail/cf/cf/mailspool.cs.mc b/contrib/sendmail/cf/cf/mailspool.cs.mc deleted file mode 100644 index 0414e4c3fa89b..0000000000000 --- a/contrib/sendmail/cf/cf/mailspool.cs.mc +++ /dev/null @@ -1,37 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in the Computer Science Division at Berkeley, and should -# not be used elsewhere. It is provided on the sendmail distribution -# as a sample only. -# -# This file is for our mail spool machine. For a while we were using -# "root.machinename" instead of "root+machinename", so this is included -# for back compatibility. -# - -divert(0)dnl -VERSIONID(`$Id: mailspool.cs.mc,v 8.12 1999/02/07 07:26:04 gshapiro Exp $') -OSTYPE(sunos4.1)dnl -DOMAIN(CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl - -LOCAL_CONFIG -CDroot sys-custodian - -LOCAL_RULE_3 -R$=D . $+ $1 + $2 diff --git a/contrib/sendmail/cf/cf/python.cs.mc b/contrib/sendmail/cf/cf/python.cs.mc deleted file mode 100644 index c3b3e0da0eb0b..0000000000000 --- a/contrib/sendmail/cf/cf/python.cs.mc +++ /dev/null @@ -1,42 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in the Computer Science Division at Berkeley, and should -# not be used elsewhere. It is provided on the sendmail distribution -# as a sample only. -# -# This file is for a home machine that wants to masquerade as an -# on-campus machine. Additionally, all addresses without a hostname -# will be forwarded to that machine. -# - -divert(0)dnl -VERSIONID(`$Id: python.cs.mc,v 8.12 1999/02/07 07:26:04 gshapiro Exp $') -OSTYPE(bsd4.4)dnl -DOMAIN(CS.Berkeley.EDU)dnl -define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl -MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl - -# accept mail sent to the domain head -DDBostic.COM - -LOCAL_RULE_0 -# accept mail sent to the domain head -R< @ $D . > : $* $@ $>7 $1 @here:... -> ... -R$* $=O $* < @ $D . > $@ $>7 $1 $2 $3 ...@here -> ... -R$* < @ $D . > $#local $: $1 user@here -> user diff --git a/contrib/sendmail/cf/cf/s2k-osf1.mc b/contrib/sendmail/cf/cf/s2k-osf1.mc deleted file mode 100644 index 6ec08feae87f9..0000000000000 --- a/contrib/sendmail/cf/cf/s2k-osf1.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for OSF/1. -# It applies only to the Sequoia 2000 Project at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: s2k-osf1.mc,v 8.13 1999/02/07 07:26:04 gshapiro Exp $') -OSTYPE(osf1)dnl -DOMAIN(S2K.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/s2k-ultrix4.mc b/contrib/sendmail/cf/cf/s2k-ultrix4.mc deleted file mode 100644 index 4bf4939795848..0000000000000 --- a/contrib/sendmail/cf/cf/s2k-ultrix4.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for Ultrix 4.x. -# It applies only to the Sequoia 2000 Project at Berkeley, -# and should not be used elsewhere. It is provided on the sendmail -# distribution as a sample only. To create your own configuration -# file, create an appropriate domain file in ../domain, change the -# `DOMAIN' macro below to reference that file, and copy the result -# to a name of your own choosing. -# - -divert(0)dnl -VERSIONID(`$Id: s2k-ultrix4.mc,v 8.13 1999/02/07 07:26:04 gshapiro Exp $') -OSTYPE(ultrix4)dnl -DOMAIN(S2K.Berkeley.EDU)dnl -MAILER(local)dnl -MAILER(smtp)dnl diff --git a/contrib/sendmail/cf/cf/submit.cf b/contrib/sendmail/cf/cf/submit.cf deleted file mode 100644 index ca292e56ead06..0000000000000 --- a/contrib/sendmail/cf/cf/submit.cf +++ /dev/null @@ -1,1452 +0,0 @@ -# -# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -###################################################################### -###################################################################### -##### -##### SENDMAIL CONFIGURATION FILE -##### -##### built by ca@wiz.smi.sendmail.com on Sun Mar 27 16:38:48 PST 2005 -##### in /extra/home/ca/sm-8.13.4/OpenSource/sendmail-8.13.4/cf/cf -##### using ../ as configuration include directory -##### -###################################################################### -##### -##### DO NOT EDIT THIS FILE! Only edit the source .mc file. -##### -###################################################################### -###################################################################### - -##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ ##### -##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### -##### $Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $ ##### -##### $Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $ ##### - -##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ ##### - - -##### $Id: proto.m4,v 8.711 2004/08/04 21:29:55 ca Exp $ ##### - -# level 10 config file format -V10/Berkeley - -# override file safeties - setting this option compromises system security, -# addressing the actual file configuration problem is preferred -# need to set this before any file actions are encountered in the cf file -#O DontBlameSendmail=safe - -# default LDAP map specification -# need to set this now before any LDAP maps are defined -#O LDAPDefaultSpec=-h localhost - -################## -# local info # -################## - -# my LDAP cluster -# need to set this before any LDAP lookups are done (including classes) -#D{sendmailMTACluster}$m - -Cwlocalhost - -# my official domain name -# ... define this only if sendmail cannot automatically determine your domain -#Dj$w.Foo.COM - -# host/domain names ending with a token in class P are canonical -CP. - -# "Smart" relay host (may be null) -DS - - -# operators that cannot be in local usernames (i.e., network indicators) -CO @ % ! - -# a class with just dot (for identifying canonical names) -C.. - -# a class with just a left bracket (for identifying domain literals) -C[[ - - -# Resolve map (to check if a host exists in check_mail) -Kresolve host -a<OKR> -T<TEMP> -C{ResOk}OKR - - -# Hosts for which relaying is permitted ($=R) -FR-o /etc/mail/relay-domains - -# arithmetic map -Karith arith - - - - - -# dequoting map -Kdequote dequote - -# class E: names that should be exposed as from this host, even if we masquerade -# class L: names that should be delivered locally, even if we have a relay -# class M: domains that should be converted to $M -# class N: domains that should not be converted to $M -#CL root - - - -# my name for error messages -DnMAILER-DAEMON - - -D{MTAHost}[127.0.0.1] - - -# Configuration version number -DZ8.13.4/Submit - - -############### -# Options # -############### - -# strip message body to 7 bits on input? -O SevenBitInput=False - -# 8-bit data handling -#O EightBitMode=pass8 - -# wait for alias file rebuild (default units: minutes) -O AliasWait=10 - -# location of alias file -#O AliasFile=/etc/mail/aliases - -# minimum number of free blocks on filesystem -O MinFreeBlocks=100 - -# maximum message size -#O MaxMessageSize=0 - -# substitution for space (blank) characters -O BlankSub=. - -# avoid connecting to "expensive" mailers on initial submission? -O HoldExpensive=False - -# checkpoint queue runs after every N successful deliveries -#O CheckpointInterval=10 - -# default delivery mode -O DeliveryMode=i - -# error message header/file -#O ErrorHeader=/etc/mail/error-header - -# error mode -#O ErrorMode=print - -# save Unix-style "From_" lines at top of header? -#O SaveFromLine=False - -# queue file mode (qf files) -O QueueFileMode=0660 - -# temporary file mode -O TempFileMode=0600 - -# match recipients against GECOS field? -#O MatchGECOS=False - -# maximum hop count -#O MaxHopCount=25 - -# location of help file -O HelpFile=/etc/mail/helpfile - -# ignore dots as terminators in incoming messages? -#O IgnoreDots=False - -# name resolver options -#O ResolverOptions=+AAONLY - -# deliver MIME-encapsulated error messages? -O SendMimeErrors=True - -# Forward file search path -O ForwardPath - -# open connection cache size -O ConnectionCacheSize=2 - -# open connection cache timeout -O ConnectionCacheTimeout=5m - -# persistent host status directory -#O HostStatusDirectory=.hoststat - -# single thread deliveries (requires HostStatusDirectory)? -#O SingleThreadDelivery=False - -# use Errors-To: header? -O UseErrorsTo=False - -# log level -O LogLevel=9 - -# send to me too, even in an alias expansion? -#O MeToo=True - -# verify RHS in newaliases? -O CheckAliases=False - -# default messages to old style headers if no special punctuation? -O OldStyleHeaders=True - -# SMTP daemon options - -O DaemonPortOptions=Name=NoMTA, Addr=127.0.0.1, M=E - -# SMTP client options -#O ClientPortOptions=Family=inet, Address=0.0.0.0 - -# Modifiers to define {daemon_flags} for direct submissions -#O DirectSubmissionModifiers - -# Use as mail submission program? See sendmail/SECURITY -O UseMSP=True - -# privacy flags -O PrivacyOptions=goaway,noetrn,restrictqrun - -# who (if anyone) should get extra copies of error messages -#O PostmasterCopy=Postmaster - -# slope of queue-only function -#O QueueFactor=600000 - -# limit on number of concurrent queue runners -#O MaxQueueChildren - -# maximum number of queue-runners per queue-grouping with multiple queues -#O MaxRunnersPerQueue=1 - -# priority of queue runners (nice(3)) -#O NiceQueueRun - -# shall we sort the queue by hostname first? -#O QueueSortOrder=priority - -# minimum time in queue before retry -#O MinQueueAge=30m - -# how many jobs can you process in the queue? -#O MaxQueueRunSize=10000 - -# perform initial split of envelope without checking MX records -#O FastSplit=1 - -# queue directory -O QueueDirectory=/var/spool/clientmqueue - -# key for shared memory; 0 to turn off -#O SharedMemoryKey=0 - - - -# timeouts (many of these) -#O Timeout.initial=5m -#O Timeout.connect=5m -#O Timeout.aconnect=0s -#O Timeout.iconnect=5m -#O Timeout.helo=5m -#O Timeout.mail=10m -#O Timeout.rcpt=1h -#O Timeout.datainit=5m -#O Timeout.datablock=1h -#O Timeout.datafinal=1h -#O Timeout.rset=5m -#O Timeout.quit=2m -#O Timeout.misc=2m -#O Timeout.command=1h -#O Timeout.ident=5s -#O Timeout.fileopen=60s -#O Timeout.control=2m -O Timeout.queuereturn=5d -#O Timeout.queuereturn.normal=5d -#O Timeout.queuereturn.urgent=2d -#O Timeout.queuereturn.non-urgent=7d -#O Timeout.queuereturn.dsn=5d -O Timeout.queuewarn=4h -#O Timeout.queuewarn.normal=4h -#O Timeout.queuewarn.urgent=1h -#O Timeout.queuewarn.non-urgent=12h -#O Timeout.queuewarn.dsn=4h -#O Timeout.hoststatus=30m -#O Timeout.resolver.retrans=5s -#O Timeout.resolver.retrans.first=5s -#O Timeout.resolver.retrans.normal=5s -#O Timeout.resolver.retry=4 -#O Timeout.resolver.retry.first=4 -#O Timeout.resolver.retry.normal=4 -#O Timeout.lhlo=2m -#O Timeout.auth=10m -#O Timeout.starttls=1h - -# time for DeliverBy; extension disabled if less than 0 -#O DeliverByMin=0 - -# should we not prune routes in route-addr syntax addresses? -#O DontPruneRoutes=False - -# queue up everything before forking? -O SuperSafe=True - -# status file -O StatusFile=/var/spool/clientmqueue/sm-client.st - -# time zone handling: -# if undefined, use system default -# if defined but null, use TZ envariable passed in -# if defined and non-null, use that info -O TimeZoneSpec= - -# default UID (can be username or userid:groupid) -#O DefaultUser=mailnull - -# list of locations of user database file (null means no lookup) -#O UserDatabaseSpec=/etc/mail/userdb - -# fallback MX host -#O FallbackMXhost=fall.back.host.net - -# fallback smart host -#O FallbackSmartHost=fall.back.host.net - -# if we are the best MX host for a site, try it directly instead of config err -#O TryNullMXList=False - -# load average at which we just queue messages -#O QueueLA=8 - -# load average at which we refuse connections -#O RefuseLA=12 - -# log interval when refusing connections for this long -#O RejectLogInterval=3h - -# load average at which we delay connections; 0 means no limit -#O DelayLA=0 - -# maximum number of children we allow at one time -#O MaxDaemonChildren=0 - -# maximum number of new connections per second -#O ConnectionRateThrottle=0 - -# Width of the window -#O ConnectionRateWindowSize=60s - -# work recipient factor -#O RecipientFactor=30000 - -# deliver each queued job in a separate process? -#O ForkEachJob=False - -# work class factor -#O ClassFactor=1800 - -# work time factor -#O RetryFactor=90000 - -# default character set -#O DefaultCharSet=unknown-8bit - -# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others) -#O ServiceSwitchFile=/etc/mail/service.switch - -# hosts file (normally /etc/hosts) -#O HostsFile=/etc/hosts - -# dialup line delay on connection failure -#O DialDelay=10s - -# action to take if there are no recipients in the message -#O NoRecipientAction=add-to-undisclosed - -# chrooted environment for writing to files -#O SafeFileEnvironment=/arch - -# are colons OK in addresses? -#O ColonOkInAddr=True - -# shall I avoid expanding CNAMEs (violates protocols)? -#O DontExpandCnames=False - -# SMTP initial login message (old $e macro) -O SmtpGreetingMessage=$j Sendmail $v/$Z; $b - -# UNIX initial From header format (old $l macro) -O UnixFromLine=From $g $d - -# From: lines that have embedded newlines are unwrapped onto one line -#O SingleLineFromHeader=False - -# Allow HELO SMTP command that does not include a host name -#O AllowBogusHELO=False - -# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) -#O MustQuoteChars=. - -# delimiter (operator) characters (old $o macro) -O OperatorChars=.:%@!^/[]+ - -# shall I avoid calling initgroups(3) because of high NIS costs? -O DontInitGroups=True - -# are group-writable :include: and .forward files (un)trustworthy? -# True (the default) means they are not trustworthy. -#O UnsafeGroupWrites=True - - -# where do errors that occur when sending errors get sent? -#O DoubleBounceAddress=postmaster - -# where to save bounces if all else fails -#O DeadLetterDrop=/var/tmp/dead.letter - -# what user id do we assume for the majority of the processing? -O RunAsUser=smmsp - -# maximum number of recipients per SMTP envelope -#O MaxRecipientsPerMessage=0 - -# limit the rate recipients per SMTP envelope are accepted -# once the threshold number of recipients have been rejected -#O BadRcptThrottle=0 - -# shall we get local names from our installed interfaces? -O DontProbeInterfaces=True - -# Return-Receipt-To: header implies DSN request -#O RrtImpliesDsn=False - -# override connection address (for testing) -#O ConnectOnlyTo=0.0.0.0 - -# Trusted user for file ownership and starting the daemon -O TrustedUser=smmsp - -# Control socket for daemon management -#O ControlSocketName=/var/spool/mqueue/.control - -# Maximum MIME header length to protect MUAs -#O MaxMimeHeaderLength=0/0 - -# Maximum length of the sum of all headers -#O MaxHeadersLength=32768 - -# Maximum depth of alias recursion -#O MaxAliasRecursion=10 - -# location of pid file -O PidFile=/var/spool/clientmqueue/sm-client.pid - -# Prefix string for the process title shown on 'ps' listings -#O ProcessTitlePrefix=prefix - -# Data file (df) memory-buffer file maximum size -#O DataFileBufferSize=4096 - -# Transcript file (xf) memory-buffer file maximum size -#O XscriptFileBufferSize=4096 - -# lookup type to find information about local mailboxes -#O MailboxDatabase=pw - -# override compile time flag REQUIRES_DIR_FSYNC -#O RequiresDirfsync=true - -# list of authentication mechanisms -#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 - -# Authentication realm -#O AuthRealm - -# default authentication information for outgoing connections -#O DefaultAuthInfo=/etc/mail/default-auth-info - -# SMTP AUTH flags -#O AuthOptions - -# SMTP AUTH maximum encryption strength -#O AuthMaxBits - -# SMTP STARTTLS server options -#O TLSSrvOptions - -# Input mail filters -#O InputMailFilters - - -# CA directory -#O CACertPath -# CA file -#O CACertFile -# Server Cert -#O ServerCertFile -# Server private key -#O ServerKeyFile -# Client Cert -#O ClientCertFile -# Client private key -#O ClientKeyFile -# File containing certificate revocation lists -#O CRLFile -# DHParameters (only required if DSA/DH is used) -#O DHParameters -# Random data source (required for systems without /dev/urandom under OpenSSL) -#O RandFile - -############################ -# QUEUE GROUP DEFINITIONS # -############################ - - -########################### -# Message precedences # -########################### - -Pfirst-class=0 -Pspecial-delivery=100 -Plist=-30 -Pbulk=-60 -Pjunk=-100 - -##################### -# Trusted users # -##################### - -# this is equivalent to setting class "t" -#Ft/etc/mail/trusted-users -Troot -Tdaemon -Tuucp - -######################### -# Format of headers # -######################### - -H?P?Return-Path: <$g> -HReceived: $?sfrom $s $.$?_($?s$|from $.$_) - $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.) - $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version} - (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u - for $u; $|; - $.$b -H?D?Resent-Date: $a -H?D?Date: $a -H?F?Resent-From: $?x$x <$g>$|$g$. -H?F?From: $?x$x <$g>$|$g$. -H?x?Full-Name: $x -# HPosted-Date: $a -# H?l?Received-Date: $b -H?M?Resent-Message-Id: <$t.$i@$j> -H?M?Message-Id: <$t.$i@$j> - -# -###################################################################### -###################################################################### -##### -##### REWRITING RULES -##### -###################################################################### -###################################################################### - -############################################ -### Ruleset 3 -- Name Canonicalization ### -############################################ -Scanonify=3 - -# handle null input (translate to <@> special case) -R$@ $@ <@> - -# strip group: syntax (not inside angle brackets!) and trailing semicolon -R$* $: $1 <@> mark addresses -R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> -R@ $* <@> $: @ $1 unmark @host:... -R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr -R$* :: $* <@> $: $1 :: $2 unmark node::addr -R:include: $* <@> $: :include: $1 unmark :include:... -R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon -R$* : $* <@> $: $2 strip colon if marked -R$* <@> $: $1 unmark -R$* ; $1 strip trailing semi -R$* < $+ :; > $* $@ $2 :; <@> catch <list:;> -R$* < $* ; > $1 < $2 > bogus bracketed semi - -# null input now results from list:; syntax -R$@ $@ :; <@> - -# strip angle brackets -- note RFC733 heuristic to get innermost item -R$* $: < $1 > housekeeping <> -R$+ < $* > < $2 > strip excess on left -R< $* > $+ < $1 > strip excess on right -R<> $@ < @ > MAIL FROM:<> case -R< $+ > $: $1 remove housekeeping <> - -# strip route address <@a,@b,@c:user@d> -> <user@d> -R@ $+ , $+ $2 -R@ [ $* ] : $+ $2 -R@ $+ : $+ $2 - -# find focus for list syntax -R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax -R $+ : $* ; $@ $1 : $2; list syntax - -# find focus for @ syntax addresses -R$+ @ $+ $: $1 < @ $2 > focus on domain -R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right -R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical - - -# convert old-style addresses to a domain-based address -R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names -R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps -R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains - -# convert node::user addresses into a domain-based address -R$- :: $+ $@ $>Canonify2 $2 < @ $1 .DECNET > resolve DECnet names -R$- . $- :: $+ $@ $>Canonify2 $3 < @ $1.$2 .DECNET > numeric DECnet addr - -# if we have % signs, take the rightmost one -R$* % $* $1 @ $2 First make them all @s. -R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. -R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish - -# else we must be a local name -R$* $@ $>Canonify2 $1 - - -################################################ -### Ruleset 96 -- bottom half of ruleset 3 ### -################################################ - -SCanonify2=96 - -# handle special cases for local names -R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all -R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain -R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain - -# check for IPv4/IPv6 domain literal -R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr] -R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal -R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr - - - - - -# if really UUCP, handle it immediately - -# try UUCP traffic as a local address -R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 -R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3 - -# hostnames ending in class P are always canonical -R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 -R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4 -R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 -R$* CC $* $| $* $: $3 -# pass to name server to make hostname canonical -R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4 -R$* $| $* $: $2 - -# local host aliases and pseudo-domains are always canonical -R$* < @ $=w > $* $: $1 < @ $2 . > $3 -R$* < @ $=M > $* $: $1 < @ $2 . > $3 -R$* < @ $* . . > $* $1 < @ $2 . > $3 - - -################################################## -### Ruleset 4 -- Final Output Post-rewriting ### -################################################## -Sfinal=4 - -R$+ :; <@> $@ $1 : handle <list:;> -R$* <@> $@ handle <> and list:; - -# strip trailing dot off possibly canonical name -R$* < @ $+ . > $* $1 < @ $2 > $3 - -# eliminate internal code -R$* < @ *LOCAL* > $* $1 < @ $j > $2 - -# externalize local domain info -R$* < $+ > $* $1 $2 $3 defocus -R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical -R@ $* $@ @ $1 ... and exit - -# UUCP must always be presented in old form -R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u - -# put DECnet back in :: form -R$+ @ $+ . DECNET $2 :: $1 u@h.DECNET => h::u -# delete duplicate local names -R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host - - - -############################################################## -### Ruleset 97 -- recanonicalize and call ruleset zero ### -### (used for recursive calls) ### -############################################################## - -SRecurse=97 -R$* $: $>canonify $1 -R$* $@ $>parse $1 - - -###################################### -### Ruleset 0 -- Parse Address ### -###################################### - -Sparse=0 - -R$* $: $>Parse0 $1 initial parsing -R<@> $#local $: <@> special case error msgs -R$* $: $>ParseLocal $1 handle local hacks -R$* $: $>Parse1 $1 final parsing - -# -# Parse0 -- do initial syntax checking and eliminate local addresses. -# This should either return with the (possibly modified) input -# or return with a #error mailer. It should not return with a -# #mailer other than the #error mailer. -# - -SParse0 -R<@> $@ <@> special case error msgs -R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses" -R@ <@ $* > < @ $1 > catch "@@host" bogosity -R<@ $+> $#error $@ 5.1.3 $: "553 User address required" -R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required" -R$* $: <> $1 -R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4 -R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4 -R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address" -R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3 -R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part" -R<> $* $1 -R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" -R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" -R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address" -R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address" -R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address" - - -# now delete the local info -- note $=O to find characters that cause forwarding -R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user -R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ... -R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here -R< @ $+ > $#error $@ 5.1.3 $: "553 User address required" -R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ... -R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo" -R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required" -R$* $=O $* < @ *LOCAL* > - $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ... -R$* < @ *LOCAL* > $: $1 - -# -# Parse1 -- the bottom half of ruleset 0. -# - -SParse1 - -# handle numeric address spec -R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec -R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path -R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send -R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer -R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer - - -# short circuit local delivery so forwarded email works - - -R$=L < @ $=w . > $#local $: @ $1 special local names -R$+ < @ $=w . > $#local $: $1 regular local name - - -# resolve remotely connected UUCP links (if any) - -# resolve fake top level domains by forwarding to other hosts - - - -# pass names that still have a host to a smarthost (if defined) -R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name - -# deal with other remote names -R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain - -# handle locally delivered names -R$=L $#local $: @ $1 special local names -R$+ $#local $: $1 regular local names - -########################################################################### -### Ruleset 5 -- special rewriting after aliases have been expanded ### -########################################################################### - -SLocal_localaddr -Slocaladdr=5 -R$+ $: $1 $| $>"Local_localaddr" $1 -R$+ $| $#ok $@ $1 no change -R$+ $| $#$* $#$2 -R$+ $| $* $: $1 - - - - -# deal with plussed users so aliases work nicely -R$+ + * $#local $@ $&h $: $1 -R$+ + $* $#local $@ + $2 $: $1 + * - -# prepend an empty "forward host" on the front -R$+ $: <> $1 - - - -R< > $+ $: < > < $1 <> $&h > nope, restore +detail - -R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail -R< > < $+ <> $* > $: < > < $1 > else discard -R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part -R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra + -R< > < $+ > $@ $1 no +detail -R$+ $: $1 <> $&h add +detail back in - -R$+ <> + $* $: $1 + $2 check whether +detail -R$+ <> $* $: $1 else discard -R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension -R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension - -R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 > - -R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 > - - -################################################################### -### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ### -################################################################### - -SMailerToTriple=95 -R< > $* $@ $1 strip off null relay -R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 -R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2 -R< error : $+ > $* $#error $: $1 -R< local : $* > $* $>CanonLocal < $1 > $2 -R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user -R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer -R< $=w > $* $@ $2 delete local host -R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer - -################################################################### -### Ruleset CanonLocal -- canonify local: syntax ### -################################################################### - -SCanonLocal -# strip local host from routed addresses -R< $* > < @ $+ > : $+ $@ $>Recurse $3 -R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4 - -# strip trailing dot from any host name that may appear -R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 > - -# handle local: syntax -- use old user, either with or without host -R< > $* < @ $* > $* $#local $@ $1@$2 $: $1 -R< > $+ $#local $@ $1 $: $1 - -# handle local:user@host syntax -- ignore host part -R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 > - -# handle local:user syntax -R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1 -R< $+ > $* $#local $@ $2 $: $1 - -################################################################### -### Ruleset 93 -- convert header names to masqueraded form ### -################################################################### - -SMasqHdr=93 - - -# do not masquerade anything in class N -R$* < @ $* $=N . > $@ $1 < @ $2 $3 . > - -R$* < @ *LOCAL* > $@ $1 < @ $j . > - -################################################################### -### Ruleset 94 -- convert envelope names to masqueraded form ### -################################################################### - -SMasqEnv=94 -R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 - -################################################################### -### Ruleset 98 -- local part of ruleset zero (can be null) ### -################################################################### - -SParseLocal=98 - - - - -###################################################################### -### CanonAddr -- Convert an address into a standard form for -### relay checking. Route address syntax is -### crudely converted into a %-hack address. -### -### Parameters: -### $1 -- full recipient address -### -### Returns: -### parsed address, not in source route form -###################################################################### - -SCanonAddr -R$* $: $>Parse0 $>canonify $1 make domain canonical - - -###################################################################### -### ParseRecipient -- Strip off hosts in $=R as well as possibly -### $* $=m or the access database. -### Check user portion for host separators. -### -### Parameters: -### $1 -- full recipient address -### -### Returns: -### parsed, non-local-relaying address -###################################################################### - -SParseRecipient -R$* $: <?> $>CanonAddr $1 -R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots -R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part - -# if no $=O character, no host in the user portion, we are done -R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4> -R<?> $* $@ $1 - - -R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 > - - - -R<RELAY> $* < @ $* > $@ $>ParseRecipient $1 -R<$+> $* $@ $2 - - -###################################################################### -### check_relay -- check hostname/address on SMTP startup -###################################################################### - - - -SLocal_check_relay -Scheck_relay -R$* $: $1 $| $>"Local_check_relay" $1 -R$* $| $* $| $#$* $#$3 -R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2 - -SBasic_check_relay -# check for deferred delivery mode -R$* $: < $&{deliveryMode} > $1 -R< d > $* $@ deferred -R< $* > $* $: $2 - - - - -###################################################################### -### check_mail -- check SMTP `MAIL FROM:' command argument -###################################################################### - -SLocal_check_mail -Scheck_mail -R$* $: $1 $| $>"Local_check_mail" $1 -R$* $| $#$* $#$2 -R$* $| $* $@ $>"Basic_check_mail" $1 - -SBasic_check_mail -# check for deferred delivery mode -R$* $: < $&{deliveryMode} > $1 -R< d > $* $@ deferred -R< $* > $* $: $2 - -# authenticated? -R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL -R$* $| $#$+ $#$2 -R$* $| $* $: $1 - -R<> $@ <OK> we MUST accept <> (RFC 1123) -R$+ $: <?> $1 -R<?><$+> $: <@> <$1> -R<?>$+ $: <@> <$1> -R$* $: $&{daemon_flags} $| $1 -R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 > -R$* u $* $| <@> < $* > $: <?> < $3 > -R$* $| $* $: $2 -# handle case of @localhost on address -R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost > -R<@> < $* @ [127.0.0.1] > - $: < ? $&{client_name} > < $1 @ [127.0.0.1] > -R<@> < $* @ localhost.$m > - $: < ? $&{client_name} > < $1 @ localhost.$m > -R<@> < $* @ localhost.UUCP > - $: < ? $&{client_name} > < $1 @ localhost.UUCP > -R<@> $* $: $1 no localhost as domain -R<? $=w> $* $: $2 local client: ok -R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address" -R<?> $* $: $1 -R$* $: <?> $>CanonAddr $1 canonify sender address and mark it -R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots -# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) -R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 > -R<?> $* < @ $j > $: <OKR> $1 < @ $j > -R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > -R<? $* <$->> $* < @ $+ > - $: <$2> $3 < @ $4 > - - -# handle case of no @domain on address -R<?> $* $: $&{daemon_flags} $| <?> $1 -R$* u $* $| <?> $* $: <OKR> $3 -R$* $| $* $: $2 -R<?> $* $: < ? $&{client_addr} > $1 -R<?> $* $@ <OKR> ...local unqualed ok -R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f - ...remote is not -# check results -R<?> $* $: @ $1 mark address: nothing known about it -R<$={ResOk}> $* $@ <OKR> domain ok: stop -R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve" -R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist" - -###################################################################### -### check_rcpt -- check SMTP `RCPT TO:' command argument -###################################################################### - -SLocal_check_rcpt -Scheck_rcpt -R$* $: $1 $| $>"Local_check_rcpt" $1 -R$* $| $#$* $#$2 -R$* $| $* $@ $>"Basic_check_rcpt" $1 - -SBasic_check_rcpt -# empty address? -R<> $#error $@ nouser $: "553 User address required" -R$@ $#error $@ nouser $: "553 User address required" -# check for deferred delivery mode -R$* $: < $&{deliveryMode} > $1 -R< d > $* $@ deferred -R< $* > $* $: $2 - - -###################################################################### -R$* $: $1 $| @ $>"Rcpt_ok" $1 -R$* $| @ $#TEMP $+ $: $1 $| T $2 -R$* $| @ $#$* $#$2 -R$* $| @ RELAY $@ RELAY -R$* $| @ $* $: O $| $>"Relay_ok" $1 -R$* $| T $+ $: T $2 $| $>"Relay_ok" $1 -R$* $| $#TEMP $+ $#error $2 -R$* $| $#$* $#$2 -R$* $| RELAY $@ RELAY -R T $+ $| $* $#error $1 -# anything else is bogus -R$* $#error $@ 5.7.1 $: "550 Relaying denied" - - -###################################################################### -### Rcpt_ok: is the recipient ok? -###################################################################### -SRcpt_ok -R$* $: $>ParseRecipient $1 strip relayable hosts - - - - -# authenticated via TLS? -R$* $: $1 $| $>RelayTLS client authenticated? -R$* $| $# $+ $# $2 error/ok? -R$* $| $* $: $1 no - -R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type} -R$* $| $# $* $# $2 -R$* $| NO $: $1 -R$* $| $* $: $1 $| $&{auth_type} -R$* $| $: $1 -R$* $| $={TrustAuthMech} $# RELAY -R$* $| $* $: $1 -# anything terminating locally is ok -R$+ < @ $=w > $@ RELAY -R$+ < @ $* $=R > $@ RELAY - - - - -# check for local user (i.e. unqualified address) -R$* $: <?> $1 -R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 > -# local user is ok -R<?> $+ $@ RELAY -R<$+> $* $: $2 - -###################################################################### -### Relay_ok: is the relay/sender ok? -###################################################################### -SRelay_ok -# anything originating locally is ok -# check IP address -R$* $: $&{client_addr} -R$@ $@ RELAY originated locally -R0 $@ RELAY originated locally -R127.0.0.1 $@ RELAY originated locally -RIPv6:::1 $@ RELAY originated locally -R$=R $* $@ RELAY relayable IP address -R$* $: [ $1 ] put brackets around it... -R$=w $@ RELAY ... and see if it is local - - -# check client name: first: did it resolve? -R$* $: < $&{client_resolve} > -R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} -R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} -R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} -R$* $: <@> $&{client_name} -# pass to name server to make hostname canonical -R<@> $* $=P $:<?> $1 $2 -R<@> $+ $:<?> $[ $1 $] -R$* . $1 strip trailing dots -R<?> $=w $@ RELAY -R<?> $* $=R $@ RELAY - - - - -###################################################################### -### trust_auth: is user trusted to authenticate as someone else? -### -### Parameters: -### $1: AUTH= parameter from MAIL command -###################################################################### - -SLocal_trust_auth -Strust_auth -R$* $: $&{auth_type} $| $1 -# required by RFC 2554 section 4. -R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated" -R$* $| $&{auth_authen} $@ identical -R$* $| <$&{auth_authen}> $@ identical -R$* $| $* $: $1 $| $>"Local_trust_auth" $2 -R$* $| $#$* $#$2 -R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author} - -###################################################################### -### Relay_Auth: allow relaying based on authentication? -### -### Parameters: -### $1: ${auth_type} -###################################################################### -SLocal_Relay_Auth - -###################################################################### -### srv_features: which features to offer to a client? -### (done in server) -###################################################################### -Ssrv_features - - -###################################################################### -### try_tls: try to use STARTTLS? -### (done in client) -###################################################################### -Stry_tls - - -###################################################################### -### tls_rcpt: is connection with server "good" enough? -### (done in client, per recipient) -### -### Parameters: -### $1: recipient -###################################################################### -Stls_rcpt - - -###################################################################### -### tls_client: is connection with client "good" enough? -### (done in server) -### -### Parameters: -### ${verify} $| (MAIL|STARTTLS) -###################################################################### -Stls_client -R$* $| $* $@ $>"TLS_connection" $1 - -###################################################################### -### tls_server: is connection with server "good" enough? -### (done in client) -### -### Parameter: -### ${verify} -###################################################################### -Stls_server -R$* $@ $>"TLS_connection" $1 - -###################################################################### -### TLS_connection: is TLS connection "good" enough? -### -### Parameters: -### ${verify} -### Requirement: RHS from access map, may be ? for none. -###################################################################### -STLS_connection -RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." - - -###################################################################### -### RelayTLS: allow relaying based on TLS authentication -### -### Parameters: -### none -###################################################################### -SRelayTLS -# authenticated? - -###################################################################### -### authinfo: lookup authinfo in the access map -### -### Parameters: -### $1: {server_name} -### $2: {server_addr} -###################################################################### -Sauthinfo - - - - - - - - -SLocal_localaddr -R$+ $: $>ParseRecipient $1 -R$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3 -# DECnet -R$+ :: $+ $#relay $@ ${MTAHost} $: $1 :: $2 -R$* $#relay $@ ${MTAHost} $: $1 < @ $j > -# -###################################################################### -###################################################################### -##### -##### MAIL FILTER DEFINITIONS -##### -###################################################################### -###################################################################### - -# -###################################################################### -###################################################################### -##### -##### MAILER DEFINITIONS -##### -###################################################################### -###################################################################### - - -################################################## -### Local and Program Mailer specification ### -################################################## - -##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ ##### - -# -# Envelope sender rewriting -# -SEnvFromL -R<@> $n errors to mailer-daemon -R@ <@ $*> $n temporarily bypass Sun bogosity -R$+ $: $>AddDomain $1 add local domain if needed -R$* $: $>MasqEnv $1 do masquerading - -# -# Envelope recipient rewriting -# -SEnvToL -R$+ < @ $* > $: $1 strip host part -R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type -R<e s> $+ + $* $: $1 remove +detail for sender -R< $* > $+ $: $2 else remove mark - -# -# Header sender rewriting -# -SHdrFromL -R<@> $n errors to mailer-daemon -R@ <@ $*> $n temporarily bypass Sun bogosity -R$+ $: $>AddDomain $1 add local domain if needed -R$* $: $>MasqHdr $1 do masquerading - -# -# Header recipient rewriting -# -SHdrToL -R$+ $: $>AddDomain $1 add local domain if needed -R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 - -# -# Common code to add local domain name (only if always-add-domain) -# -SAddDomain - -Mlocal, P=[IPC], F=lmDFMuXkw5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, - T=DNS/RFC822/SMTP, - A=TCP $h -Mprog, P=[IPC], F=lmDFMuXk5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/, - T=X-Unix/X-Unix/X-Unix, - A=TCP $h - -##################################### -### SMTP Mailer specification ### -##################################### - -##### $Id: smtp.m4,v 8.64 2001/04/03 01:52:54 gshapiro Exp $ ##### - -# -# common sender and masquerading recipient rewriting -# -SMasqSMTP -R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified -R$+ $@ $1 < @ *LOCAL* > add local qualification - -# -# convert pseudo-domain addresses to real domain addresses -# -SPseudoToReal - -# pass <route-addr>s through -R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> - -# output fake domains as user%fake@relay - -# do UUCP heuristics; note that these are shared with UUCP mailers -R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form -R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form - -# leave these in .UUCP form to avoid further tampering -R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > -R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > -R< $&h ! > $+ $@ $1 < @ $&h .UUCP. > -R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY -R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part -R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY - - -# -# envelope sender rewriting -# -SEnvFromSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R$* :; <@> $@ list:; special case -R$* $: $>MasqSMTP $1 qualify unqual'ed names -R$+ $: $>MasqEnv $1 do masquerading - - -# -# envelope recipient rewriting -- -# also header recipient if not masquerading recipients -# -SEnvToSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R$+ $: $>MasqSMTP $1 qualify unqual'ed names -R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 - -# -# header sender and masquerading header recipient rewriting -# -SHdrFromSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R:; <@> $@ list:; special case - -# do special header rewriting -R$* <@> $* $@ $1 <@> $2 pass null host through -R< @ $* > $* $@ < @ $1 > $2 pass route-addr through -R$* $: $>MasqSMTP $1 qualify unqual'ed names -R$+ $: $>MasqHdr $1 do masquerading - - -# -# relay mailer header masquerading recipient rewriting -# -SMasqRelay -R$+ $: $>MasqSMTP $1 -R$+ $: $>MasqHdr $1 - -Msmtp, P=[IPC], F=mDFMuXk5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, - T=DNS/RFC822/SMTP, - A=TCP $h -Mesmtp, P=[IPC], F=mDFMuXak5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, - T=DNS/RFC822/SMTP, - A=TCP $h -Msmtp8, P=[IPC], F=mDFMuX8k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, - T=DNS/RFC822/SMTP, - A=TCP $h -Mdsmtp, P=[IPC], F=mDFMuXa%k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, - T=DNS/RFC822/SMTP, - A=TCP $h -Mrelay, P=[IPC], F=mDFMuXa8k, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040, - T=DNS/RFC822/SMTP, - A=TCP $h - -### submit.mc ### -# divert(-1) -# # -# # Copyright (c) 2001-2003 Sendmail, Inc. and its suppliers. -# # All rights reserved. -# # -# # By using this file, you agree to the terms and conditions set -# # forth in the LICENSE file which can be found at the top level of -# # the sendmail distribution. -# # -# # -# -# # -# # This is the prototype file for a set-group-ID sm-msp sendmail that -# # acts as a initial mail submission program. -# # -# -# divert(0)dnl -# VERSIONID(`$Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $') -# define(`confCF_VERSION', `Submit')dnl -# define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining -# define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet -# define(`confTIME_ZONE', `USE_TZ')dnl -# define(`confDONT_INIT_GROUPS', `True')dnl -# dnl -# dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1] -# FEATURE(`msp', `[127.0.0.1]')dnl diff --git a/contrib/sendmail/cf/cf/submit.mc b/contrib/sendmail/cf/cf/submit.mc deleted file mode 100644 index 610bbeff32a41..0000000000000 --- a/contrib/sendmail/cf/cf/submit.mc +++ /dev/null @@ -1,26 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001-2003 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is the prototype file for a set-group-ID sm-msp sendmail that -# acts as a initial mail submission program. -# - -divert(0)dnl -VERSIONID(`$Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $') -define(`confCF_VERSION', `Submit')dnl -define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining -define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet -define(`confTIME_ZONE', `USE_TZ')dnl -define(`confDONT_INIT_GROUPS', `True')dnl -dnl -dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1] -FEATURE(`msp', `[127.0.0.1]')dnl diff --git a/contrib/sendmail/cf/cf/tcpproto.mc b/contrib/sendmail/cf/cf/tcpproto.mc deleted file mode 100644 index 969cb71f2ec6f..0000000000000 --- a/contrib/sendmail/cf/cf/tcpproto.mc +++ /dev/null @@ -1,33 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is the prototype file for a configuration that supports nothing -# but basic SMTP connections via TCP. -# -# You MUST change the `OSTYPE' macro to specify the operating system -# on which this will run; this will set the location of various -# support files for your operating system environment. You MAY -# create a domain file in ../domain and reference it by adding a -# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you -# first copy this to another file name so that new sendmail releases -# will not trash your changes. -# - -divert(0)dnl -VERSIONID(`$Id: tcpproto.mc,v 8.14 2000/08/03 15:26:50 ca Exp $') -OSTYPE(`unknown') -FEATURE(`nouucp', `reject') -MAILER(`local') -MAILER(`smtp') diff --git a/contrib/sendmail/cf/cf/ucbarpa.mc b/contrib/sendmail/cf/cf/ucbarpa.mc deleted file mode 100644 index 26b2ce095d77d..0000000000000 --- a/contrib/sendmail/cf/cf/ucbarpa.mc +++ /dev/null @@ -1,30 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This machine has been decommissioned at Berkeley, and hence should -# not be considered to be tested. This file is provided as an example -# only, of how you might set up a joint SMTP/UUCP configuration. At -# this point I recommend using `FEATURE(mailertable)' instead of -# `SITECONFIG'. See also ucbvax.mc. -# - -divert(0)dnl -VERSIONID(`$Id: ucbarpa.mc,v 8.12 1999/02/07 07:26:05 gshapiro Exp $') -DOMAIN(CS.Berkeley.EDU)dnl -OSTYPE(bsd4.4)dnl -MAILER(local)dnl -MAILER(smtp)dnl -MAILER(uucp)dnl -SITECONFIG(uucp.ucbarpa, ucbarpa, U) diff --git a/contrib/sendmail/cf/cf/ucbvax.mc b/contrib/sendmail/cf/cf/ucbvax.mc deleted file mode 100644 index 235d9aa25bca0..0000000000000 --- a/contrib/sendmail/cf/cf/ucbvax.mc +++ /dev/null @@ -1,91 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This machine has been decommissioned at Berkeley, and hence should -# not be considered to be tested. This file is provided as an example -# only, of how you might set up a fairly complex configuration. -# Ucbvax was our main relay (both SMTP and UUCP) for many years. -# At this point I recommend using `FEATURE(mailertable)' instead of -# `SITECONFIG' for routing of UUCP within your domain. -# - -divert(0)dnl -VERSIONID(`$Id: ucbvax.mc,v 8.14 1999/02/07 07:26:05 gshapiro Exp $') -OSTYPE(bsd4.3) -DOMAIN(CS.Berkeley.EDU) -MASQUERADE_AS(CS.Berkeley.EDU) -MAILER(local) -MAILER(smtp) -MAILER(uucp) -undefine(`UUCP_RELAY')dnl - -LOCAL_CONFIG -DDBerkeley.EDU - -# names for which we act as a local forwarding agent -CF CS -FF/etc/sendmail.cw - -# local UUCP connections, and our local uucp name -SITECONFIG(uucp.ucbvax, ucbvax, U) - -# remote UUCP connections, and the machine they are on -SITECONFIG(uucp.ucbarpa, ucbarpa.Berkeley.EDU, W) - -SITECONFIG(uucp.cogsci, cogsci.Berkeley.EDU, X) - -LOCAL_RULE_3 -# map old UUCP names into Internet names -UUCPSMTP(bellcore, bellcore.com) -UUCPSMTP(decvax, decvax.dec.com) -UUCPSMTP(decwrl, decwrl.dec.com) -UUCPSMTP(hplabs, hplabs.hp.com) -UUCPSMTP(lbl-csam, lbl-csam.arpa) -UUCPSMTP(pur-ee, ecn.purdue.edu) -UUCPSMTP(purdue, purdue.edu) -UUCPSMTP(research, research.att.com) -UUCPSMTP(sdcarl, sdcarl.ucsd.edu) -UUCPSMTP(sdcsvax, sdcsvax.ucsd.edu) -UUCPSMTP(ssyx, ssyx.ucsc.edu) -UUCPSMTP(sun, sun.com) -UUCPSMTP(ucdavis, ucdavis.ucdavis.edu) -UUCPSMTP(ucivax, ics.uci.edu) -UUCPSMTP(ucla-cs, cs.ucla.edu) -UUCPSMTP(ucla-se, seas.ucla.edu) -UUCPSMTP(ucsbcsl, ucsbcsl.ucsb.edu) -UUCPSMTP(ucscc, c.ucsc.edu) -UUCPSMTP(ucsd, ucsd.edu) -UUCPSMTP(ucsfcgl, cgl.ucsf.edu) -UUCPSMTP(unmvax, unmvax.cs.unm.edu) -UUCPSMTP(uwvax, spool.cs.wisc.edu) - -LOCAL_RULE_0 - -# make sure we handle the local domain as absolute -R$* < @ $* $D > $* $: $1 < @ $2 $D . > $3 - -# handle names we forward for as though they were local, so we will use UDB -R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ... -R< @ $D . > : $* $@ $>7 $1 @here:... -> ... -R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ... -R$* $=O $* < @ $D . > $@ $>7 $1 $2 $3 ...@here -> ... - -R$* < @ $=F . $D . > $#local $: $1 use UDB - -# handle local UUCP connections in the Berkeley.EDU domain -R$+<@cnmat.$D . > $#uucp$@cnmat$:$1 -R$+<@cnmat.CS.$D . > $#uucp$@cnmat$:$1 -R$+<@craig.$D . > $#uucp$@craig$:$1 -R$+<@craig.CS.$D . > $#uucp$@craig$:$1 diff --git a/contrib/sendmail/cf/cf/uucpproto.mc b/contrib/sendmail/cf/cf/uucpproto.mc deleted file mode 100644 index 134c8f41b9ed5..0000000000000 --- a/contrib/sendmail/cf/cf/uucpproto.mc +++ /dev/null @@ -1,34 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is the prototype for a configuration that only supports UUCP -# and does not have DNS support at all. -# -# You MUST change the `OSTYPE' macro to specify the operating system -# on which this will run; this will set the location of various -# support files for your operating system environment. You MAY -# create a domain file in ../domain and reference it by adding a -# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you -# first copy this to another file name so that new sendmail releases -# will not trash your changes. -# - -divert(0)dnl -VERSIONID(`$Id: uucpproto.mc,v 8.15 1999/02/07 07:26:05 gshapiro Exp $') -OSTYPE(unknown) -FEATURE(promiscuous_relay)dnl -FEATURE(accept_unresolvable_domains)dnl -MAILER(local)dnl -MAILER(uucp)dnl diff --git a/contrib/sendmail/cf/cf/vangogh.cs.mc b/contrib/sendmail/cf/cf/vangogh.cs.mc deleted file mode 100644 index 3fb48e131e74d..0000000000000 --- a/contrib/sendmail/cf/cf/vangogh.cs.mc +++ /dev/null @@ -1,33 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This is a Berkeley-specific configuration file for a specific -# machine in the Computer Science Division at Berkeley, and should -# not be used elsewhere. It is provided on the sendmail distribution -# as a sample only. -# -# This file is for the BSD development machine; it has some parameters -# set up (to stress sendmail) and accepts mail for some other machines. -# - -divert(0)dnl -VERSIONID(`$Id: vangogh.cs.mc,v 8.13 1999/02/07 07:26:05 gshapiro Exp $') -DOMAIN(CS.Berkeley.EDU)dnl -OSTYPE(bsd4.4)dnl -MAILER(local)dnl -MAILER(smtp)dnl -define(`MCI_CACHE_SIZE', 5) -Cw okeeffe.CS.Berkeley.EDU -Cw python.CS.Berkeley.EDU diff --git a/contrib/sendmail/cf/domain/Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/Berkeley.EDU.m4 deleted file mode 100644 index d0fee24763efe..0000000000000 --- a/contrib/sendmail/cf/domain/Berkeley.EDU.m4 +++ /dev/null @@ -1,24 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: Berkeley.EDU.m4,v 8.17 1999/02/07 07:26:06 gshapiro Exp $') -DOMAIN(berkeley-only)dnl -define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl -define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl -define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl -define(`confCW_FILE', `-o /etc/sendmail.cw')dnl -define(`confDONT_INIT_GROUPS', True)dnl -FEATURE(redirect)dnl -FEATURE(use_cw_file)dnl -FEATURE(stickyhost)dnl diff --git a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 deleted file mode 100644 index 181ced1451cbc..0000000000000 --- a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: CS.Berkeley.EDU.m4,v 8.10 1999/02/07 07:26:06 gshapiro Exp $') -DOMAIN(Berkeley.EDU)dnl -HACK(cssubdomain)dnl -define(`confUSERDB_SPEC', - `/usr/sww/share/lib/users.cs.db,/usr/sww/share/lib/users.eecs.db')dnl diff --git a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 deleted file mode 100644 index 41a21ade2e1b6..0000000000000 --- a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 +++ /dev/null @@ -1,17 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: EECS.Berkeley.EDU.m4,v 8.10 1999/02/07 07:26:06 gshapiro Exp $') -DOMAIN(Berkeley.EDU)dnl -MASQUERADE_AS(EECS.Berkeley.EDU)dnl diff --git a/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4 deleted file mode 100644 index 9a019ce8b4d84..0000000000000 --- a/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4 +++ /dev/null @@ -1,17 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: S2K.Berkeley.EDU.m4,v 8.10 1999/02/07 07:26:06 gshapiro Exp $') -DOMAIN(CS.Berkeley.EDU)dnl -MASQUERADE_AS(postgres.Berkeley.EDU)dnl diff --git a/contrib/sendmail/cf/domain/berkeley-only.m4 b/contrib/sendmail/cf/domain/berkeley-only.m4 deleted file mode 100644 index b9a73b9b04229..0000000000000 --- a/contrib/sendmail/cf/domain/berkeley-only.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: unspecified-domain.m4,v 8.10 1999/02/07 07:26:07 gshapiro Exp $') -errprint(`*** ERROR: You are trying to use the Berkeley sample configuration') -errprint(` files outside of the Computer Science Division at Berkeley.') -errprint(` The configuration (.mc) files must be customized to reference') -errprint(` domain files appropriate for your environment.') diff --git a/contrib/sendmail/cf/domain/generic.m4 b/contrib/sendmail/cf/domain/generic.m4 deleted file mode 100644 index caa5a8845fa86..0000000000000 --- a/contrib/sendmail/cf/domain/generic.m4 +++ /dev/null @@ -1,28 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# The following is a generic domain file. You should be able to -# use it anywhere. If you want to customize it, copy it to a file -# named with your domain and make the edits; then, copy the appropriate -# .mc files and change `DOMAIN(generic)' to reference your updated domain -# files. -# -divert(0) -VERSIONID(`$Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $') -define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl -define(`confMAX_HEADERS_LENGTH', `32768')dnl -FEATURE(`redirect')dnl -FEATURE(`use_cw_file')dnl -EXPOSED_USER(`root') diff --git a/contrib/sendmail/cf/feature/accept_unqualified_senders.m4 b/contrib/sendmail/cf/feature/accept_unqualified_senders.m4 deleted file mode 100644 index 4c39884935bf9..0000000000000 --- a/contrib/sendmail/cf/feature/accept_unqualified_senders.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: accept_unqualified_senders.m4,v 8.6 1999/02/07 07:26:07 gshapiro Exp $') -divert(-1) - -define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1) diff --git a/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4 b/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4 deleted file mode 100644 index a54507c754981..0000000000000 --- a/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: accept_unresolvable_domains.m4,v 8.10 1999/02/07 07:26:07 gshapiro Exp $') -divert(-1) - -define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1) diff --git a/contrib/sendmail/cf/feature/access_db.m4 b/contrib/sendmail/cf/feature/access_db.m4 deleted file mode 100644 index 5488a452745e0..0000000000000 --- a/contrib/sendmail/cf/feature/access_db.m4 +++ /dev/null @@ -1,44 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2002, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: access_db.m4,v 8.26 2004/06/24 18:10:02 ca Exp $') -divert(-1) - -define(`_ACCESS_TABLE_', `') -define(`_TAG_DELIM_', `:')dnl should be in OperatorChars -ifelse(lower(_ARG2_),`skip',`define(`_ACCESS_SKIP_', `1')') -ifelse(lower(_ARG2_),`lookupdotdomain',`define(`_LOOKUPDOTDOMAIN_', `1')') -ifelse(lower(_ARG3_),`skip',`define(`_ACCESS_SKIP_', `1')') -ifelse(lower(_ARG3_),`lookupdotdomain',`define(`_LOOKUPDOTDOMAIN_', `1')') -define(`_ATMPF_', `<TMPF>')dnl -dnl check whether arg contains -T`'_ATMPF_ -dnl unless it is a sequence map -ifelse(defn(`_ARG_'), `', `', - defn(`_ARG_'), `LDAP', `', - `ifelse(index(_ARG_, `sequence '), `0', `', - `ifelse(index(_ARG_, _ATMPF_), `-1', - `errprint(`*** WARNING: missing -T'_ATMPF_` in argument of FEATURE(`access_db',' defn(`_ARG_')`) -') - define(`_ABP_', index(_ARG_, ` ')) - define(`_NARG_', `substr(_ARG_, 0, _ABP_) -T'_ATMPF_` substr(_ARG_, _ABP_)') - ') - ') - ') -ifdef(`_GREET_PAUSE_', - `errprint(`*** WARNING: FEATURE(`greet_pause') before FEATURE(`access_db') - greet_pause will not use access_db!')') - -LOCAL_CONFIG -# Access list database (for spam stomping) -Kaccess ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE -T`'_ATMPF_ MAIL_SETTINGS_DIR`access', - defn(`_ARG_'), `LDAP', `ldap -T`'_ATMPF_ -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=access)(sendmailMTAKey=%0))', - defn(`_NARG_'), `', `_ARG_', `_NARG_') diff --git a/contrib/sendmail/cf/feature/allmasquerade.m4 b/contrib/sendmail/cf/feature/allmasquerade.m4 deleted file mode 100644 index aa264f961d27f..0000000000000 --- a/contrib/sendmail/cf/feature/allmasquerade.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: allmasquerade.m4,v 8.13 2000/09/12 22:00:53 ca Exp $') -divert(-1) - -ifdef(`_MAILER_local_', - `errprint(`*** MAILER(`local') must appear after FEATURE(`allmasquerade')') -')dnl -ifdef(`_MAILER_uucp_', - `errprint(`*** MAILER(`uucp') must appear after FEATURE(`allmasquerade')') -')dnl -define(`_ALL_MASQUERADE_', 1) diff --git a/contrib/sendmail/cf/feature/always_add_domain.m4 b/contrib/sendmail/cf/feature/always_add_domain.m4 deleted file mode 100644 index a29956a635b43..0000000000000 --- a/contrib/sendmail/cf/feature/always_add_domain.m4 +++ /dev/null @@ -1,22 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: always_add_domain.m4,v 8.11 2000/09/12 22:00:53 ca Exp $') -divert(-1) - -ifdef(`_MAILER_local_', - `errprint(`*** MAILER(`local') must appear after FEATURE(`always_add_domain')') -')dnl -define(`_ALWAYS_ADD_DOMAIN_', ifelse(len(X`'_ARG_),`1',`',_ARG_)) diff --git a/contrib/sendmail/cf/feature/authinfo.m4 b/contrib/sendmail/cf/feature/authinfo.m4 deleted file mode 100644 index 99dd6e9e23610..0000000000000 --- a/contrib/sendmail/cf/feature/authinfo.m4 +++ /dev/null @@ -1,22 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: authinfo.m4,v 1.9 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_AUTHINFO_TABLE_', `') - -LOCAL_CONFIG -# authinfo list database: contains info for authentication as client -Kauthinfo ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`authinfo', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=authinfo)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/feature/bestmx_is_local.m4 b/contrib/sendmail/cf/feature/bestmx_is_local.m4 deleted file mode 100644 index 911d2b5421920..0000000000000 --- a/contrib/sendmail/cf/feature/bestmx_is_local.m4 +++ /dev/null @@ -1,51 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: bestmx_is_local.m4,v 8.26 2000/09/17 17:30:00 gshapiro Exp $') -divert(-1) - -define(`_BESTMX_IS_LOCAL_', _ARG_) - -LOCAL_CONFIG -# turn on bestMX lookup table -Kbestmx bestmx -ifelse(defn(`_ARG_'), `', `dnl',` -# limit bestmx to these domains -CB`'_ARG_') - -LOCAL_NET_CONFIG - -# If we are the best MX for a site, then we want to accept -# its mail as local. We assume we've already weeded out mail to -# UUCP sites which are connected to us, which should also have -# listed us as their best MX. -# -# Warning: this may generate a lot of extra DNS traffic -- a -# lower cost method is to list all the expected best MX hosts -# in $=w. This should be fine (and easier to administer) for -# low to medium traffic hosts. If you use the limited bestmx -# by passing in a set of possible domains it will improve things. - -ifelse(defn(`_ARG_'), `', `dnl -# unlimited bestmx -R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3', -`dnl -# limit bestmx to $=B -R$* < @ $* $=B . > $* $: $1 < @ $2 $3 . @@ $(bestmx $2 $3 . $) > $4') -R$* $=O $* < @ $* @@ $=w . > $* $@ $>Recurse $1 $2 $3 -R< @ $* @@ $=w . > : $* $@ $>Recurse $3 -dnl we cannot use _LOCAL_ here since it is defined too late -R$* < @ $* @@ $=w . > $* $@ $>CanonLocal < $1 > -R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4 diff --git a/contrib/sendmail/cf/feature/bitdomain.m4 b/contrib/sendmail/cf/feature/bitdomain.m4 deleted file mode 100644 index 2ff3fa6eecd0b..0000000000000 --- a/contrib/sendmail/cf/feature/bitdomain.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: bitdomain.m4,v 8.30 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_BITDOMAIN_TABLE_', `') - -LOCAL_CONFIG -# BITNET mapping table -Kbitdomain ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`bitdomain', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=bitdomain)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/feature/blacklist_recipients.m4 b/contrib/sendmail/cf/feature/blacklist_recipients.m4 deleted file mode 100644 index d6218d1194015..0000000000000 --- a/contrib/sendmail/cf/feature/blacklist_recipients.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: blacklist_recipients.m4,v 8.13 1999/04/02 02:25:13 gshapiro Exp $') -divert(-1) - -ifdef(`_ACCESS_TABLE_', - `define(`_BLACKLIST_RCPT_', 1)', - `errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db) -')') diff --git a/contrib/sendmail/cf/feature/compat_check.m4 b/contrib/sendmail/cf/feature/compat_check.m4 deleted file mode 100644 index a6125edf2516a..0000000000000 --- a/contrib/sendmail/cf/feature/compat_check.m4 +++ /dev/null @@ -1,33 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: compat_check.m4,v 1.4 2002/02/26 22:15:31 gshapiro Exp $') -divert(-1) -ifdef(`_ACCESS_TABLE_', `', -`errprint(`FEATURE(`compat_check') requires FEATURE(`access_db') -')') - -LOCAL_RULESETS -Scheck_compat -# look up the pair of addresses -# (we use <@> as the separator. Note this in the map too!) -R< $+ > $| $+ $: $1 $| $2 -R$+ $| < $+ > $: $1 $| $2 -R$+ $| $+ $: <$(access Compat:$1<@>$2 $:OK $)> -R$* $| $* $@ ok -# act on the result, -# it must be one of the following... anything else will be allowed.. -dnl for consistency with the other two even though discard does not take a -dnl reply code -R< DISCARD:$* > $#discard $: $1 " - discarded by check_compat" -R< DISCARD $* > $#discard $: $1 " - discarded by check_compat" -R< TEMP:$* > $#error $@ TEMPFAIL $: $1 " error from check_compat. Try again later" -R< ERROR:$* > $#error $@ UNAVAILABLE $: $1 " error from check_compat" diff --git a/contrib/sendmail/cf/feature/conncontrol.m4 b/contrib/sendmail/cf/feature/conncontrol.m4 deleted file mode 100644 index 87c23b0fd5482..0000000000000 --- a/contrib/sendmail/cf/feature/conncontrol.m4 +++ /dev/null @@ -1,36 +0,0 @@ -divert(-1) -# -# Copyright (c) 2003, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: conncontrol.m4,v 1.4 2004/02/19 21:31:47 ca Exp $') - -divert(-1) -ifdef(`_ACCESS_TABLE_', ` - define(`_CONN_CONTROL_', `1') - ifelse(defn(`_ARG_'), `', `', - strcasecmp(defn(`_ARG_'), `nodelay'), `1', - `ifdef(`_DELAY_CHECKS_', - ` - define(`_CONN_CONTROL_IMMEDIATE_', `1') - define(`_CONTROL_IMMEDIATE_', `1') - ', - `errprint(`*** ERROR: FEATURE(`conncontrol', `nodelay') requires FEATURE(`delay_checks')')' - )', - `errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`conncontrol')')') - define(`_FFR_SRCHLIST_A', `1') - ifelse(len(X`'_ARG2_), `1', `', - _ARG2_, `terminate', `define(`_CONN_CONTROL_REPLY', `421')', - `errprint(`*** ERROR: FEATURE(`conncontrol'): unknown argument '"_ARG2_" -)' - ) - ', `errprint(`*** ERROR: FEATURE(`conncontrol') requires FEATURE(`access_db') -')') -ifdef(`_CONN_CONTROL_REPLY',,`define(`_CONN_CONTROL_REPLY', `452')') diff --git a/contrib/sendmail/cf/feature/delay_checks.m4 b/contrib/sendmail/cf/feature/delay_checks.m4 deleted file mode 100644 index 151df956668fe..0000000000000 --- a/contrib/sendmail/cf/feature/delay_checks.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: delay_checks.m4,v 8.8 2000/12/05 18:50:45 ca Exp $') -divert(-1) - -define(`_DELAY_CHECKS_', 1) -ifelse(defn(`_ARG_'), `', `', - lower(substr(_ARG_,0,1)), `f', `define(`_SPAM_FRIEND_', 1) define(`_SPAM_FH_', 1)', - lower(substr(_ARG_,0,1)), `h', `define(`_SPAM_HATER_', 1) define(`_SPAM_FH_', 1)', - `errprint(`*** ERROR: illegal argument _ARG_ for FEATURE(delay_checks) -') - ') - -dnl be backward compatible by default -ifelse(len(X`'_ARG2_), `1', `define(`_DELAY_COMPAT_8_10_', 1)', `') diff --git a/contrib/sendmail/cf/feature/dnsbl.m4 b/contrib/sendmail/cf/feature/dnsbl.m4 deleted file mode 100644 index c560586cf4609..0000000000000 --- a/contrib/sendmail/cf/feature/dnsbl.m4 +++ /dev/null @@ -1,33 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -ifdef(`DNSBL_MAP', `', `define(`DNSBL_MAP', `dns -R A')') -divert(0) -ifdef(`_DNSBL_R_',`dnl',`dnl -VERSIONID(`$Id: dnsbl.m4,v 8.29 2002/08/09 21:02:08 ca Exp $') -define(`_DNSBL_R_',`') -LOCAL_CONFIG -# map for DNS based blacklist lookups -Kdnsbl DNSBL_MAP -T<TMP>ifdef(`DNSBL_MAP_OPT',` DNSBL_MAP_OPT')') -divert(-1) -define(`_DNSBL_SRV_', `ifelse(len(X`'_ARG_),`1',`blackholes.mail-abuse.org',_ARG_)')dnl -define(`_DNSBL_MSG_', `ifelse(len(X`'_ARG2_),`1',`"550 Rejected: " $`'&{client_addr} " listed at '_DNSBL_SRV_`"',`_ARG2_')')dnl -define(`_DNSBL_MSG_TMP_', `ifelse(_ARG3_,`t',`"451 Temporary lookup failure of " $`'&{client_addr} " at '_DNSBL_SRV_`"',`_ARG3_')')dnl -divert(8) -# DNS based IP address spam list _DNSBL_SRV_ -R$* $: $&{client_addr} -R$-.$-.$-.$- $: <?> $(dnsbl $4.$3.$2.$1._DNSBL_SRV_. $: OK $) -R<?>OK $: OKSOFAR -ifelse(len(X`'_ARG3_),`1', -`R<?>$+<TMP> $: TMPOK', -`R<?>$+<TMP> $#error $@ 4.7.1 $: _DNSBL_MSG_TMP_') -R<?>$+ $#error $@ 5.7.1 $: _DNSBL_MSG_ -divert(-1) diff --git a/contrib/sendmail/cf/feature/domaintable.m4 b/contrib/sendmail/cf/feature/domaintable.m4 deleted file mode 100644 index fadf816ca0ffb..0000000000000 --- a/contrib/sendmail/cf/feature/domaintable.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: domaintable.m4,v 8.24 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_DOMAIN_TABLE_', `') - -LOCAL_CONFIG -# Domain table (adding domains) -Kdomaintable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`domaintable', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=domain)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/feature/enhdnsbl.m4 b/contrib/sendmail/cf/feature/enhdnsbl.m4 deleted file mode 100644 index c713153b637f9..0000000000000 --- a/contrib/sendmail/cf/feature/enhdnsbl.m4 +++ /dev/null @@ -1,44 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -ifdef(`_EDNSBL_R_',`dnl',`dnl -VERSIONID(`$Id: enhdnsbl.m4,v 1.9 2002/05/19 21:27:29 gshapiro Exp $') -LOCAL_CONFIG -define(`_EDNSBL_R_',`')dnl -# map for enhanced DNS based blacklist lookups -Kednsbl dns -R A -a. -T<TMP> -r`'ifdef(`EDNSBL_TO',`EDNSBL_TO',`5') -') -divert(-1) -define(`_EDNSBL_SRV_', `ifelse(len(X`'_ARG_),`1',`blackholes.mail-abuse.org',_ARG_)')dnl -define(`_EDNSBL_MSG_', `ifelse(len(X`'_ARG2_),`1',`"550 Rejected: " $`'&{client_addr} " listed at '_EDNSBL_SRV_`"',`_ARG2_')')dnl -define(`_EDNSBL_MSG_TMP_', `ifelse(_ARG3_,`t',`"451 Temporary lookup failure of " $`'&{client_addr} " at '_EDNSBL_SRV_`"',`_ARG3_')')dnl -define(`_EDNSBL_MATCH_', `ifelse(len(X`'_ARG4_),`1',`$`'+',_ARG4_)')dnl -divert(8) -# DNS based IP address spam list _EDNSBL_SRV_ -R$* $: $&{client_addr} -R$-.$-.$-.$- $: <?> $(ednsbl $4.$3.$2.$1._EDNSBL_SRV_. $: OK $) -R<?>OK $: OKSOFAR -ifelse(len(X`'_ARG3_),`1', -`R<?>$+<TMP> $: TMPOK', -`R<?>$+<TMP> $#error $@ 4.7.1 $: _EDNSBL_MSG_TMP_') -R<?>_EDNSBL_MATCH_ $#error $@ 5.7.1 $: _EDNSBL_MSG_ -ifelse(len(X`'_ARG5_),`1',`dnl', -`R<?>_ARG5_ $#error $@ 5.7.1 $: _EDNSBL_MSG_') -ifelse(len(X`'_ARG6_),`1',`dnl', -`R<?>_ARG6_ $#error $@ 5.7.1 $: _EDNSBL_MSG_') -ifelse(len(X`'_ARG7_),`1',`dnl', -`R<?>_ARG7_ $#error $@ 5.7.1 $: _EDNSBL_MSG_') -ifelse(len(X`'_ARG8_),`1',`dnl', -`R<?>_ARG8_ $#error $@ 5.7.1 $: _EDNSBL_MSG_') -ifelse(len(X`'_ARG9_),`1',`dnl', -`R<?>_ARG9_ $#error $@ 5.7.1 $: _EDNSBL_MSG_') -divert(-1) diff --git a/contrib/sendmail/cf/feature/generics_entire_domain.m4 b/contrib/sendmail/cf/feature/generics_entire_domain.m4 deleted file mode 100644 index fab586af110c2..0000000000000 --- a/contrib/sendmail/cf/feature/generics_entire_domain.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: generics_entire_domain.m4,v 8.1 1999/03/16 00:43:05 ca Exp $') -divert(-1) - -define(`_GENERICS_ENTIRE_DOMAIN_', 1) diff --git a/contrib/sendmail/cf/feature/genericstable.m4 b/contrib/sendmail/cf/feature/genericstable.m4 deleted file mode 100644 index dfdfeac862727..0000000000000 --- a/contrib/sendmail/cf/feature/genericstable.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: genericstable.m4,v 8.23 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_GENERICS_TABLE_', `') - -LOCAL_CONFIG -# Generics table (mapping outgoing addresses) -Kgenerics ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`genericstable', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=generics)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/feature/greet_pause.m4 b/contrib/sendmail/cf/feature/greet_pause.m4 deleted file mode 100644 index 1dddb58e50544..0000000000000 --- a/contrib/sendmail/cf/feature/greet_pause.m4 +++ /dev/null @@ -1,44 +0,0 @@ -divert(-1) -# -# Copyright (c) 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: greet_pause.m4,v 1.4 2004/07/06 20:49:51 ca Exp $') -divert(-1) - -ifelse(len(X`'_ARG_),`1',`ifdef(`_ACCESS_TABLE_', `', - `errprint(`*** ERROR: FEATURE(`greet_pause') requires FEATURE(`access_db') -')')') - -define(`_GREET_PAUSE_', `') - -LOCAL_RULESETS -###################################################################### -### greet_pause: lookup pause time before 220 greeting -### -### Parameters: -### $1: {client_name} -### $2: {client_addr} -###################################################################### -SLocal_greet_pause -Sgreet_pause -R$* $: <$1><?> $| $>"Local_greet_pause" $1 -R<$*><?> $| $#$* $#$2 -R<$*><?> $| $* $: $1 -ifdef(`_ACCESS_TABLE_', `dnl -R$+ $| $+ $: $>D < $1 > <?> <! GreetPause> < $2 > -R $| $+ $: $>A < $1 > <?> <! GreetPause> <> empty client_name -R<?> <$+> $: $>A < $1 > <?> <! GreetPause> <> no: another lookup -ifelse(len(X`'_ARG_),`1', -`R<?> <$*> $@', -`R<?> <$*> $# _ARG_') -R<$* <TMPF>> <$*> $@ -R<$+> <$*> $# $1',`dnl -R$* $# _ARG_') diff --git a/contrib/sendmail/cf/feature/ldap_routing.m4 b/contrib/sendmail/cf/feature/ldap_routing.m4 deleted file mode 100644 index ad7f142aafc5b..0000000000000 --- a/contrib/sendmail/cf/feature/ldap_routing.m4 +++ /dev/null @@ -1,46 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999-2002, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: ldap_routing.m4,v 8.14 2004/02/18 02:45:11 gshapiro Exp $') -divert(-1) - -# Check first two arguments. If they aren't set, may need to warn in proto.m4 -ifelse(len(X`'_ARG1_), `1', `define(`_LDAP_ROUTING_WARN_', `yes')') -ifelse(len(X`'_ARG2_), `1', `define(`_LDAP_ROUTING_WARN_', `yes')') -ifelse(len(X`'_ARG5_), `1', `', `define(`_LDAP_ROUTE_NODOMAIN_', `yes')') - -# Check for third argument to indicate how to deal with non-existant -# LDAP records -ifelse(len(X`'_ARG3_), `1', `define(`_LDAP_ROUTING_', `_PASS_THROUGH_')', - _ARG3_, `passthru', `define(`_LDAP_ROUTING_', `_PASS_THROUGH_')', - _ARG3_, `sendertoo', `define(`_LDAP_ROUTING_', `_MUST_EXIST_')define(`_LDAP_SENDER_MUST_EXIST_')', - `define(`_LDAP_ROUTING_', `_MUST_EXIST_')') - -# Check for fourth argument to indicate how to deal with +detail info -ifelse(len(X`'_ARG4_), `1', `', - _ARG4_, `strip', `define(`_LDAP_ROUTE_DETAIL_', `_STRIP_')', - _ARG4_, `preserve', `define(`_LDAP_ROUTE_DETAIL_', `_PRESERVE_')') - -# Check for sixth argument to indicate how to deal with tempfails -ifelse(len(X`'_ARG6_), `1', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')', - _ARG6_, `tempfail', `define(`_LDAP_ROUTE_MAPTEMP_', `_TEMPFAIL_')', - _ARG6_, `queue', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')') - -LOCAL_CONFIG -# LDAP routing maps -Kldapmh ifelse(len(X`'_ARG1_), `1', - `ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))', - `_ARG1_') - -Kldapmra ifelse(len(X`'_ARG2_), `1', - `ldap -1 -T<TMPF> -v mailRoutingAddress -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))', - `_ARG2_') diff --git a/contrib/sendmail/cf/feature/limited_masquerade.m4 b/contrib/sendmail/cf/feature/limited_masquerade.m4 deleted file mode 100644 index f86ebd4567c90..0000000000000 --- a/contrib/sendmail/cf/feature/limited_masquerade.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: limited_masquerade.m4,v 8.9 1999/02/07 07:26:09 gshapiro Exp $') -divert(-1) - -define(`_LIMITED_MASQUERADE_', 1) diff --git a/contrib/sendmail/cf/feature/local_lmtp.m4 b/contrib/sendmail/cf/feature/local_lmtp.m4 deleted file mode 100644 index 6f3888add2bc7..0000000000000 --- a/contrib/sendmail/cf/feature/local_lmtp.m4 +++ /dev/null @@ -1,28 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000, 2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $') -divert(-1) - -ifdef(`_MAILER_local_', - `errprint(`*** FEATURE(local_lmtp) must occur before MAILER(local) -')')dnl - -define(`LOCAL_MAILER_PATH', - ifelse(defn(`_ARG_'), `', - ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/mail.local', - _ARG_)) -define(`LOCAL_MAILER_FLAGS', `PSXmnz9') -define(`LOCAL_MAILER_ARGS', - ifelse(len(X`'_ARG2_), `1', `mail.local -l', _ARG2_)) -define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `SMTP') -define(`_LOCAL_LMTP_', `1') diff --git a/contrib/sendmail/cf/feature/local_no_masquerade.m4 b/contrib/sendmail/cf/feature/local_no_masquerade.m4 deleted file mode 100644 index de2300f2f0e5d..0000000000000 --- a/contrib/sendmail/cf/feature/local_no_masquerade.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# - -divert(0) -VERSIONID(`$Id: local_no_masquerade.m4,v 1.2 2000/08/03 15:54:59 ca Exp $') -divert(-1) - -ifdef(`_MAILER_local_', - `errprint(`*** MAILER(`local') must appear after FEATURE(`local_no_masquerade')') -')dnl -define(`_LOCAL_NO_MASQUERADE_', `1') diff --git a/contrib/sendmail/cf/feature/local_procmail.m4 b/contrib/sendmail/cf/feature/local_procmail.m4 deleted file mode 100644 index 694c3d9ef9b85..0000000000000 --- a/contrib/sendmail/cf/feature/local_procmail.m4 +++ /dev/null @@ -1,36 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1994 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $') -divert(-1) - -ifdef(`_MAILER_local_', - `errprint(`*** FEATURE(local_procmail) must occur before MAILER(local) -')')dnl - -define(`LOCAL_MAILER_PATH', - ifelse(defn(`_ARG_'), `', - ifdef(`PROCMAIL_MAILER_PATH', - PROCMAIL_MAILER_PATH, - `/usr/local/bin/procmail'), - _ARG_)) -define(`LOCAL_MAILER_ARGS', - ifelse(len(X`'_ARG2_), `1', `procmail -Y -a $h -d $u', _ARG2_)) -define(`LOCAL_MAILER_FLAGS', - ifelse(len(X`'_ARG3_), `1', `SPfhn9', _ARG3_)) -dnl local_procmail conflicts with local_lmtp but the latter might be -dnl defined in an OS/ file (solaris8). Let's just undefine it. -undefine(`_LOCAL_LMTP_') -undefine(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE') diff --git a/contrib/sendmail/cf/feature/lookupdotdomain.m4 b/contrib/sendmail/cf/feature/lookupdotdomain.m4 deleted file mode 100644 index f8c2a31f3022c..0000000000000 --- a/contrib/sendmail/cf/feature/lookupdotdomain.m4 +++ /dev/null @@ -1,22 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: lookupdotdomain.m4,v 1.1 2000/04/13 22:32:49 ca Exp $') -divert(-1) - -ifdef(`_ACCESS_TABLE_', - `define(`_LOOKUPDOTDOMAIN_')', - `errprint(`*** ERROR: FEATURE(`lookupdotdomain') requires FEATURE(`access_db') -')') -ifdef(`_RELAY_HOSTS_ONLY_', - `errprint(`*** WARNING: FEATURE(`lookupdotdomain') does not work well with FEATURE(`relay_hosts_only') -')') diff --git a/contrib/sendmail/cf/feature/loose_relay_check.m4 b/contrib/sendmail/cf/feature/loose_relay_check.m4 deleted file mode 100644 index abd1b9c9ff68d..0000000000000 --- a/contrib/sendmail/cf/feature/loose_relay_check.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: loose_relay_check.m4,v 8.6 1999/02/07 07:26:10 gshapiro Exp $') -divert(-1) - -define(`_LOOSE_RELAY_CHECK_', 1) diff --git a/contrib/sendmail/cf/feature/mailertable.m4 b/contrib/sendmail/cf/feature/mailertable.m4 deleted file mode 100644 index e3e1d0344b8b5..0000000000000 --- a/contrib/sendmail/cf/feature/mailertable.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: mailertable.m4,v 8.25 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_MAILER_TABLE_', `') - -LOCAL_CONFIG -# Mailer table (overriding domains) -Kmailertable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`mailertable', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=mailer)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 b/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 deleted file mode 100644 index e2bcc650616ef..0000000000000 --- a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: masquerade_entire_domain.m4,v 8.9 1999/02/07 07:26:10 gshapiro Exp $') -divert(-1) - -define(`_MASQUERADE_ENTIRE_DOMAIN_', 1) diff --git a/contrib/sendmail/cf/feature/masquerade_envelope.m4 b/contrib/sendmail/cf/feature/masquerade_envelope.m4 deleted file mode 100644 index 74d3aa0560961..0000000000000 --- a/contrib/sendmail/cf/feature/masquerade_envelope.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: masquerade_envelope.m4,v 8.9 1999/02/07 07:26:10 gshapiro Exp $') -divert(-1) - -define(`_MASQUERADE_ENVELOPE_', 1) diff --git a/contrib/sendmail/cf/feature/msp.m4 b/contrib/sendmail/cf/feature/msp.m4 deleted file mode 100644 index 6ecf3342555a6..0000000000000 --- a/contrib/sendmail/cf/feature/msp.m4 +++ /dev/null @@ -1,78 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000-2002, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0)dnl -VERSIONID(`$Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $') -divert(-1) -undefine(`ALIAS_FILE') -define(`confDELIVERY_MODE', `i') -define(`confUSE_MSP', `True') -define(`confFORWARD_PATH', `') -define(`confPRIVACY_FLAGS', `goaway,noetrn,restrictqrun') -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(`confTRUSTED_USER',,`define(`confTRUSTED_USER', -`ifelse(index(confRUN_AS_USER,`:'), -1, `confRUN_AS_USER', -`substr(confRUN_AS_USER,0,index(confRUN_AS_USER,`:'))')')') -dnl --------------------------------------------- -dnl This queue directory must have the same group -dnl as sendmail and it must be group-writable. -dnl notice: do not test for QUEUE_DIR, it is set in some ostype/*.m4 files -ifdef(`MSP_QUEUE_DIR', -`define(`QUEUE_DIR', `MSP_QUEUE_DIR')', -`define(`QUEUE_DIR', `/var/spool/clientmqueue')') -define(`_MTA_HOST_', ifelse(defn(`_ARG_'), `', `[localhost]', `_ARG_')) -define(`_MSP_FQHN_',`dnl used to qualify addresses -ifdef(`MASQUERADE_NAME', ifdef(`_MASQUERADE_ENVELOPE_', `$M', `$j'), `$j')') -ifelse(_ARG2_, `MSA', `define(`RELAY_MAILER_ARGS', `TCP $h 587')') -dnl --------------------------------------------- -ifdef(`confPID_FILE', `dnl', -`define(`confPID_FILE', QUEUE_DIR`/sm-client.pid')') -define(`confQUEUE_FILE_MODE', `0660')dnl -ifdef(`STATUS_FILE', -`define(`_F_', -`define(`_b_', index(STATUS_FILE, `sendmail.st'))ifelse(_b_, `-1', `STATUS_FILE', `substr(STATUS_FILE, 0, _b_)sm-client.st')') -define(`STATUS_FILE', _F_) -undefine(`_b_') undefine(`_F_')', -`define(`STATUS_FILE', QUEUE_DIR`/sm-client.st')') -FEATURE(`no_default_msa')dnl -ifelse(defn(`_DPO_'), `', -`DAEMON_OPTIONS(`Name=NoMTA, Addr=127.0.0.1, M=E')dnl') -define(`_DEF_LOCAL_MAILER_FLAGS', `')dnl -define(`_DEF_LOCAL_SHELL_FLAGS', `')dnl -define(`LOCAL_MAILER_PATH', `[IPC]')dnl -define(`LOCAL_MAILER_FLAGS', `lmDFMuXkw5')dnl -define(`LOCAL_MAILER_ARGS', `TCP $h')dnl -define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `SMTP')dnl -define(`LOCAL_SHELL_PATH', `[IPC]')dnl -define(`LOCAL_SHELL_FLAGS', `lmDFMuXk5')dnl -define(`LOCAL_SHELL_ARGS', `TCP $h')dnl -MODIFY_MAILER_FLAGS(`SMTP', `+k5')dnl -MODIFY_MAILER_FLAGS(`ESMTP', `+k5')dnl -MODIFY_MAILER_FLAGS(`DSMTP', `+k5')dnl -MODIFY_MAILER_FLAGS(`SMTP8', `+k5')dnl -MODIFY_MAILER_FLAGS(`RELAY', `+k')dnl -MAILER(`local')dnl -MAILER(`smtp')dnl - -LOCAL_CONFIG -D{MTAHost}_MTA_HOST_ - -LOCAL_RULESETS -SLocal_localaddr -R$+ $: $>ParseRecipient $1 -R$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3 -ifdef(`_USE_DECNET_SYNTAX_', -`# DECnet -R$+ :: $+ $#relay $@ ${MTAHost} $: $1 :: $2', `dnl') -R$* $#relay $@ ${MTAHost} $: $1 < @ _MSP_FQHN_ > diff --git a/contrib/sendmail/cf/feature/mtamark.m4 b/contrib/sendmail/cf/feature/mtamark.m4 deleted file mode 100644 index ae5f07a24b5af..0000000000000 --- a/contrib/sendmail/cf/feature/mtamark.m4 +++ /dev/null @@ -1,33 +0,0 @@ -divert(-1) -# -# Copyright (c) 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -ifdef(`_MTAMARK_R',`dnl',`dnl -VERSIONID(`$Id: mtamark.m4,v 1.1 2004/03/22 19:22:40 ca Exp $') -LOCAL_CONFIG -define(`_MTAMARK_R',`')dnl -# map for MTA mark -Kmtamark dns -R TXT -a. -T<TMP> -r`'ifdef(`MTAMARK_TO',`MTAMARK_TO',`5') -') -divert(-1) -define(`_MTAMARK_RR_', `ifelse(len(X`'_ARG3_),`1',`_perm._smtp._srv',`_ARG3_')')dnl -define(`_MTAMARK_MSG_', `ifelse(len(X`'_ARG_),`1',`"550 Rejected: " $`'&{client_addr} " not listed as MTA"',`_ARG_')')dnl -define(`_MTAMARK_MSG_TMP_', `ifelse(_ARG2_,`t',`"451 Temporary lookup failure of " _MTAMARK_RR_.$`'&{client_addr}',`_ARG2_')')dnl -divert(8) -# DNS based IP MTA list -R$* $: $&{client_addr} -R$-.$-.$-.$- $: <?> $(mtamark _MTAMARK_RR_.$4.$3.$2.$1.in-addr.arpa. $: OK $) -R<?>1. $: OKSOFAR -R<?>0. $#error $@ 5.7.1 $: _MTAMARK_MSG_ -ifelse(len(X`'_ARG2_),`1', -`R<?>$+<TMP> $: TMPOK', -`R<?>$+<TMP> $#error $@ 4.7.1 $: _MTAMARK_MSG_TMP_') -divert(-1) diff --git a/contrib/sendmail/cf/feature/no_default_msa.m4 b/contrib/sendmail/cf/feature/no_default_msa.m4 deleted file mode 100644 index 5a053399fc35e..0000000000000 --- a/contrib/sendmail/cf/feature/no_default_msa.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $') -divert(-1) - -define(`_NO_MSA_', `1') diff --git a/contrib/sendmail/cf/feature/nocanonify.m4 b/contrib/sendmail/cf/feature/nocanonify.m4 deleted file mode 100644 index 05baa7a47b458..0000000000000 --- a/contrib/sendmail/cf/feature/nocanonify.m4 +++ /dev/null @@ -1,24 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: nocanonify.m4,v 8.12 1999/08/28 00:42:01 ca Exp $') -divert(-1) - -define(`_NO_CANONIFY_', 1) -ifelse(defn(`_ARG_'), `', `', - strcasecmp(defn(`_ARG_'), `canonify_hosts'), `1', - `define(`_CANONIFY_HOSTS_', 1)', - `errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`nocanonify') -')') diff --git a/contrib/sendmail/cf/feature/notsticky.m4 b/contrib/sendmail/cf/feature/notsticky.m4 deleted file mode 100644 index 1cecca5f13e33..0000000000000 --- a/contrib/sendmail/cf/feature/notsticky.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: notsticky.m4,v 8.11 1999/02/07 07:26:11 gshapiro Exp $') -# -# This is now the default. Use ``FEATURE(stickyhost)'' if you want -# the old default behaviour. -# -divert(-1) diff --git a/contrib/sendmail/cf/feature/nouucp.m4 b/contrib/sendmail/cf/feature/nouucp.m4 deleted file mode 100644 index a03104964dd27..0000000000000 --- a/contrib/sendmail/cf/feature/nouucp.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: nouucp.m4,v 8.13 1999/11/24 18:37:07 ca Exp $') -divert(-1) - -ifelse(defn(`_ARG_'), `', - `errprint(`*** ERROR: missing argument for FEATURE(nouucp): - use `reject' or `nospecial'. See cf/README. -')define(`_NO_UUCP_', `e')', - substr(_ARG_,0,1), `r', `define(`_NO_UUCP_', `r')', - substr(_ARG_,0,1), `n', `define(`_NO_UUCP_', `n')', - `errprint(`*** ERROR: illegal argument _ARG_ for FEATURE(nouucp) -') - ') diff --git a/contrib/sendmail/cf/feature/nullclient.m4 b/contrib/sendmail/cf/feature/nullclient.m4 deleted file mode 100644 index 8f35ca1c167f1..0000000000000 --- a/contrib/sendmail/cf/feature/nullclient.m4 +++ /dev/null @@ -1,38 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -ifelse(defn(`_ARG_'), `', `errprint(`Feature "nullclient" requires argument')', - `define(`_NULL_CLIENT_', _ARG_)') - -# -# This is used only for relaying mail from a client to a hub when -# that client does absolutely nothing else -- i.e., it is a "null -# mailer". In this sense, it acts like the "R" option in Sun -# sendmail. -# - -divert(0) -VERSIONID(`$Id: nullclient.m4,v 8.24 2000/09/17 17:30:00 gshapiro Exp $') -divert(-1) - -undefine(`ALIAS_FILE') -define(`MAIL_HUB', _NULL_CLIENT_) -define(`SMART_HOST', _NULL_CLIENT_) -define(`confFORWARD_PATH', `') -ifdef(`confFROM_HEADER',, `define(`confFROM_HEADER', `<$g>')') -define(`_DEF_LOCAL_MAILER_FLAGS', `lsDFM5q') -MASQUERADE_AS(_NULL_CLIENT_) -FEATURE(`allmasquerade') -FEATURE(`masquerade_envelope') -MAILER(`local') -MAILER(`smtp') diff --git a/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4 b/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4 deleted file mode 100644 index bb603a607ba45..0000000000000 --- a/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: preserve_local_plus_detail.m4,v 8.1 2000/04/10 05:48:05 gshapiro Exp $') -divert(-1) - -define(`_PRESERVE_LOCAL_PLUS_DETAIL_', `1') diff --git a/contrib/sendmail/cf/feature/preserve_luser_host.m4 b/contrib/sendmail/cf/feature/preserve_luser_host.m4 deleted file mode 100644 index 837da99febcba..0000000000000 --- a/contrib/sendmail/cf/feature/preserve_luser_host.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000, 2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: preserve_luser_host.m4,v 1.3 2002/04/14 13:22:58 ca Exp $') -divert(-1) - -ifdef(`LUSER_RELAY', `', -`errprint(`*** LUSER_RELAY should be defined before FEATURE(`preserve_luser_host') - ')') -define(`_PRESERVE_LUSER_HOST_', `1') -define(`_NEED_MACRO_MAP_', `1') diff --git a/contrib/sendmail/cf/feature/promiscuous_relay.m4 b/contrib/sendmail/cf/feature/promiscuous_relay.m4 deleted file mode 100644 index 17cb7d1d8b0f5..0000000000000 --- a/contrib/sendmail/cf/feature/promiscuous_relay.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: promiscuous_relay.m4,v 8.12 2001/02/06 17:14:35 ca Exp $') -divert(-1) - -define(`_PROMISCUOUS_RELAY_', 1) -errprint(`*** WARNING: FEATURE(`promiscuous_relay') configures your system as open - relay. Do NOT use it on a server that is connected to the Internet! -') diff --git a/contrib/sendmail/cf/feature/queuegroup.m4 b/contrib/sendmail/cf/feature/queuegroup.m4 deleted file mode 100644 index 06715a0f3f8fd..0000000000000 --- a/contrib/sendmail/cf/feature/queuegroup.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: queuegroup.m4,v 1.4 2001/03/28 00:39:39 ca Exp $') -divert(-1) - -ifdef(`_ACCESS_TABLE_', `', - `errprint(`*** ERROR: FEATURE(`queuegroup') requires FEATURE(`access_db') -')') - -LOCAL_RULESETS -Squeuegroup -R< $+ > $1 -R $+ @ $+ $: $>SearchList <! qgrp> $| <F:$1@$2> <D:$2> <> -ifelse(len(X`'_ARG_),`1', -`R<?> $@', -`R<?> $# _ARG_') -R<$+> $# $1 diff --git a/contrib/sendmail/cf/feature/ratecontrol.m4 b/contrib/sendmail/cf/feature/ratecontrol.m4 deleted file mode 100644 index e3389c0c1b41e..0000000000000 --- a/contrib/sendmail/cf/feature/ratecontrol.m4 +++ /dev/null @@ -1,36 +0,0 @@ -divert(-1) -# -# Copyright (c) 2003, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: ratecontrol.m4,v 1.5 2004/02/19 21:31:47 ca Exp $') - -divert(-1) -ifdef(`_ACCESS_TABLE_', ` - define(`_RATE_CONTROL_', `1') - ifelse(defn(`_ARG_'), `', `', - strcasecmp(defn(`_ARG_'), `nodelay'), `1', - `ifdef(`_DELAY_CHECKS_', - ` - define(`_RATE_CONTROL_IMMEDIATE_', `1') - define(`_CONTROL_IMMEDIATE_', `1') - ', - `errprint(`*** ERROR: FEATURE(`ratecontrol', `nodelay') requires FEATURE(`delay_checks')')' - )', - `errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`ratecontrol')')') - define(`_FFR_SRCHLIST_A', `1') - ifelse(len(X`'_ARG2_), `1', `', - _ARG2_, `terminate', `define(`_RATE_CONTROL_REPLY', `421')', - `errprint(`*** ERROR: FEATURE(`ratecontrol'): unknown argument '"_ARG2_" -)' - ) - ', `errprint(`*** ERROR: FEATURE(`ratecontrol') requires FEATURE(`access_db') -')') -ifdef(`_RATE_CONTROL_REPLY',,`define(`_RATE_CONTROL_REPLY', `452')') diff --git a/contrib/sendmail/cf/feature/redirect.m4 b/contrib/sendmail/cf/feature/redirect.m4 deleted file mode 100644 index e167865efefa4..0000000000000 --- a/contrib/sendmail/cf/feature/redirect.m4 +++ /dev/null @@ -1,26 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $') -divert(-1) - -LOCAL_RULE_0 -# addresses sent to foo@host.REDIRECT will give a 551 error code -R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} > -R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. > -R$* < @ $+ .REDIRECT. > < $- > $#error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2> - -LOCAL_CONFIG -CPREDIRECT diff --git a/contrib/sendmail/cf/feature/relay_based_on_MX.m4 b/contrib/sendmail/cf/feature/relay_based_on_MX.m4 deleted file mode 100644 index 872680a480f50..0000000000000 --- a/contrib/sendmail/cf/feature/relay_based_on_MX.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: relay_based_on_MX.m4,v 8.11 1999/04/02 02:25:13 gshapiro Exp $') -divert(-1) - -define(`_RELAY_MX_SERVED_', 1) - -LOCAL_CONFIG -# MX map (to allow relaying to hosts that we MX for) -Kmxserved bestmx -z: -T<TEMP> - diff --git a/contrib/sendmail/cf/feature/relay_entire_domain.m4 b/contrib/sendmail/cf/feature/relay_entire_domain.m4 deleted file mode 100644 index a720b167f2799..0000000000000 --- a/contrib/sendmail/cf/feature/relay_entire_domain.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: relay_entire_domain.m4,v 8.10 1999/02/07 07:26:12 gshapiro Exp $') -divert(-1) - -define(`_RELAY_ENTIRE_DOMAIN_', 1) diff --git a/contrib/sendmail/cf/feature/relay_hosts_only.m4 b/contrib/sendmail/cf/feature/relay_hosts_only.m4 deleted file mode 100644 index 867d4eda6408b..0000000000000 --- a/contrib/sendmail/cf/feature/relay_hosts_only.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: relay_hosts_only.m4,v 8.10 1999/02/07 07:26:12 gshapiro Exp $') -divert(-1) - -define(`_RELAY_HOSTS_ONLY_', 1) diff --git a/contrib/sendmail/cf/feature/relay_local_from.m4 b/contrib/sendmail/cf/feature/relay_local_from.m4 deleted file mode 100644 index 9858eb8e3b90d..0000000000000 --- a/contrib/sendmail/cf/feature/relay_local_from.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: relay_local_from.m4,v 8.6 2001/02/06 15:55:21 ca Exp $') -divert(-1) - -define(`_RELAY_LOCAL_FROM_', 1) -errprint(`*** WARNING: FEATURE(`relay_local_from') may cause your system to act as open - relay. Use SMTP AUTH or STARTTLS instead. If you cannot use those, - try FEATURE(`relay_mail_from'). -') diff --git a/contrib/sendmail/cf/feature/relay_mail_from.m4 b/contrib/sendmail/cf/feature/relay_mail_from.m4 deleted file mode 100644 index 44bcbd670ec51..0000000000000 --- a/contrib/sendmail/cf/feature/relay_mail_from.m4 +++ /dev/null @@ -1,23 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: relay_mail_from.m4,v 8.3 2001/02/06 16:07:12 ca Exp $') -divert(-1) - -ifdef(`_ACCESS_TABLE_', - `define(`_RELAY_DB_FROM_', 1) - ifelse(_ARG_,`domain',`define(`_RELAY_DB_FROM_DOMAIN_', 1)')', - `errprint(`*** ERROR: FEATURE(`relay_mail_from') requires FEATURE(`access_db') -')') -errprint(`*** WARNING: FEATURE(`relay_mail_from') may cause your system to act as open - relay. Use SMTP AUTH or STARTTLS instead. -') diff --git a/contrib/sendmail/cf/feature/smrsh.m4 b/contrib/sendmail/cf/feature/smrsh.m4 deleted file mode 100644 index 2159ff8580a0a..0000000000000 --- a/contrib/sendmail/cf/feature/smrsh.m4 +++ /dev/null @@ -1,26 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: smrsh.m4,v 8.14 1999/11/18 05:06:23 ca Exp $') -divert(-1) - -ifdef(`_MAILER_local_', - `errprint(`*** FEATURE(smrsh) must occur before MAILER(local) -')')dnl -define(`LOCAL_SHELL_PATH', - ifelse(defn(`_ARG_'), `', - ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/smrsh', - _ARG_)) -_DEFIFNOT(`LOCAL_SHELL_ARGS', `smrsh -c $u') diff --git a/contrib/sendmail/cf/feature/stickyhost.m4 b/contrib/sendmail/cf/feature/stickyhost.m4 deleted file mode 100644 index 1e95be44bcc21..0000000000000 --- a/contrib/sendmail/cf/feature/stickyhost.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: stickyhost.m4,v 8.9 1999/02/07 07:26:13 gshapiro Exp $') -divert(-1) - -define(`_STICKY_LOCAL_DOMAIN_', 1) diff --git a/contrib/sendmail/cf/feature/use_client_ptr.m4 b/contrib/sendmail/cf/feature/use_client_ptr.m4 deleted file mode 100644 index 918dff13c651a..0000000000000 --- a/contrib/sendmail/cf/feature/use_client_ptr.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: use_client_ptr.m4,v 1.1 2004/04/20 22:27:14 ca Exp $') -divert(-1) - -# if defined, check_relay will use {client_ptr} instead of whatever -# is passed in as its first argument. - -define(`_USE_CLIENT_PTR_', `1') - -divert(0) diff --git a/contrib/sendmail/cf/feature/use_ct_file.m4 b/contrib/sendmail/cf/feature/use_ct_file.m4 deleted file mode 100644 index 9e372ec567ca4..0000000000000 --- a/contrib/sendmail/cf/feature/use_ct_file.m4 +++ /dev/null @@ -1,24 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: use_ct_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $') -divert(-1) - -# if defined, the sendmail.cf will read the /etc/mail/trusted-users file to -# find the names of trusted users. There should only be a few of these. - -define(`_USE_CT_FILE_', `') - -divert(0) diff --git a/contrib/sendmail/cf/feature/use_cw_file.m4 b/contrib/sendmail/cf/feature/use_cw_file.m4 deleted file mode 100644 index 7058cab1417db..0000000000000 --- a/contrib/sendmail/cf/feature/use_cw_file.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $') -divert(-1) - -# if defined, the sendmail.cf will read the /etc/mail/local-host-names file -# to find alternate names for this host. Typically only used when several -# hosts have been squashed into one another at high speed. - -define(`USE_CW_FILE', `') - -divert(0) diff --git a/contrib/sendmail/cf/feature/uucpdomain.m4 b/contrib/sendmail/cf/feature/uucpdomain.m4 deleted file mode 100644 index c6fbc5cc3a64f..0000000000000 --- a/contrib/sendmail/cf/feature/uucpdomain.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: uucpdomain.m4,v 8.29 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_UUDOMAIN_TABLE_', `') - -LOCAL_CONFIG -# UUCP domain table -Kuudomain ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`uudomain', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=uucpdomain)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/feature/virtuser_entire_domain.m4 b/contrib/sendmail/cf/feature/virtuser_entire_domain.m4 deleted file mode 100644 index 5a1d9f0e9fab8..0000000000000 --- a/contrib/sendmail/cf/feature/virtuser_entire_domain.m4 +++ /dev/null @@ -1,16 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: virtuser_entire_domain.m4,v 8.2 1999/03/16 00:43:05 ca Exp $') -divert(-1) - -define(`_VIRTUSER_ENTIRE_DOMAIN_', 1) diff --git a/contrib/sendmail/cf/feature/virtusertable.m4 b/contrib/sendmail/cf/feature/virtusertable.m4 deleted file mode 100644 index 1717b663b20e5..0000000000000 --- a/contrib/sendmail/cf/feature/virtusertable.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: virtusertable.m4,v 8.23 2002/06/27 23:23:57 gshapiro Exp $') -divert(-1) - -define(`_VIRTUSER_TABLE_', `') - -LOCAL_CONFIG -# Virtual user table (maps incoming users) -Kvirtuser ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`virtusertable', - defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=virtuser)(sendmailMTAKey=%0))', - `_ARG_') diff --git a/contrib/sendmail/cf/hack/cssubdomain.m4 b/contrib/sendmail/cf/hack/cssubdomain.m4 deleted file mode 100644 index 9b0e76a2eb430..0000000000000 --- a/contrib/sendmail/cf/hack/cssubdomain.m4 +++ /dev/null @@ -1,23 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) -VERSIONID(`$Id: cssubdomain.m4,v 8.9 1999/02/07 07:26:14 gshapiro Exp $') - -divert(2) -# find possible (old & new) versions of our name via short circuit hack -# (this code should exist ONLY during the transition from .Berkeley.EDU -# names to .CS.Berkeley.EDU names -- probably not more than a few months) -R$* < @ $=w .CS.Berkeley.EDU > $* $: $1 < @ $j > $3 -R$* < @ $=w .Berkeley.EDU> $* $: $1 < @ $j > $3 -divert(0) diff --git a/contrib/sendmail/cf/m4/cf.m4 b/contrib/sendmail/cf/m4/cf.m4 deleted file mode 100644 index 4f5712b1df881..0000000000000 --- a/contrib/sendmail/cf/m4/cf.m4 +++ /dev/null @@ -1,29 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# -# This file is included so that multiple includes of cf.m4 will work -# - -# figure out where the CF files live -ifdef(`_CF_DIR_', `', - `ifelse(__file__, `__file__', - `define(`_CF_DIR_', `../')', - `define(`_CF_DIR_', - substr(__file__, 0, eval(len(__file__) - 8)))')') - -divert(0)dnl -ifdef(`OSTYPE', `dnl', -`include(_CF_DIR_`'m4/cfhead.m4)dnl -VERSIONID(`$Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $')') diff --git a/contrib/sendmail/cf/m4/cfhead.m4 b/contrib/sendmail/cf/m4/cfhead.m4 deleted file mode 100644 index 9ccaa244887cb..0000000000000 --- a/contrib/sendmail/cf/m4/cfhead.m4 +++ /dev/null @@ -1,309 +0,0 @@ -# -# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -###################################################################### -###################################################################### -##### -##### SENDMAIL CONFIGURATION FILE -##### -ifdef(`__win32__', `dnl', `dnl -ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl -syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl -include(TEMPFILE)dnl -syscmd(rm -f TEMPFILE)dnl')') -##### -###################################################################### -##### -##### DO NOT EDIT THIS FILE! Only edit the source .mc file. -##### -###################################################################### -###################################################################### - -divert(-1) - -changecom() -undefine(`format') -undefine(`hpux') -ifdef(`pushdef', `', - `errprint(`You need a newer version of M4, at least as new as -System V or GNU') - include(NoSuchFile)') -define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)') -define(`POPDIVERT', `divert(__D__)popdef(`__D__')') -define(`OSTYPE', - `PUSHDIVERT(-1) - ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1) -)') - define(`__OSTYPE__', $1) - define(`_ARG_', $2) - include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'') -## helpful functions -define(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwx')') -define(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')') -## access to further arguments in FEATURE/HACK -define(`_ACC_ARG_1_',`$1') -define(`_ACC_ARG_2_',`$2') -define(`_ACC_ARG_3_',`$3') -define(`_ACC_ARG_4_',`$4') -define(`_ACC_ARG_5_',`$5') -define(`_ACC_ARG_6_',`$6') -define(`_ACC_ARG_7_',`$7') -define(`_ACC_ARG_8_',`$8') -define(`_ACC_ARG_9_',`$9') -define(`_ARG1_',`_ACC_ARG_1_(_ARGS_)') -define(`_ARG2_',`_ACC_ARG_2_(_ARGS_)') -define(`_ARG3_',`_ACC_ARG_3_(_ARGS_)') -define(`_ARG4_',`_ACC_ARG_4_(_ARGS_)') -define(`_ARG5_',`_ACC_ARG_5_(_ARGS_)') -define(`_ARG6_',`_ACC_ARG_6_(_ARGS_)') -define(`_ARG7_',`_ACC_ARG_7_(_ARGS_)') -define(`_ARG8_',`_ACC_ARG_8_(_ARGS_)') -define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)') -dnl define if not yet defined: if `$1' is not defined it will be `$2' -define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')') -dnl ---------------------------------------- -dnl add a char $2 to a string $1 if it is not there -define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')') -dnl ---- -dnl delete a char $2 from a string $1 if it is there -define(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')') -dnl ---- -dnl apply a macro to a whole string by recursion (one char at a time) -dnl $1: macro -dnl $2: first argument to macro -dnl $3: list that is split up into characters -define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')') -dnl ---- -dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_ -dnl A if head($2) = + -dnl D if head($2) = - -dnl $1_MF_ is set otherwise; set _A/D_ to `' -define(`MODIFY_MAILER_FLAGS',`define(`_hd_',`substr(`$2',0,1)')define(`_tl_',`substr(`$2',1)')`'ifelse(_hd_,`+',`ifdef($1`'_MF_A_, `define($1`'_MF_A_,$1_MF_A_`'_tl_)', `define($1`'_MF_A_, _tl_)')',_hd_,`-',`ifdef($1`'_MF_D_, `define($1`'_MF_D_,$1_MF_D_`'_tl_)', `define($1`'_MF_D_,_tl_)')',`define($1`'_MF_,`$2')define($1`'_MF_A_,`')define($1`'_MF_D_,`')')') -dnl ---- -dnl actually modify flags: -dnl $1: flags (strings) to modify -dnl $2: name of flags (just first part) to modify -dnl WARNING: the order might be important: if someone adds and delete the -dnl same characters, he does not deserve any better, does he? -dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined) -define(`_MODMF_',`ifdef($2`'_MF_,`$2_MF_',`_AP_(`_ADDCHAR_',_AP_(`_DELCHAR_',$1,ifdef($2`'_MF_D_,`$2_MF_D_',`')),ifdef($2`'_MF_A_,`$2_MF_A_',`'))')') -dnl usage: -dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl -dnl in MAILER.m4: _MODMF_(LMF,`LOCAL') -dnl ---------------------------------------- -define(`MAILER', -`define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl -ifdef(`_MAILER_DEFINED_', `', `define(`_MAILER_DEFINED_', `1')')dnl -ifdef(_MAILER_`'_M_N_`'_, -`errprint(`*** ERROR: MAILER('_M_N_`) already included -')', -`define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')') -define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'') -define(`FEATURE', `PUSHDIVERT(-1)ifdef(`_MAILER_DEFINED_',`errprint(`*** ERROR: FEATURE() should be before MAILER() -')')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'') -define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'') -define(`_DPO_',`') -define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_') -O DaemonPortOptions=`$1')') -define(`_CPO_',`') -define(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_') -O ClientPortOptions=`$1')') -define(`_MAIL_FILTERS_', `') -define(`_MAIL_FILTERS_DEF', `') -define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_') -X`'$1`, '`$2') -define(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')') -define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2') -ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X', -`define(`confINPUT_MAIL_FILTERS', $1)', -`define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')') -define(`_QUEUE_GROUP_', `') -define(`QUEUE_GROUP', `define(`_QUEUE_GROUP_', defn(`_QUEUE_GROUP_') -Q`'$1`, '`$2')') -define(`CF_LEVEL', `10')dnl -define(`VERSIONID', ``##### $1 #####'') -define(`LOCAL_RULE_0', `divert(3)') -dnl for UUCP... -define(`LOCAL_UUCP', `divert(4)') -define(`LOCAL_RULE_1', -`divert(9)dnl -####################################### -### Ruleset 1 -- Sender Rewriting ### -####################################### - -Ssender=1 -') -define(`LOCAL_RULE_2', -`divert(9)dnl -########################################## -### Ruleset 2 -- Recipient Rewriting ### -########################################## - -Srecipient=2 -') -define(`LOCAL_RULESETS', -`divert(9) - -') -define(`LOCAL_SRV_FEATURES', -`define(`_LOCAL_SRV_FEATURES_') -ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES -')') -divert(9) -SLocal_srv_features') -define(`LOCAL_TRY_TLS', -`define(`_LOCAL_TRY_TLS_') -ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TRY_TLS -')') -divert(9) -SLocal_try_tls') -define(`LOCAL_TLS_RCPT', -`define(`_LOCAL_TLS_RCPT_') -ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_RCPT -')') -divert(9) -SLocal_tls_rcpt') -define(`LOCAL_TLS_CLIENT', -`define(`_LOCAL_TLS_CLIENT_') -ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_CLIENT -')') -divert(9) -SLocal_tls_client') -define(`LOCAL_TLS_SERVER', -`define(`_LOCAL_TLS_SERVER_') -ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_SERVER -')') -divert(9) -SLocal_tls_server') -define(`LOCAL_RULE_3', `divert(2)') -define(`LOCAL_CONFIG', `divert(6)') -define(`MAILER_DEFINITIONS', `divert(7)') -define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)') -define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*) DOL(1) < @ $2 > DOL(2)') -define(`CONCAT', `$1$2$3$4$5$6$7') -define(`DOL', ``$'$1') -define(`SITECONFIG', -`CONCAT(D, $3, $2) -define(`_CLASS_$3_', `')dnl -ifelse($3, U, C{w}$2 $2.UUCP, `dnl') -define(`SITE', `ifelse(CONCAT($'2`, $3), SU, - CONCAT(CY, $'1`), - CONCAT(C, $3, $'1`))') -sinclude(_CF_DIR_`'siteconfig/$1.m4)') -define(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1 -POPDIVERT`'dnl`'') -define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1 -POPDIVERT`'dnl`'') -define(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1 -POPDIVERT`'dnl`'') -define(`LOCAL_USER_FILE', `PUSHDIVERT(5)F{L}$1 -POPDIVERT`'dnl`'') -define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)') -define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1 -POPDIVERT`'dnl`'') -define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1 -POPDIVERT`'dnl`'') -define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1 -POPDIVERT`'dnl`'') -define(`MASQUERADE_EXCEPTION_FILE', `PUSHDIVERT(5)F{N}$1 -POPDIVERT`'dnl`'') -define(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1 -POPDIVERT`'dnl`'') -define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1 -POPDIVERT`'dnl`'') -define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1 -POPDIVERT`'dnl`'') -define(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1 -POPDIVERT`'dnl`'') -define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1 -POPDIVERT`'dnl`'') -define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1 -POPDIVERT`'dnl`'') -define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1 -POPDIVERT`'dnl`'') -define(`LDAPROUTE_EQUIVALENT', `PUSHDIVERT(5)C{LDAPRouteEquiv}$1 -POPDIVERT`'dnl`'') -define(`LDAPROUTE_EQUIVALENT_FILE', `PUSHDIVERT(5)F{LDAPRouteEquiv}$1 -POPDIVERT`'dnl`'') -define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1 -define(`_VIRTHOSTS_') -POPDIVERT`'dnl`'') -define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1 -define(`_VIRTHOSTS_') -POPDIVERT`'dnl`'') -define(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1 -POPDIVERT`'dnl`'') -define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1 -POPDIVERT`'dnl`'') -define(`TRUST_AUTH_MECH', `_DEFIFNOT(`_USE_AUTH_',`1')PUSHDIVERT(5)C{TrustAuthMech}$1 -POPDIVERT`'dnl`'') -define(`_OPTINS', `ifdef(`$1', `$2$1$3')') - - -m4wrap(`include(_CF_DIR_`m4/proto.m4')') - -# default location for files -ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')') - -# set our default hashed database type -define(`DATABASE_MAP_TYPE', `hash') - -# set up default values for options -define(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases') -define(`confMAILER_NAME', ``MAILER-DAEMON'') -define(`confFROM_LINE', `From $g $d') -define(`confOPERATORS', `.:%@!^/[]+') -define(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b') -define(`_REC_AUTH_', `$.$?{auth_type}(authenticated') -define(`_REC_FULL_AUTH_', `$.$?{auth_type}(user=${auth_authen} $?{auth_author}author=${auth_author} $.mech=${auth_type}') -define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)') -define(`_REC_END_', `for $u; $|; - $.$b') -define(`_REC_TLS_', `(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u') -define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}') -define(`confRECEIVED_HEADER', `_REC_HDR_ - _REC_AUTH_$?{auth_ssf} bits=${auth_ssf}$.) - _REC_BY_ - _REC_TLS_ - _REC_END_') -define(`confSEVEN_BIT_INPUT', `False') -define(`confALIAS_WAIT', `10') -define(`confMIN_FREE_BLOCKS', `100') -define(`confBLANK_SUB', `.') -define(`confCON_EXPENSIVE', `False') -define(`confDELIVERY_MODE', `background') -define(`confTEMP_FILE_MODE', `0600') -define(`confMCI_CACHE_SIZE', `2') -define(`confMCI_CACHE_TIMEOUT', `5m') -define(`confUSE_ERRORS_TO', `False') -define(`confLOG_LEVEL', `9') -define(`confCHECK_ALIASES', `False') -define(`confOLD_STYLE_HEADERS', `True') -define(`confPRIVACY_FLAGS', `authwarnings') -define(`confSAFE_QUEUE', `True') -define(`confTO_QUEUERETURN', `5d') -define(`confTO_QUEUEWARN', `4h') -define(`confTIME_ZONE', `USE_SYSTEM') -define(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names') -define(`confMIME_FORMAT_ERRORS', `True') -define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward') -define(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains') -define(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'') -define(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'') -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}') - - -divert(0)dnl -VERSIONID(`$Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $') diff --git a/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4 deleted file mode 100644 index ccad77cec55d3..0000000000000 --- a/contrib/sendmail/cf/m4/proto.m4 +++ /dev/null @@ -1,2938 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -divert(0) - -VERSIONID(`$Id: proto.m4,v 8.711 2004/08/04 21:29:55 ca Exp $') - -# level CF_LEVEL config file format -V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley') -divert(-1) - -dnl if MAILER(`local') not defined: do it ourself; be nice -dnl maybe we should issue a warning? -ifdef(`_MAILER_local_',`', `MAILER(local)') - -# do some sanity checking -ifdef(`__OSTYPE__',, - `errprint(`*** ERROR: No system type defined (use OSTYPE macro) -')') - -# pick our default mailers -ifdef(`confSMTP_MAILER',, `define(`confSMTP_MAILER', `esmtp')') -ifdef(`confLOCAL_MAILER',, `define(`confLOCAL_MAILER', `local')') -ifdef(`confRELAY_MAILER',, - `define(`confRELAY_MAILER', - `ifdef(`_MAILER_smtp_', `relay', - `ifdef(`_MAILER_uucp', `uucp-new', `unknown')')')') -ifdef(`confUUCP_MAILER',, `define(`confUUCP_MAILER', `uucp-old')') -define(`_SMTP_', `confSMTP_MAILER')dnl for readability only -define(`_LOCAL_', `confLOCAL_MAILER')dnl for readability only -define(`_RELAY_', `confRELAY_MAILER')dnl for readability only -define(`_UUCP_', `confUUCP_MAILER')dnl for readability only - -# back compatibility with old config files -ifdef(`confDEF_GROUP_ID', -`errprint(`*** confDEF_GROUP_ID is obsolete. - Use confDEF_USER_ID with a colon in the value instead. -')') -ifdef(`confREAD_TIMEOUT', -`errprint(`*** confREAD_TIMEOUT is obsolete. - Use individual confTO_<timeout> parameters instead. -')') -ifdef(`confMESSAGE_TIMEOUT', - `define(`_ARG_', index(confMESSAGE_TIMEOUT, /)) - ifelse(_ARG_, -1, - `define(`confTO_QUEUERETURN', confMESSAGE_TIMEOUT)', - `define(`confTO_QUEUERETURN', - substr(confMESSAGE_TIMEOUT, 0, _ARG_)) - define(`confTO_QUEUEWARN', - substr(confMESSAGE_TIMEOUT, eval(_ARG_+1)))')') -ifdef(`confMIN_FREE_BLOCKS', `ifelse(index(confMIN_FREE_BLOCKS, /), -1,, -`errprint(`*** compound confMIN_FREE_BLOCKS is obsolete. - Use confMAX_MESSAGE_SIZE for the second part of the value. -')')') - - -# Sanity check on ldap_routing feature -# If the user doesn't specify a new map, they better have given as a -# default LDAP specification which has the LDAP base (and most likely the host) -ifdef(`confLDAP_DEFAULT_SPEC',, `ifdef(`_LDAP_ROUTING_WARN_', `errprint(` -WARNING: Using default FEATURE(ldap_routing) map definition(s) -without setting confLDAP_DEFAULT_SPEC option. -')')')dnl - -# clean option definitions below.... -define(`_OPTION', `ifdef(`$2', `O $1`'ifelse(defn(`$2'), `',, `=$2')', `#O $1`'ifelse(`$3', `',,`=$3')')')dnl - -dnl required to "rename" the check_* rulesets... -define(`_U_',ifdef(`_DELAY_CHECKS_',`',`_')) -dnl default relaying denied message -ifdef(`confRELAY_MSG', `', `define(`confRELAY_MSG', -ifdef(`_USE_AUTH_', `"550 Relaying denied. Proper authentication required."', `"550 Relaying denied"'))') -ifdef(`confRCPTREJ_MSG', `', `define(`confRCPTREJ_MSG', `"550 Mailbox disabled for this recipient"')') -define(`_CODE553', `553') -divert(0)dnl - -# override file safeties - setting this option compromises system security, -# addressing the actual file configuration problem is preferred -# need to set this before any file actions are encountered in the cf file -_OPTION(DontBlameSendmail, `confDONT_BLAME_SENDMAIL', `safe') - -# default LDAP map specification -# need to set this now before any LDAP maps are defined -_OPTION(LDAPDefaultSpec, `confLDAP_DEFAULT_SPEC', `-h localhost') - -################## -# local info # -################## - -# my LDAP cluster -# need to set this before any LDAP lookups are done (including classes) -ifdef(`confLDAP_CLUSTER', `D{sendmailMTACluster}`'confLDAP_CLUSTER', `#D{sendmailMTACluster}$m') - -Cwlocalhost -ifdef(`USE_CW_FILE', -`# file containing names of hosts for which we receive email -Fw`'confCW_FILE', - `dnl') - -# my official domain name -# ... `define' this only if sendmail cannot automatically determine your domain -ifdef(`confDOMAIN_NAME', `Dj`'confDOMAIN_NAME', `#Dj$w.Foo.COM') - -# host/domain names ending with a token in class P are canonical -CP. - -ifdef(`UUCP_RELAY', -`# UUCP relay host -DY`'UUCP_RELAY -CPUUCP - -')dnl -ifdef(`BITNET_RELAY', -`# BITNET relay host -DB`'BITNET_RELAY -CPBITNET - -')dnl -ifdef(`DECNET_RELAY', -`define(`_USE_DECNET_SYNTAX_', 1)dnl -# DECnet relay host -DC`'DECNET_RELAY -CPDECNET - -')dnl -ifdef(`FAX_RELAY', -`# FAX relay host -DF`'FAX_RELAY -CPFAX - -')dnl -# "Smart" relay host (may be null) -DS`'ifdef(`SMART_HOST', `SMART_HOST') - -ifdef(`LUSER_RELAY', `dnl -# place to which unknown users should be forwarded -Kuser user -m -a<> -DL`'LUSER_RELAY', -`dnl') - -# operators that cannot be in local usernames (i.e., network indicators) -CO @ % ifdef(`_NO_UUCP_', `', `!') - -# a class with just dot (for identifying canonical names) -C.. - -# a class with just a left bracket (for identifying domain literals) -C[[ - -ifdef(`_ACCESS_TABLE_', `dnl -# access_db acceptance class -C{Accept}OK RELAY -ifdef(`_DELAY_COMPAT_8_10_',`dnl -ifdef(`_BLACKLIST_RCPT_',`dnl -# possible access_db RHS for spam friends/haters -C{SpamTag}SPAMFRIEND SPAMHATER')')', -`dnl') - -dnl mark for "domain is ok" (resolved or accepted anyway) -define(`_RES_OK_', `OKR')dnl -ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',`dnl',`dnl -# Resolve map (to check if a host exists in check_mail) -Kresolve host -a<_RES_OK_> -T<TEMP>') -C{ResOk}_RES_OK_ - -ifdef(`_NEED_MACRO_MAP_', `dnl -ifdef(`_MACRO_MAP_', `', `# macro storage map -define(`_MACRO_MAP_', `1')dnl -Kmacro macro')', `dnl') - -ifdef(`confCR_FILE', `dnl -# Hosts for which relaying is permitted ($=R) -FR`'confCR_FILE', -`dnl') - -define(`TLS_SRV_TAG', `"TLS_Srv"')dnl -define(`TLS_CLT_TAG', `"TLS_Clt"')dnl -define(`TLS_RCPT_TAG', `"TLS_Rcpt"')dnl -define(`TLS_TRY_TAG', `"Try_TLS"')dnl -define(`SRV_FEAT_TAG', `"Srv_Features"')dnl -dnl this may be useful in other contexts too -ifdef(`_ARITH_MAP_', `', `# arithmetic map -define(`_ARITH_MAP_', `1')dnl -Karith arith') -ifdef(`_ACCESS_TABLE_', `dnl -ifdef(`_MACRO_MAP_', `', `# macro storage map -define(`_MACRO_MAP_', `1')dnl -Kmacro macro') -# possible values for TLS_connection in access map -C{Tls}VERIFY ENCR', `dnl') -ifdef(`_CERT_REGEX_ISSUER_', `dnl -# extract relevant part from cert issuer -KCERTIssuer regex _CERT_REGEX_ISSUER_', `dnl') -ifdef(`_CERT_REGEX_SUBJECT_', `dnl -# extract relevant part from cert subject -KCERTSubject regex _CERT_REGEX_SUBJECT_', `dnl') - -ifdef(`LOCAL_RELAY', `dnl -# who I send unqualified names to if `FEATURE(stickyhost)' is used -# (null means deliver locally) -DR`'LOCAL_RELAY') - -ifdef(`MAIL_HUB', `dnl -# who gets all local email traffic -# ($R has precedence for unqualified names if `FEATURE(stickyhost)' is used) -DH`'MAIL_HUB') - -# dequoting map -Kdequote dequote`'ifdef(`confDEQUOTE_OPTS', ` confDEQUOTE_OPTS', `') - -divert(0)dnl # end of nullclient diversion -# class E: names that should be exposed as from this host, even if we masquerade -# class L: names that should be delivered locally, even if we have a relay -# class M: domains that should be converted to $M -# class N: domains that should not be converted to $M -#CL root -undivert(5)dnl -ifdef(`_VIRTHOSTS_', `CR$={VirtHost}', `dnl') - -ifdef(`MASQUERADE_NAME', `dnl -# who I masquerade as (null for no masquerading) (see also $=M) -DM`'MASQUERADE_NAME') - -# my name for error messages -ifdef(`confMAILER_NAME', `Dn`'confMAILER_NAME', `#DnMAILER-DAEMON') - -undivert(6)dnl LOCAL_CONFIG -include(_CF_DIR_`m4/version.m4') - -############### -# Options # -############### -ifdef(`confAUTO_REBUILD', -`errprint(WARNING: `confAUTO_REBUILD' is no longer valid. - There was a potential for a denial of service attack if this is set. -)')dnl - -# strip message body to 7 bits on input? -_OPTION(SevenBitInput, `confSEVEN_BIT_INPUT', `False') - -# 8-bit data handling -_OPTION(EightBitMode, `confEIGHT_BIT_HANDLING', `pass8') - -# wait for alias file rebuild (default units: minutes) -_OPTION(AliasWait, `confALIAS_WAIT', `5m') - -# location of alias file -_OPTION(AliasFile, `ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases') - -# minimum number of free blocks on filesystem -_OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', `100') - -# maximum message size -_OPTION(MaxMessageSize, `confMAX_MESSAGE_SIZE', `0') - -# substitution for space (blank) characters -_OPTION(BlankSub, `confBLANK_SUB', `_') - -# avoid connecting to "expensive" mailers on initial submission? -_OPTION(HoldExpensive, `confCON_EXPENSIVE', `False') - -# checkpoint queue runs after every N successful deliveries -_OPTION(CheckpointInterval, `confCHECKPOINT_INTERVAL', `10') - -# default delivery mode -_OPTION(DeliveryMode, `confDELIVERY_MODE', `background') - -# error message header/file -_OPTION(ErrorHeader, `confERROR_MESSAGE', `MAIL_SETTINGS_DIR`'error-header') - -# error mode -_OPTION(ErrorMode, `confERROR_MODE', `print') - -# save Unix-style "From_" lines at top of header? -_OPTION(SaveFromLine, `confSAVE_FROM_LINES', `False') - -# queue file mode (qf files) -_OPTION(QueueFileMode, `confQUEUE_FILE_MODE', `0600') - -# temporary file mode -_OPTION(TempFileMode, `confTEMP_FILE_MODE', `0600') - -# match recipients against GECOS field? -_OPTION(MatchGECOS, `confMATCH_GECOS', `False') - -# maximum hop count -_OPTION(MaxHopCount, `confMAX_HOP', `25') - -# location of help file -O HelpFile=ifdef(`HELP_FILE', HELP_FILE, `MAIL_SETTINGS_DIR`'helpfile') - -# ignore dots as terminators in incoming messages? -_OPTION(IgnoreDots, `confIGNORE_DOTS', `False') - -# name resolver options -_OPTION(ResolverOptions, `confBIND_OPTS', `+AAONLY') - -# deliver MIME-encapsulated error messages? -_OPTION(SendMimeErrors, `confMIME_FORMAT_ERRORS', `True') - -# Forward file search path -_OPTION(ForwardPath, `confFORWARD_PATH', `/var/forward/$u:$z/.forward.$w:$z/.forward') - -# open connection cache size -_OPTION(ConnectionCacheSize, `confMCI_CACHE_SIZE', `2') - -# open connection cache timeout -_OPTION(ConnectionCacheTimeout, `confMCI_CACHE_TIMEOUT', `5m') - -# persistent host status directory -_OPTION(HostStatusDirectory, `confHOST_STATUS_DIRECTORY', `.hoststat') - -# single thread deliveries (requires HostStatusDirectory)? -_OPTION(SingleThreadDelivery, `confSINGLE_THREAD_DELIVERY', `False') - -# use Errors-To: header? -_OPTION(UseErrorsTo, `confUSE_ERRORS_TO', `False') - -# log level -_OPTION(LogLevel, `confLOG_LEVEL', `10') - -# send to me too, even in an alias expansion? -_OPTION(MeToo, `confME_TOO', `True') - -# verify RHS in newaliases? -_OPTION(CheckAliases, `confCHECK_ALIASES', `False') - -# default messages to old style headers if no special punctuation? -_OPTION(OldStyleHeaders, `confOLD_STYLE_HEADERS', `False') - -# SMTP daemon options -ifelse(defn(`confDAEMON_OPTIONS'), `', `dnl', -`errprint(WARNING: `confDAEMON_OPTIONS' is no longer valid. - Use `DAEMON_OPTIONS()'; see cf/README. -)'dnl -`DAEMON_OPTIONS(`confDAEMON_OPTIONS')') -ifelse(defn(`_DPO_'), `', -`ifdef(`_NETINET6_', `O DaemonPortOptions=Name=MTA-v4, Family=inet -O DaemonPortOptions=Name=MTA-v6, Family=inet6',`O DaemonPortOptions=Name=MTA')', `_DPO_') -ifdef(`_NO_MSA_', `dnl', `O DaemonPortOptions=Port=587, Name=MSA, M=E') - -# SMTP client options -ifelse(defn(`confCLIENT_OPTIONS'), `', `dnl', -`errprint(WARNING: `confCLIENT_OPTIONS' is no longer valid. See cf/README for more information. -)'dnl -`CLIENT_OPTIONS(`confCLIENT_OPTIONS')') -ifelse(defn(`_CPO_'), `', -`#O ClientPortOptions=Family=inet, Address=0.0.0.0', `_CPO_') - -# Modifiers to `define' {daemon_flags} for direct submissions -_OPTION(DirectSubmissionModifiers, `confDIRECT_SUBMISSION_MODIFIERS', `') - -# Use as mail submission program? See sendmail/SECURITY -_OPTION(UseMSP, `confUSE_MSP', `') - -# privacy flags -_OPTION(PrivacyOptions, `confPRIVACY_FLAGS', `authwarnings') - -# who (if anyone) should get extra copies of error messages -_OPTION(PostmasterCopy, `confCOPY_ERRORS_TO', `Postmaster') - -# slope of queue-only function -_OPTION(QueueFactor, `confQUEUE_FACTOR', `600000') - -# limit on number of concurrent queue runners -_OPTION(MaxQueueChildren, `confMAX_QUEUE_CHILDREN', `') - -# maximum number of queue-runners per queue-grouping with multiple queues -_OPTION(MaxRunnersPerQueue, `confMAX_RUNNERS_PER_QUEUE', `1') - -# priority of queue runners (nice(3)) -_OPTION(NiceQueueRun, `confNICE_QUEUE_RUN', `') - -# shall we sort the queue by hostname first? -_OPTION(QueueSortOrder, `confQUEUE_SORT_ORDER', `priority') - -# minimum time in queue before retry -_OPTION(MinQueueAge, `confMIN_QUEUE_AGE', `30m') - -# how many jobs can you process in the queue? -_OPTION(MaxQueueRunSize, `confMAX_QUEUE_RUN_SIZE', `10000') - -# perform initial split of envelope without checking MX records -_OPTION(FastSplit, `confFAST_SPLIT', `1') - -# queue directory -O QueueDirectory=ifdef(`QUEUE_DIR', QUEUE_DIR, `/var/spool/mqueue') - -# key for shared memory; 0 to turn off -_OPTION(SharedMemoryKey, `confSHARED_MEMORY_KEY', `0') - -ifdef(`confSHARED_MEMORY_KEY_FILE', `dnl -# file to store key for shared memory (if SharedMemoryKey = -1) -O SharedMemoryKeyFile=confSHARED_MEMORY_KEY_FILE') - -# timeouts (many of these) -_OPTION(Timeout.initial, `confTO_INITIAL', `5m') -_OPTION(Timeout.connect, `confTO_CONNECT', `5m') -_OPTION(Timeout.aconnect, `confTO_ACONNECT', `0s') -_OPTION(Timeout.iconnect, `confTO_ICONNECT', `5m') -_OPTION(Timeout.helo, `confTO_HELO', `5m') -_OPTION(Timeout.mail, `confTO_MAIL', `10m') -_OPTION(Timeout.rcpt, `confTO_RCPT', `1h') -_OPTION(Timeout.datainit, `confTO_DATAINIT', `5m') -_OPTION(Timeout.datablock, `confTO_DATABLOCK', `1h') -_OPTION(Timeout.datafinal, `confTO_DATAFINAL', `1h') -_OPTION(Timeout.rset, `confTO_RSET', `5m') -_OPTION(Timeout.quit, `confTO_QUIT', `2m') -_OPTION(Timeout.misc, `confTO_MISC', `2m') -_OPTION(Timeout.command, `confTO_COMMAND', `1h') -_OPTION(Timeout.ident, `confTO_IDENT', `5s') -_OPTION(Timeout.fileopen, `confTO_FILEOPEN', `60s') -_OPTION(Timeout.control, `confTO_CONTROL', `2m') -_OPTION(Timeout.queuereturn, `confTO_QUEUERETURN', `5d') -_OPTION(Timeout.queuereturn.normal, `confTO_QUEUERETURN_NORMAL', `5d') -_OPTION(Timeout.queuereturn.urgent, `confTO_QUEUERETURN_URGENT', `2d') -_OPTION(Timeout.queuereturn.non-urgent, `confTO_QUEUERETURN_NONURGENT', `7d') -_OPTION(Timeout.queuereturn.dsn, `confTO_QUEUERETURN_DSN', `5d') -_OPTION(Timeout.queuewarn, `confTO_QUEUEWARN', `4h') -_OPTION(Timeout.queuewarn.normal, `confTO_QUEUEWARN_NORMAL', `4h') -_OPTION(Timeout.queuewarn.urgent, `confTO_QUEUEWARN_URGENT', `1h') -_OPTION(Timeout.queuewarn.non-urgent, `confTO_QUEUEWARN_NONURGENT', `12h') -_OPTION(Timeout.queuewarn.dsn, `confTO_QUEUEWARN_DSN', `4h') -_OPTION(Timeout.hoststatus, `confTO_HOSTSTATUS', `30m') -_OPTION(Timeout.resolver.retrans, `confTO_RESOLVER_RETRANS', `5s') -_OPTION(Timeout.resolver.retrans.first, `confTO_RESOLVER_RETRANS_FIRST', `5s') -_OPTION(Timeout.resolver.retrans.normal, `confTO_RESOLVER_RETRANS_NORMAL', `5s') -_OPTION(Timeout.resolver.retry, `confTO_RESOLVER_RETRY', `4') -_OPTION(Timeout.resolver.retry.first, `confTO_RESOLVER_RETRY_FIRST', `4') -_OPTION(Timeout.resolver.retry.normal, `confTO_RESOLVER_RETRY_NORMAL', `4') -_OPTION(Timeout.lhlo, `confTO_LHLO', `2m') -_OPTION(Timeout.auth, `confTO_AUTH', `10m') -_OPTION(Timeout.starttls, `confTO_STARTTLS', `1h') - -# time for DeliverBy; extension disabled if less than 0 -_OPTION(DeliverByMin, `confDELIVER_BY_MIN', `0') - -# should we not prune routes in route-addr syntax addresses? -_OPTION(DontPruneRoutes, `confDONT_PRUNE_ROUTES', `False') - -# queue up everything before forking? -_OPTION(SuperSafe, `confSAFE_QUEUE', `True') - -# status file -O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', `MAIL_SETTINGS_DIR`'statistics') - -# time zone handling: -# if undefined, use system default -# if defined but null, use TZ envariable passed in -# if defined and non-null, use that info -ifelse(confTIME_ZONE, `USE_SYSTEM', `#O TimeZoneSpec=', - confTIME_ZONE, `USE_TZ', `O TimeZoneSpec=', - `O TimeZoneSpec=confTIME_ZONE') - -# default UID (can be username or userid:groupid) -_OPTION(DefaultUser, `confDEF_USER_ID', `mailnull') - -# list of locations of user database file (null means no lookup) -_OPTION(UserDatabaseSpec, `confUSERDB_SPEC', `MAIL_SETTINGS_DIR`'userdb') - -# fallback MX host -_OPTION(FallbackMXhost, `confFALLBACK_MX', `fall.back.host.net') - -# fallback smart host -_OPTION(FallbackSmartHost, `confFALLBACK_SMARTHOST', `fall.back.host.net') - -# if we are the best MX host for a site, try it directly instead of config err -_OPTION(TryNullMXList, `confTRY_NULL_MX_LIST', `False') - -# load average at which we just queue messages -_OPTION(QueueLA, `confQUEUE_LA', `8') - -# load average at which we refuse connections -_OPTION(RefuseLA, `confREFUSE_LA', `12') - -# log interval when refusing connections for this long -_OPTION(RejectLogInterval, `confREJECT_LOG_INTERVAL', `3h') - -# load average at which we delay connections; 0 means no limit -_OPTION(DelayLA, `confDELAY_LA', `0') - -# maximum number of children we allow at one time -_OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', `0') - -# maximum number of new connections per second -_OPTION(ConnectionRateThrottle, `confCONNECTION_RATE_THROTTLE', `0') - -# Width of the window -_OPTION(ConnectionRateWindowSize, `confCONNECTION_RATE_WINDOW_SIZE', `60s') - -# work recipient factor -_OPTION(RecipientFactor, `confWORK_RECIPIENT_FACTOR', `30000') - -# deliver each queued job in a separate process? -_OPTION(ForkEachJob, `confSEPARATE_PROC', `False') - -# work class factor -_OPTION(ClassFactor, `confWORK_CLASS_FACTOR', `1800') - -# work time factor -_OPTION(RetryFactor, `confWORK_TIME_FACTOR', `90000') - -# default character set -_OPTION(DefaultCharSet, `confDEF_CHAR_SET', `unknown-8bit') - -# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others) -_OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', `MAIL_SETTINGS_DIR`'service.switch') - -# hosts file (normally /etc/hosts) -_OPTION(HostsFile, `confHOSTS_FILE', `/etc/hosts') - -# dialup line delay on connection failure -_OPTION(DialDelay, `confDIAL_DELAY', `10s') - -# action to take if there are no recipients in the message -_OPTION(NoRecipientAction, `confNO_RCPT_ACTION', `add-to-undisclosed') - -# chrooted environment for writing to files -_OPTION(SafeFileEnvironment, `confSAFE_FILE_ENV', `/arch') - -# are colons OK in addresses? -_OPTION(ColonOkInAddr, `confCOLON_OK_IN_ADDR', `True') - -# shall I avoid expanding CNAMEs (violates protocols)? -_OPTION(DontExpandCnames, `confDONT_EXPAND_CNAMES', `False') - -# SMTP initial login message (old $e macro) -_OPTION(SmtpGreetingMessage, `confSMTP_LOGIN_MSG', `$j Sendmail $v ready at $b') - -# UNIX initial From header format (old $l macro) -_OPTION(UnixFromLine, `confFROM_LINE', `From $g $d') - -# From: lines that have embedded newlines are unwrapped onto one line -_OPTION(SingleLineFromHeader, `confSINGLE_LINE_FROM_HEADER', `False') - -# Allow HELO SMTP command that does not `include' a host name -_OPTION(AllowBogusHELO, `confALLOW_BOGUS_HELO', `False') - -# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) -_OPTION(MustQuoteChars, `confMUST_QUOTE_CHARS', `.') - -# delimiter (operator) characters (old $o macro) -_OPTION(OperatorChars, `confOPERATORS', `.:@[]') - -# shall I avoid calling initgroups(3) because of high NIS costs? -_OPTION(DontInitGroups, `confDONT_INIT_GROUPS', `False') - -# are group-writable `:include:' and .forward files (un)trustworthy? -# True (the default) means they are not trustworthy. -_OPTION(UnsafeGroupWrites, `confUNSAFE_GROUP_WRITES', `True') -ifdef(`confUNSAFE_GROUP_WRITES', -`errprint(`WARNING: confUNSAFE_GROUP_WRITES is deprecated; use confDONT_BLAME_SENDMAIL. -')') - -# where do errors that occur when sending errors get sent? -_OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS', `postmaster') - -# where to save bounces if all else fails -_OPTION(DeadLetterDrop, `confDEAD_LETTER_DROP', `/var/tmp/dead.letter') - -# what user id do we assume for the majority of the processing? -_OPTION(RunAsUser, `confRUN_AS_USER', `sendmail') - -# maximum number of recipients per SMTP envelope -_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', `0') - -# limit the rate recipients per SMTP envelope are accepted -# once the threshold number of recipients have been rejected -_OPTION(BadRcptThrottle, `confBAD_RCPT_THROTTLE', `0') - -# shall we get local names from our installed interfaces? -_OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES', `False') - -# Return-Receipt-To: header implies DSN request -_OPTION(RrtImpliesDsn, `confRRT_IMPLIES_DSN', `False') - -# override connection address (for testing) -_OPTION(ConnectOnlyTo, `confCONNECT_ONLY_TO', `0.0.0.0') - -# Trusted user for file ownership and starting the daemon -_OPTION(TrustedUser, `confTRUSTED_USER', `root') - -# Control socket for daemon management -_OPTION(ControlSocketName, `confCONTROL_SOCKET_NAME', `/var/spool/mqueue/.control') - -# Maximum MIME header length to protect MUAs -_OPTION(MaxMimeHeaderLength, `confMAX_MIME_HEADER_LENGTH', `0/0') - -# Maximum length of the sum of all headers -_OPTION(MaxHeadersLength, `confMAX_HEADERS_LENGTH', `32768') - -# Maximum depth of alias recursion -_OPTION(MaxAliasRecursion, `confMAX_ALIAS_RECURSION', `10') - -# location of pid file -_OPTION(PidFile, `confPID_FILE', `/var/run/sendmail.pid') - -# Prefix string for the process title shown on 'ps' listings -_OPTION(ProcessTitlePrefix, `confPROCESS_TITLE_PREFIX', `prefix') - -# Data file (df) memory-buffer file maximum size -_OPTION(DataFileBufferSize, `confDF_BUFFER_SIZE', `4096') - -# Transcript file (xf) memory-buffer file maximum size -_OPTION(XscriptFileBufferSize, `confXF_BUFFER_SIZE', `4096') - -# lookup type to find information about local mailboxes -_OPTION(MailboxDatabase, `confMAILBOX_DATABASE', `pw') - -# override compile time flag REQUIRES_DIR_FSYNC -_OPTION(RequiresDirfsync, `confREQUIRES_DIR_FSYNC', `true') - -# list of authentication mechanisms -_OPTION(AuthMechanisms, `confAUTH_MECHANISMS', `EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5') - -# Authentication realm -_OPTION(AuthRealm, `confAUTH_REALM', `') - -# default authentication information for outgoing connections -_OPTION(DefaultAuthInfo, `confDEF_AUTH_INFO', `MAIL_SETTINGS_DIR`'default-auth-info') - -# SMTP AUTH flags -_OPTION(AuthOptions, `confAUTH_OPTIONS', `') - -# SMTP AUTH maximum encryption strength -_OPTION(AuthMaxBits, `confAUTH_MAX_BITS', `') - -# SMTP STARTTLS server options -_OPTION(TLSSrvOptions, `confTLS_SRV_OPTIONS', `') - -# Input mail filters -_OPTION(InputMailFilters, `confINPUT_MAIL_FILTERS', `') - -ifelse(len(X`'_MAIL_FILTERS_DEF), `1', `dnl', `dnl -# Milter options -_OPTION(Milter.LogLevel, `confMILTER_LOG_LEVEL', `') -_OPTION(Milter.macros.connect, `confMILTER_MACROS_CONNECT', `') -_OPTION(Milter.macros.helo, `confMILTER_MACROS_HELO', `') -_OPTION(Milter.macros.envfrom, `confMILTER_MACROS_ENVFROM', `') -_OPTION(Milter.macros.envrcpt, `confMILTER_MACROS_ENVRCPT', `') -_OPTION(Milter.macros.eom, `confMILTER_MACROS_EOM', `')') - -# CA directory -_OPTION(CACertPath, `confCACERT_PATH', `') -# CA file -_OPTION(CACertFile, `confCACERT', `') -# Server Cert -_OPTION(ServerCertFile, `confSERVER_CERT', `') -# Server private key -_OPTION(ServerKeyFile, `confSERVER_KEY', `') -# Client Cert -_OPTION(ClientCertFile, `confCLIENT_CERT', `') -# Client private key -_OPTION(ClientKeyFile, `confCLIENT_KEY', `') -# File containing certificate revocation lists -_OPTION(CRLFile, `confCRL', `') -# DHParameters (only required if DSA/DH is used) -_OPTION(DHParameters, `confDH_PARAMETERS', `') -# Random data source (required for systems without /dev/urandom under OpenSSL) -_OPTION(RandFile, `confRAND_FILE', `') - -############################ -`# QUEUE GROUP DEFINITIONS #' -############################ -_QUEUE_GROUP_ - -########################### -# Message precedences # -########################### - -Pfirst-class=0 -Pspecial-delivery=100 -Plist=-30 -Pbulk=-60 -Pjunk=-100 - -##################### -# Trusted users # -##################### - -# this is equivalent to setting class "t" -ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, `MAIL_SETTINGS_DIR`'trusted-users') -Troot -Tdaemon -ifdef(`_NO_UUCP_', `dnl', `Tuucp') -ifdef(`confTRUSTED_USERS', `T`'confTRUSTED_USERS', `dnl') - -######################### -# Format of headers # -######################### - -ifdef(`confFROM_HEADER',, `define(`confFROM_HEADER', `$?x$x <$g>$|$g$.')')dnl -ifdef(`confMESSAGEID_HEADER',, `define(`confMESSAGEID_HEADER', `<$t.$i@$j>')')dnl -H?P?Return-Path: <$g> -HReceived: confRECEIVED_HEADER -H?D?Resent-Date: $a -H?D?Date: $a -H?F?Resent-From: confFROM_HEADER -H?F?From: confFROM_HEADER -H?x?Full-Name: $x -# HPosted-Date: $a -# H?l?Received-Date: $b -H?M?Resent-Message-Id: confMESSAGEID_HEADER -H?M?Message-Id: confMESSAGEID_HEADER - -# -###################################################################### -###################################################################### -##### -##### REWRITING RULES -##### -###################################################################### -###################################################################### - -############################################ -### Ruleset 3 -- Name Canonicalization ### -############################################ -Scanonify=3 - -# handle null input (translate to <@> special case) -R$@ $@ <@> - -# strip group: syntax (not inside angle brackets!) and trailing semicolon -R$* $: $1 <@> mark addresses -R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> -R@ $* <@> $: @ $1 unmark @host:... -R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr -R$* :: $* <@> $: $1 :: $2 unmark node::addr -R:`include': $* <@> $: :`include': $1 unmark :`include':... -R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon -R$* : $* <@> $: $2 strip colon if marked -R$* <@> $: $1 unmark -R$* ; $1 strip trailing semi -R$* < $+ :; > $* $@ $2 :; <@> catch <list:;> -R$* < $* ; > $1 < $2 > bogus bracketed semi - -# null input now results from list:; syntax -R$@ $@ :; <@> - -# strip angle brackets -- note RFC733 heuristic to get innermost item -R$* $: < $1 > housekeeping <> -R$+ < $* > < $2 > strip excess on left -R< $* > $+ < $1 > strip excess on right -R<> $@ < @ > MAIL FROM:<> case -R< $+ > $: $1 remove housekeeping <> - -ifdef(`_USE_DEPRECATED_ROUTE_ADDR_',`dnl -# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later -R@ $+ , $+ @ $1 : $2 change all "," to ":" - -# localize and dispose of route-based addresses -dnl XXX: IPv6 colon conflict -ifdef(`NO_NETINET6', `dnl', -`R@ [$+] : $+ $@ $>Canonify2 < @ [$1] > : $2 handle <route-addr>') -R@ $+ : $+ $@ $>Canonify2 < @$1 > : $2 handle <route-addr> -dnl',`dnl -# strip route address <@a,@b,@c:user@d> -> <user@d> -R@ $+ , $+ $2 -ifdef(`NO_NETINET6', `dnl', -`R@ [ $* ] : $+ $2') -R@ $+ : $+ $2 -dnl') - -# find focus for list syntax -R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax -R $+ : $* ; $@ $1 : $2; list syntax - -# find focus for @ syntax addresses -R$+ @ $+ $: $1 < @ $2 > focus on domain -R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right -R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical - -dnl This is flagged as an error in S0; no need to silently fix it here. -dnl # do some sanity checking -dnl R$* < @ $~[ $* : $* > $* $1 < @ $2 $3 > $4 nix colons in addrs - -ifdef(`_NO_UUCP_', `dnl', -`# convert old-style addresses to a domain-based address -R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names -R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps -R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains -') -ifdef(`_USE_DECNET_SYNTAX_', -`# convert node::user addresses into a domain-based address -R$- :: $+ $@ $>Canonify2 $2 < @ $1 .DECNET > resolve DECnet names -R$- . $- :: $+ $@ $>Canonify2 $3 < @ $1.$2 .DECNET > numeric DECnet addr -', - `dnl') -# if we have % signs, take the rightmost one -R$* % $* $1 @ $2 First make them all @s. -R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. -R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish - -# else we must be a local name -R$* $@ $>Canonify2 $1 - - -################################################ -### Ruleset 96 -- bottom half of ruleset 3 ### -################################################ - -SCanonify2=96 - -# handle special cases for local names -R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all -R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain -ifdef(`_NO_UUCP_', `dnl', -`R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain') - -# check for IPv4/IPv6 domain literal -R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr] -R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal -R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr - -ifdef(`_DOMAIN_TABLE_', `dnl -# look up domains in the domain table -R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3', `dnl') - -undivert(2)dnl LOCAL_RULE_3 - -ifdef(`_BITDOMAIN_TABLE_', `dnl -# handle BITNET mapping -R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3', `dnl') - -ifdef(`_UUDOMAIN_TABLE_', `dnl -# handle UUCP mapping -R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3', `dnl') - -ifdef(`_NO_UUCP_', `dnl', -`ifdef(`UUCP_RELAY', -`# pass UUCP addresses straight through -R$* < @ $+ . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', -`# if really UUCP, handle it immediately -ifdef(`_CLASS_U_', -`R$* < @ $=U . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl') -ifdef(`_CLASS_V_', -`R$* < @ $=V . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl') -ifdef(`_CLASS_W_', -`R$* < @ $=W . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl') -ifdef(`_CLASS_X_', -`R$* < @ $=X . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl') -ifdef(`_CLASS_Y_', -`R$* < @ $=Y . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl') - -ifdef(`_NO_CANONIFY_', `dnl', `dnl -# try UUCP traffic as a local address -R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 -R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3') -')') -# hostnames ending in class P are always canonical -R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 -dnl apply the next rule only for hostnames not in class P -dnl this even works for phrases in class P since . is in class P -dnl which daemon flags are set? -R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4 -dnl the other rules in this section only apply if the hostname -dnl does not end in class P hence no further checks are done here -dnl if this ever changes make sure the lookups are "protected" again! -ifdef(`_NO_CANONIFY_', `dnl -dnl do not canonify unless: -dnl domain ends in class {Canonify} (this does not work if the intersection -dnl with class P is non-empty) -dnl or {daemon_flags} has c set -# pass to name server to make hostname canonical if in class {Canonify} -R$* $| $* < @ $* $={Canonify} > $* $: $2 < @ $[ $3 $4 $] > $5 -# pass to name server to make hostname canonical if requested -R$* c $* $| $* < @ $* > $* $: $3 < @ $[ $4 $] > $5 -dnl trailing dot? -> do not apply _CANONIFY_HOSTS_ -R$* $| $* < @ $+ . > $* $: $2 < @ $3 . > $4 -# add a trailing dot to qualified hostnames so other rules will work -R$* $| $* < @ $+.$+ > $* $: $2 < @ $3.$4 . > $5 -ifdef(`_CANONIFY_HOSTS_', `dnl -dnl this should only apply to unqualified hostnames -dnl but if a valid character inside an unqualified hostname is an OperatorChar -dnl then $- does not work. -# lookup unqualified hostnames -R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4', `dnl')', `dnl -dnl _NO_CANONIFY_ is not set: canonify unless: -dnl {daemon_flags} contains CC (do not canonify) -dnl but add a trailing dot to qualified hostnames so other rules will work -dnl should we do this for every hostname: even unqualified? -R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 -R$* CC $* $| $* $: $3 -ifdef(`_FFR_NOCANONIFY_HEADERS', `dnl -# do not canonify header addresses -R$* $| $* < @ $* $~P > $* $: $&{addr_type} $| $2 < @ $3 $4 > $5 -R$* h $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 -R$* h $* $| $* $: $3', `dnl') -# pass to name server to make hostname canonical -R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4') -dnl remove {daemon_flags} for other cases -R$* $| $* $: $2 - -# local host aliases and pseudo-domains are always canonical -R$* < @ $=w > $* $: $1 < @ $2 . > $3 -ifdef(`_MASQUERADE_ENTIRE_DOMAIN_', -`R$* < @ $* $=M > $* $: $1 < @ $2 $3 . > $4', -`R$* < @ $=M > $* $: $1 < @ $2 . > $3') -ifdef(`_VIRTUSER_TABLE_', `dnl -dnl virtual hosts are also canonical -ifdef(`_VIRTUSER_ENTIRE_DOMAIN_', -`R$* < @ $* $={VirtHost} > $* $: $1 < @ $2 $3 . > $4', -`R$* < @ $={VirtHost} > $* $: $1 < @ $2 . > $3')', -`dnl') -ifdef(`_GENERICS_TABLE_', `dnl -dnl hosts for genericstable are also canonical -ifdef(`_GENERICS_ENTIRE_DOMAIN_', -`R$* < @ $* $=G > $* $: $1 < @ $2 $3 . > $4', -`R$* < @ $=G > $* $: $1 < @ $2 . > $3')', -`dnl') -dnl remove superfluous dots (maybe repeatedly) which may have been added -dnl by one of the rules before -R$* < @ $* . . > $* $1 < @ $2 . > $3 - - -################################################## -### Ruleset 4 -- Final Output Post-rewriting ### -################################################## -Sfinal=4 - -R$+ :; <@> $@ $1 : handle <list:;> -R$* <@> $@ handle <> and list:; - -# strip trailing dot off possibly canonical name -R$* < @ $+ . > $* $1 < @ $2 > $3 - -# eliminate internal code -R$* < @ *LOCAL* > $* $1 < @ $j > $2 - -# externalize local domain info -R$* < $+ > $* $1 $2 $3 defocus -R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical -R@ $* $@ @ $1 ... and exit - -ifdef(`_NO_UUCP_', `dnl', -`# UUCP must always be presented in old form -R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u') - -ifdef(`_USE_DECNET_SYNTAX_', -`# put DECnet back in :: form -R$+ @ $+ . DECNET $2 :: $1 u@h.DECNET => h::u', - `dnl') -# delete duplicate local names -R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host - - - -############################################################## -### Ruleset 97 -- recanonicalize and call ruleset zero ### -### (used for recursive calls) ### -############################################################## - -SRecurse=97 -R$* $: $>canonify $1 -R$* $@ $>parse $1 - - -###################################### -### Ruleset 0 -- Parse Address ### -###################################### - -Sparse=0 - -R$* $: $>Parse0 $1 initial parsing -R<@> $#_LOCAL_ $: <@> special case error msgs -R$* $: $>ParseLocal $1 handle local hacks -R$* $: $>Parse1 $1 final parsing - -# -# Parse0 -- do initial syntax checking and eliminate local addresses. -# This should either return with the (possibly modified) input -# or return with a #error mailer. It should not return with a -# #mailer other than the #error mailer. -# - -SParse0 -R<@> $@ <@> special case error msgs -R$* : $* ; <@> $#error $@ 5.1.3 $: "_CODE553 List:; syntax illegal for recipient addresses" -R@ <@ $* > < @ $1 > catch "@@host" bogosity -R<@ $+> $#error $@ 5.1.3 $: "_CODE553 User address required" -R$+ <@> $#error $@ 5.1.3 $: "_CODE553 Hostname required" -R$* $: <> $1 -dnl allow tricks like [host1]:[host2] -R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4 -R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4 -dnl but no a@[b]c -R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "_CODE553 Invalid address" -R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3 -R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "_CODE553 Colon illegal in host name part" -R<> $* $1 -R$* < @ . $* > $* $#error $@ 5.1.2 $: "_CODE553 Invalid host name" -R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "_CODE553 Invalid host name" -dnl no a@b@ -R$* < @ $* @ > $* $#error $@ 5.1.2 $: "_CODE553 Invalid route address" -dnl no a@b@c -R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "_CODE553 Invalid route address" -dnl comma only allowed before @; this check is not complete -R$* , $~O $* $#error $@ 5.1.3 $: "_CODE553 Invalid route address" - -ifdef(`_STRICT_RFC821_', `# more RFC 821 checks -R$* . < @ $* > $* $#error $@ 5.1.2 $: "_CODE553 Local part must not end with a dot" -R. $* < @ $* > $* $#error $@ 5.1.2 $: "_CODE553 Local part must not begin with a dot" -dnl', `dnl') - -# now delete the local info -- note $=O to find characters that cause forwarding -R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user -R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ... -R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here -R< @ $+ > $#error $@ 5.1.3 $: "_CODE553 User address required" -R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ... -R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo" -R< @ *LOCAL* > $#error $@ 5.1.3 $: "_CODE553 User address required" -R$* $=O $* < @ *LOCAL* > - $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ... -R$* < @ *LOCAL* > $: $1 - -# -# Parse1 -- the bottom half of ruleset 0. -# - -SParse1 -ifdef(`_LDAP_ROUTING_', `dnl -# handle LDAP routing for hosts in $={LDAPRoute} -R$+ < @ $={LDAPRoute} . > $: $>LDAPExpand <$1 < @ $2 . >> <$1 @ $2> <> -R$+ < @ $={LDAPRouteEquiv} . > $: $>LDAPExpand <$1 < @ $2 . >> <$1 @ $M> <>', -`dnl') - -ifdef(`_MAILER_smtp_', -`# handle numeric address spec -dnl there is no check whether this is really an IP number -R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec -R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path -R$* < @ [ $+ ] : > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send -R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer -R$* < @ [ $+ ] : $+ > $* $#_SMTP_ $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer', - `dnl') - -ifdef(`_VIRTUSER_TABLE_', `dnl -# handle virtual users -ifdef(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_',`dnl -dnl this is not a documented option -dnl it stops looping in virtusertable mapping if input and output -dnl are identical, i.e., if address A is mapped to A. -dnl it does not deal with multi-level recursion -# handle full domains in RHS of virtusertable -R$+ < @ $+ > $: $(macro {RecipientAddress} $) $1 < @ $2 > -R$+ < @ $+ > $: <?> $1 < @ $2 > $| $>final $1 < @ $2 > -R<?> $+ $| $+ $: $1 $(macro {RecipientAddress} $@ $2 $) -R<?> $+ $| $* $: $1', -`dnl') -R$+ $: <!> $1 Mark for lookup -dnl input: <!> local<@domain> -ifdef(`_VIRTUSER_ENTIRE_DOMAIN_', -`R<!> $+ < @ $* $={VirtHost} . > $: < $(virtuser $1 @ $2 $3 $@ $1 $: @ $) > $1 < @ $2 $3 . >', -`R<!> $+ < @ $={VirtHost} . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >') -dnl input: <result-of-lookup | @> local<@domain> | <!> local<@domain> -R<!> $+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . > -dnl if <@> local<@domain>: no match but try lookup -dnl user+detail: try user++@domain if detail not empty -R<@> $+ + $+ < @ $* . > - $: < $(virtuser $1 + + @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . > -dnl user+detail: try user+*@domain -R<@> $+ + $* < @ $* . > - $: < $(virtuser $1 + * @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . > -dnl user+detail: try user@domain -R<@> $+ + $* < @ $* . > - $: < $(virtuser $1 @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . > -dnl try default entry: @domain -dnl ++@domain -R<@> $+ + $+ < @ $+ . > $: < $(virtuser + + @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . > -dnl +*@domain -R<@> $+ + $* < @ $+ . > $: < $(virtuser + * @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . > -dnl @domain if +detail exists -dnl if no match, change marker to prevent a second @domain lookup -R<@> $+ + $* < @ $+ . > $: < $(virtuser @ $3 $@ $1 $@ $2 $@ +$2 $: ! $) > $1 + $2 < @ $3 . > -dnl without +detail -R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . > -dnl no match -R<@> $+ $: $1 -dnl remove mark -R<!> $+ $: $1 -R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 -R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2 -ifdef(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_',`dnl -# check virtuser input address against output address, if same, skip recursion -R< $+ > $+ < @ $+ > $: < $1 > $2 < @ $3 > $| $1 -# it is the same: stop now -R< $+ > $+ < @ $+ > $| $&{RecipientAddress} $: $>ParseLocal $>Parse0 $>canonify $1 -R< $+ > $+ < @ $+ > $| $* $: < $1 > $2 < @ $3 > -dnl', `dnl') -dnl this is not a documented option -dnl it performs no looping at all for virtusertable -ifdef(`_NO_VIRTUSER_RECURSION_', -`R< $+ > $+ < @ $+ > $: $>ParseLocal $>Parse0 $>canonify $1', -`R< $+ > $+ < @ $+ > $: $>Recurse $1') -dnl', `dnl') - -# short circuit local delivery so forwarded email works -ifdef(`_MAILER_usenet_', `dnl -R$+ . USENET < @ $=w . > $#usenet $@ usenet $: $1 handle usenet specially', `dnl') - - -ifdef(`_STICKY_LOCAL_DOMAIN_', -`R$+ < @ $=w . > $: < $H > $1 < @ $2 . > first try hub -R< $+ > $+ < $+ > $>MailerToTriple < $1 > $2 < $3 > yep .... -dnl $H empty (but @$=w.) -R< > $+ + $* < $+ > $#_LOCAL_ $: $1 + $2 plussed name? -R< > $+ < $+ > $#_LOCAL_ $: @ $1 nope, local address', -`R$=L < @ $=w . > $#_LOCAL_ $: @ $1 special local names -R$+ < @ $=w . > $#_LOCAL_ $: $1 regular local name') - -ifdef(`_MAILER_TABLE_', `dnl -# not local -- try mailer table lookup -R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name -R< $+ . > $* $: < $1 > $2 strip trailing dot -R< $+ > $* $: < $(mailertable $1 $) > $2 lookup -dnl it is $~[ instead of $- to avoid matches on IPv6 addresses -R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 check -- resolved? -R< $+ > $* $: $>Mailertable <$1> $2 try domain', -`dnl') -undivert(4)dnl UUCP rules from `MAILER(uucp)' - -ifdef(`_NO_UUCP_', `dnl', -`# resolve remotely connected UUCP links (if any) -ifdef(`_CLASS_V_', -`R$* < @ $=V . UUCP . > $* $: $>MailerToTriple < $V > $1 <@$2.UUCP.> $3', - `dnl') -ifdef(`_CLASS_W_', -`R$* < @ $=W . UUCP . > $* $: $>MailerToTriple < $W > $1 <@$2.UUCP.> $3', - `dnl') -ifdef(`_CLASS_X_', -`R$* < @ $=X . UUCP . > $* $: $>MailerToTriple < $X > $1 <@$2.UUCP.> $3', - `dnl')') - -# resolve fake top level domains by forwarding to other hosts -ifdef(`BITNET_RELAY', -`R$*<@$+.BITNET.>$* $: $>MailerToTriple < $B > $1 <@$2.BITNET.> $3 user@host.BITNET', - `dnl') -ifdef(`DECNET_RELAY', -`R$*<@$+.DECNET.>$* $: $>MailerToTriple < $C > $1 <@$2.DECNET.> $3 user@host.DECNET', - `dnl') -ifdef(`_MAILER_pop_', -`R$+ < @ POP. > $#pop $: $1 user@POP', - `dnl') -ifdef(`_MAILER_fax_', -`R$+ < @ $+ .FAX. > $#fax $@ $2 $: $1 user@host.FAX', -`ifdef(`FAX_RELAY', -`R$*<@$+.FAX.>$* $: $>MailerToTriple < $F > $1 <@$2.FAX.> $3 user@host.FAX', - `dnl')') - -ifdef(`UUCP_RELAY', -`# forward non-local UUCP traffic to our UUCP relay -R$*<@$*.UUCP.>$* $: $>MailerToTriple < $Y > $1 <@$2.UUCP.> $3 uucp mail', -`ifdef(`_MAILER_uucp_', -`# forward other UUCP traffic straight to UUCP -R$* < @ $+ .UUCP. > $* $#_UUCP_ $@ $2 $: $1 < @ $2 .UUCP. > $3 user@host.UUCP', - `dnl')') -ifdef(`_MAILER_usenet_', ` -# addresses sent to net.group.USENET will get forwarded to a newsgroup -R$+ . USENET $#usenet $@ usenet $: $1', - `dnl') - -ifdef(`_LOCAL_RULES_', -`# figure out what should stay in our local mail system -undivert(1)', `dnl') - -# pass names that still have a host to a smarthost (if defined) -R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name - -# deal with other remote names -ifdef(`_MAILER_smtp_', -`R$* < @$* > $* $#_SMTP_ $@ $2 $: $1 < @ $2 > $3 user@host.domain', -`R$* < @$* > $* $#error $@ 5.1.2 $: "_CODE553 Unrecognized host name " $2') - -# handle locally delivered names -R$=L $#_LOCAL_ $: @ $1 special local names -R$+ $#_LOCAL_ $: $1 regular local names - -########################################################################### -### Ruleset 5 -- special rewriting after aliases have been expanded ### -########################################################################### - -SLocal_localaddr -Slocaladdr=5 -R$+ $: $1 $| $>"Local_localaddr" $1 -R$+ $| $#ok $@ $1 no change -R$+ $| $#$* $#$2 -R$+ $| $* $: $1 - -ifdef(`_PRESERVE_LUSER_HOST_', `dnl -# Preserve rcpt_host in {Host} -R$+ $: $1 $| $&h $| $&{Host} check h and {Host} -R$+ $| $| $: $(macro {Host} $@ $) $1 no h or {Host} -R$+ $| $| $+ $: $1 h not set, {Host} set -R$+ $| +$* $| $* $: $1 h is +detail, {Host} set -R$+ $| $* @ $+ $| $* $: $(macro {Host} $@ @$3 $) $1 set {Host} to host in h -R$+ $| $+ $| $* $: $(macro {Host} $@ @$2 $) $1 set {Host} to h -')dnl - -ifdef(`_FFR_5_', `dnl -# Preserve host in a macro -R$+ $: $(macro {LocalAddrHost} $) $1 -R$+ @ $+ $: $(macro {LocalAddrHost} $@ @ $2 $) $1') - -ifdef(`_PRESERVE_LOCAL_PLUS_DETAIL_', `', `dnl -# deal with plussed users so aliases work nicely -R$+ + * $#_LOCAL_ $@ $&h $: $1`'ifdef(`_FFR_5_', ` $&{LocalAddrHost}') -R$+ + $* $#_LOCAL_ $@ + $2 $: $1 + *`'ifdef(`_FFR_5_', ` $&{LocalAddrHost}') -') -# prepend an empty "forward host" on the front -R$+ $: <> $1 - -ifdef(`LUSER_RELAY', `dnl -# send unrecognized local users to a relay host -ifdef(`_PRESERVE_LOCAL_PLUS_DETAIL_', `dnl -R< > $+ + $* $: < ? $L > <+ $2> $(user $1 $) look up user+ -R< > $+ $: < ? $L > < > $(user $1 $) look up user -R< ? $* > < $* > $+ <> $: < > $3 $2 found; strip $L -R< ? $* > < $* > $+ $: < $1 > $3 $2 not found', ` -R< > $+ $: < $L > $(user $1 $) look up user -R< $* > $+ <> $: < > $2 found; strip $L') -ifdef(`_PRESERVE_LUSER_HOST_', `dnl -R< $+ > $+ $: < $1 > $2 $&{Host}') -dnl') - -ifdef(`MAIL_HUB', `dnl -R< > $+ $: < $H > $1 try hub', `dnl') -ifdef(`LOCAL_RELAY', `dnl -R< > $+ $: < $R > $1 try relay', `dnl') -ifdef(`_PRESERVE_LOCAL_PLUS_DETAIL_', `dnl -R< > $+ $@ $1', `dnl -R< > $+ $: < > < $1 <> $&h > nope, restore +detail -ifdef(`_PRESERVE_LUSER_HOST_', `dnl -R< > < $+ @ $+ <> + $* > $: < > < $1 + $3 @ $2 > check whether +detail') -R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail -R< > < $+ <> $* > $: < > < $1 > else discard -R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part -R< > < $+ > + $* $#_LOCAL_ $@ $2 $: @ $1`'ifdef(`_FFR_5_', ` $&{LocalAddrHost}') strip the extra + -R< > < $+ > $@ $1 no +detail -R$+ $: $1 <> $&h add +detail back in -ifdef(`_PRESERVE_LUSER_HOST_', `dnl -R$+ @ $+ <> + $* $: $1 + $3 @ $2 check whether +detail') -R$+ <> + $* $: $1 + $2 check whether +detail -R$+ <> $* $: $1 else discard') -R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension -R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension -ifdef(`_PRESERVE_LUSER_HOST_', `dnl -dnl it is $~[ instead of $- to avoid matches on IPv6 addresses -R< $~[ : $+ > $+ @ $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $4 >') -R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 > -ifdef(`_PRESERVE_LUSER_HOST_', `dnl -R< $+ > $+ @ $+ $@ $>MailerToTriple < $1 > $2 < @ $3 >') -R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 > - -ifdef(`_MAILER_TABLE_', `dnl -ifdef(`_LDAP_ROUTING_', `dnl -################################################################### -### Ruleset LDAPMailertable -- mailertable lookup for LDAP ### -dnl input: <Domain> FullAddress -################################################################### - -SLDAPMailertable -R< $+ > $* $: < $(mailertable $1 $) > $2 lookup -R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 check resolved? -R< $+ > $* $: < $1 > $>Mailertable <$1> $2 try domain -R< $+ > $#$* $#$2 found -R< $+ > $* $#_RELAY_ $@ $1 $: $2 not found, direct relay', -`dnl') - -################################################################### -### Ruleset 90 -- try domain part of mailertable entry ### -dnl input: LeftPartOfDomain <RightPartOfDomain> FullAddress -################################################################### - -SMailertable=90 -dnl shift and check -dnl %2 is not documented in cf/README -R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4 -dnl it is $~[ instead of $- to avoid matches on IPv6 addresses -R$* <$~[ : $* > $* $>MailerToTriple < $2 : $3 > $4 check -- resolved? -R$* < . $+ > $* $@ $>Mailertable $1 . <$2> $3 no -- strip & try again -dnl is $2 always empty? -R$* < $* > $* $: < $(mailertable . $@ $1$2 $) > $3 try "." -R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 "." found? -dnl return full address -R< $* > $* $@ $2 no mailertable match', -`dnl') - -################################################################### -### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ### -dnl input: in general: <[mailer:]host> lp<@domain>rest -dnl <> address -> address -dnl <error:d.s.n:text> -> error -dnl <error:keyword:text> -> error -dnl <error:text> -> error -dnl <mailer:user@host> lp<@domain>rest -> mailer host user -dnl <mailer:host> address -> mailer host address -dnl <localdomain> address -> address -dnl <host> address -> relay host address -################################################################### - -SMailerToTriple=95 -R< > $* $@ $1 strip off null relay -R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 -R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2 -R< error : $+ > $* $#error $: $1 -R< local : $* > $* $>CanonLocal < $1 > $2 -dnl it is $~[ instead of $- to avoid matches on IPv6 addresses -R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user -R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer -R< $=w > $* $@ $2 delete local host -R< $+ > $* $#_RELAY_ $@ $1 $: $2 use unqualified mailer - -################################################################### -### Ruleset CanonLocal -- canonify local: syntax ### -dnl input: <user> address -dnl <x> <@host> : rest -> Recurse rest -dnl <x> p1 $=O p2 <@host> -> Recurse p1 $=O p2 -dnl <> user <@host> rest -> local user@host user -dnl <> user -> local user user -dnl <user@host> lp <@domain> rest -> <user> lp <@host> [cont] -dnl <user> lp <@host> rest -> local lp@host user -dnl <user> lp -> local lp user -################################################################### - -SCanonLocal -# strip local host from routed addresses -R< $* > < @ $+ > : $+ $@ $>Recurse $3 -R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4 - -# strip trailing dot from any host name that may appear -R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 > - -# handle local: syntax -- use old user, either with or without host -R< > $* < @ $* > $* $#_LOCAL_ $@ $1@$2 $: $1 -R< > $+ $#_LOCAL_ $@ $1 $: $1 - -# handle local:user@host syntax -- ignore host part -R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 > - -# handle local:user syntax -R< $+ > $* <@ $* > $* $#_LOCAL_ $@ $2@$3 $: $1 -R< $+ > $* $#_LOCAL_ $@ $2 $: $1 - -################################################################### -### Ruleset 93 -- convert header names to masqueraded form ### -################################################################### - -SMasqHdr=93 - -ifdef(`_GENERICS_TABLE_', `dnl -# handle generics database -ifdef(`_GENERICS_ENTIRE_DOMAIN_', -dnl if generics should be applied add a @ as mark -`R$+ < @ $* $=G . > $: < $1@$2$3 > $1 < @ $2$3 . > @ mark', -`R$+ < @ $=G . > $: < $1@$2 > $1 < @ $2 . > @ mark') -R$+ < @ *LOCAL* > $: < $1@$j > $1 < @ *LOCAL* > @ mark -dnl workspace: either user<@domain> or <user@domain> user <@domain> @ -dnl ignore the first case for now -dnl if it has the mark lookup full address -dnl broken: %1 is full address not just detail -R< $+ > $+ < $* > @ $: < $(generics $1 $: @ $1 $) > $2 < $3 > -dnl workspace: ... or <match|@user@domain> user <@domain> -dnl no match, try user+detail@domain -R<@$+ + $* @ $+> $+ < @ $+ > - $: < $(generics $1+*@$3 $@ $2 $:@$1 + $2@$3 $) > $4 < @ $5 > -R<@$+ + $* @ $+> $+ < @ $+ > - $: < $(generics $1@$3 $: $) > $4 < @ $5 > -dnl no match, remove mark -R<@$+ > $+ < @ $+ > $: < > $2 < @ $3 > -dnl no match, try @domain for exceptions -R< > $+ < @ $+ . > $: < $(generics @$2 $@ $1 $: $) > $1 < @ $2 . > -dnl workspace: ... or <match> user <@domain> -dnl no match, try local part -R< > $+ < @ $+ > $: < $(generics $1 $: $) > $1 < @ $2 > -R< > $+ + $* < @ $+ > $: < $(generics $1+* $@ $2 $: $) > $1 + $2 < @ $3 > -R< > $+ + $* < @ $+ > $: < $(generics $1 $: $) > $1 + $2 < @ $3 > -R< $* @ $* > $* < $* > $@ $>canonify $1 @ $2 found qualified -R< $+ > $* < $* > $: $>canonify $1 @ *LOCAL* found unqualified -R< > $* $: $1 not found', -`dnl') - -# do not masquerade anything in class N -R$* < @ $* $=N . > $@ $1 < @ $2 $3 . > - -ifdef(`MASQUERADE_NAME', `dnl -# special case the users that should be exposed -R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed -ifdef(`_MASQUERADE_ENTIRE_DOMAIN_', -`R$=E < @ $* $=M . > $@ $1 < @ $2 $3 . >', -`R$=E < @ $=M . > $@ $1 < @ $2 . >') -ifdef(`_LIMITED_MASQUERADE_', `dnl', -`R$=E < @ $=w . > $@ $1 < @ $2 . >') - -# handle domain-specific masquerading -ifdef(`_MASQUERADE_ENTIRE_DOMAIN_', -`R$* < @ $* $=M . > $* $: $1 < @ $2 $3 . @ $M > $4 convert masqueraded doms', -`R$* < @ $=M . > $* $: $1 < @ $2 . @ $M > $3 convert masqueraded doms') -ifdef(`_LIMITED_MASQUERADE_', `dnl', -`R$* < @ $=w . > $* $: $1 < @ $2 . @ $M > $3') -R$* < @ *LOCAL* > $* $: $1 < @ $j . @ $M > $2 -R$* < @ $+ @ > $* $: $1 < @ $2 > $3 $M is null -R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null -dnl', `dnl no masquerading -dnl just fix *LOCAL* leftovers -R$* < @ *LOCAL* > $@ $1 < @ $j . >') - -################################################################### -### Ruleset 94 -- convert envelope names to masqueraded form ### -################################################################### - -SMasqEnv=94 -ifdef(`_MASQUERADE_ENVELOPE_', -`R$+ $@ $>MasqHdr $1', -`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2') - -################################################################### -### Ruleset 98 -- local part of ruleset zero (can be null) ### -################################################################### - -SParseLocal=98 -undivert(3)dnl LOCAL_RULE_0 - -ifdef(`_LDAP_ROUTING_', `dnl -###################################################################### -### LDAPExpand: Expand address using LDAP routing -### -### Parameters: -### <$1> -- parsed address (user < @ domain . >) (pass through) -### <$2> -- RFC822 address (user @ domain) (used for lookup) -### <$3> -- +detail information -### -### Returns: -### Mailer triplet ($#mailer $@ host $: address) -### Parsed address (user < @ domain . >) -###################################################################### - -# SMTP operation modes -C{SMTPOpModes} s d D - -SLDAPExpand -# do the LDAP lookups -R<$+><$+><$*> $: <$(ldapmra $2 $: $)> <$(ldapmh $2 $: $)> <$1> <$2> <$3> - -# look for temporary failures and... -R<$* <TMPF>> <$*> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3 -R<$*> <$* <TMPF>> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3 -ifelse(_LDAP_ROUTE_MAPTEMP_, `_TEMPFAIL_', `dnl -# ... temp fail RCPT SMTP commands -R$={SMTPOpModes} $| TMPF <e r> $| $+ $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."') -# ... return original address for MTA to queue up -R$* $| TMPF <$*> $| $+ $@ $3 - -# if mailRoutingAddress and local or non-existant mailHost, -# return the new mailRoutingAddress -ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl -R<$+@$+> <$=w> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1 $6 @ $2 -R<$+@$+> <> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1 $5 @ $2') -R<$+> <$=w> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1 -R<$+> <> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1 - - -# if mailRoutingAddress and non-local mailHost, -# relay to mailHost with new mailRoutingAddress -ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl -ifdef(`_MAILER_TABLE_', `dnl -# check mailertable for host, relay from there -R<$+@$+> <$+> <$+> <$+> <$*> $>LDAPMailertable <$3> $>canonify $1 $6 @ $2', -`R<$+@$+> <$+> <$+> <$+> <$*> $#_RELAY_ $@ $3 $: $>canonify $1 $6 @ $2')') -ifdef(`_MAILER_TABLE_', `dnl -# check mailertable for host, relay from there -R<$+> <$+> <$+> <$+> <$*> $>LDAPMailertable <$2> $>canonify $1', -`R<$+> <$+> <$+> <$+> <$*> $#_RELAY_ $@ $2 $: $>canonify $1') - -# if no mailRoutingAddress and local mailHost, -# return original address -R<> <$=w> <$+> <$+> <$*> $@ $2 - - -# if no mailRoutingAddress and non-local mailHost, -# relay to mailHost with original address -ifdef(`_MAILER_TABLE_', `dnl -# check mailertable for host, relay from there -R<> <$+> <$+> <$+> <$*> $>LDAPMailertable <$1> $2', -`R<> <$+> <$+> <$+> <$*> $#_RELAY_ $@ $1 $: $2') - -ifdef(`_LDAP_ROUTE_DETAIL_', -`# if no mailRoutingAddress and no mailHost, -# try without +detail -R<> <> <$+> <$+ + $* @ $+> <> $@ $>LDAPExpand <$1> <$2 @ $4> <+$3>')dnl - -ifdef(`_LDAP_ROUTE_NODOMAIN_', `dnl', ` -# if still no mailRoutingAddress and no mailHost, -# try @domain -ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl -R<> <> <$+> <$+ + $* @ $+> <> $@ $>LDAPExpand <$1> <@ $4> <+$3>') -R<> <> <$+> <$+ @ $+> <$*> $@ $>LDAPExpand <$1> <@ $3> <$4>') - -# if no mailRoutingAddress and no mailHost and this was a domain attempt, -ifelse(_LDAP_ROUTING_, `_MUST_EXIST_', `dnl -# user does not exist -R<> <> <$+> <@ $+> <$*> $: <?> < $&{addr_type} > < $1 > -# only give error for envelope recipient -R<?> <e r> <$+> $#error $@ nouser $: "550 User unknown" -ifdef(`_LDAP_SENDER_MUST_EXIST_', `dnl -# and the sender too -R<?> <e s> <$+> $#error $@ nouser $: "550 User unknown"') -R<?> <$*> <$+> $@ $2', -`dnl -# return the original address -R<> <> <$+> <@ $+> <$*> $@ $1')', -`dnl') - -ifelse(substr(confDELIVERY_MODE,0,1), `d', `errprint(`WARNING: Antispam rules not available in deferred delivery mode. -')') -ifdef(`_ACCESS_TABLE_', `dnl', `divert(-1)') -###################################################################### -### D: LookUpDomain -- search for domain in access database -### -### Parameters: -### <$1> -- key (domain name) -### <$2> -- default (what to return if not found in db) -dnl must not be empty -### <$3> -- mark (must be <(!|+) single-token>) -### ! does lookup only with tag -### + does lookup with and without tag -### <$4> -- passthru (additional data passed unchanged through) -dnl returns: <default> <passthru> -dnl <result> <passthru> -###################################################################### - -SD -dnl workspace <key> <default> <passthru> <mark> -dnl lookup with tag (in front, no delimiter here) -dnl 2 3 4 5 -R<$*> <$+> <$- $-> <$*> $: < $(access $4`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3 $4> <$5> -dnl workspace <result-of-lookup|?> <key> <default> <passthru> <mark> -dnl lookup without tag? -dnl 1 2 3 4 -R<?> <$+> <$+> <+ $-> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <+ $3> <$4> -ifdef(`_LOOKUPDOTDOMAIN_', `dnl omit first component: lookup .rest -dnl XXX apply this also to IP addresses? -dnl currently it works the wrong way round for [1.2.3.4] -dnl 1 2 3 4 5 6 -R<?> <$+.$+> <$+> <$- $-> <$*> $: < $(access $5`'_TAG_DELIM_`'.$2 $: ? $) > <$1.$2> <$3> <$4 $5> <$6> -dnl 1 2 3 4 5 -R<?> <$+.$+> <$+> <+ $-> <$*> $: < $(access .$2 $: ? $) > <$1.$2> <$3> <+ $4> <$5>', `dnl') -ifdef(`_ACCESS_SKIP_', `dnl -dnl found SKIP: return <default> and <passthru> -dnl 1 2 3 4 5 -R<SKIP> <$+> <$+> <$- $-> <$*> $@ <$2> <$5>', `dnl') -dnl not found: IPv4 net (no check is done whether it is an IP number!) -dnl 1 2 3 4 5 6 -R<?> <[$+.$-]> <$+> <$- $-> <$*> $@ $>D <[$1]> <$3> <$4 $5> <$6> -ifdef(`NO_NETINET6', `dnl', -`dnl not found: IPv6 net -dnl (could be merged with previous rule if we have a class containing .:) -dnl 1 2 3 4 5 6 -R<?> <[$+::$-]> <$+> <$- $-> <$*> $: $>D <[$1]> <$3> <$4 $5> <$6> -R<?> <[$+:$-]> <$+> <$- $-> <$*> $: $>D <[$1]> <$3> <$4 $5> <$6>') -dnl not found, but subdomain: try again -dnl 1 2 3 4 5 6 -R<?> <$+.$+> <$+> <$- $-> <$*> $@ $>D <$2> <$3> <$4 $5> <$6> -ifdef(`_FFR_LOOKUPTAG_', `dnl lookup Tag: -dnl 1 2 3 4 -R<?> <$+> <$+> <! $-> <$*> $: < $(access $3`'_TAG_DELIM_ $: ? $) > <$1> <$2> <! $3> <$4>', `dnl') -dnl not found, no subdomain: return <default> and <passthru> -dnl 1 2 3 4 5 -R<?> <$+> <$+> <$- $-> <$*> $@ <$2> <$5> -ifdef(`_ATMPF_', `dnl tempfail? -dnl 2 3 4 5 6 -R<$* _ATMPF_> <$+> <$+> <$- $-> <$*> $@ <_ATMPF_> <$6>', `dnl') -dnl return <result of lookup> and <passthru> -dnl 2 3 4 5 6 -R<$*> <$+> <$+> <$- $-> <$*> $@ <$1> <$6> - -###################################################################### -### A: LookUpAddress -- search for host address in access database -### -### Parameters: -### <$1> -- key (dot quadded host address) -### <$2> -- default (what to return if not found in db) -dnl must not be empty -### <$3> -- mark (must be <(!|+) single-token>) -### ! does lookup only with tag -### + does lookup with and without tag -### <$4> -- passthru (additional data passed through) -dnl returns: <default> <passthru> -dnl <result> <passthru> -###################################################################### - -SA -dnl lookup with tag -dnl 2 3 4 5 -R<$+> <$+> <$- $-> <$*> $: < $(access $4`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3 $4> <$5> -dnl lookup without tag -dnl 1 2 3 4 -R<?> <$+> <$+> <+ $-> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <+ $3> <$4> -dnl workspace <result-of-lookup|?> <key> <default> <mark> <passthru> -ifdef(`_ACCESS_SKIP_', `dnl -dnl found SKIP: return <default> and <passthru> -dnl 1 2 3 4 5 -R<SKIP> <$+> <$+> <$- $-> <$*> $@ <$2> <$5>', `dnl') -ifdef(`NO_NETINET6', `dnl', -`dnl no match; IPv6: remove last part -dnl 1 2 3 4 5 6 -R<?> <$+::$-> <$+> <$- $-> <$*> $@ $>A <$1> <$3> <$4 $5> <$6> -R<?> <$+:$-> <$+> <$- $-> <$*> $@ $>A <$1> <$3> <$4 $5> <$6>') -dnl no match; IPv4: remove last part -dnl 1 2 3 4 5 6 -R<?> <$+.$-> <$+> <$- $-> <$*> $@ $>A <$1> <$3> <$4 $5> <$6> -dnl no match: return default -dnl 1 2 3 4 5 -R<?> <$+> <$+> <$- $-> <$*> $@ <$2> <$5> -ifdef(`_ATMPF_', `dnl tempfail? -dnl 2 3 4 5 6 -R<$* _ATMPF_> <$+> <$+> <$- $-> <$*> $@ <_ATMPF_> <$6>', `dnl') -dnl match: return result -dnl 2 3 4 5 6 -R<$*> <$+> <$+> <$- $-> <$*> $@ <$1> <$6> -dnl endif _ACCESS_TABLE_ -divert(0) -###################################################################### -### CanonAddr -- Convert an address into a standard form for -### relay checking. Route address syntax is -### crudely converted into a %-hack address. -### -### Parameters: -### $1 -- full recipient address -### -### Returns: -### parsed address, not in source route form -dnl user%host%host<@domain> -dnl host!user<@domain> -###################################################################### - -SCanonAddr -R$* $: $>Parse0 $>canonify $1 make domain canonical -ifdef(`_USE_DEPRECATED_ROUTE_ADDR_',`dnl -R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route -R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack. -R$* < @ $+ > : $* $3 $1 < @ $2 > -dnl') - -###################################################################### -### ParseRecipient -- Strip off hosts in $=R as well as possibly -### $* $=m or the access database. -### Check user portion for host separators. -### -### Parameters: -### $1 -- full recipient address -### -### Returns: -### parsed, non-local-relaying address -###################################################################### - -SParseRecipient -dnl mark and canonify address -R$* $: <?> $>CanonAddr $1 -dnl workspace: <?> localpart<@domain[.]> -R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots -dnl workspace: <?> localpart<@domain> -R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part - -# if no $=O character, no host in the user portion, we are done -R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4> -dnl no $=O in localpart: return -R<?> $* $@ $1 - -dnl workspace: <NO> localpart<@domain>, where localpart contains $=O -dnl mark everything which has an "authorized" domain with <RELAY> -ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl -# if we relay, check username portion for user%host so host can be checked also -R<NO> $* < @ $* $=m > $: <RELAY> $1 < @ $2 $3 >', `dnl') -dnl workspace: <(NO|RELAY)> localpart<@domain>, where localpart contains $=O -dnl if mark is <NO> then change it to <RELAY> if domain is "authorized" - -dnl what if access map returns something else than RELAY? -dnl we are only interested in RELAY entries... -dnl other To: entries: blacklist recipient; generic entries? -dnl if it is an error we probably do not want to relay anyway -ifdef(`_RELAY_HOSTS_ONLY_', -`R<NO> $* < @ $=R > $: <RELAY> $1 < @ $2 > -ifdef(`_ACCESS_TABLE_', `dnl -R<NO> $* < @ $+ > $: <$(access To:$2 $: NO $)> $1 < @ $2 > -R<NO> $* < @ $+ > $: <$(access $2 $: NO $)> $1 < @ $2 >',`dnl')', -`R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 > -ifdef(`_ACCESS_TABLE_', `dnl -R<NO> $* < @ $+ > $: $>D <$2> <NO> <+ To> <$1 < @ $2 >> -R<$+> <$+> $: <$1> $2',`dnl')') - - -ifdef(`_RELAY_MX_SERVED_', `dnl -dnl do "we" ($=w) act as backup MX server for the destination domain? -R<NO> $* < @ $+ > $: <MX> < : $(mxserved $2 $) : > < $1 < @$2 > > -R<MX> < : $* <TEMP> : > $* $#TEMP $@ 4.4.0 $: "450 Can not check MX records for recipient host " $1 -dnl yes: mark it as <RELAY> -R<MX> < $* : $=w. : $* > < $+ > $: <RELAY> $4 -dnl no: put old <NO> mark back -R<MX> < : $* : > < $+ > $: <NO> $2', `dnl') - -dnl do we relay to this recipient domain? -R<RELAY> $* < @ $* > $@ $>ParseRecipient $1 -dnl something else -R<$+> $* $@ $2 - - -###################################################################### -### check_relay -- check hostname/address on SMTP startup -###################################################################### - -ifdef(`_CONTROL_IMMEDIATE_',`dnl -Scheck_relay -ifdef(`_RATE_CONTROL_IMMEDIATE_',`dnl -dnl workspace: ignored... -R$* $: $>"RateControl" dummy', `dnl') -ifdef(`_CONN_CONTROL_IMMEDIATE_',`dnl -dnl workspace: ignored... -R$* $: $>"ConnControl" dummy', `dnl') -dnl') - -SLocal_check_relay -Scheck`'_U_`'relay -ifdef(`_USE_CLIENT_PTR_',`dnl -R$* $| $* $: $&{client_ptr} $| $2', `dnl') -R$* $: $1 $| $>"Local_check_relay" $1 -R$* $| $* $| $#$* $#$3 -R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2 - -SBasic_check_relay -# check for deferred delivery mode -R$* $: < $&{deliveryMode} > $1 -R< d > $* $@ deferred -R< $* > $* $: $2 - -ifdef(`_ACCESS_TABLE_', `dnl -dnl workspace: {client_name} $| {client_addr} -R$+ $| $+ $: $>D < $1 > <?> <+ Connect> < $2 > -dnl workspace: <result-of-lookup> <{client_addr}> -dnl OR $| $+ if client_name is empty -R $| $+ $: $>A < $1 > <?> <+ Connect> <> empty client_name -dnl workspace: <result-of-lookup> <{client_addr}> -R<?> <$+> $: $>A < $1 > <?> <+ Connect> <> no: another lookup -dnl workspace: <result-of-lookup> (<>|<{client_addr}>) -R<?> <$*> $: OK found nothing -dnl workspace: <result-of-lookup> (<>|<{client_addr}>) | OK -R<$={Accept}> <$*> $@ $1 return value of lookup -R<REJECT> <$*> $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: "550 Access denied"') -R<DISCARD> <$*> $#discard $: discard -R<QUARANTINE:$+> <$*> $#error $@ quarantine $: $1 -dnl error tag -R<ERROR:$-.$-.$-:$+> <$*> $#error $@ $1.$2.$3 $: $4 -R<ERROR:$+> <$*> $#error $: $1 -ifdef(`_ATMPF_', `R<$* _ATMPF_> <$*> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -dnl generic error from access map -R<$+> <$*> $#error $: $1', `dnl') - -ifdef(`_RBL_',`dnl -# DNS based IP address spam list -dnl workspace: ignored... -R$* $: $&{client_addr} -R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $) -R<?>OK $: OKSOFAR -R<?>$+ $#error $@ 5.7.1 $: "550 Rejected: " $&{client_addr} " listed at _RBL_"', -`dnl') -ifdef(`_RATE_CONTROL_',`dnl -ifdef(`_RATE_CONTROL_IMMEDIATE_',`', `dnl -dnl workspace: ignored... -R$* $: $>"RateControl" dummy')', `dnl') -ifdef(`_CONN_CONTROL_',`dnl -ifdef(`_CONN_CONTROL_IMMEDIATE_',`',`dnl -dnl workspace: ignored... -R$* $: $>"ConnControl" dummy')', `dnl') -undivert(8) - -###################################################################### -### check_mail -- check SMTP ``MAIL FROM:'' command argument -###################################################################### - -SLocal_check_mail -Scheck`'_U_`'mail -R$* $: $1 $| $>"Local_check_mail" $1 -R$* $| $#$* $#$2 -R$* $| $* $@ $>"Basic_check_mail" $1 - -SBasic_check_mail -# check for deferred delivery mode -R$* $: < $&{deliveryMode} > $1 -R< d > $* $@ deferred -R< $* > $* $: $2 - -# authenticated? -dnl done first: we can require authentication for every mail transaction -dnl workspace: address as given by MAIL FROM: (sender) -R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL -R$* $| $#$+ $#$2 -dnl undo damage: remove result of tls_client call -R$* $| $* $: $1 - -dnl workspace: address as given by MAIL FROM: -R<> $@ <OK> we MUST accept <> (RFC 1123) -ifdef(`_ACCEPT_UNQUALIFIED_SENDERS_',`dnl',`dnl -dnl do some additional checks -dnl no user@host -dnl no user@localhost (if nonlocal sender) -dnl this is a pretty simple canonification, it will not catch every case -dnl just make sure the address has <> around it (which is required by -dnl the RFC anyway, maybe we should complain if they are missing...) -dnl dirty trick: if it is user@host, just add a dot: user@host. this will -dnl not be modified by host lookups. -R$+ $: <?> $1 -R<?><$+> $: <@> <$1> -R<?>$+ $: <@> <$1> -dnl workspace: <@> <address> -dnl prepend daemon_flags -R$* $: $&{daemon_flags} $| $1 -dnl workspace: ${daemon_flags} $| <@> <address> -dnl do not allow these at all or only from local systems? -R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 > -dnl accept unqualified sender: change mark to avoid test -R$* u $* $| <@> < $* > $: <?> < $3 > -dnl workspace: ${daemon_flags} $| <@> <address> -dnl or: <? ${client_name} > <address> -dnl or: <?> <address> -dnl remove daemon_flags -R$* $| $* $: $2 -# handle case of @localhost on address -R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost > -R<@> < $* @ [127.0.0.1] > - $: < ? $&{client_name} > < $1 @ [127.0.0.1] > -R<@> < $* @ localhost.$m > - $: < ? $&{client_name} > < $1 @ localhost.$m > -ifdef(`_NO_UUCP_', `dnl', -`R<@> < $* @ localhost.UUCP > - $: < ? $&{client_name} > < $1 @ localhost.UUCP >') -dnl workspace: < ? $&{client_name} > <user@localhost|host> -dnl or: <@> <address> -dnl or: <?> <address> (thanks to u in ${daemon_flags}) -R<@> $* $: $1 no localhost as domain -dnl workspace: < ? $&{client_name} > <user@localhost|host> -dnl or: <address> -dnl or: <?> <address> (thanks to u in ${daemon_flags}) -R<? $=w> $* $: $2 local client: ok -R<? $+> <$+> $#error $@ 5.5.4 $: "_CODE553 Real domain name required for sender address" -dnl remove <?> (happens only if ${client_name} == "" or u in ${daemon_flags}) -R<?> $* $: $1') -dnl workspace: address (or <address>) -R$* $: <?> $>CanonAddr $1 canonify sender address and mark it -dnl workspace: <?> CanonicalAddress (i.e. address in canonical form localpart<@host>) -dnl there is nothing behind the <@host> so no trailing $* needed -R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots -# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) -R<?> $* < @ $* $=P > $: <_RES_OK_> $1 < @ $2 $3 > -dnl workspace <mark> CanonicalAddress where mark is ? or OK -dnl A sender address with my local host name ($j) is safe -R<?> $* < @ $j > $: <_RES_OK_> $1 < @ $j > -ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_', -`R<?> $* < @ $+ > $: <_RES_OK_> $1 < @ $2 > ... unresolvable OK', -`R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > -R<? $* <$->> $* < @ $+ > - $: <$2> $3 < @ $4 >') -dnl workspace <mark> CanonicalAddress where mark is ?, _RES_OK_, PERM, TEMP -dnl mark is ? iff the address is user (wo @domain) - -ifdef(`_ACCESS_TABLE_', `dnl -# check sender address: user@address, user@, address -dnl should we remove +ext from user? -dnl workspace: <mark> CanonicalAddress where mark is: ?, _RES_OK_, PERM, TEMP -R<$+> $+ < @ $* > $: @<$1> <$2 < @ $3 >> $| <F:$2@$3> <U:$2@> <D:$3> -R<$+> $+ $: @<$1> <$2> $| <U:$2@> -dnl workspace: @<mark> <CanonicalAddress> $| <@type:address> .... -dnl $| is used as delimiter, otherwise false matches may occur: <user<@domain>> -dnl will only return user<@domain when "reversing" the args -R@ <$+> <$*> $| <$+> $: <@> <$1> <$2> $| $>SearchList <+ From> $| <$3> <> -dnl workspace: <@><mark> <CanonicalAddress> $| <result> -R<@> <$+> <$*> $| <$*> $: <$3> <$1> <$2> reverse result -dnl workspace: <result> <mark> <CanonicalAddress> -# retransform for further use -dnl required form: -dnl <ResultOfLookup|mark> CanonicalAddress -R<?> <$+> <$*> $: <$1> $2 no match -R<$+> <$+> <$*> $: <$1> $3 relevant result, keep it', `dnl') -dnl workspace <ResultOfLookup|mark> CanonicalAddress -dnl mark is ? iff the address is user (wo @domain) - -ifdef(`_ACCEPT_UNQUALIFIED_SENDERS_',`dnl',`dnl -# handle case of no @domain on address -dnl prepend daemon_flags -R<?> $* $: $&{daemon_flags} $| <?> $1 -dnl accept unqualified sender: change mark to avoid test -R$* u $* $| <?> $* $: <_RES_OK_> $3 -dnl remove daemon_flags -R$* $| $* $: $2 -R<?> $* $: < ? $&{client_addr} > $1 -R<?> $* $@ <_RES_OK_> ...local unqualed ok -R<? $+> $* $#error $@ 5.5.4 $: "_CODE553 Domain name required for sender address " $&f - ...remote is not') -# check results -R<?> $* $: @ $1 mark address: nothing known about it -R<$={ResOk}> $* $@ <_RES_OK_> domain ok: stop -R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve" -R<PERM> $* $#error $@ 5.1.8 $: "_CODE553 Domain of sender address " $&f " does not exist" -ifdef(`_ACCESS_TABLE_', `dnl -R<$={Accept}> $* $# $1 accept from access map -R<DISCARD> $* $#discard $: discard -R<QUARANTINE:$+> $* $#error $@ quarantine $: $1 -R<REJECT> $* $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: "550 Access denied"') -dnl error tag -R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4 -R<ERROR:$+> $* $#error $: $1 -ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -dnl generic error from access map -R<$+> $* $#error $: $1 error from access db', -`dnl') - -###################################################################### -### check_rcpt -- check SMTP ``RCPT TO:'' command argument -###################################################################### - -SLocal_check_rcpt -Scheck`'_U_`'rcpt -R$* $: $1 $| $>"Local_check_rcpt" $1 -R$* $| $#$* $#$2 -R$* $| $* $@ $>"Basic_check_rcpt" $1 - -SBasic_check_rcpt -# empty address? -R<> $#error $@ nouser $: "553 User address required" -R$@ $#error $@ nouser $: "553 User address required" -# check for deferred delivery mode -R$* $: < $&{deliveryMode} > $1 -R< d > $* $@ deferred -R< $* > $* $: $2 - -ifdef(`_REQUIRE_QUAL_RCPT_', `dnl -dnl this code checks for user@host where host is not a FQHN. -dnl it is not activated. -dnl notice: code to check for a recipient without a domain name is -dnl available down below; look for the same macro. -dnl this check is done here because the name might be qualified by the -dnl canonicalization. -# require fully qualified domain part? -dnl very simple canonification: make sure the address is in < > -R$+ $: <?> $1 -R<?> <$+> $: <@> <$1> -R<?> $+ $: <@> <$1> -R<@> < postmaster > $: postmaster -R<@> < $* @ $+ . $+ > $: < $1 @ $2 . $3 > -dnl prepend daemon_flags -R<@> $* $: $&{daemon_flags} $| <@> $1 -dnl workspace: ${daemon_flags} $| <@> <address> -dnl 'r'equire qual.rcpt: ok -R$* r $* $| <@> < $+ @ $+ > $: < $3 @ $4 > -dnl do not allow these at all or only from local systems? -R$* r $* $| <@> < $* > $: < ? $&{client_name} > < $3 > -R<?> < $* > $: <$1> -R<? $=w> < $* > $: <$1> -R<? $+> <$+> $#error $@ 5.5.4 $: "553 Fully qualified domain name required" -dnl remove daemon_flags for other cases -R$* $| <@> $* $: $2', `dnl') - -dnl ################################################################## -dnl call subroutines for recipient and relay -dnl possible returns from subroutines: -dnl $#TEMP temporary failure -dnl $#error permanent failure (or temporary if from access map) -dnl $#other stop processing -dnl RELAY RELAYing allowed -dnl other otherwise -###################################################################### -R$* $: $1 $| @ $>"Rcpt_ok" $1 -dnl temporary failure? remove mark @ and remember -R$* $| @ $#TEMP $+ $: $1 $| T $2 -dnl error or ok (stop) -R$* $| @ $#$* $#$2 -ifdef(`_PROMISCUOUS_RELAY_', `divert(-1)', `dnl') -R$* $| @ RELAY $@ RELAY -dnl something else: call check sender (relay) -R$* $| @ $* $: O $| $>"Relay_ok" $1 -dnl temporary failure: call check sender (relay) -R$* $| T $+ $: T $2 $| $>"Relay_ok" $1 -dnl temporary failure? return that -R$* $| $#TEMP $+ $#error $2 -dnl error or ok (stop) -R$* $| $#$* $#$2 -R$* $| RELAY $@ RELAY -dnl something else: return previous temp failure -R T $+ $| $* $#error $1 -# anything else is bogus -R$* $#error $@ 5.7.1 $: confRELAY_MSG -divert(0) - -###################################################################### -### Rcpt_ok: is the recipient ok? -dnl input: recipient address (RCPT TO) -dnl output: see explanation at call -###################################################################### -SRcpt_ok -ifdef(`_LOOSE_RELAY_CHECK_',`dnl -R$* $: $>CanonAddr $1 -R$* < @ $* . > $1 < @ $2 > strip trailing dots', -`R$* $: $>ParseRecipient $1 strip relayable hosts') - -ifdef(`_BESTMX_IS_LOCAL_',`dnl -ifelse(_BESTMX_IS_LOCAL_, `', `dnl -# unlimited bestmx -R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3', -`dnl -# limit bestmx to $=B -R$* < @ $* $=B > $* $: $1 < @ $2 $3 @@ $(bestmx $2 $3 $) > $4') -R$* $=O $* < @ $* @@ $=w . > $* $@ $>"Rcpt_ok" $1 $2 $3 -R$* < @ $* @@ $=w . > $* $: $1 < @ $3 > $4 -R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4') - -ifdef(`_BLACKLIST_RCPT_',`dnl -ifdef(`_ACCESS_TABLE_', `dnl -# blacklist local users or any host from receiving mail -R$* $: <?> $1 -dnl user is now tagged with @ to be consistent with check_mail -dnl and to distinguish users from hosts (com would be host, com@ would be user) -R<?> $+ < @ $=w > $: <> <$1 < @ $2 >> $| <F:$1@$2> <U:$1@> <D:$2> -R<?> $+ < @ $* > $: <> <$1 < @ $2 >> $| <F:$1@$2> <D:$2> -R<?> $+ $: <> <$1> $| <U:$1@> -dnl $| is used as delimiter, otherwise false matches may occur: <user<@domain>> -dnl will only return user<@domain when "reversing" the args -R<> <$*> $| <$+> $: <@> <$1> $| $>SearchList <+ To> $| <$2> <> -R<@> <$*> $| <$*> $: <$2> <$1> reverse result -R<?> <$*> $: @ $1 mark address as no match -dnl we may have to filter here because otherwise some RHSs -dnl would be interpreted as generic error messages... -dnl error messages should be "tagged" by prefixing them with error: ! -dnl that would make a lot of things easier. -R<$={Accept}> <$*> $: @ $2 mark address as no match -ifdef(`_ACCESS_SKIP_', `dnl -R<SKIP> <$*> $: @ $1 mark address as no match', `dnl') -ifdef(`_DELAY_COMPAT_8_10_',`dnl -dnl compatility with 8.11/8.10: -dnl we have to filter these because otherwise they would be interpreted -dnl as generic error message... -dnl error messages should be "tagged" by prefixing them with error: ! -dnl that would make a lot of things easier. -dnl maybe we should stop checks already here (if SPAM_xyx)? -R<$={SpamTag}> <$*> $: @ $2 mark address as no match') -R<REJECT> $* $#error $@ 5.2.1 $: confRCPTREJ_MSG -R<DISCARD> $* $#discard $: discard -R<QUARANTINE:$+> $* $#error $@ quarantine $: $1 -dnl error tag -R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4 -R<ERROR:$+> $* $#error $: $1 -ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -dnl generic error from access map -R<$+> $* $#error $: $1 error from access db -R@ $* $1 remove mark', `dnl')', `dnl') - -ifdef(`_PROMISCUOUS_RELAY_', `divert(-1)', `dnl') -# authenticated via TLS? -R$* $: $1 $| $>RelayTLS client authenticated? -R$* $| $# $+ $# $2 error/ok? -R$* $| $* $: $1 no - -R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type} -dnl workspace: localpart<@domain> $| result of Local_Relay_Auth -R$* $| $# $* $# $2 -dnl if Local_Relay_Auth returns NO then do not check $={TrustAuthMech} -R$* $| NO $: $1 -R$* $| $* $: $1 $| $&{auth_type} -dnl workspace: localpart<@domain> [ $| ${auth_type} ] -dnl empty ${auth_type}? -R$* $| $: $1 -dnl mechanism ${auth_type} accepted? -dnl use $# to override further tests (delay_checks): see check_rcpt below -R$* $| $={TrustAuthMech} $# RELAY -dnl remove ${auth_type} -R$* $| $* $: $1 -dnl workspace: localpart<@domain> | localpart -ifelse(defn(`_NO_UUCP_'), `r', -`R$* ! $* < @ $* > $: <REMOTE> $2 < @ BANG_PATH > -R$* ! $* $: <REMOTE> $2 < @ BANG_PATH >', `dnl') -# anything terminating locally is ok -ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl -R$+ < @ $* $=m > $@ RELAY', `dnl') -R$+ < @ $=w > $@ RELAY -ifdef(`_RELAY_HOSTS_ONLY_', -`R$+ < @ $=R > $@ RELAY -ifdef(`_ACCESS_TABLE_', `dnl -R$+ < @ $+ > $: <$(access To:$2 $: ? $)> <$1 < @ $2 >> -dnl workspace: <Result-of-lookup | ?> <localpart<@domain>> -R<?> <$+ < @ $+ >> $: <$(access $2 $: ? $)> <$1 < @ $2 >>',`dnl')', -`R$+ < @ $* $=R > $@ RELAY -ifdef(`_ACCESS_TABLE_', `dnl -ifdef(`_RELAY_FULL_ADDR_', `dnl -R$+ < @ $+ > $: $1 < @ $2 > $| $>SearchList <+ To> $| <F:$1@$2> <D:$2> <F:$1@> <> -R$+ < @ $+ > $| <$*> $: <$3> <$1 <@ $2>> -R$+ < @ $+ > $| $* $: <$3> <$1 <@ $2>>', -`R$+ < @ $+ > $: $>D <$2> <?> <+ To> <$1 < @ $2 >>')')') -ifdef(`_ACCESS_TABLE_', `dnl -dnl workspace: <Result-of-lookup | ?> <localpart<@domain>> -R<RELAY> $* $@ RELAY -ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -R<$*> <$*> $: $2',`dnl') - - -ifdef(`_RELAY_MX_SERVED_', `dnl -# allow relaying for hosts which we MX serve -R$+ < @ $+ > $: < : $(mxserved $2 $) : > $1 < @ $2 > -dnl this must not necessarily happen if the client is checked first... -R< : $* <TEMP> : > $* $#TEMP $@ 4.4.0 $: "450 Can not check MX records for recipient host " $1 -R<$* : $=w . : $*> $* $@ RELAY -R< : $* : > $* $: $2', -`dnl') - -# check for local user (i.e. unqualified address) -R$* $: <?> $1 -R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 > -# local user is ok -dnl is it really? the standard requires user@domain, not just user -dnl but we should accept it anyway (maybe making it an option: -dnl RequireFQDN ?) -dnl postmaster must be accepted without domain (DRUMS) -ifdef(`_REQUIRE_QUAL_RCPT_', `dnl -R<?> postmaster $@ OK -# require qualified recipient? -dnl prepend daemon_flags -R<?> $+ $: $&{daemon_flags} $| <?> $1 -dnl workspace: ${daemon_flags} $| <?> localpart -dnl do not allow these at all or only from local systems? -dnl r flag? add client_name -R$* r $* $| <?> $+ $: < ? $&{client_name} > <?> $3 -dnl no r flag: relay to local user (only local part) -# no qualified recipient required -R$* $| <?> $+ $@ RELAY -dnl client_name is empty -R<?> <?> $+ $@ RELAY -dnl client_name is local -R<? $=w> <?> $+ $@ RELAY -dnl client_name is not local -R<? $+> $+ $#error $@ 5.5.4 $: "553 Domain name required"', `dnl -dnl no qualified recipient required -R<?> $+ $@ RELAY') -dnl it is a remote user: remove mark and then check client -R<$+> $* $: $2 -dnl currently the recipient address is not used below - -###################################################################### -### Relay_ok: is the relay/sender ok? -dnl input: ignored -dnl output: see explanation at call -###################################################################### -SRelay_ok -# anything originating locally is ok -# check IP address -R$* $: $&{client_addr} -R$@ $@ RELAY originated locally -R0 $@ RELAY originated locally -R127.0.0.1 $@ RELAY originated locally -RIPv6:::1 $@ RELAY originated locally -R$=R $* $@ RELAY relayable IP address -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: $>A <$1> <?> <+ Connect> <$1> -R<RELAY> $* $@ RELAY relayable IP address -ifdef(`_FFR_REJECT_IP_IN_CHECK_RCPT_',`dnl -dnl this will cause rejections in cases like: -dnl Connect:My.Host.Domain RELAY -dnl Connect:My.Net REJECT -dnl since in check_relay client_name is checked before client_addr -R<REJECT> $* $@ REJECT rejected IP address') -ifdef(`_ATMPF_', `R<_ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -R<$*> <$*> $: $2', `dnl') -R$* $: [ $1 ] put brackets around it... -R$=w $@ RELAY ... and see if it is local - -ifdef(`_RELAY_DB_FROM_', `define(`_RELAY_MAIL_FROM_', `1')')dnl -ifdef(`_RELAY_LOCAL_FROM_', `define(`_RELAY_MAIL_FROM_', `1')')dnl -ifdef(`_RELAY_MAIL_FROM_', `dnl -dnl input: {client_addr} or something "broken" -dnl just throw the input away; we do not need it. -# check whether FROM is allowed to use system as relay -R$* $: <?> $>CanonAddr $&f -R<?> $+ < @ $+ . > <?> $1 < @ $2 > remove trailing dot -ifdef(`_RELAY_LOCAL_FROM_', `dnl -# check whether local FROM is ok -R<?> $+ < @ $=w > $@ RELAY FROM local', `dnl') -ifdef(`_RELAY_DB_FROM_', `dnl -R<?> $+ < @ $+ > $: <@> $>SearchList <! From> $| <F:$1@$2> ifdef(`_RELAY_DB_FROM_DOMAIN_', ifdef(`_RELAY_HOSTS_ONLY_', `<E:$2>', `<D:$2>')) <> -R<@> <RELAY> $@ RELAY RELAY FROM sender ok -ifdef(`_ATMPF_', `R<@> <_ATMPF_> $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -', `dnl -ifdef(`_RELAY_DB_FROM_DOMAIN_', -`errprint(`*** ERROR: _RELAY_DB_FROM_DOMAIN_ requires _RELAY_DB_FROM_ -')', -`dnl') -dnl')', `dnl') -dnl notice: the rulesets above do not leave a unique workspace behind. -dnl it does not matter in this case because the following rule ignores -dnl the input. otherwise these rules must "clean up" the workspace. - -# check client name: first: did it resolve? -dnl input: ignored -R$* $: < $&{client_resolve} > -R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} -R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} -R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} -dnl ${client_resolve} should be OK, so go ahead -R$* $: <@> $&{client_name} -dnl should not be necessary since it has been done for client_addr already -dnl this rule actually may cause a problem if {client_name} resolves to "" -dnl however, this should not happen since the forward lookup should fail -dnl and {client_resolve} should be TEMP or FAIL. -dnl nevertheless, removing the rule doesn't hurt. -dnl R<@> $@ RELAY -dnl workspace: <@> ${client_name} (not empty) -# pass to name server to make hostname canonical -R<@> $* $=P $:<?> $1 $2 -R<@> $+ $:<?> $[ $1 $] -dnl workspace: <?> ${client_name} (canonified) -R$* . $1 strip trailing dots -ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl -R<?> $* $=m $@ RELAY', `dnl') -R<?> $=w $@ RELAY -ifdef(`_RELAY_HOSTS_ONLY_', -`R<?> $=R $@ RELAY -ifdef(`_ACCESS_TABLE_', `dnl -R<?> $* $: <$(access Connect:$1 $: ? $)> <$1> -R<?> <$*> $: <$(access $1 $: ? $)> <$1>',`dnl')', -`R<?> $* $=R $@ RELAY -ifdef(`_ACCESS_TABLE_', `dnl -R<?> $* $: $>D <$1> <?> <+ Connect> <$1>',`dnl')') -ifdef(`_ACCESS_TABLE_', `dnl -R<RELAY> $* $@ RELAY -ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -R<$*> <$*> $: $2',`dnl') -dnl end of _PROMISCUOUS_RELAY_ -divert(0) -ifdef(`_DELAY_CHECKS_',`dnl -# turn a canonical address in the form user<@domain> -# qualify unqual. addresses with $j -dnl it might have been only user (without <@domain>) -SFullAddr -R$* <@ $+ . > $1 <@ $2 > -R$* <@ $* > $@ $1 <@ $2 > -R$+ $@ $1 <@ $j > - -SDelay_TLS_Clt -# authenticated? -dnl code repeated here from Basic_check_mail -dnl only called from check_rcpt in delay mode if checkrcpt returns $# -R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL -R$* $| $#$+ $#$2 -dnl return result from checkrcpt -R$* $| $* $# $1 -R$* $# $1 - -SDelay_TLS_Clt2 -# authenticated? -dnl code repeated here from Basic_check_mail -dnl only called from check_rcpt in delay mode if stopping due to Friend/Hater -R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL -R$* $| $#$+ $#$2 -dnl return result from friend/hater check -R$* $| $* $@ $1 -R$* $@ $1 - -# call all necessary rulesets -Scheck_rcpt -dnl this test should be in the Basic_check_rcpt ruleset -dnl which is the correct DSN code? -# R$@ $#error $@ 5.1.3 $: "553 Recipient address required" - -R$+ $: $1 $| $>checkrcpt $1 -dnl now we can simply stop checks by returning "$# xyz" instead of just "ok" -dnl on error (or discard) stop now -R$+ $| $#error $* $#error $2 -R$+ $| $#discard $* $#discard $2 -dnl otherwise call tls_client; see above -R$+ $| $#$* $@ $>"Delay_TLS_Clt" $2 -R$+ $| $* $: <?> $>FullAddr $>CanonAddr $1 -ifdef(`_SPAM_FH_', -`dnl lookup user@ and user@address -ifdef(`_ACCESS_TABLE_', `', -`errprint(`*** ERROR: FEATURE(`delay_checks', `argument') requires FEATURE(`access_db') -')')dnl -dnl one of the next two rules is supposed to match -dnl this code has been copied from BLACKLIST... etc -dnl and simplified by omitting some < >. -R<?> $+ < @ $=w > $: <> $1 < @ $2 > $| <F: $1@$2 > <D: $2 > <U: $1@> -R<?> $+ < @ $* > $: <> $1 < @ $2 > $| <F: $1@$2 > <D: $2 > -dnl R<?> $@ something_is_very_wrong_here -# lookup the addresses only with Spam tag -R<> $* $| <$+> $: <@> $1 $| $>SearchList <! Spam> $| <$2> <> -R<@> $* $| $* $: $2 $1 reverse result -dnl', `dnl') -ifdef(`_SPAM_FRIEND_', -`# is the recipient a spam friend? -ifdef(`_SPAM_HATER_', - `errprint(`*** ERROR: define either Hater or Friend -- not both. -')', `dnl') -R<FRIEND> $+ $@ $>"Delay_TLS_Clt2" SPAMFRIEND -R<$*> $+ $: $2', -`dnl') -ifdef(`_SPAM_HATER_', -`# is the recipient no spam hater? -R<HATER> $+ $: $1 spam hater: continue checks -R<$*> $+ $@ $>"Delay_TLS_Clt2" NOSPAMHATER everyone else: stop -dnl',`dnl') -dnl run further checks: check_mail -dnl should we "clean up" $&f? -ifdef(`_FFR_MAIL_MACRO', -`R$* $: $1 $| $>checkmail $&{mail_from}', -`R$* $: $1 $| $>checkmail <$&f>') -dnl recipient (canonical format) $| result of checkmail -R$* $| $#$* $#$2 -dnl run further checks: check_relay -R$* $| $* $: $1 $| $>checkrelay $&{client_name} $| $&{client_addr} -R$* $| $#$* $#$2 -R$* $| $* $: $1 -', `dnl') - -ifdef(`_ACCESS_TABLE_', `dnl', `divert(-1)') -###################################################################### -### F: LookUpFull -- search for an entry in access database -### -### lookup of full key (which should be an address) and -### variations if +detail exists: +* and without +detail -### -### Parameters: -### <$1> -- key -### <$2> -- default (what to return if not found in db) -dnl must not be empty -### <$3> -- mark (must be <(!|+) single-token>) -### ! does lookup only with tag -### + does lookup with and without tag -### <$4> -- passthru (additional data passed unchanged through) -dnl returns: <default> <passthru> -dnl <result> <passthru> -###################################################################### - -SF -dnl workspace: <key> <def> <o tag> <thru> -dnl full lookup -dnl 2 3 4 5 -R<$+> <$*> <$- $-> <$*> $: <$(access $4`'_TAG_DELIM_`'$1 $: ? $)> <$1> <$2> <$3 $4> <$5> -dnl no match, try without tag -dnl 1 2 3 4 -R<?> <$+> <$*> <+ $-> <$*> $: <$(access $1 $: ? $)> <$1> <$2> <+ $3> <$4> -dnl no match, +detail: try +* -dnl 1 2 3 4 5 6 7 -R<?> <$+ + $* @ $+> <$*> <$- $-> <$*> - $: <$(access $6`'_TAG_DELIM_`'$1+*@$3 $: ? $)> <$1+$2@$3> <$4> <$5 $6> <$7> -dnl no match, +detail: try +* without tag -dnl 1 2 3 4 5 6 -R<?> <$+ + $* @ $+> <$*> <+ $-> <$*> - $: <$(access $1+*@$3 $: ? $)> <$1+$2@$3> <$4> <+ $5> <$6> -dnl no match, +detail: try without +detail -dnl 1 2 3 4 5 6 7 -R<?> <$+ + $* @ $+> <$*> <$- $-> <$*> - $: <$(access $6`'_TAG_DELIM_`'$1@$3 $: ? $)> <$1+$2@$3> <$4> <$5 $6> <$7> -dnl no match, +detail: try without +detail and without tag -dnl 1 2 3 4 5 6 -R<?> <$+ + $* @ $+> <$*> <+ $-> <$*> - $: <$(access $1@$3 $: ? $)> <$1+$2@$3> <$4> <+ $5> <$6> -dnl no match, return <default> <passthru> -dnl 1 2 3 4 5 -R<?> <$+> <$*> <$- $-> <$*> $@ <$2> <$5> -ifdef(`_ATMPF_', `dnl tempfail? -dnl 2 3 4 5 -R<$+ _ATMPF_> <$*> <$- $-> <$*> $@ <_ATMPF_> <$5>', `dnl') -dnl match, return <match> <passthru> -dnl 2 3 4 5 -R<$+> <$*> <$- $-> <$*> $@ <$1> <$5> - -###################################################################### -### E: LookUpExact -- search for an entry in access database -### -### Parameters: -### <$1> -- key -### <$2> -- default (what to return if not found in db) -dnl must not be empty -### <$3> -- mark (must be <(!|+) single-token>) -### ! does lookup only with tag -### + does lookup with and without tag -### <$4> -- passthru (additional data passed unchanged through) -dnl returns: <default> <passthru> -dnl <result> <passthru> -###################################################################### - -SE -dnl 2 3 4 5 -R<$*> <$*> <$- $-> <$*> $: <$(access $4`'_TAG_DELIM_`'$1 $: ? $)> <$1> <$2> <$3 $4> <$5> -dnl no match, try without tag -dnl 1 2 3 4 -R<?> <$+> <$*> <+ $-> <$*> $: <$(access $1 $: ? $)> <$1> <$2> <+ $3> <$4> -dnl no match, return default passthru -dnl 1 2 3 4 5 -R<?> <$+> <$*> <$- $-> <$*> $@ <$2> <$5> -ifdef(`_ATMPF_', `dnl tempfail? -dnl 2 3 4 5 -R<$+ _ATMPF_> <$*> <$- $-> <$*> $@ <_ATMPF_> <$5>', `dnl') -dnl match, return <match> <passthru> -dnl 2 3 4 5 -R<$+> <$*> <$- $-> <$*> $@ <$1> <$5> - -###################################################################### -### U: LookUpUser -- search for an entry in access database -### -### lookup of key (which should be a local part) and -### variations if +detail exists: +* and without +detail -### -### Parameters: -### <$1> -- key (user@) -### <$2> -- default (what to return if not found in db) -dnl must not be empty -### <$3> -- mark (must be <(!|+) single-token>) -### ! does lookup only with tag -### + does lookup with and without tag -### <$4> -- passthru (additional data passed unchanged through) -dnl returns: <default> <passthru> -dnl <result> <passthru> -###################################################################### - -SU -dnl user lookups are always with trailing @ -dnl 2 3 4 5 -R<$+> <$*> <$- $-> <$*> $: <$(access $4`'_TAG_DELIM_`'$1 $: ? $)> <$1> <$2> <$3 $4> <$5> -dnl no match, try without tag -dnl 1 2 3 4 -R<?> <$+> <$*> <+ $-> <$*> $: <$(access $1 $: ? $)> <$1> <$2> <+ $3> <$4> -dnl do not remove the @ from the lookup: -dnl it is part of the +detail@ which is omitted for the lookup -dnl no match, +detail: try +* -dnl 1 2 3 4 5 6 -R<?> <$+ + $* @> <$*> <$- $-> <$*> - $: <$(access $5`'_TAG_DELIM_`'$1+*@ $: ? $)> <$1+$2@> <$3> <$4 $5> <$6> -dnl no match, +detail: try +* without tag -dnl 1 2 3 4 5 -R<?> <$+ + $* @> <$*> <+ $-> <$*> - $: <$(access $1+*@ $: ? $)> <$1+$2@> <$3> <+ $4> <$5> -dnl no match, +detail: try without +detail -dnl 1 2 3 4 5 6 -R<?> <$+ + $* @> <$*> <$- $-> <$*> - $: <$(access $5`'_TAG_DELIM_`'$1@ $: ? $)> <$1+$2@> <$3> <$4 $5> <$6> -dnl no match, +detail: try without +detail and without tag -dnl 1 2 3 4 5 -R<?> <$+ + $* @> <$*> <+ $-> <$*> - $: <$(access $1@ $: ? $)> <$1+$2@> <$3> <+ $4> <$5> -dnl no match, return <default> <passthru> -dnl 1 2 3 4 5 -R<?> <$+> <$*> <$- $-> <$*> $@ <$2> <$5> -ifdef(`_ATMPF_', `dnl tempfail? -dnl 2 3 4 5 -R<$+ _ATMPF_> <$*> <$- $-> <$*> $@ <_ATMPF_> <$5>', `dnl') -dnl match, return <match> <passthru> -dnl 2 3 4 5 -R<$+> <$*> <$- $-> <$*> $@ <$1> <$5> - -###################################################################### -### SearchList: search a list of items in the access map -### Parameters: -### <exact tag> $| <mark:address> <mark:address> ... <> -dnl maybe we should have a @ (again) in front of the mark to -dnl avoid errorneous matches (with error messages?) -dnl if we can make sure that tag is always a single token -dnl then we can omit the delimiter $|, otherwise we need it -dnl to avoid errorneous matchs (first rule: D: if there -dnl is that mark somewhere in the list, it will be taken). -dnl moreover, we can do some tricks to enforce lookup with -dnl the tag only, e.g.: -### where "exact" is either "+" or "!": -### <+ TAG> lookup with and w/o tag -### <! TAG> lookup with tag -dnl Warning: + and ! should be in OperatorChars (otherwise there must be -dnl a blank between them and the tag. -### possible values for "mark" are: -### D: recursive host lookup (LookUpDomain) -dnl A: recursive address lookup (LookUpAddress) [not yet required] -### E: exact lookup, no modifications -### F: full lookup, try user+ext@domain and user@domain -### U: user lookup, try user+ext and user (input must have trailing @) -### return: <RHS of lookup> or <?> (not found) -###################################################################### - -# class with valid marks for SearchList -dnl if A is activated: add it -C{Src}E F D U ifdef(`_FFR_SRCHLIST_A', `A') -SSearchList -# just call the ruleset with the name of the tag... nice trick... -dnl 2 3 4 -R<$+> $| <$={Src}:$*> <$*> $: <$1> $| <$4> $| $>$2 <$3> <?> <$1> <> -dnl workspace: <o tag> $| <rest> $| <result of lookup> <> -dnl no match and nothing left: return -R<$+> $| <> $| <?> <> $@ <?> -dnl no match but something left: continue -R<$+> $| <$+> $| <?> <> $@ $>SearchList <$1> $| <$2> -dnl match: return -R<$+> $| <$*> $| <$+> <> $@ <$3> -dnl return result from recursive invocation -R<$+> $| <$+> $@ <$2> -dnl endif _ACCESS_TABLE_ -divert(0) - -###################################################################### -### trust_auth: is user trusted to authenticate as someone else? -### -### Parameters: -### $1: AUTH= parameter from MAIL command -###################################################################### - -dnl empty ruleset definition so it can be called -SLocal_trust_auth -Strust_auth -R$* $: $&{auth_type} $| $1 -# required by RFC 2554 section 4. -R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated" -dnl seems to be useful... -R$* $| $&{auth_authen} $@ identical -R$* $| <$&{auth_authen}> $@ identical -dnl call user supplied code -R$* $| $* $: $1 $| $>"Local_trust_auth" $2 -R$* $| $#$* $#$2 -dnl default: error -R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author} - -###################################################################### -### Relay_Auth: allow relaying based on authentication? -### -### Parameters: -### $1: ${auth_type} -###################################################################### -SLocal_Relay_Auth - -###################################################################### -### srv_features: which features to offer to a client? -### (done in server) -###################################################################### -Ssrv_features -ifdef(`_LOCAL_SRV_FEATURES_', `dnl -R$* $: $1 $| $>"Local_srv_features" $1 -R$* $| $#$* $#$2 -R$* $| $* $: $1', `dnl') -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: $>D <$&{client_name}> <?> <! SRV_FEAT_TAG> <> -R<?>$* $: $>A <$&{client_addr}> <?> <! SRV_FEAT_TAG> <> -R<?>$* $: <$(access SRV_FEAT_TAG`'_TAG_DELIM_ $: ? $)> -R<?>$* $@ OK -ifdef(`_ATMPF_', `dnl tempfail? -R<$* _ATMPF_>$* $#temp', `dnl') -R<$+>$* $# $1') - -###################################################################### -### try_tls: try to use STARTTLS? -### (done in client) -###################################################################### -Stry_tls -ifdef(`_LOCAL_TRY_TLS_', `dnl -R$* $: $1 $| $>"Local_try_tls" $1 -R$* $| $#$* $#$2 -R$* $| $* $: $1', `dnl') -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: $>D <$&{server_name}> <?> <! TLS_TRY_TAG> <> -R<?>$* $: $>A <$&{server_addr}> <?> <! TLS_TRY_TAG> <> -R<?>$* $: <$(access TLS_TRY_TAG`'_TAG_DELIM_ $: ? $)> -R<?>$* $@ OK -ifdef(`_ATMPF_', `dnl tempfail? -R<$* _ATMPF_>$* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -R<NO>$* $#error $@ 5.7.1 $: "550 do not try TLS with " $&{server_name} " ["$&{server_addr}"]"') - -###################################################################### -### tls_rcpt: is connection with server "good" enough? -### (done in client, per recipient) -dnl called from deliver() before RCPT command -### -### Parameters: -### $1: recipient -###################################################################### -Stls_rcpt -ifdef(`_LOCAL_TLS_RCPT_', `dnl -R$* $: $1 $| $>"Local_tls_rcpt" $1 -R$* $| $#$* $#$2 -R$* $| $* $: $1', `dnl') -ifdef(`_ACCESS_TABLE_', `dnl -dnl store name of other side -R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1 -dnl canonify recipient address -R$+ $: <?> $>CanonAddr $1 -dnl strip trailing dots -R<?> $+ < @ $+ . > <?> $1 <@ $2 > -dnl full address? -R<?> $+ < @ $+ > $: $1 <@ $2 > $| <F:$1@$2> <U:$1@> <D:$2> <E:> -dnl only localpart? -R<?> $+ $: $1 $| <U:$1@> <E:> -dnl look it up -dnl also look up a default value via E: -R$* $| $+ $: $1 $| $>SearchList <! TLS_RCPT_TAG> $| $2 <> -dnl found nothing: stop here -R$* $| <?> $@ OK -ifdef(`_ATMPF_', `dnl tempfail? -R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -dnl use the generic routine (for now) -R$* $| <$+> $@ $>"TLS_connection" $&{verify} $| <$2>') - -###################################################################### -### tls_client: is connection with client "good" enough? -### (done in server) -### -### Parameters: -### ${verify} $| (MAIL|STARTTLS) -###################################################################### -dnl MAIL: called from check_mail -dnl STARTTLS: called from smtp() after STARTTLS has been accepted -Stls_client -ifdef(`_LOCAL_TLS_CLIENT_', `dnl -R$* $: $1 $| $>"Local_tls_client" $1 -R$* $| $#$* $#$2 -R$* $| $* $: $1', `dnl') -ifdef(`_ACCESS_TABLE_', `dnl -dnl store name of other side -R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1 -dnl ignore second arg for now -dnl maybe use it to distinguish permanent/temporary error? -dnl if MAIL: permanent (STARTTLS has not been offered) -dnl if STARTTLS: temporary (offered but maybe failed) -R$* $| $* $: $1 $| $>D <$&{client_name}> <?> <! TLS_CLT_TAG> <> -R$* $| <?>$* $: $1 $| $>A <$&{client_addr}> <?> <! TLS_CLT_TAG> <> -dnl do a default lookup: just TLS_CLT_TAG -R$* $| <?>$* $: $1 $| <$(access TLS_CLT_TAG`'_TAG_DELIM_ $: ? $)> -ifdef(`_ATMPF_', `dnl tempfail? -R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -R$* $@ $>"TLS_connection" $1', `dnl -R$* $| $* $@ $>"TLS_connection" $1') - -###################################################################### -### tls_server: is connection with server "good" enough? -### (done in client) -### -### Parameter: -### ${verify} -###################################################################### -dnl i.e. has the server been authenticated and is encryption active? -dnl called from deliver() after STARTTLS command -Stls_server -ifdef(`_LOCAL_TLS_SERVER_', `dnl -R$* $: $1 $| $>"Local_tls_server" $1 -R$* $| $#$* $#$2 -R$* $| $* $: $1', `dnl') -ifdef(`_ACCESS_TABLE_', `dnl -dnl store name of other side -R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1 -R$* $: $1 $| $>D <$&{server_name}> <?> <! TLS_SRV_TAG> <> -R$* $| <?>$* $: $1 $| $>A <$&{server_addr}> <?> <! TLS_SRV_TAG> <> -dnl do a default lookup: just TLS_SRV_TAG -R$* $| <?>$* $: $1 $| <$(access TLS_SRV_TAG`'_TAG_DELIM_ $: ? $)> -ifdef(`_ATMPF_', `dnl tempfail? -R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -R$* $@ $>"TLS_connection" $1', `dnl -R$* $@ $>"TLS_connection" $1') - -###################################################################### -### TLS_connection: is TLS connection "good" enough? -### -### Parameters: -ifdef(`_ACCESS_TABLE_', `dnl -### ${verify} $| <Requirement> [<>]', `dnl -### ${verify}') -### Requirement: RHS from access map, may be ? for none. -dnl syntax for Requirement: -dnl [(PERM|TEMP)+] (VERIFY[:bits]|ENCR:bits) [+extensions] -dnl extensions: could be a list of further requirements -dnl for now: CN:string {cn_subject} == string -###################################################################### -STLS_connection -ifdef(`_ACCESS_TABLE_', `dnl', `dnl use default error -dnl deal with TLS handshake failures: abort -RSOFTWARE $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') TLS handshake." -divert(-1)') -dnl common ruleset for tls_{client|server} -dnl input: ${verify} $| <ResultOfLookup> [<>] -dnl remove optional <> -R$* $| <$*>$* $: $1 $| <$2> -dnl workspace: ${verify} $| <ResultOfLookup> -# create the appropriate error codes -dnl permanent or temporary error? -R$* $| <PERM + $={Tls} $*> $: $1 $| <503:5.7.0> <$2 $3> -R$* $| <TEMP + $={Tls} $*> $: $1 $| <403:4.7.0> <$2 $3> -dnl default case depends on TLS_PERM_ERR -R$* $| <$={Tls} $*> $: $1 $| <ifdef(`TLS_PERM_ERR', `503:5.7.0', `403:4.7.0')> <$2 $3> -dnl workspace: ${verify} $| [<SMTP:ESC>] <ResultOfLookup> -# deal with TLS handshake failures: abort -RSOFTWARE $| <$-:$+> $* $#error $@ $2 $: $1 " TLS handshake failed." -dnl no <reply:dns> i.e. not requirements in the access map -dnl use default error -RSOFTWARE $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') TLS handshake failed." -R$* $| <$*> <VERIFY> $: <$2> <VERIFY> <> $1 -dnl separate optional requirements -R$* $| <$*> <VERIFY + $+> $: <$2> <VERIFY> <$3> $1 -R$* $| <$*> <$={Tls}:$->$* $: <$2> <$3:$4> <> $1 -dnl separate optional requirements -R$* $| <$*> <$={Tls}:$- + $+>$* $: <$2> <$3:$4> <$5> $1 -dnl some other value in access map: accept -dnl this also allows to override the default case (if used) -R$* $| $* $@ OK -# authentication required: give appropriate error -# other side did authenticate (via STARTTLS) -dnl workspace: <SMTP:ESC> <{VERIFY,ENCR}[:BITS]> <[extensions]> ${verify} -dnl only verification required and it succeeded -R<$*><VERIFY> <> OK $@ OK -dnl verification required and it succeeded but extensions are given -dnl change it to <SMTP:ESC> <REQ:0> <extensions> -R<$*><VERIFY> <$+> OK $: <$1> <REQ:0> <$2> -dnl verification required + some level of encryption -R<$*><VERIFY:$-> <$*> OK $: <$1> <REQ:$2> <$3> -dnl just some level of encryption required -R<$*><ENCR:$-> <$*> $* $: <$1> <REQ:$2> <$3> -dnl workspace: -dnl 1. <SMTP:ESC> <VERIFY [:bits]> <[extensions]> {verify} (!= OK) -dnl 2. <SMTP:ESC> <REQ:bits> <[extensions]> -dnl verification required but ${verify} is not set (case 1.) -R<$-:$+><VERIFY $*> <$*> $#error $@ $2 $: $1 " authentication required" -R<$-:$+><VERIFY $*> <$*> FAIL $#error $@ $2 $: $1 " authentication failed" -R<$-:$+><VERIFY $*> <$*> NO $#error $@ $2 $: $1 " not authenticated" -R<$-:$+><VERIFY $*> <$*> NOT $#error $@ $2 $: $1 " no authentication requested" -R<$-:$+><VERIFY $*> <$*> NONE $#error $@ $2 $: $1 " other side does not support STARTTLS" -dnl some other value for ${verify} -R<$-:$+><VERIFY $*> <$*> $+ $#error $@ $2 $: $1 " authentication failure " $4 -dnl some level of encryption required: get the maximum level (case 2.) -R<$*><REQ:$-> <$*> $: <$1> <REQ:$2> <$3> $>max $&{cipher_bits} : $&{auth_ssf} -dnl compare required bits with actual bits -R<$*><REQ:$-> <$*> $- $: <$1> <$2:$4> <$3> $(arith l $@ $4 $@ $2 $) -R<$-:$+><$-:$-> <$*> TRUE $#error $@ $2 $: $1 " encryption too weak " $4 " less than " $3 -dnl strength requirements fulfilled -dnl TLS Additional Requirements Separator -dnl this should be something which does not appear in the extensions itself -dnl @ could be part of a CN, DN, etc... -dnl use < > ? those are encoded in CN, DN, ... -define(`_TLS_ARS_', `++')dnl -dnl workspace: -dnl <SMTP:ESC> <REQ:bits> <extensions> result-of-compare -R<$-:$+><$-:$-> <$*> $* $: <$1:$2 _TLS_ARS_ $5> -dnl workspace: <SMTP:ESC _TLS_ARS_ extensions> -dnl continue: check extensions -R<$-:$+ _TLS_ARS_ > $@ OK -dnl split extensions into own list -R<$-:$+ _TLS_ARS_ $+ > $: <$1:$2> <$3> -R<$-:$+> < $+ _TLS_ARS_ $+ > <$1:$2> <$3> <$4> -R<$-:$+> $+ $@ $>"TLS_req" $3 $| <$1:$2> - -###################################################################### -### TLS_req: check additional TLS requirements -### -### Parameters: [<list> <of> <req>] $| <$-:$+> -### $-: SMTP reply code -### $+: Enhanced Status Code -dnl further requirements for this ruleset: -dnl name of "other side" is stored is {TLS_name} (client/server_name) -dnl -dnl currently only CN[:common_name] is implemented -dnl right now this is only a logical AND -dnl i.e. all requirements must be true -dnl how about an OR? CN must be X or CN must be Y or .. -dnl use a macro to compute this as a trivial sequential -dnl operations (no precedences etc)? -###################################################################### -STLS_req -dnl no additional requirements: ok -R $| $+ $@ OK -dnl require CN: but no CN specified: use name of other side -R<CN> $* $| <$+> $: <CN:$&{TLS_Name}> $1 $| <$2> -dnl match, check rest -R<CN:$&{cn_subject}> $* $| <$+> $@ $>"TLS_req" $1 $| <$2> -dnl CN does not match -dnl 1 2 3 4 -R<CN:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " CN " $&{cn_subject} " does not match " $1 -dnl cert subject -R<CS:$&{cert_subject}> $* $| <$+> $@ $>"TLS_req" $1 $| <$2> -dnl CS does not match -dnl 1 2 3 4 -R<CS:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " Cert Subject " $&{cert_subject} " does not match " $1 -dnl match, check rest -R<CI:$&{cert_issuer}> $* $| <$+> $@ $>"TLS_req" $1 $| <$2> -dnl CI does not match -dnl 1 2 3 4 -R<CI:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " Cert Issuer " $&{cert_issuer} " does not match " $1 -dnl return from recursive call -ROK $@ OK - -###################################################################### -### max: return the maximum of two values separated by : -### -### Parameters: [$-]:[$-] -###################################################################### -Smax -R: $: 0 -R:$- $: $1 -R$-: $: $1 -R$-:$- $: $(arith l $@ $1 $@ $2 $) : $1 : $2 -RTRUE:$-:$- $: $2 -R$-:$-:$- $: $2 -dnl endif _ACCESS_TABLE_ -divert(0) - -###################################################################### -### RelayTLS: allow relaying based on TLS authentication -### -### Parameters: -### none -###################################################################### -SRelayTLS -# authenticated? -dnl we do not allow relaying for anyone who can present a cert -dnl signed by a "trusted" CA. For example, even if we put verisigns -dnl CA in CertPath so we can authenticate users, we do not allow -dnl them to abuse our server (they might be easier to get hold of, -dnl but anyway). -dnl so here is the trick: if the verification succeeded -dnl we look up the cert issuer in the access map -dnl (maybe after extracting a part with a regular expression) -dnl if this returns RELAY we relay without further questions -dnl if it returns SUBJECT we perform a similar check on the -dnl cert subject. -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: <?> $&{verify} -R<?> OK $: OK authenticated: continue -R<?> $* $@ NO not authenticated -ifdef(`_CERT_REGEX_ISSUER_', `dnl -R$* $: $(CERTIssuer $&{cert_issuer} $)', -`R$* $: $&{cert_issuer}') -R$+ $: $(access CERTISSUER`'_TAG_DELIM_`'$1 $) -dnl use $# to stop further checks (delay_check) -RRELAY $# RELAY -ifdef(`_CERT_REGEX_SUBJECT_', `dnl -RSUBJECT $: <@> $(CERTSubject $&{cert_subject} $)', -`RSUBJECT $: <@> $&{cert_subject}') -R<@> $+ $: <@> $(access CERTSUBJECT`'_TAG_DELIM_`'$1 $) -R<@> RELAY $# RELAY -R$* $: NO', `dnl') - -###################################################################### -### authinfo: lookup authinfo in the access map -### -### Parameters: -### $1: {server_name} -### $2: {server_addr} -dnl both are currently ignored -dnl if it should be done via another map, we either need to restrict -dnl functionality (it calls D and A) or copy those rulesets (or add another -dnl parameter which I want to avoid, it's quite complex already) -###################################################################### -dnl omit this ruleset if neither is defined? -dnl it causes DefaultAuthInfo to be ignored -dnl (which may be considered a good thing). -Sauthinfo -ifdef(`_AUTHINFO_TABLE_', `dnl -R$* $: <$(authinfo AuthInfo:$&{server_name} $: ? $)> -R<?> $: <$(authinfo AuthInfo:$&{server_addr} $: ? $)> -R<?> $: <$(authinfo AuthInfo: $: ? $)> -R<?> $@ no no authinfo available -R<$*> $# $1 -dnl', `dnl -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: $1 $| $>D <$&{server_name}> <?> <! AuthInfo> <> -R$* $| <?>$* $: $1 $| $>A <$&{server_addr}> <?> <! AuthInfo> <> -R$* $| <?>$* $: $1 $| <$(access AuthInfo`'_TAG_DELIM_ $: ? $)> <> -R$* $| <?>$* $@ no no authinfo available -R$* $| <$*> <> $# $2 -dnl', `dnl')') - -ifdef(`_RATE_CONTROL_',`dnl -###################################################################### -### RateControl: -### Parameters: ignored -### return: $#error or OK -###################################################################### -SRateControl -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: <A:$&{client_addr}> <E:> -dnl also look up a default value via E: -R$+ $: $>SearchList <! ClientRate> $| $1 <> -dnl found nothing: stop here -R<?> $@ OK -ifdef(`_ATMPF_', `dnl tempfail? -R<$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -dnl use the generic routine (for now) -R<0> $@ OK no limit -R<$+> $: <$1> $| $(arith l $@ $&{client_rate} $@ $1 $) -dnl log this? Connection rate $&{client_rate} exceeds limit $1. -R<$+> $| FALSE $#error $@ 4.3.2 $: _RATE_CONTROL_REPLY Connection rate limit exceeded. -')') - -ifdef(`_CONN_CONTROL_',`dnl -###################################################################### -### ConnControl: -### Parameters: ignored -### return: $#error or OK -###################################################################### -SConnControl -ifdef(`_ACCESS_TABLE_', `dnl -R$* $: <A:$&{client_addr}> <E:> -dnl also look up a default value via E: -R$+ $: $>SearchList <! ClientConn> $| $1 <> -dnl found nothing: stop here -R<?> $@ OK -ifdef(`_ATMPF_', `dnl tempfail? -R<$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') -dnl use the generic routine (for now) -R<0> $@ OK no limit -R<$+> $: <$1> $| $(arith l $@ $&{client_connections} $@ $1 $) -dnl log this: Open connections $&{client_connections} exceeds limit $1. -R<$+> $| FALSE $#error $@ 4.3.2 $: _CONN_CONTROL_REPLY Too many open connections. -')') - -undivert(9)dnl LOCAL_RULESETS -# -###################################################################### -###################################################################### -##### -`##### MAIL FILTER DEFINITIONS' -##### -###################################################################### -###################################################################### -_MAIL_FILTERS_ -# -###################################################################### -###################################################################### -##### -`##### MAILER DEFINITIONS' -##### -###################################################################### -###################################################################### -undivert(7)dnl MAILER_DEFINITIONS - diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4 deleted file mode 100644 index 0abf7b510cc3f..0000000000000 --- a/contrib/sendmail/cf/m4/version.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2005 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -VERSIONID(`$Id: version.m4,v 8.132 2005/03/25 18:44:45 ca Exp $') -# -divert(0) -# Configuration version number -DZ8.13.4`'ifdef(`confCF_VERSION', `/confCF_VERSION') diff --git a/contrib/sendmail/cf/mailer/cyrus.m4 b/contrib/sendmail/cf/mailer/cyrus.m4 deleted file mode 100644 index cca7f8e6885b4..0000000000000 --- a/contrib/sendmail/cf/mailer/cyrus.m4 +++ /dev/null @@ -1,60 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# This code incorporates code from Carnegie Mellon University, whose -# copyright notice and conditions of redistribution are as follows: -# -#*************************************************************************** -# (C) Copyright 1995 by Carnegie Mellon University -# -# All Rights Reserved -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, -# provided that the above copyright notice appear in all copies and that -# both that copyright notice and this permission notice appear in -# supporting documentation, and that the name of CMU not be -# used in advertising or publicity pertaining to distribution of the -# software without specific, written prior permission. -# -# CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -# CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -# SOFTWARE. -# -# Contributed to Berkeley by John Gardiner Myers <jgm+@CMU.EDU>. -# - -_DEFIFNOT(`CYRUS_MAILER_FLAGS', `Ah5@/:|') -ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', /usr/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') -ifdef(`CYRUS_BB_MAILER_ARGS',, `define(`CYRUS_BB_MAILER_ARGS', `deliver -e -m $u')') -define(`_CYRUS_QGRP', `ifelse(defn(`CYRUS_MAILER_QGRP'),`',`', ` Q=CYRUS_MAILER_QGRP,')')dnl - -POPDIVERT - -################################################## -### Cyrus Mailer specification ### -################################################## - -VERSIONID(`$Id: cyrus.m4,v 8.23 2001/11/12 23:11:34 ca Exp $ (Carnegie Mellon)') - -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 - -Mcyrusbb, P=CYRUS_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMnP', CYRUS_BB_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_BB_MAILER_ARGS diff --git a/contrib/sendmail/cf/mailer/cyrusv2.m4 b/contrib/sendmail/cf/mailer/cyrusv2.m4 deleted file mode 100644 index 2a40a23d4e071..0000000000000 --- a/contrib/sendmail/cf/mailer/cyrusv2.m4 +++ /dev/null @@ -1,29 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# Contributed by Kenneth Murchison. -# - -_DEFIFNOT(`_DEF_CYRUSV2_MAILER_FLAGS', `lsDFMnqXz') -_DEFIFNOT(`CYRUSV2_MAILER_FLAGS', `A@/:|m') -ifdef(`CYRUSV2_MAILER_ARGS',, `define(`CYRUSV2_MAILER_ARGS', `FILE /var/imap/socket/lmtp')') -define(`_CYRUSV2_QGRP', `ifelse(defn(`CYRUSV2_MAILER_QGRP'),`',`', ` Q=CYRUSV2_MAILER_QGRP,')')dnl - -POPDIVERT - -######################################### -### Cyrus V2 Mailer specification ### -######################################### - -VERSIONID(`$Id: cyrusv2.m4,v 1.1 2002/06/01 21:14:57 ca Exp $') - -Mcyrusv2, P=[IPC], F=_MODMF_(CONCAT(_DEF_CYRUSV2_MAILER_FLAGS, CYRUSV2_MAILER_FLAGS), `CYRUSV2'), - S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL, E=\r\n, - _OPTINS(`CYRUSV2_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`CYRUSV2_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`CYRUSV2_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_CYRUSV2_QGRP - A=CYRUSV2_MAILER_ARGS diff --git a/contrib/sendmail/cf/mailer/fax.m4 b/contrib/sendmail/cf/mailer/fax.m4 deleted file mode 100644 index 4e2116e65362b..0000000000000 --- a/contrib/sendmail/cf/mailer/fax.m4 +++ /dev/null @@ -1,38 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# This assumes you already have Sam Leffler's HylaFAX software. -# -# Tested with HylaFAX 4.0pl1 -# - -ifdef(`FAX_MAILER_ARGS',, - `define(`FAX_MAILER_ARGS', faxmail -d $u@$h $f)') -ifdef(`FAX_MAILER_PATH',, - `define(`FAX_MAILER_PATH', /usr/local/bin/faxmail)') -ifdef(`FAX_MAILER_MAX',, - `define(`FAX_MAILER_MAX', 100000)') -define(`_FAX_QGRP', `ifelse(defn(`FAX_MAILER_QGRP'),`',`', ` Q=FAX_MAILER_QGRP,')')dnl -POPDIVERT -#################################### -### FAX Mailer specification ### -#################################### - -VERSIONID(`$Id: fax.m4,v 8.16 2001/11/12 23:11:34 ca Exp $') - -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 - -LOCAL_CONFIG -CPFAX diff --git a/contrib/sendmail/cf/mailer/local.m4 b/contrib/sendmail/cf/mailer/local.m4 deleted file mode 100644 index e2f971140d756..0000000000000 --- a/contrib/sendmail/cf/mailer/local.m4 +++ /dev/null @@ -1,93 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2000, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -_DEFIFNOT(`_DEF_LOCAL_MAILER_FLAGS', `lsDFMAw5:/|@q') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Prmn9') -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/mail)') -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d $u')') -ifdef(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE',, `define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `X-Unix')') -_DEFIFNOT(`_DEF_LOCAL_SHELL_FLAGS', `lsDFMoq') -_DEFIFNOT(`LOCAL_SHELL_FLAGS', `eu9') -ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /bin/sh)') -ifdef(`LOCAL_SHELL_ARGS',, `define(`LOCAL_SHELL_ARGS', `sh -c $u')') -ifdef(`LOCAL_SHELL_DIR',, `define(`LOCAL_SHELL_DIR', `$z:/')') -define(`LOCAL_RWR', `ifdef(`_LOCAL_LMTP_', -`S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL', -`S=EnvFromL/HdrFromL, R=EnvToL/HdrToL')') -define(`_LOCAL_QGRP', `ifelse(defn(`LOCAL_MAILER_QGRP'),`',`', ` Q=LOCAL_MAILER_QGRP,')')dnl -define(`_PROG_QGRP', `ifelse(defn(`LOCAL_PROG_QGRP'),`',`', ` Q=LOCAL_PROG_QGRP,')')dnl -POPDIVERT - -################################################## -### Local and Program Mailer specification ### -################################################## - -VERSIONID(`$Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $') - -# -# Envelope sender rewriting -# -SEnvFromL -R<@> $n errors to mailer-daemon -R@ <@ $*> $n temporarily bypass Sun bogosity -R$+ $: $>AddDomain $1 add local domain if needed -ifdef(`_LOCAL_NO_MASQUERADE_', `dnl', `dnl -R$* $: $>MasqEnv $1 do masquerading') - -# -# Envelope recipient rewriting -# -SEnvToL -R$+ < @ $* > $: $1 strip host part -ifdef(`confUSERDB_SPEC', `dnl', `dnl -R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type -R<e s> $+ + $* $: $1 remove +detail for sender -R< $* > $+ $: $2 else remove mark') - -# -# Header sender rewriting -# -SHdrFromL -R<@> $n errors to mailer-daemon -R@ <@ $*> $n temporarily bypass Sun bogosity -R$+ $: $>AddDomain $1 add local domain if needed -ifdef(`_LOCAL_NO_MASQUERADE_', `dnl', `dnl -R$* $: $>MasqHdr $1 do masquerading') - -# -# Header recipient rewriting -# -SHdrToL -R$+ $: $>AddDomain $1 add local domain if needed -ifdef(`_ALL_MASQUERADE_', `dnl -ifdef(`_LOCAL_NO_MASQUERADE_', `dnl', `dnl -R$* $: $>MasqHdr $1 do all-masquerading')', -`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2') - -# -# Common code to add local domain name (only if always-add-domain) -# -SAddDomain -ifdef(`_ALWAYS_ADD_DOMAIN_', `dnl -R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified -ifelse(len(X`'_ALWAYS_ADD_DOMAIN_),`1',` -R$+ $@ $1 < @ *LOCAL* > add local qualification', -`R$+ $@ $1 < @ _ALWAYS_ADD_DOMAIN_ > add qualification')', -`dnl') - -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 -Mprog, P=LOCAL_SHELL_PATH, F=_MODMF_(CONCAT(_DEF_LOCAL_SHELL_FLAGS, LOCAL_SHELL_FLAGS), `SHELL'), S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=LOCAL_SHELL_DIR, - _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')T=X-Unix/X-Unix/X-Unix,_PROG_QGRP - A=LOCAL_SHELL_ARGS diff --git a/contrib/sendmail/cf/mailer/mail11.m4 b/contrib/sendmail/cf/mailer/mail11.m4 deleted file mode 100644 index 14bc794584f80..0000000000000 --- a/contrib/sendmail/cf/mailer/mail11.m4 +++ /dev/null @@ -1,61 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Not exciting enough to bother with copyrights and most of the -# rulesets are based from those provided by DEC. -# Barb Dijker, Labyrinth Computer Services, barb@labyrinth.com -# -# This mailer is only useful if you have DECNET and the -# mail11 program - gatekeeper.dec.com:/pub/DEC/gwtools. -# -# For local delivery of DECNET style addresses to the local -# DECNET node, you will need feature(use_cw_file) and put -# your DECNET nodename in in the cw file. -# -ifdef(`MAIL11_MAILER_PATH',, `define(`MAIL11_MAILER_PATH', /usr/etc/mail11)') -_DEFIFNOT(`MAIL11_MAILER_FLAGS', `nsFx') -ifdef(`MAIL11_MAILER_ARGS',, `define(`MAIL11_MAILER_ARGS', mail11 $g $x $h $u)') -define(`_USE_DECNET_SYNTAX_') -define(`_LOCAL_', ifdef(`confLOCAL_MAILER', confLOCAL_MAILER, `local')) -define(`_MAIL11_QGRP', `ifelse(defn(`MAIL11_MAILER_QGRP'),`',`', ` Q=MAIL11_MAILER_QGRP,')')dnl - -POPDIVERT - -PUSHDIVERT(3) -# DECNET delivery -R$* < @ $=w .DECNET. > $#_LOCAL_ $: $1 local DECnet -R$+ < @ $+ .DECNET. > $#mail11 $@ $2 $: $1 DECnet user -POPDIVERT - -PUSHDIVERT(6) -CPDECNET -POPDIVERT - -########################################### -### UTK-MAIL11 Mailer specification ### -########################################### - -VERSIONID(`$Id: mail11.m4,v 8.22 2001/11/12 23:11:34 ca Exp $') - -SMail11To -R$+ < @ $- .UUCP > $: $2 ! $1 back to old style -R$+ < @ $- .DECNET > $: $2 :: $1 convert to DECnet style -R$+ < @ $- .LOCAL > $: $2 :: $1 convert to DECnet style -R$+ < @ $=w. > $: $2 :: $1 convert to DECnet style -R$=w :: $+ $2 strip local names -R$+ :: $+ $@ $1 :: $2 already qualified - -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 diff --git a/contrib/sendmail/cf/mailer/phquery.m4 b/contrib/sendmail/cf/mailer/phquery.m4 deleted file mode 100644 index 58b71b07a20ac..0000000000000 --- a/contrib/sendmail/cf/mailer/phquery.m4 +++ /dev/null @@ -1,32 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Contributed by Kimmo Suominen <kim@tac.nyc.ny.us>. -# - -ifdef(`PH_MAILER_PATH',, `define(`PH_MAILER_PATH', /usr/local/etc/phquery)') -_DEFIFNOT(`PH_MAILER_FLAGS', `ehmu') -ifdef(`PH_MAILER_ARGS',, `define(`PH_MAILER_ARGS', `phquery -- $u')') -define(`_PH_QGRP', `ifelse(defn(`PH_MAILER_QGRP'),`',`', ` Q=PH_MAILER_QGRP,')')dnl - -POPDIVERT - -#################################### -### PH Mailer specification ### -#################################### - -VERSIONID(`$Id: phquery.m4,v 8.17 2001/11/12 23:11:34 ca Exp $') - -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 diff --git a/contrib/sendmail/cf/mailer/pop.m4 b/contrib/sendmail/cf/mailer/pop.m4 deleted file mode 100644 index d2680e1cae9dd..0000000000000 --- a/contrib/sendmail/cf/mailer/pop.m4 +++ /dev/null @@ -1,34 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -ifdef(`POP_MAILER_PATH',, `define(`POP_MAILER_PATH', /usr/lib/mh/spop)') -_DEFIFNOT(`POP_MAILER_FLAGS', `Penu') -ifdef(`POP_MAILER_ARGS',, `define(`POP_MAILER_ARGS', `pop $u')') -define(`_POP_QGRP', `ifelse(defn(`POP_MAILER_QGRP'),`',`', ` Q=POP_MAILER_QGRP,')')dnl - -POPDIVERT - -#################################### -### POP Mailer specification ### -#################################### - -VERSIONID(`$Id: pop.m4,v 8.22 2001/11/12 23:11:34 ca Exp $') - -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 - -LOCAL_CONFIG -# POP mailer is a pseudo-domain -CPPOP diff --git a/contrib/sendmail/cf/mailer/procmail.m4 b/contrib/sendmail/cf/mailer/procmail.m4 deleted file mode 100644 index 103e042a7ccc6..0000000000000 --- a/contrib/sendmail/cf/mailer/procmail.m4 +++ /dev/null @@ -1,34 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -ifdef(`PROCMAIL_MAILER_PATH',, - `ifdef(`PROCMAIL_PATH', - `define(`PROCMAIL_MAILER_PATH', PROCMAIL_PATH)', - `define(`PROCMAIL_MAILER_PATH', /usr/local/bin/procmail)')') -_DEFIFNOT(`PROCMAIL_MAILER_FLAGS', `SPhnu9') -ifdef(`PROCMAIL_MAILER_ARGS',, - `define(`PROCMAIL_MAILER_ARGS', `procmail -Y -m $h $f $u')') -define(`_PROCMAIL_QGRP', `ifelse(defn(`PROCMAIL_MAILER_QGRP'),`',`', ` Q=PROCMAIL_MAILER_QGRP,')')dnl - -POPDIVERT - -######################*****############## -### PROCMAIL Mailer specification ### -##################*****################## - -VERSIONID(`$Id: procmail.m4,v 8.22 2001/11/12 23:11:34 ca Exp $') - -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 diff --git a/contrib/sendmail/cf/mailer/qpage.m4 b/contrib/sendmail/cf/mailer/qpage.m4 deleted file mode 100644 index b0d9d51eb0f92..0000000000000 --- a/contrib/sendmail/cf/mailer/qpage.m4 +++ /dev/null @@ -1,31 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (C) 1997, Philip A. Prindeville and Enteka Enterprise Technology -# Services -# -# Copyright (c) 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# Tested with QuickPage version 3.2 -# -ifdef(`QPAGE_MAILER_PATH', `', `define(`QPAGE_MAILER_PATH', `/usr/local/bin/qpage')') -_DEFIFNOT(`QPAGE_MAILER_FLAGS', `mDFMs') -ifdef(`QPAGE_MAILER_ARGS', `', `define(`QPAGE_MAILER_ARGS', `qpage -l0 -m -P$u')') -ifdef(`QPAGE_MAILER_MAX', `', `define(`QPAGE_MAILER_MAX', `4096')') -define(`_QPAGE_QGRP', `ifelse(defn(`QPAGE_MAILER_QGRP'),`',`', ` Q=QPAGE_MAILER_QGRP,')')dnl - -POPDIVERT - -###################################### -### QPAGE Mailer specification ### -###################################### - -VERSIONID(`$Id: qpage.m4,v 8.10 2001/11/12 23:11:34 ca Exp $') - -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 diff --git a/contrib/sendmail/cf/mailer/smtp.m4 b/contrib/sendmail/cf/mailer/smtp.m4 deleted file mode 100644 index 2bf5a82e259a2..0000000000000 --- a/contrib/sendmail/cf/mailer/smtp.m4 +++ /dev/null @@ -1,122 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -_DEFIFNOT(`_DEF_SMTP_MAILER_FLAGS', `mDFMuX') -_DEFIFNOT(`SMTP_MAILER_FLAGS',`') -_DEFIFNOT(`RELAY_MAILER_FLAGS', `SMTP_MAILER_FLAGS') -ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `TCP $h')') -ifdef(`ESMTP_MAILER_ARGS',, `define(`ESMTP_MAILER_ARGS', `TCP $h')') -ifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `TCP $h')') -ifdef(`DSMTP_MAILER_ARGS',, `define(`DSMTP_MAILER_ARGS', `TCP $h')') -ifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `TCP $h')') -define(`_SMTP_QGRP', `ifelse(defn(`SMTP_MAILER_QGRP'),`',`', ` Q=SMTP_MAILER_QGRP,')')dnl -define(`_ESMTP_QGRP', `ifelse(defn(`ESMTP_MAILER_QGRP'),`',`', ` Q=ESMTP_MAILER_QGRP,')')dnl -define(`_SMTP8_QGRP', `ifelse(defn(`SMTP8_MAILER_QGRP'),`',`', ` Q=SMTP8_MAILER_QGRP,')')dnl -define(`_DSMTP_QGRP', `ifelse(defn(`DSMTP_MAILER_QGRP'),`',`', ` Q=DSMTP_MAILER_QGRP,')')dnl -define(`_RELAY_QGRP', `ifelse(defn(`RELAY_MAILER_QGRP'),`',`', ` Q=RELAY_MAILER_QGRP,')')dnl -POPDIVERT -##################################### -### SMTP Mailer specification ### -##################################### - -VERSIONID(`$Id: smtp.m4,v 8.64 2001/04/03 01:52:54 gshapiro Exp $') - -# -# common sender and masquerading recipient rewriting -# -SMasqSMTP -R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified -R$+ $@ $1 < @ *LOCAL* > add local qualification - -# -# convert pseudo-domain addresses to real domain addresses -# -SPseudoToReal - -# pass <route-addr>s through -R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> - -# output fake domains as user%fake@relay -ifdef(`BITNET_RELAY', -`R$+ <@ $+ .BITNET. > $: $1 % $2 .BITNET < @ $B > user@host.BITNET -R$+.BITNET <@ $~[ $*:$+ > $: $1 .BITNET < @ $4 > strip mailer: part', - `dnl') -ifdef(`_NO_UUCP_', `dnl', ` -# do UUCP heuristics; note that these are shared with UUCP mailers -R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form -R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form - -# leave these in .UUCP form to avoid further tampering -R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > -R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > -R< $&h ! > $+ $@ $1 < @ $&h .UUCP. > -R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY -R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part -R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY') - - -# -# envelope sender rewriting -# -SEnvFromSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R$* :; <@> $@ list:; special case -R$* $: $>MasqSMTP $1 qualify unqual'ed names -R$+ $: $>MasqEnv $1 do masquerading - - -# -# envelope recipient rewriting -- -# also header recipient if not masquerading recipients -# -SEnvToSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R$+ $: $>MasqSMTP $1 qualify unqual'ed names -R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 - -# -# header sender and masquerading header recipient rewriting -# -SHdrFromSMTP -R$+ $: $>PseudoToReal $1 sender/recipient common -R:; <@> $@ list:; special case - -# do special header rewriting -R$* <@> $* $@ $1 <@> $2 pass null host through -R< @ $* > $* $@ < @ $1 > $2 pass route-addr through -R$* $: $>MasqSMTP $1 qualify unqual'ed names -R$+ $: $>MasqHdr $1 do masquerading - - -# -# relay mailer header masquerading recipient rewriting -# -SMasqRelay -R$+ $: $>MasqSMTP $1 -R$+ $: $>MasqHdr $1 - -Msmtp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, SMTP_MAILER_FLAGS), `SMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990, - _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 -Mesmtp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a', SMTP_MAILER_FLAGS), `ESMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990, - _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_ESMTP_QGRP - A=ESMTP_MAILER_ARGS -Msmtp8, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `8', SMTP_MAILER_FLAGS), `SMTP8'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990, - _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_SMTP8_QGRP - A=SMTP8_MAILER_ARGS -Mdsmtp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a%', SMTP_MAILER_FLAGS), `DSMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990, - _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_DSMTP_QGRP - A=DSMTP_MAILER_ARGS -Mrelay, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a8', RELAY_MAILER_FLAGS), `RELAY'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `MasqSMTP/MasqRelay', `MasqSMTP'), E=\r\n, L=2040, - _OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')_OPTINS(`RELAY_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')T=DNS/RFC822/SMTP,_RELAY_QGRP - A=RELAY_MAILER_ARGS diff --git a/contrib/sendmail/cf/mailer/usenet.m4 b/contrib/sendmail/cf/mailer/usenet.m4 deleted file mode 100644 index 39f49b8bf06d3..0000000000000 --- a/contrib/sendmail/cf/mailer/usenet.m4 +++ /dev/null @@ -1,28 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2000, 2003 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)') -_DEFIFNOT(`USENET_MAILER_FLAGS', `rsDFMmn') -ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `inews -m -h -n')') -define(`_USENET_QGRP', `ifelse(defn(`USENET_MAILER_QGRP'),`',`', ` Q=USENET_MAILER_QGRP,')')dnl -POPDIVERT -#################################### -### USENET Mailer specification ### -#################################### - -VERSIONID(`$Id: usenet.m4,v 8.22 2003/02/20 21:16:13 ca Exp $') - -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 diff --git a/contrib/sendmail/cf/mailer/uucp.m4 b/contrib/sendmail/cf/mailer/uucp.m4 deleted file mode 100644 index 6513556079a90..0000000000000 --- a/contrib/sendmail/cf/mailer/uucp.m4 +++ /dev/null @@ -1,157 +0,0 @@ -PUSHDIVERT(-1) -# -# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)') -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')') -_DEFIFNOT(`UUCP_MAILER_FLAGS', `') -ifdef(`UUCP_MAILER_MAX',, - `define(`UUCP_MAILER_MAX', - `ifdef(`UUCP_MAX_SIZE', `UUCP_MAX_SIZE', 100000)')') -define(`_UUCP_QGRP', `ifelse(defn(`UUCP_MAILER_QGRP'),`',`', ` Q=UUCP_MAILER_QGRP,')')dnl -POPDIVERT -##################################### -### UUCP Mailer specification ### -##################################### - -VERSIONID(`$Id: uucp.m4,v 8.44 2001/08/24 19:49:08 ca Exp $') - -# -# envelope and header sender rewriting -# -SFromU - -# handle error address as a special case -R<@> $n errors to mailer-daemon - -# list:; syntax should disappear -R:; <@> $@ - -R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots -R$* < @ $=w > $1 strip local name -R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format -R<@ $+ > : $+ $1 ! $2 convert to UUCP format -R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format -R$* < @ $+ > $2 ! $1 convert to UUCP format -R$&h ! $+ ! $+ $@ $1 ! $2 $h!...!user => ...!user -R$&h ! $+ $@ $&h ! $1 $h!user => $h!user -R$+ $: $U ! $1 prepend our name -R! $+ $: $k ! $1 in case $U undefined - -# -# envelope recipient rewriting -# -SEnvToU - -# list:; should disappear -R:; <@> $@ - -R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots -R$* < @ $=w > $1 strip local name -R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format -R<@ $+ > : $+ $1 ! $2 convert to UUCP format -R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format -R$* < @ $+ > $2 ! $1 convert to UUCP format - -# -# header recipient rewriting -# -SHdrToU - -# list:; syntax should disappear -R:; <@> $@ - -R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots -R$* < @ $=w > $1 strip local name -R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format -R<@ $+ > : $+ $1 ! $2 convert to UUCP format -R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format -R$* < @ $+ > $2 ! $1 convert to UUCP format -R$&h ! $+ ! $+ $@ $1 ! $2 $h!...!user => ...!user -R$&h ! $+ $@ $&h ! $1 $h!user => $h!user -R$+ $: $U ! $1 prepend our name -R! $+ $: $k ! $1 in case $U undefined - - -ifdef(`_MAILER_smtp_', -`# -# envelope sender rewriting for uucp-dom mailer -# -SEnvFromUD - -# handle error address as a special case -R<@> $n errors to mailer-daemon - -# pass everything to standard SMTP mailer rewriting -R$* $@ $>EnvFromSMTP $1 - -# -# envelope sender rewriting for uucp-uudom mailer -# -SEnvFromUUD - -# handle error address as a special case -R<@> $n errors to mailer-daemon - -# do standard SMTP mailer rewriting -R$* $: $>EnvFromSMTP $1 - -R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots -R<@ $- . UUCP > : $+ $@ $1 ! $2 convert to UUCP format -R<@ $+ > : $+ $@ $1 ! $2 convert to UUCP format -R$* < @ $- . UUCP > $@ $2 ! $1 convert to UUCP format -R$* < @ $+ > $@ $2 ! $1 convert to UUCP format', -`errprint(`*** MAILER(`smtp') must appear before MAILER(`uucp') - if uucp-dom should be included.') -') - -PUSHDIVERT(4) -# resolve locally connected UUCP links -R$* < @ $=Z . UUCP. > $* $#uucp-uudom $@ $2 $: $1 < @ $2 .UUCP. > $3 -R$* < @ $=Y . UUCP. > $* $#uucp-new $@ $2 $: $1 < @ $2 .UUCP. > $3 -R$* < @ $=U . UUCP. > $* $#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3 -POPDIVERT - -# -# There are innumerable variations on the UUCP mailer. It really -# is rather absurd. -# - -# old UUCP mailer (two names) -Muucp, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`DFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU, - M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP - A=UUCP_MAILER_ARGS -Muucp-old, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`DFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU, - M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP - A=UUCP_MAILER_ARGS - -# smart UUCP mailer (handles multiple addresses) (two names) -Msuucp, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU, - M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP - A=UUCP_MAILER_ARGS -Muucp-new, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU, - M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP - A=UUCP_MAILER_ARGS - -ifdef(`_MAILER_smtp_', -`# domain-ized UUCP mailer -Muucp-dom, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhud', UUCP_MAILER_FLAGS), `UUCP'), 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,_UUCP_QGRP - A=UUCP_MAILER_ARGS - -# domain-ized UUCP mailer with UUCP-style sender envelope -Muucp-uudom, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhud', UUCP_MAILER_FLAGS), `UUCP'), S=EnvFromUUD/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), - M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP - A=UUCP_MAILER_ARGS') - - diff --git a/contrib/sendmail/cf/ostype/a-ux.m4 b/contrib/sendmail/cf/ostype/a-ux.m4 deleted file mode 100644 index c4d4321bc38bf..0000000000000 --- a/contrib/sendmail/cf/ostype/a-ux.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: a-ux.m4,v 8.2 2001/07/23 16:19:36 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d -r $f $u')')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/aix3.m4 b/contrib/sendmail/cf/ostype/aix3.m4 deleted file mode 100644 index 4376f6770a003..0000000000000 --- a/contrib/sendmail/cf/ostype/aix3.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: aix3.m4,v 8.16 1999/04/12 17:34:36 ca Exp $') -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail $u)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl -define(`confEBINDIR', `/usr/lib')dnl -define(`confTIME_ZONE', `USE_TZ')dnl diff --git a/contrib/sendmail/cf/ostype/aix4.m4 b/contrib/sendmail/cf/ostype/aix4.m4 deleted file mode 100644 index 8e0b9d44ab8f3..0000000000000 --- a/contrib/sendmail/cf/ostype/aix4.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1996 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: aix4.m4,v 8.11 1999/04/12 17:34:37 ca Exp $') -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl -define(`confEBINDIR', `/usr/lib')dnl -define(`confTIME_ZONE', `USE_TZ')dnl diff --git a/contrib/sendmail/cf/ostype/aix5.m4 b/contrib/sendmail/cf/ostype/aix5.m4 deleted file mode 100644 index e8df77e30ac14..0000000000000 --- a/contrib/sendmail/cf/ostype/aix5.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: aix5.m4,v 1.1 2000/12/08 21:53:36 ca Exp $') -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl -define(`confEBINDIR', `/usr/lib')dnl -define(`confTIME_ZONE', `USE_TZ')dnl diff --git a/contrib/sendmail/cf/ostype/altos.m4 b/contrib/sendmail/cf/ostype/altos.m4 deleted file mode 100644 index 1cffe1e8d2d96..0000000000000 --- a/contrib/sendmail/cf/ostype/altos.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1996 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Contributed by Tim Rice <tim@trr.metro.NET>. -# - -divert(0) -VERSIONID(`$Id: altos.m4,v 8.15 1999/04/24 05:37:40 gshapiro Exp $') - -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mPuhCE9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl -ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/amdahl-uts.m4 b/contrib/sendmail/cf/ostype/amdahl-uts.m4 deleted file mode 100644 index edd3a5db86a72..0000000000000 --- a/contrib/sendmail/cf/ostype/amdahl-uts.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: amdahl-uts.m4,v 8.16 1999/04/24 05:37:40 gshapiro Exp $') -divert(-1) - -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSn9') -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/bsd4.3.m4 b/contrib/sendmail/cf/ostype/bsd4.3.m4 deleted file mode 100644 index 044f205ff9e46..0000000000000 --- a/contrib/sendmail/cf/ostype/bsd4.3.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: bsd4.3.m4,v 8.12 1999/02/07 07:26:18 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/bsd4.4.m4 b/contrib/sendmail/cf/ostype/bsd4.4.m4 deleted file mode 100644 index 3f7b0891de2c8..0000000000000 --- a/contrib/sendmail/cf/ostype/bsd4.4.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# - -divert(0) -VERSIONID(`$Id: bsd4.4.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/bsdi.m4 b/contrib/sendmail/cf/ostype/bsdi.m4 deleted file mode 100644 index 35679bcf1c410..0000000000000 --- a/contrib/sendmail/cf/ostype/bsdi.m4 +++ /dev/null @@ -1,17 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: bsdi.m4,v 8.1 1999/11/19 05:18:13 gshapiro Exp $') -include(_CF_DIR_`'ostype/bsd4.4.m4)dnl diff --git a/contrib/sendmail/cf/ostype/bsdi1.0.m4 b/contrib/sendmail/cf/ostype/bsdi1.0.m4 deleted file mode 100644 index b806a37a33ac0..0000000000000 --- a/contrib/sendmail/cf/ostype/bsdi1.0.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: bsdi1.0.m4,v 8.11 1999/11/19 05:18:14 gshapiro Exp $') -errprint(`NOTE: OSTYPE(bsdi1.0) is deprecated. Use OSTYPE(bsdi) instead.') -include(_CF_DIR_`'ostype/bsdi.m4)dnl diff --git a/contrib/sendmail/cf/ostype/bsdi2.0.m4 b/contrib/sendmail/cf/ostype/bsdi2.0.m4 deleted file mode 100644 index 493406fd37f92..0000000000000 --- a/contrib/sendmail/cf/ostype/bsdi2.0.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: bsdi2.0.m4,v 8.10 1999/11/19 05:18:14 gshapiro Exp $') -errprint(`NOTE: OSTYPE(bsdi2.0) is deprecated. Use OSTYPE(bsdi) instead.') -include(_CF_DIR_`'ostype/bsdi.m4)dnl diff --git a/contrib/sendmail/cf/ostype/darwin.m4 b/contrib/sendmail/cf/ostype/darwin.m4 deleted file mode 100644 index 09d58480a3990..0000000000000 --- a/contrib/sendmail/cf/ostype/darwin.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000, 2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: darwin.m4,v 8.3 2002/03/05 01:55:40 ca Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -dnl turn on S flag for local mailer -MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/dgux.m4 b/contrib/sendmail/cf/ostype/dgux.m4 deleted file mode 100644 index 335aedac89488..0000000000000 --- a/contrib/sendmail/cf/ostype/dgux.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: dgux.m4,v 8.14 1999/04/12 17:34:37 ca Exp $') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl -define(`confTIME_ZONE', `USE_TZ')dnl -define(`confEBINDIR', `/usr/lib')dnl -LOCAL_CONFIG -E_FORCE_MAIL_LOCAL_=yes diff --git a/contrib/sendmail/cf/ostype/domainos.m4 b/contrib/sendmail/cf/ostype/domainos.m4 deleted file mode 100644 index 759459d3270ab..0000000000000 --- a/contrib/sendmail/cf/ostype/domainos.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: domainos.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $') -divert(-1) - -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)') -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/dragonfly.m4 b/contrib/sendmail/cf/ostype/dragonfly.m4 deleted file mode 100644 index c1266afe868ef..0000000000000 --- a/contrib/sendmail/cf/ostype/dragonfly.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001, 2004 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: dragonfly.m4,v 1.1 2004/08/06 03:54:05 gshapiro Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -dnl turn on S flag for local mailer -MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', `/usr/local/bin/uux')')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/dynix3.2.m4 b/contrib/sendmail/cf/ostype/dynix3.2.m4 deleted file mode 100644 index e0729531e8ee0..0000000000000 --- a/contrib/sendmail/cf/ostype/dynix3.2.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: dynix3.2.m4,v 8.14 1999/04/24 05:37:41 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/freebsd4.m4 b/contrib/sendmail/cf/ostype/freebsd4.m4 deleted file mode 100644 index b84a1e2e54524..0000000000000 --- a/contrib/sendmail/cf/ostype/freebsd4.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: freebsd4.m4,v 1.1 2001/03/21 22:44:58 ca Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -dnl turn on S flag for local mailer -MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/freebsd5.m4 b/contrib/sendmail/cf/ostype/freebsd5.m4 deleted file mode 100644 index eb7a73a0d5be8..0000000000000 --- a/contrib/sendmail/cf/ostype/freebsd5.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: freebsd5.m4,v 1.1 2001/10/08 22:25:34 gshapiro Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -dnl turn on S flag for local mailer -MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', `/usr/local/bin/uux')')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/gnu.m4 b/contrib/sendmail/cf/ostype/gnu.m4 deleted file mode 100644 index 39e8171cac914..0000000000000 --- a/contrib/sendmail/cf/ostype/gnu.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1997 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# - -divert(0) -VERSIONID(`$Id: gnu.m4,v 8.13 1999/04/24 05:37:41 gshapiro Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl -define(`confEBINDIR', `/libexec')dnl diff --git a/contrib/sendmail/cf/ostype/hpux10.m4 b/contrib/sendmail/cf/ostype/hpux10.m4 deleted file mode 100644 index 290c0c682d837..0000000000000 --- a/contrib/sendmail/cf/ostype/hpux10.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: hpux10.m4,v 8.19 1999/04/24 05:37:41 gshapiro Exp $') - -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl -ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl -define(`confTIME_ZONE', `USE_TZ')dnl -dnl -dnl For maximum compability with HP-UX, use: -dnl define(`confME_TOO', True)dnl diff --git a/contrib/sendmail/cf/ostype/hpux11.m4 b/contrib/sendmail/cf/ostype/hpux11.m4 deleted file mode 100644 index 94e2e98f1d7cd..0000000000000 --- a/contrib/sendmail/cf/ostype/hpux11.m4 +++ /dev/null @@ -1,23 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: hpux11.m4,v 8.1 1999/11/19 05:22:59 gshapiro Exp $') - -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl -ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl -define(`confTIME_ZONE', `USE_TZ')dnl diff --git a/contrib/sendmail/cf/ostype/hpux9.m4 b/contrib/sendmail/cf/ostype/hpux9.m4 deleted file mode 100644 index 902d39a655a21..0000000000000 --- a/contrib/sendmail/cf/ostype/hpux9.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: hpux9.m4,v 8.24 1999/04/24 05:37:41 gshapiro Exp $') - -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl -define(`confTIME_ZONE', `USE_TZ')dnl -define(`confEBINDIR', `/usr/lib')dnl -dnl -dnl For maximum compability with HP-UX, use: -dnl define(`confME_TOO', True)dnl diff --git a/contrib/sendmail/cf/ostype/irix4.m4 b/contrib/sendmail/cf/ostype/irix4.m4 deleted file mode 100644 index f966458f9d112..0000000000000 --- a/contrib/sendmail/cf/ostype/irix4.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: irix4.m4,v 8.19 1999/04/24 05:37:41 gshapiro Exp $') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehm9')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/irix5.m4 b/contrib/sendmail/cf/ostype/irix5.m4 deleted file mode 100644 index dda4bf45c1a40..0000000000000 --- a/contrib/sendmail/cf/ostype/irix5.m4 +++ /dev/null @@ -1,39 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1995 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi> -# - -# -# Notes: -# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you -# perhaps don't want it. -# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1) -# put some Asian sites may prefer otherwise -- or perhaps not. -# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u -# It seems work without that -s however. -# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest) -# - In SGI seems that TZ variable is needed that correct time is marked to -# syslog -# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf -# - -divert(0) -VERSIONID(`$Id: irix5.m4,v 8.16 1999/04/24 05:37:41 gshapiro Exp $') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehmu9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/sendmail.st')')dnl -define(`confDEF_USER_ID', `998:998')dnl -define(`confTIME_ZONE', USE_TZ)dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/irix6.m4 b/contrib/sendmail/cf/ostype/irix6.m4 deleted file mode 100644 index 839e3873ef87e..0000000000000 --- a/contrib/sendmail/cf/ostype/irix6.m4 +++ /dev/null @@ -1,39 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1995 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi> -# - -# -# Notes: -# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you -# perhaps don't want it. They have begun removing this flag in IRIX 6.5. -# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1) -# put some Asian sites may prefer otherwise -- or perhaps not. -# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u -# It seems work without that -s however. -# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest) -# - In SGI seems that TZ variable is needed that correct time is marked to -# syslog -# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf -# - -divert(0) -VERSIONID(`$Id: irix6.m4,v 8.14 1999/08/05 20:35:55 gshapiro Exp $') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehmu9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/sendmail.st')')dnl -define(`confDEF_USER_ID', `998:998')dnl -define(`confTIME_ZONE', USE_TZ)dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/isc4.1.m4 b/contrib/sendmail/cf/ostype/isc4.1.m4 deleted file mode 100644 index a124643a5e540..0000000000000 --- a/contrib/sendmail/cf/ostype/isc4.1.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# - -divert(0) -VERSIONID(`$Id: isc4.1.m4,v 8.16 1999/04/24 05:37:42 gshapiro Exp $') -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail -s $u')')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `humS9')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/lmail)')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -gC $h!rmail ($u)')')dnl -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl -define(`confTIME_ZONE', `USE_TZ')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/linux.m4 b/contrib/sendmail/cf/ostype/linux.m4 deleted file mode 100644 index b02ad29ee8e0b..0000000000000 --- a/contrib/sendmail/cf/ostype/linux.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $') -define(`confEBINDIR', `/usr/sbin') -ifdef(`PROCMAIL_MAILER_PATH',, - define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')) -FEATURE(local_procmail) diff --git a/contrib/sendmail/cf/ostype/maxion.m4 b/contrib/sendmail/cf/ostype/maxion.m4 deleted file mode 100644 index 6f9a48ecbcfa2..0000000000000 --- a/contrib/sendmail/cf/ostype/maxion.m4 +++ /dev/null @@ -1,28 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1996 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Concurrent Computer Corporation Maxion system support contributed -# by Donald R. Laster Jr. <Laster@access.digex.com>. -# - -divert(0) -VERSIONID(`$Id: maxion.m4,v 8.17 1999/10/21 00:31:39 gshapiro Exp $') - -define(`QUEUE_DIR', `/var/spool/mqueue')dnl -define(`STATUS_FILE', `/var/adm/log/sendmail.st')dnl -define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl -define(`LOCAL_SHELL_FLAGS', `ehuP')dnl -define(`LOCAL_MAILER_ARGS', `mail $u')dnl -define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl -define(`confEBINDIR', `/usr/ucblib')dnl -divert(-1) diff --git a/contrib/sendmail/cf/ostype/mklinux.m4 b/contrib/sendmail/cf/ostype/mklinux.m4 deleted file mode 100644 index 90b7d2da30985..0000000000000 --- a/contrib/sendmail/cf/ostype/mklinux.m4 +++ /dev/null @@ -1,24 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# MkLinux support contributed by Paul DuBois <dubois@primate.wisc.edu> -# - -divert(0) -VERSIONID(`$Id: mklinux.m4,v 8.15 2000/05/09 18:48:56 gshapiro Exp $') -define(`confEBINDIR', `/usr/sbin') -ifdef(`STATUS_FILE',, - `define(`STATUS_FILE', `/var/log/sendmail.st')') -ifdef(`PROCMAIL_MAILER_PATH',, - `define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')') -FEATURE(local_procmail) diff --git a/contrib/sendmail/cf/ostype/mpeix.m4 b/contrib/sendmail/cf/ostype/mpeix.m4 deleted file mode 100644 index 9e760e94e5f46..0000000000000 --- a/contrib/sendmail/cf/ostype/mpeix.m4 +++ /dev/null @@ -1,22 +0,0 @@ -divert(-1) -# -# Copyright (c) 2001 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: mpeix.m4,v 1.1 2001/12/13 23:56:40 gshapiro Exp $') - -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/tsmail')')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mu9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `tsmail $u')')dnl -ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', `/bin/sh')')dnl -ifdef(`confDEF_USER_ID',, `define(`confDEF_USER_ID', `SERVER.SENDMAIL')')dnl -ifdef(`confTRUSTED_USER',, `define(`confTRUSTED_USER', `SERVER.SENDMAIL')')dnl -define(`confTIME_ZONE', `USE_TZ')dnl -define(`confDONT_BLAME_SENDMAIL', `ForwardFileInGroupWritableDirPath')dnl diff --git a/contrib/sendmail/cf/ostype/nextstep.m4 b/contrib/sendmail/cf/ostype/nextstep.m4 deleted file mode 100644 index 0c528931233f5..0000000000000 --- a/contrib/sendmail/cf/ostype/nextstep.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: nextstep.m4,v 8.21 1999/10/21 00:31:40 gshapiro Exp $') -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `euP')')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/openbsd.m4 b/contrib/sendmail/cf/ostype/openbsd.m4 deleted file mode 100644 index aaeb615e502ca..0000000000000 --- a/contrib/sendmail/cf/ostype/openbsd.m4 +++ /dev/null @@ -1,17 +0,0 @@ -divert(-1) -# -# Copyright (c) 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: openbsd.m4,v 8.3 1999/04/24 05:37:42 gshapiro Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `rmn9S')dnl -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/contrib/sendmail/cf/ostype/osf1.m4 b/contrib/sendmail/cf/ostype/osf1.m4 deleted file mode 100644 index dd13963a298fb..0000000000000 --- a/contrib/sendmail/cf/ostype/osf1.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: osf1.m4,v 8.16 1999/10/11 18:45:43 gshapiro Exp $') -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/usr/adm/sendmail/sendmail.st')')dnl -define(`confDEF_USER_ID', `daemon') -define(`confEBINDIR', `/usr/lbin')dnl diff --git a/contrib/sendmail/cf/ostype/powerux.m4 b/contrib/sendmail/cf/ostype/powerux.m4 deleted file mode 100644 index 4646fe3ee2e09..0000000000000 --- a/contrib/sendmail/cf/ostype/powerux.m4 +++ /dev/null @@ -1,23 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: powerux.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $') - -define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl -define(`LOCAL_MAILER_ARGS', `rmail $u')dnl -define(`LOCAL_SHELL_FLAGS', `ehuP')dnl -define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl -define(`confEBINDIR', `/usr/local/lib')dnl diff --git a/contrib/sendmail/cf/ostype/ptx2.m4 b/contrib/sendmail/cf/ostype/ptx2.m4 deleted file mode 100644 index 84e83963f9a1f..0000000000000 --- a/contrib/sendmail/cf/ostype/ptx2.m4 +++ /dev/null @@ -1,23 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1994 Eric P. Allman. All rights reserved. -# Copyright (c) 1994 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -# Support for DYNIX/ptx 2.x. - -divert(0) -VERSIONID(`$Id: ptx2.m4,v 8.17 1999/04/24 05:37:43 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -define(`LOCAL_MAILER_PATH', `/bin/mail')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fmn9')dnl -define(`LOCAL_SHELL_FLAGS', `eu')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/qnx.m4 b/contrib/sendmail/cf/ostype/qnx.m4 deleted file mode 100644 index 5fb3b08e14c07..0000000000000 --- a/contrib/sendmail/cf/ostype/qnx.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1997 Eric P. Allman. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Contributed by Glen McCready <glen@qnx.com> -# - -divert(0) -VERSIONID(`$Id: qnx.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $') -define(`QUEUE_DIR', /usr/spool/mqueue)dnl -define(`LOCAL_MAILER_ARGS', `mail $u')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Sh')dnl -define(`LOCAL_MAILER_PATH', /usr/bin/mailx)dnl -define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f $h!rmail ($u)')dnl diff --git a/contrib/sendmail/cf/ostype/riscos4.5.m4 b/contrib/sendmail/cf/ostype/riscos4.5.m4 deleted file mode 100644 index f8069383aaf74..0000000000000 --- a/contrib/sendmail/cf/ostype/riscos4.5.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: riscos4.5.m4,v 8.15 1999/04/24 05:37:43 gshapiro Exp $') - -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/sco-uw-2.1.m4 b/contrib/sendmail/cf/ostype/sco-uw-2.1.m4 deleted file mode 100644 index 8fe1b84a7914c..0000000000000 --- a/contrib/sendmail/cf/ostype/sco-uw-2.1.m4 +++ /dev/null @@ -1,24 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# SCO UnixWare 2.1.2 ostype file -# -# Contributed by Christopher Durham <chrisdu@SCO.COM> of SCO. -# -divert(0) -VERSIONID(`$Id: sco-uw-2.1.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $') - -define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fhCEn9')dnl -define(`LOCAL_SHELL_FLAGS', `ehuP')dnl -define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl -define(`LOCAL_MAILER_ARGS',`rmail $u')dnl -define(`confEBINDIR', `/usr/lib')dnl -define(`confTIME_ZONE', `USE_TZ')dnl diff --git a/contrib/sendmail/cf/ostype/sco3.2.m4 b/contrib/sendmail/cf/ostype/sco3.2.m4 deleted file mode 100644 index 89ac637653736..0000000000000 --- a/contrib/sendmail/cf/ostype/sco3.2.m4 +++ /dev/null @@ -1,23 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: sco3.2.m4,v 8.16 1999/04/24 05:37:43 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl -ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `PuhCE9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl -ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/sinix.m4 b/contrib/sendmail/cf/ostype/sinix.m4 deleted file mode 100644 index bcd6b31826bb8..0000000000000 --- a/contrib/sendmail/cf/ostype/sinix.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1996 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: sinix.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl -define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/sendmail.st')')dnl -define(`confEBINDIR', `/usr/ucblib')dnl diff --git a/contrib/sendmail/cf/ostype/solaris2.m4 b/contrib/sendmail/cf/ostype/solaris2.m4 deleted file mode 100644 index 6cf14846d93e4..0000000000000 --- a/contrib/sendmail/cf/ostype/solaris2.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# This ostype file is suitable for use on Solaris 2.x systems that -# have mail.local installed. It is my understanding that this is -# standard as of Solaris 2.5. -# - -divert(0) -VERSIONID(`$Id: solaris2.m4,v 8.22 1999/09/24 21:43:53 ca Exp $') -divert(-1) - -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSmn9') -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')') -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')') -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/solaris2.ml.m4 b/contrib/sendmail/cf/ostype/solaris2.ml.m4 deleted file mode 100644 index 72cb72923e952..0000000000000 --- a/contrib/sendmail/cf/ostype/solaris2.ml.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# This ostype file is suitable for use on Solaris 2.x systems that -# have mail.local installed. It is my understanding that this is -# standard as of Solaris 2.5. -# - -divert(0) -VERSIONID(`$Id: solaris2.ml.m4,v 8.14 1999/04/24 05:37:44 gshapiro Exp $') -divert(-1) - -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSmn9') -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')') -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')') -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/solaris2.pre5.m4 b/contrib/sendmail/cf/ostype/solaris2.pre5.m4 deleted file mode 100644 index c30dda60df6f0..0000000000000 --- a/contrib/sendmail/cf/ostype/solaris2.pre5.m4 +++ /dev/null @@ -1,26 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# This ostype file is suitable for use on Solaris 2.x systems that -# use mail as local mailer which are usually version before 2.5. -# - - -divert(0) -VERSIONID(`$Id: solaris2.pre5.m4,v 8.1 1999/09/25 08:17:44 ca Exp $') -divert(-1) - -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `SnE9') -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')') -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')') -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/solaris8.m4 b/contrib/sendmail/cf/ostype/solaris8.m4 deleted file mode 100644 index 10b9d37bd6ed4..0000000000000 --- a/contrib/sendmail/cf/ostype/solaris8.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# This ostype file is suitable for use on Solaris 8 and later systems, -# taking advantage of mail.local's LMTP support, the existence of -# /var/run and support for IPv6, all of which where introduced in -# Solaris 8. -# - -divert(0) -VERSIONID(`$Id: solaris8.m4,v 8.2 2000/08/23 16:10:49 gshapiro Exp $') -divert(-1) - -ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')') -define(`confEBINDIR', `/usr/lib')dnl -define(`confPID_FILE', `/var/run/sendmail.pid')dnl -define(`_NETINET6_')dnl -FEATURE(`local_lmtp')dnl diff --git a/contrib/sendmail/cf/ostype/sunos3.5.m4 b/contrib/sendmail/cf/ostype/sunos3.5.m4 deleted file mode 100644 index d1d776ec348c5..0000000000000 --- a/contrib/sendmail/cf/ostype/sunos3.5.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: sunos3.5.m4,v 8.10 1999/02/07 07:26:23 gshapiro Exp $') - -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/sunos4.1.m4 b/contrib/sendmail/cf/ostype/sunos4.1.m4 deleted file mode 100644 index 1e821ffe2c7e2..0000000000000 --- a/contrib/sendmail/cf/ostype/sunos4.1.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: sunos4.1.m4,v 8.10 1999/02/07 07:26:24 gshapiro Exp $') - -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/svr4.m4 b/contrib/sendmail/cf/ostype/svr4.m4 deleted file mode 100644 index 3f7706b47703b..0000000000000 --- a/contrib/sendmail/cf/ostype/svr4.m4 +++ /dev/null @@ -1,21 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: svr4.m4,v 8.17 1999/10/21 00:31:41 gshapiro Exp $') - -define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl -define(`LOCAL_SHELL_FLAGS', `ehuP')dnl -define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl -define(`confEBINDIR', `/usr/ucblib')dnl diff --git a/contrib/sendmail/cf/ostype/ultrix4.m4 b/contrib/sendmail/cf/ostype/ultrix4.m4 deleted file mode 100644 index 128c61af3a7d1..0000000000000 --- a/contrib/sendmail/cf/ostype/ultrix4.m4 +++ /dev/null @@ -1,18 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: ultrix4.m4,v 8.11 1999/02/07 07:26:24 gshapiro Exp $') - -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/unicos.m4 b/contrib/sendmail/cf/ostype/unicos.m4 deleted file mode 100644 index d73f3faaec0cc..0000000000000 --- a/contrib/sendmail/cf/ostype/unicos.m4 +++ /dev/null @@ -1,22 +0,0 @@ -divert(-1) -# -# Copyright (c) 2003 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# - -divert(0) -VERSIONID(`$Id: unicos.m4,v 1.1 2003/04/21 17:03:51 ca Exp $') -define(`ALIAS_FILE', `/usr/lib/aliases') -define(`HELP_FILE', `/usr/lib/sendmail.hf') -define(`QUEUE_DIR', `/usr/spool/mqueue') -define(`STATUS_FILE', `/usr/lib/sendmail.st') -MODIFY_MAILER_FLAGS(`LOCAL', `+aSPpmnxXu') -MODIFY_MAILER_FLAGS(`SMTP', `+anpeLC') -define(`LOCAL_SHELL_FLAGS', `pxehu') -define(`confPID_FILE', `/etc/sendmail.pid')dnl diff --git a/contrib/sendmail/cf/ostype/unicosmk.m4 b/contrib/sendmail/cf/ostype/unicosmk.m4 deleted file mode 100644 index e9cec04fe6741..0000000000000 --- a/contrib/sendmail/cf/ostype/unicosmk.m4 +++ /dev/null @@ -1,22 +0,0 @@ -divert(-1) -# -# Copyright (c) 2003 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# - -divert(0) -VERSIONID(`$Id: unicosmk.m4,v 1.1 2003/04/21 17:03:51 ca Exp $') -define(`ALIAS_FILE', `/usr/lib/aliases') -define(`HELP_FILE', `/usr/lib/sendmail.hf') -define(`QUEUE_DIR', `/usr/spool/mqueue') -define(`STATUS_FILE', `/usr/lib/sendmail.st') -MODIFY_MAILER_FLAGS(`LOCAL' , `+aSPpmnxXu') -MODIFY_MAILER_FLAGS(`SMTP', `+anpeLC') -define(`LOCAL_SHELL_FLAGS', `lsDFMpxehuo') -define(`confPID_FILE', `/etc/sendmail.pid')dnl diff --git a/contrib/sendmail/cf/ostype/unicosmp.m4 b/contrib/sendmail/cf/ostype/unicosmp.m4 deleted file mode 100644 index 79543d2ffb58c..0000000000000 --- a/contrib/sendmail/cf/ostype/unicosmp.m4 +++ /dev/null @@ -1,27 +0,0 @@ -divert(-1) -# -# Copyright (c) 2003 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# - -# -# Notes: -# - In UNICOSMP seems that TZ variable is needed that correct time is marked -# to syslog -# - -divert(0) -VERSIONID(`$Id: unicosmp.m4,v 1.1 2003/04/21 17:03:51 ca Exp $') -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehm9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl -ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl -define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl -define(`confTIME_ZONE', USE_TZ)dnl -define(`confEBINDIR', `/usr/lib')dnl diff --git a/contrib/sendmail/cf/ostype/unixware7.m4 b/contrib/sendmail/cf/ostype/unixware7.m4 deleted file mode 100644 index d42f8aba9a012..0000000000000 --- a/contrib/sendmail/cf/ostype/unixware7.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: unixware7.m4,v 8.8 2000/02/26 01:32:04 gshapiro Exp $') -ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl -define(`confEBINDIR', `/usr/lib')dnl -define(`confTIME_ZONE', `USE_TZ')dnl -ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /etc/mail/slocal)')dnl -_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Puho9')dnl -ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `slocal -user $u')')dnl -ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl diff --git a/contrib/sendmail/cf/ostype/unknown.m4 b/contrib/sendmail/cf/ostype/unknown.m4 deleted file mode 100644 index 2d5734ca8e804..0000000000000 --- a/contrib/sendmail/cf/ostype/unknown.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# - -divert(0) -VERSIONID(`$Id: unknown.m4,v 8.9 1999/02/07 07:26:24 gshapiro Exp $') -errprint(`*** ERROR: You have not specified a valid operating system type.') -errprint(` Use the OSTYPE macro to select a valid system type. This') -errprint(` is necessary in order to get the proper pathnames and flags') -errprint(` appropriate for your environment.') diff --git a/contrib/sendmail/cf/ostype/uxpds.m4 b/contrib/sendmail/cf/ostype/uxpds.m4 deleted file mode 100644 index 1ba0346d39450..0000000000000 --- a/contrib/sendmail/cf/ostype/uxpds.m4 +++ /dev/null @@ -1,25 +0,0 @@ -divert(-1) -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# Definitions for UXP/DS (Fujitsu/ICL DS/90 series) -# Diego R. Lopez, CICA (Seville). 1995 -# - -divert(0) -VERSIONID(`$Id: uxpds.m4,v 8.16 1999/10/21 00:31:42 gshapiro Exp $') - -define(`confDEF_GROUP_ID', `6') -define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl -define(`LOCAL_SHELL_FLAGS', `ehuP')dnl -define(`UUCP_MAILER_ARGS', `uux - -r -a$f -gmedium $h!rmail ($u)')dnl -define(`confEBINDIR', `/usr/ucblib')dnl diff --git a/contrib/sendmail/cf/sendmail.schema b/contrib/sendmail/cf/sendmail.schema deleted file mode 100644 index a532f8b33f655..0000000000000 --- a/contrib/sendmail/cf/sendmail.schema +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers. -# All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# $Id: sendmail.schema,v 8.21 2002/11/20 23:13:50 gshapiro Exp $ - -# Note that this schema is experimental at this point as it has had little -# public review. Therefore, it may change in future versions. Feedback -# via sendmail@sendmail.org is encouraged. - -# OID arcs for Sendmail -# enterprise: 1.3.6.1.4.1 -# sendmail: enterprise.6152 -# sendmail-at: sendmail.3.1 -# sendmail-oc: sendmail.3.2 - -########################################################################### -# -# The Sendmail MTA attributes and objectclass -# -########################################################################### - -# attribute sendmailMTACluster cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.10 - NAME 'sendmailMTACluster' - DESC 'cluster name associated with a set of MTAs' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -# attribute sendmailMTAHost cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.11 - NAME 'sendmailMTAHost' - DESC 'host name associated with a MTA cluster' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -#objectClass sendmailMTA -# requires -# objectClass -# allows -# sendmailMTACluster, -# sendmailMTAHost, -# Description - -objectclass ( 1.3.6.1.4.1.6152.10.3.2.10 - NAME 'sendmailMTA' - SUP top STRUCTURAL - DESC 'Sendmail MTA definition' - MAY ( sendmailMTACluster $ sendmailMTAHost $ Description ) ) - -########################################################################### -# -# The Sendmail MTA shared attributes -# -########################################################################### - -# attribute sendmailMTAKey cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.13 - NAME 'sendmailMTAKey' - DESC 'key (left hand side) of an aliases or map entry' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -########################################################################### -# -# The Sendmail MTA Map attributes and objectclasses -# -########################################################################### - -# attribute sendmailMTAMapName cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.14 - NAME 'sendmailMTAMapName' - DESC 'identifier for the particular map' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} SINGLE-VALUE ) - -# attribute sendmailMTAMapValue cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.16 - NAME 'sendmailMTAMapValue' - DESC 'value (right hand side) of a map entry' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -# attribute sendmailMTAMapSearch cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.24 - NAME 'sendmailMTAMapSearch' - DESC 'recursive search for values of a map entry' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -# attribute sendmailMTAMapURL cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.25 - NAME 'sendmailMTAMapURL' - DESC 'recursive search URL for values of a map entry' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -#objectClass sendmailMTAMap -# requires -# objectClass, -# sendmailMTAMapName, -# allows -# sendmailMTACluster, -# sendmailMTAHost, -# Description - -objectclass ( 1.3.6.1.4.1.6152.10.3.2.11 - NAME 'sendmailMTAMap' - SUP sendmailMTA STRUCTURAL - DESC 'Sendmail MTA map definition' - MUST sendmailMTAMapName - MAY ( sendmailMTACluster $ sendmailMTAHost $ Description ) ) - -#objectClass sendmailMTAObject -# requires -# objectClass, -# sendmailMTAMapName, -# sendmailMTAKey, -# allows -# sendmailMTACluster, -# sendmailMTAHost, -# sendmailMTAMapValue, -# sendmailMTAMapSearch, -# sendmailMTAMapURL, -# Description - -objectclass ( 1.3.6.1.4.1.6152.10.3.2.12 - NAME 'sendmailMTAMapObject' - SUP sendmailMTAMap STRUCTURAL - DESC 'Sendmail MTA map object' - MUST ( sendmailMTAMapName $ sendmailMTAKey ) - MAY ( sendmailMTACluster $ sendmailMTAHost $ - sendmailMTAMapValue $ sendmailMTAMapSearch $ - sendmailMTAMapURL $ Description ) ) - - -########################################################################### -# -# The Sendmail MTA Alias attributes and objectclasses -# -########################################################################### - -# attribute sendmailMTAAliasGrouping cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.18 - NAME 'sendmailMTAAliasGrouping' - DESC 'name that identifies a particular aliases grouping' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -# attribute sendmailMTAAliasValue cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.20 - NAME 'sendmailMTAAliasValue' - DESC 'value (right hand side) of an alias' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# attribute sendmailMTAAliasSearch cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.26 - NAME 'sendmailMTAAliasSearch' - DESC 'recursive search for values of an alias' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -# attribute sendmailMTAAliasURL cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.27 - NAME 'sendmailMTAAliasURL' - DESC 'recursive search URL for values of an alias' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -#objectClass sendmailMTAAlias -# requires -# objectClass, -# allows -# sendmailMTAAliasGrouping, -# sendmailMTACluster, -# sendmailMTAHost, -# Description - -objectclass ( 1.3.6.1.4.1.6152.10.3.2.13 - NAME 'sendmailMTAAlias' - SUP sendmailMTA STRUCTURAL - DESC 'Sendmail MTA alias definition' - MAY ( sendmailMTAAliasGrouping $ - sendmailMTACluster $ sendmailMTAHost $ Description ) ) - -#objectClass sendmailMTAAliasObject -# requires -# objectClass, -# sendmailMTAKey, -# allows -# sendmailMTAAliasGrouping, -# sendmailMTACluster, -# sendmailMTAHost, -# sendmailMTAAliasValue, -# sendmailMTAAliasSearch, -# sendmailMTAAliasURL, -# Description - -objectclass ( 1.3.6.1.4.1.6152.10.3.2.14 - NAME 'sendmailMTAAliasObject' - SUP sendmailMTAAlias STRUCTURAL - DESC 'Sendmail MTA alias object' - MUST sendmailMTAKey - MAY ( sendmailMTAAliasGrouping $ sendmailMTACluster $ - sendmailMTAHost $ sendmailMTAAliasValue $ - sendmailMTAAliasSearch $ sendmailMTAAliasURL $ Description ) ) - -########################################################################### -# -# The Sendmail MTA Class attributes and objectclass -# -########################################################################### - -# attribute sendmailMTAClassName cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.22 - NAME 'sendmailMTAClassName' - DESC 'identifier for the class' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} SINGLE-VALUE ) - -# attribute sendmailMTAClassValue cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.23 - NAME 'sendmailMTAClassValue' - DESC 'member of a class' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# attribute sendmailMTAClassSearch cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.28 - NAME 'sendmailMTAClassSearch' - DESC 'recursive search for members of a class' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -# attribute sendmailMTAClassURL cis -attributetype ( 1.3.6.1.4.1.6152.10.3.1.29 - NAME 'sendmailMTAClassURL' - DESC 'recursive search URL for members of a class' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) - -#objectClass sendmailMTAClass -# requires -# objectClass, -# sendmailMTAClassName, -# allows -# sendmailMTACluster, -# sendmailMTAHost, -# sendmailMTAClassValue, -# sendmailMTAClassSearch, -# sendmailMTAClassURL, -# Description - -objectclass ( 1.3.6.1.4.1.6152.10.3.2.15 - NAME 'sendmailMTAClass' - SUP sendmailMTA STRUCTURAL - DESC 'Sendmail MTA class definition' - MUST sendmailMTAClassName - MAY ( sendmailMTACluster $ sendmailMTAHost $ - sendmailMTAClassValue $ sendmailMTAClassSearch $ - sendmailMTAClassURL $ Description ) ) diff --git a/contrib/sendmail/cf/sh/makeinfo.sh b/contrib/sendmail/cf/sh/makeinfo.sh deleted file mode 100644 index d38fd52ab8a70..0000000000000 --- a/contrib/sendmail/cf/sh/makeinfo.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. -# All rights reserved. -# Copyright (c) 1983 Eric P. Allman. All rights reserved. -# Copyright (c) 1988, 1993 -# The Regents of the University of California. All rights reserved. -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the sendmail distribution. -# -# -# $Id: makeinfo.sh,v 8.14 1999/02/07 07:26:25 gshapiro Exp $ -# - -usewhoami=0 -usehostname=0 -for p in `echo $PATH | sed 's/:/ /g'` -do - if [ "x$p" = "x" ] - then - p="." - fi - if [ -f $p/whoami ] - then - usewhoami=1 - if [ $usehostname -ne 0 ] - then - break; - fi - fi - if [ -f $p/hostname ] - then - usehostname=1 - if [ $usewhoami -ne 0 ] - then - break; - fi - fi -done -if [ $usewhoami -ne 0 ] -then - user=`whoami` -else - user=$LOGNAME -fi - -if [ $usehostname -ne 0 ] -then - host=`hostname` -else - host=`uname -n` -fi -echo '#####' built by $user@$host on `date` -echo '#####' in `pwd` | sed 's/\/tmp_mnt//' -echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//' -echo "define(\`__HOST__', $host)dnl" diff --git a/contrib/sendmail/cf/siteconfig/uucp.cogsci.m4 b/contrib/sendmail/cf/siteconfig/uucp.cogsci.m4 deleted file mode 100644 index 33c71511781c5..0000000000000 --- a/contrib/sendmail/cf/siteconfig/uucp.cogsci.m4 +++ /dev/null @@ -1,6 +0,0 @@ -SITE(contessa) -SITE(emind) -SITE(hoptoad) -SITE(nkainc) -SITE(well) -SITE(ferdy) diff --git a/contrib/sendmail/cf/siteconfig/uucp.old.arpa.m4 b/contrib/sendmail/cf/siteconfig/uucp.old.arpa.m4 deleted file mode 100644 index 81d5e9443d99d..0000000000000 --- a/contrib/sendmail/cf/siteconfig/uucp.old.arpa.m4 +++ /dev/null @@ -1,4 +0,0 @@ -SITE(endotsew) -SITE(fateman) -SITE(interlan) -SITE(metron) diff --git a/contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m4 b/contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m4 deleted file mode 100644 index 8b137891791fe..0000000000000 --- a/contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m4 +++ /dev/null @@ -1 +0,0 @@ - diff --git a/contrib/sendmail/cf/siteconfig/uucp.ucbvax.m4 b/contrib/sendmail/cf/siteconfig/uucp.ucbvax.m4 deleted file mode 100644 index ee2c34f60d96d..0000000000000 --- a/contrib/sendmail/cf/siteconfig/uucp.ucbvax.m4 +++ /dev/null @@ -1,73 +0,0 @@ -SITE(Padova) -SITE(Shasta) -SITE(alice) -SITE(allegra) -SITE(amdcad) -SITE(att) -SITE(attunix) -SITE(avsd) -SITE(bellcore bellcor) -SITE(calma) -SITE(cithep) -SITE(cnmat) -SITE(craig) -SITE(craylab) -SITE(decusj) -SITE(decvax, S) -SITE(decwrl) -SITE(dssovax) -SITE(eagle) -SITE(ecovax) -SITE(floyd) -SITE(franz) -SITE(geoff) -SITE(harpo) -SITE(ho3e2) -SITE(hpda) -SITE(hplabs) -SITE(ibmsupt ibmuupa ibmpa) -SITE(iiasa70) -SITE(imagen) -SITE(isunix menlo70) -SITE(kentmth) -SITE(lbl-csam lbl-csa) -SITE(lime) -SITE(mothra) -SITE(mseonyx) -SITE(mtxinu) -SITE(pixar) -SITE(pur-ee) -SITE(purdue) -SITE(pwbd) -SITE(sdcarl) -SITE(sftig) -SITE(sgi olympus) -SITE(sii) -SITE(srivisi) -SITE(ssyx) -SITE(sun) -SITE(trwrb) -SITE(twg) -SITE(ucivax) -SITE(ucla-se) -SITE(ucla-cs) -SITE(ucsbcsl ucsbhub) -SITE(ucscc) -SITE(ucsd) -SITE(ucsfcgl) -SITE(ucsfmis) -SITE(ulysses) -SITE(unisoft) -SITE(unmvax) -SITE(usenix) -SITE(uw) -SITE(uwvax) -SITE(vax135) -SITE(voder) -SITE(wheps) -SITE(whuxle) -SITE(whuxlj) -SITE(xicomp) -SITE(xprin) -SITE(zehntel) -SITE(zilog) |