This file is indexed.

/etc/mgetty/new_fax is in mgetty-fax 1.1.36-2.1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#!/bin/sh

# This new_fax script is based on Martin Spott's new_fax.mime2.
# I have tightened the error checking, replaced the invocation
# of pnmscale (which used copious amounts of memory) with the
# correct stretch option for g32pbm, added support for other
# image types, and included an informative message body.
#                   Ed Doolittle <dolittle@math.toronto.edu>
#
# CVS: $Id: new_fax.mime4,v 1.1 1999/04/17 10:38:50 gert Exp $

# Martin's original comments:

# A script to send mgetty's incoming faxes via MIME encoded EMail;
# by Martin Spott (martin.spott@uni-duisburg.de), I borrowed one or two
# lines from other's ....
#
# I wrote this one because I wanted a program using as little specialized
# MIME tools as possible.
#
# This 'new_fax' only needs ' g32pbm', 'pnmscale' and 'pnmtotiff' from the
# 'pbmplus' package, 'base64-encode' from the 'mime-codecs' packages, and
# the rest is standard Unix tools.
# It was tested with thsmail under Linux and PMMail under OS/2 as frontends.

# This script is called when a message was recorded. 
# It gets the following arguments:
#      $1 : the hangup code
#      $2 : the remote id
#      $3 : the number of pages
#      $4... : the file names

# Place the correct EMail-adresses here !!!
USER="postmaster"

# Where to locate the binaries listed below
PATH=/usr/sbin:/usr/local/bin:/usr/bin:/bin:$PATH

# Select image type by uncommenting one of the following lines:
PBMTOX=pnmtopng 	; MIME_TYPE="image/png"               ; FILE_EXTN=png
#PBMTOX=ppmtogif 	; MIME_TYPE="image/gif"               ; FILE_EXTN=gif
#PBMTOX=pnmtotiff 	; MIME_TYPE="image/tiff"              ; FILE_EXTN=tif
# PBM files may be huge
#PBMTOX=cat       	; MIME_TYPE="image/x-portable-bitmap" ; FILE_EXTN=pbm
# compressed PBM files
#PBMTOX=gzip       	; MIME_TYPE="application/octet-stream"; FILE_EXTN=pbm.gz
#PBMTOX=NONE       	; MIME_TYPE="image/fax-g3"; FILE_EXTN=g3

# The binaries we need; please check carefully !!!
BASENAME=basename
CAT=cat
ECHO=echo
G3TOPBM=g32pbm
#MMENCODE=mmencode
MMENCODE=mimencode
RM=rm
SED=sed
SENDMAIL=sendmail

# How mgetty calls us.
HANGUP_CODE="$1"
SENDER_ID="$2"
NUMBER_PAGES="$3"

# Some miscellaneous data and filenames.
TMP=/tmp
MAIL_MESS=`/bin/tempfile -pMESS_`
ERRO_MESS=`/bin/tempfile -pERRO_`
IMAG_FILE=`/bin/tempfile -pTIFF_`
MIME_MESS=`/bin/tempfile -pMAIL_`
if [ ! -f $MAIL_MESS ] ||\
    [ ! -f $ERRO_MESS ] ||\
    [ ! -f $IMAG_FILE ] ||\
    [ ! -f $MIME_MESS ]
then
  echo "Could not create one of the temporary files. Aborting...";
  exit 1;
fi

umask 077

# Clean up from previous invocations and trap errors
# $RM -f $MAIL_MESS $ERRO_MESS $IMAG_FILE $MIME_MESS
trap "$RM -f $MAIL_MESS $ERRO_MESS $IMAG_FILE $MIME_MESS; exit" 0 1 2 15

# Essential lines to put into the header of a MIME mail.
HEADERLINE_1="MIME-Version: 1.0"
HEADERLINE_2="Content-Type: multipart/mixed; boundary="attachment""

# Lines to put into the header of each MIME attachment.
ATTACHMENT_HEADERLINE_1="--attachment"
ATTACHMENT_HEADERLINE_2="Content-Type: $MIME_TYPE"
ATTACHMENT_HEADERLINE_3="Content-Transfer-Encoding: base64"

