151225SericPUSHDIVERT(-1)
251225Seric#
351225Seric# Copyright (c) 1983 Eric P. Allman
462501Sbostic# Copyright (c) 1988, 1993
562501Sbostic#	The Regents of the University of California.  All rights reserved.
651225Seric#
751225Seric# %sccs.include.redist.sh%
851225Seric#
967469Sericifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
1067912Sericifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')
1167912Sericifdef(`ESMTP_MAILER_ARGS',, `define(`ESMTP_MAILER_ARGS', `IPC $h')')
1267912Sericifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `IPC $h')')
1367912Sericifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `IPC $h')')
1451225SericPOPDIVERT
1551225Seric#####################################
1651225Seric###   SMTP Mailer specification   ###
1751225Seric#####################################
1851225Seric
19*68892SericVERSIONID(`@(#)smtp.m4	8.22 (Berkeley) 04/26/95')
2051225Seric
21*68892SericMsmtp,		P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, L=990,
22*68892Seric		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
23*68892Seric		A=SMTP_MAILER_ARGS
24*68892SericMesmtp,		P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, L=990,
25*68892Seric		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
26*68892Seric		A=ESMTP_MAILER_ARGS
27*68892SericMsmtp8,		P=[IPC], F=CONCAT(mDFMuX8, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, L=990,
28*68892Seric		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
29*68892Seric		A=SMTP8_MAILER_ARGS
30*68892SericMrelay,		P=[IPC], F=CONCAT(mDFMuXa8, SMTP_MAILER_FLAGS), S=11/31, R=61, E=\r\n, L=2040,
31*68892Seric		_OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
32*68892Seric		A=RELAY_MAILER_ARGS
3351225Seric
3464748Seric#
3564748Seric#  envelope sender and masquerading recipient rewriting
3664748Seric#
3751225SericS11
3864803SericR$+			$: $>51 $1			sender/recipient common
3968764SericR$* :; <@>		$@				list:; special case
4065196SericR$*			$@ $>61 $1			qualify unqual'ed names
4151225Seric
4264748Seric
4364748Seric#
4464748Seric#  header recipient rewriting if not masquerading recipients
4564748Seric#
4664748SericS21
4764748Seric
4851686Seric# do sender/recipient common rewriting
4964803SericR$+			$: $>51 $1
5051686Seric
5164748Seric# unqualified names (e.g., "eric") are qualified by local host
5258117SericR$* < @ $* > $*		$@ $1 < @ $2 > $3		already qualified
5364748SericR$+			$: $1 < @ $j >			add local domain
5451686Seric
5554018Seric
5664748Seric#
5764748Seric#  header sender and masquerading recipient rewriting
5864748Seric#
5964748SericS31
6064803SericR$+			$: $>51 $1			sender/recipient common
6168764SericR:; <@>			$@				list:; special case
6251686Seric
6364748Seric# do special header rewriting
6464748SericR$* <@> $*		$@ $1 <@> $2			pass null host through
6564748SericR< @ $* > $*		$@ < @ $1 > $2			pass route-addr through
6664748SericR$=E < @ $=w . >	$@ $1 < @ $2 >			exposed user as is
6766084SericR$* < @ $=w . >		$: $1 < @ $2 @ $M >		masquerade as domain
6866084SericR$* < @ $+ @ >		$@ $1 < @ $2 >			in case $M undefined
6966084SericR$* < @ $+ @ $+ >	$@ $1 < @ $3 >			$M is defined -- use it
7065196SericR$*			$@ $>61 $1			qualify unqual'ed names
7151686Seric
7251686Seric
7364748Seric#
7465217Seric#  convert pseudo-domain addresses to real domain addresses
7564748Seric#
7664803SericS51
7751686Seric
7851225Seric# pass <route-addr>s through
7951245SericR< @ $+ > $*		$@ < @ $1 > $2			resolve <route-addr>
8051225Seric
8151225Seric# output fake domains as user%fake@relay
8251225Sericifdef(`BITNET_RELAY',
8365175Seric`R$+ <@ $+ .BITNET. >	$: $1 % $2 .BITNET < @ $B >	user@host.BITNET
8465183SericR$+.BITNET <@ $+:$+ >	$: $1 .BITNET < @ $3 >		strip mailer: part',
8551225Seric	`dnl')
8665217Sericifdef(`_NO_UUCP_', `dnl', `
8765217Seric# do UUCP heuristics; note that these are shared with UUCP mailers
8865217SericR$+ < @ $+ .UUCP. >	$: < $2 ! > $1			convert to UUCP form
8965217SericR$+ < @ $* > $*		$@ $1 < @ $2 > $3		not UUCP form
9064748Seric
9165217Seric# leave these in .UUCP form to avoid further tampering
9265217SericR< $&h ! > $- ! $+	$@ $2 < @ $1 .UUCP. >
9365217SericR< $&h ! > $-.$+ ! $+	$@ $3 < @ $1.$2 >
9465217SericR< $&h ! > $+		$@ $1 < @ $&h .UUCP. >
9567606SericR< $+ ! > $+		$: $1 ! $2 < @ $j >
9665217SericR$+ < @ $+ : $+ >	$: $1 < @ $3 >			strip mailer: part')
9764748Seric
9865217Seric
9964748Seric#
10064748Seric#  common sender and masquerading recipient rewriting
10164748Seric#
10264803SericS61
10364803Seric
10465196SericR$* < @ $* > $*		$@ $1 < @ $2 > $3		already qualified
10564748SericR$=E			$@ $1 < @ $j>			show exposed names
10664748SericR$+			$: $1 < @ $M >			user w/o host
10764748SericR$+ <@>			$: $1 < @ $j >			in case $M undefined
108