138032SpeterPUSHDIVERT(-1)
238032Speter#
3261363Sgshapiro# Copyright (c) 1998-2001, 2006 Proofpoint, Inc. and its suppliers.
464562Sgshapiro#	All rights reserved.
538032Speter# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
638032Speter# Copyright (c) 1988, 1993
738032Speter#	The Regents of the University of California.  All rights reserved.
838032Speter#
938032Speter# By using this file, you agree to the terms and conditions set
1038032Speter# forth in the LICENSE file which can be found at the top level of
1138032Speter# the sendmail distribution.
1238032Speter#
1338032Speter#
1464562Sgshapiro_DEFIFNOT(`_DEF_SMTP_MAILER_FLAGS', `mDFMuX')
1564562Sgshapiro_DEFIFNOT(`SMTP_MAILER_FLAGS',`')
16168515Sgshapiro_DEFIFNOT(`SMTP_MAILER_LL',`990')
17168515Sgshapiro_DEFIFNOT(`RELAY_MAILER_LL',`2040')
1864562Sgshapiro_DEFIFNOT(`RELAY_MAILER_FLAGS', `SMTP_MAILER_FLAGS')
1964562Sgshapiroifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `TCP $h')')
2064562Sgshapiroifdef(`ESMTP_MAILER_ARGS',, `define(`ESMTP_MAILER_ARGS', `TCP $h')')
2164562Sgshapiroifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `TCP $h')')
2264562Sgshapiroifdef(`DSMTP_MAILER_ARGS',, `define(`DSMTP_MAILER_ARGS', `TCP $h')')
2364562Sgshapiroifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `TCP $h')')
2490792Sgshapirodefine(`_SMTP_QGRP', `ifelse(defn(`SMTP_MAILER_QGRP'),`',`', ` Q=SMTP_MAILER_QGRP,')')dnl
2590792Sgshapirodefine(`_ESMTP_QGRP', `ifelse(defn(`ESMTP_MAILER_QGRP'),`',`', ` Q=ESMTP_MAILER_QGRP,')')dnl
2690792Sgshapirodefine(`_SMTP8_QGRP', `ifelse(defn(`SMTP8_MAILER_QGRP'),`',`', ` Q=SMTP8_MAILER_QGRP,')')dnl
2790792Sgshapirodefine(`_DSMTP_QGRP', `ifelse(defn(`DSMTP_MAILER_QGRP'),`',`', ` Q=DSMTP_MAILER_QGRP,')')dnl
2890792Sgshapirodefine(`_RELAY_QGRP', `ifelse(defn(`RELAY_MAILER_QGRP'),`',`', ` Q=RELAY_MAILER_QGRP,')')dnl
2938032SpeterPOPDIVERT
3038032Speter#####################################
3138032Speter###   SMTP Mailer specification   ###
3238032Speter#####################################
3338032Speter
34266692SgshapiroVERSIONID(`$Id: smtp.m4,v 8.66 2013-11-22 20:51:14 ca Exp $')
3538032Speter
3638032Speter#
3764562Sgshapiro#  common sender and masquerading recipient rewriting
3838032Speter#
3990792SgshapiroSMasqSMTP
4064562SgshapiroR$* < @ $* > $*		$@ $1 < @ $2 > $3		already fully qualified
4164562SgshapiroR$+			$@ $1 < @ *LOCAL* >		add local qualification
4238032Speter
4338032Speter#
4438032Speter#  convert pseudo-domain addresses to real domain addresses
4538032Speter#
4690792SgshapiroSPseudoToReal
4738032Speter
4838032Speter# pass <route-addr>s through
4938032SpeterR< @ $+ > $*		$@ < @ $1 > $2			resolve <route-addr>
5038032Speter
5138032Speter# output fake domains as user%fake@relay
5238032Speterifdef(`BITNET_RELAY',
5338032Speter`R$+ <@ $+ .BITNET. >	$: $1 % $2 .BITNET < @ $B >	user@host.BITNET
5490792SgshapiroR$+.BITNET <@ $~[ $*:$+ >	$: $1 .BITNET < @ $4 >	strip mailer: part',
5538032Speter	`dnl')
5638032Speterifdef(`_NO_UUCP_', `dnl', `
5738032Speter# do UUCP heuristics; note that these are shared with UUCP mailers
5838032SpeterR$+ < @ $+ .UUCP. >	$: < $2 ! > $1			convert to UUCP form
5938032SpeterR$+ < @ $* > $*		$@ $1 < @ $2 > $3		not UUCP form
6038032Speter
6138032Speter# leave these in .UUCP form to avoid further tampering
6238032SpeterR< $&h ! > $- ! $+	$@ $2 < @ $1 .UUCP. >
6338032SpeterR< $&h ! > $-.$+ ! $+	$@ $3 < @ $1.$2 >
6438032SpeterR< $&h ! > $+		$@ $1 < @ $&h .UUCP. >
6538032SpeterR< $+ ! > $+		$: $1 ! $2 < @ $Y >		use UUCP_RELAY
6690792SgshapiroR$+ < @ $~[ $* : $+ >	$@ $1 < @ $4 >			strip mailer: part
6738032SpeterR$+ < @ >		$: $1 < @ *LOCAL* >		if no UUCP_RELAY')
6838032Speter
6938032Speter
7038032Speter#
7164562Sgshapiro#  envelope sender rewriting
7238032Speter#
7390792SgshapiroSEnvFromSMTP
7464562SgshapiroR$+			$: $>PseudoToReal $1		sender/recipient common
7564562SgshapiroR$* :; <@>		$@				list:; special case
7664562SgshapiroR$*			$: $>MasqSMTP $1		qualify unqual'ed names
7764562SgshapiroR$+			$: $>MasqEnv $1			do masquerading
7838032Speter
7938032Speter
8064562Sgshapiro#
8164562Sgshapiro#  envelope recipient rewriting --
8264562Sgshapiro#  also header recipient if not masquerading recipients
8364562Sgshapiro#
8490792SgshapiroSEnvToSMTP
8564562SgshapiroR$+			$: $>PseudoToReal $1		sender/recipient common
8664562SgshapiroR$+			$: $>MasqSMTP $1		qualify unqual'ed names
8764562SgshapiroR$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2
8838032Speter
8938032Speter#
9064562Sgshapiro#  header sender and masquerading header recipient rewriting
9164562Sgshapiro#
9290792SgshapiroSHdrFromSMTP
9364562SgshapiroR$+			$: $>PseudoToReal $1		sender/recipient common
9464562SgshapiroR:; <@>			$@				list:; special case
9564562Sgshapiro
9664562Sgshapiro# do special header rewriting
9764562SgshapiroR$* <@> $*		$@ $1 <@> $2			pass null host through
9864562SgshapiroR< @ $* > $*		$@ < @ $1 > $2			pass route-addr through
9964562SgshapiroR$*			$: $>MasqSMTP $1		qualify unqual'ed names
10064562SgshapiroR$+			$: $>MasqHdr $1			do masquerading
10164562Sgshapiro
10264562Sgshapiro
10364562Sgshapiro#
10438032Speter#  relay mailer header masquerading recipient rewriting
10538032Speter#
10690792SgshapiroSMasqRelay
10764562SgshapiroR$+			$: $>MasqSMTP $1
10864562SgshapiroR$+			$: $>MasqHdr $1
10938032Speter
110168515SgshapiroMsmtp,		P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, SMTP_MAILER_FLAGS), `SMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
11190792Sgshapiro		_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
11264562Sgshapiro		A=SMTP_MAILER_ARGS
113168515SgshapiroMesmtp,		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=SMTP_MAILER_LL,
11490792Sgshapiro		_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
11564562Sgshapiro		A=ESMTP_MAILER_ARGS
116168515SgshapiroMsmtp8,		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=SMTP_MAILER_LL,
11790792Sgshapiro		_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
11864562Sgshapiro		A=SMTP8_MAILER_ARGS
119168515SgshapiroMdsmtp,		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=SMTP_MAILER_LL,
12090792Sgshapiro		_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
12164562Sgshapiro		A=DSMTP_MAILER_ARGS
122168515SgshapiroMrelay,		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=RELAY_MAILER_LL,
12390792Sgshapiro		_OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')_OPTINS(`RELAY_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')T=DNS/RFC822/SMTP,_RELAY_QGRP
12464562Sgshapiro		A=RELAY_MAILER_ARGS
125