# Line to close the attachment section of a MIME mail.
ATTACHMENT_ENDLINE="--attachment--"

# Now we build our MIME mailheader using commandline arguments.
$ECHO "Subject: incoming FAX from $2 with $3 pages" >> $MAIL_MESS
$ECHO "$HEADERLINE_1"                               >> $MAIL_MESS
$ECHO "$HEADERLINE_2"                               >> $MAIL_MESS
$ECHO ""                                            >> $MAIL_MESS
$ECHO "This is a MIME encoded email."               >> $MAIL_MESS
$ECHO "$ATTACHMENT_HEADERLINE_1"                    >> $MAIL_MESS
$ECHO ""                                            >> $MAIL_MESS
$ECHO "Incoming FAX from $2 with $3 pages"          >> $MAIL_MESS
$ECHO "Hangup code was $1"                          >> $MAIL_MESS
$ECHO ""                                            >> $MAIL_MESS

# To handle each attachment we skip the first three arguments (those we
# already used for the header).
shift 3

# Handling of each fax page, whose names are given via commandline arguments.
# We have to cut off the absolute path via 'basename' and remove the dot
# which separates the page number. Also we add a filename extension and fit
# the result as filename into our attachment header - some mail frontends
# need this.
#
for i in $@
do
if [ "$PBMTOX" = "NONE" ]; then
	IMAG_FILE=$i
else
	# We use the second character in the filename to identify the
	# resolution of our incoming fax, so we can easily scale the fax for
	# display on a screen.
	RESOLUTION=`$BASENAME $i | $SED 's/.\(.\).*/\1/'`
	if [ "$RESOLUTION" = "n" ]
	then
		STRETCH=-s
	else
		STRETCH=
	fi
#
	# The fax is converted from G3 to PBM, it is scaled and then
	# converted to TIFF.
	# We write it into a temporary file, because my 'mmencode' doesn't
	# handle standard input correctly.
	$CAT $i                                        2>> $ERRO_MESS \
	| $G3TOPBM $STRETCH                            2>> $ERRO_MESS \
	| $PBMTOX                        > $IMAG_FILE 2>> $ERRO_MESS
fi
#
	# Now we put the header for each attachment into our MIME mail.
	$ECHO "$ATTACHMENT_HEADERLINE_1" >> $MIME_MESS
	$ECHO "$ATTACHMENT_HEADERLINE_2; name=\"`$BASENAME $i|cut -f1 -d\.``$BASENAME $i|cut -f2 -d \.`.$FILE_EXTN\""    >> $MIME_MESS
	$ECHO "$ATTACHMENT_HEADERLINE_3" >> $MIME_MESS
	$ECHO ""                         >> $MIME_MESS
#
	# Here we do base64 encoding of out TIFF data and add the result
	# into our MIME mail as attachment.
	/usr/bin/perl -MMIME::Base64 -e '$_=join("",<>); print encode_base64($_)' < $IMAG_FILE          >> $MIME_MESS 2>> $ERRO_MESS
#
	# To clean up temporary TIFF data.
	$RM -f $IMAG_FILE
#
	# Each attachment has to end with a blank line (I believe).
	$ECHO ""                         >> $MIME_MESS
done

# To close the attachment section of our mail.
$ECHO "$ATTACHMENT_ENDLINE"              >> $MIME_MESS

# Assemble the message
if [ -s $ERRO_MESS ]; then
	$ECHO "Errors, warnings, and chatter encountered during processing:" \
                                         >> $MAIL_MESS
	$CAT $ERRO_MESS                  >> $MAIL_MESS
	$ECHO ""                         >> $MAIL_MESS
fi
$CAT $MIME_MESS                          >> $MAIL_MESS

# Sending the mail.
$SENDMAIL < $MAIL_MESS $USER

# Cleaning up mail data.
$RM -f $MAIL_MESS $ERRO_MESS $IMAG_FILE $MIME_MESS
trap "" 0 1 2 15

# Cheerio !
exit 0