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# %sccs.include.redist.sh%
8#
9ifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
10ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')
11ifdef(`ESMTP_MAILER_ARGS',, `define(`ESMTP_MAILER_ARGS', `IPC $h')')
12ifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `IPC $h')')
13ifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `IPC $h')')
14POPDIVERT
15#####################################
16###   SMTP Mailer specification   ###
17#####################################
18
19VERSIONID(`@(#)smtp.m4	8.22 (Berkeley) 04/26/95')
20
21Msmtp,		P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, L=990,
22		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
23		A=SMTP_MAILER_ARGS
24Mesmtp,		P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, L=990,
25		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
26		A=ESMTP_MAILER_ARGS
27Msmtp8,		P=[IPC], F=CONCAT(mDFMuX8, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, L=990,
28		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
29		A=SMTP8_MAILER_ARGS
30Mrelay,		P=[IPC], F=CONCAT(mDFMuXa8, SMTP_MAILER_FLAGS), S=11/31, R=61, E=\r\n, L=2040,
31		_OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
32		A=RELAY_MAILER_ARGS
33
34#
35#  envelope sender and masquerading recipient rewriting
36#
37S11
38R$+			$: $>51 $1			sender/recipient common
39R$* :; <@>		$@				list:; special case
40R$*			$@ $>61 $1			qualify unqual'ed names
41
42
43#
44#  header recipient rewriting if not masquerading recipients
45#
46S21
47
48# do sender/recipient common rewriting
49R$+			$: $>51 $1
50
51# unqualified names (e.g., "eric") are qualified by local host
52R$* < @ $* > $*		$@ $1 < @ $2 > $3		already qualified
53R$+			$: $1 < @ $j >			add local domain
54
55
56#
57#  header sender and masquerading recipient rewriting
58#
59S31
60R$+			$: $>51 $1			sender/recipient common
61R:; <@>			$@				list:; special case
62
63# do special header rewriting
64R$* <@> $*		$@ $1 <@> $2			pass null host through
65R< @ $* > $*		$@ < @ $1 > $2			pass route-addr through
66R$=E < @ $=w . >	$@ $1 < @ $2 >			exposed user as is
67R$* < @ $=w . >		$: $1 < @ $2 @ $M >		masquerade as domain
68R$* < @ $+ @ >		$@ $1 < @ $2 >			in case $M undefined
69R$* < @ $+ @ $+ >	$@ $1 < @ $3 >			$M is defined -- use it
70R$*			$@ $>61 $1			qualify unqual'ed names
71
72
73#
74#  convert pseudo-domain addresses to real domain addresses
75#
76S51
77
78# pass <route-addr>s through
79R< @ $+ > $*		$@ < @ $1 > $2			resolve <route-addr>
80
81# output fake domains as user%fake@relay
82ifdef(`BITNET_RELAY',
83`R$+ <@ $+ .BITNET. >	$: $1 % $2 .BITNET < @ $B >	user@host.BITNET
84R$+.BITNET <@ $+:$+ >	$: $1 .BITNET < @ $3 >		strip mailer: part',
85	`dnl')
86ifdef(`_NO_UUCP_', `dnl', `
87# do UUCP heuristics; note that these are shared with UUCP mailers
88R$+ < @ $+ .UUCP. >	$: < $2 ! > $1			convert to UUCP form
89R$+ < @ $* > $*		$@ $1 < @ $2 > $3		not UUCP form
90
91# leave these in .UUCP form to avoid further tampering
92R< $&h ! > $- ! $+	$@ $2 < @ $1 .UUCP. >
93R< $&h ! > $-.$+ ! $+	$@ $3 < @ $1.$2 >
94R< $&h ! > $+		$@ $1 < @ $&h .UUCP. >
95R< $+ ! > $+		$: $1 ! $2 < @ $j >
96R$+ < @ $+ : $+ >	$: $1 < @ $3 >			strip mailer: part')
97
98
99#
100#  common sender and masquerading recipient rewriting
101#
102S61
103
104R$* < @ $* > $*		$@ $1 < @ $2 > $3		already qualified
105R$=E			$@ $1 < @ $j>			show exposed names
106R$+			$: $1 < @ $M >			user w/o host
107R$+ <@>			$: $1 < @ $j >			in case $M undefined
108