xref: /386bsd/usr/src/usr.sbin/sendmail/cf/mailer/smtp.m4 (revision a2142627)
1PUSHDIVERT(-1)
2#
3# Copyright (c) 1983 Eric P. Allman
4# Copyright (c) 1988, 1993
5#	The Regents of the University of California.  All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10# 1. Redistributions of source code must retain the above copyright
11#    notice, this list of conditions and the following disclaimer.
12# 2. Redistributions in binary form must reproduce the above copyright
13#    notice, this list of conditions and the following disclaimer in the
14#    documentation and/or other materials provided with the distribution.
15# 3. All advertising materials mentioning features or use of this software
16#    must display the following acknowledgement:
17#	This product includes software developed by the University of
18#	California, Berkeley and its contributors.
19# 4. Neither the name of the University nor the names of its contributors
20#    may be used to endorse or promote products derived from this software
21#    without specific prior written permission.
22#
23# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33# SUCH DAMAGE.
34#
35ifdef(`SMTP_MAILER_FLAGS',,
36	`define(`SMTP_MAILER_FLAGS',
37		`ifdef(`_OLD_SENDMAIL_', `L', `')')')
38POPDIVERT
39#####################################
40###   SMTP Mailer specification   ###
41#####################################
42
43VERSIONID(`@(#)smtp.m4	8.15 (Berkeley) 2/14/94')
44
45Msmtp,		P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n,
46		ifdef(`_OLD_SENDMAIL_',, `L=990, ')ifdef(`SMTP_MAILER_MAX', `M=SMTP_MAILER_MAX, ')A=IPC $h
47Mesmtp,		P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n,
48		ifdef(`_OLD_SENDMAIL_',, `L=990, ')ifdef(`SMTP_MAILER_MAX', `M=SMTP_MAILER_MAX, ')A=IPC $h
49Mrelay,		P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=61, E=\r\n,
50		ifdef(`_OLD_SENDMAIL_',, `L=2040, ')A=IPC $h
51
52#
53#  envelope sender and masquerading recipient rewriting
54#
55S11
56R$+			$: $>51 $1			sender/recipient common
57R$* :; <@>		$@ $1 :;			list:; special case
58R$*			$@ $>61 $1			qualify unqual'ed names
59
60
61#
62#  header recipient rewriting if not masquerading recipients
63#
64S21
65
66# do sender/recipient common rewriting
67R$+			$: $>51 $1
68
69# unqualified names (e.g., "eric") are qualified by local host
70R$* < @ $* > $*		$@ $1 < @ $2 > $3		already qualified
71R$+			$: $1 < @ $j >			add local domain
72
73
74#
75#  header sender and masquerading recipient rewriting
76#
77S31
78R$+			$: $>51 $1			sender/recipient common
79R$* :; <@>		$@ $1 :;			list:; special case
80
81# do special header rewriting
82R$* <@> $*		$@ $1 <@> $2			pass null host through
83R< @ $* > $*		$@ < @ $1 > $2			pass route-addr through
84R$=E < @ $=w . >	$@ $1 < @ $2 >			exposed user as is
85R$* < @ $=w . >		$: $1 < @ $2 @ $M >		masquerade as domain
86R$* < @ $+ @ >		$@ $1 < @ $2 >			in case $M undefined
87R$* < @ $+ @ $+ >	$@ $1 < @ $3 >			$M is defined -- use it
88R$*			$@ $>61 $1			qualify unqual'ed names
89
90
91#
92#  convert pseudo-domain addresses to real domain addresses
93#
94S51
95
96# pass <route-addr>s through
97R< @ $+ > $*		$@ < @ $1 > $2			resolve <route-addr>
98
99# output fake domains as user%fake@relay
100ifdef(`BITNET_RELAY',
101`R$+ <@ $+ .BITNET. >	$: $1 % $2 .BITNET < @ $B >	user@host.BITNET
102R$+.BITNET <@ $+:$+ >	$: $1 .BITNET < @ $3 >		strip mailer: part',
103	`dnl')
104ifdef(`_NO_UUCP_', `dnl', `
105# do UUCP heuristics; note that these are shared with UUCP mailers
106R$+ < @ $+ .UUCP. >	$: < $2 ! > $1			convert to UUCP form
107R$+ < @ $* > $*		$@ $1 < @ $2 > $3		not UUCP form
108
109# leave these in .UUCP form to avoid further tampering
110R< $&h ! > $- ! $+	$@ $2 < @ $1 .UUCP. >
111R< $&h ! > $-.$+ ! $+	$@ $3 < @ $1.$2 >
112R< $&h ! > $+		$@ $1 < @ $&h .UUCP. >
113R< $+ ! > $+		$: $1 ! $2 < @ $Y >
114R$+ < @ >		$: $1 < @ $j >			in case $Y undefined
115R$+ < @ $+ : $+ >	$: $1 < @ $3 >			strip mailer: part')
116
117
118#
119#  common sender and masquerading recipient rewriting
120#
121S61
122
123R$* < @ $* > $*		$@ $1 < @ $2 > $3		already qualified
124R$=E			$@ $1 < @ $j>			show exposed names
125R$+			$: $1 < @ $M >			user w/o host
126R$+ <@>			$: $1 < @ $j >			in case $M undefined
127