Previous | Contents | Index |
As described above, the CHARSET-CONVERSION
mapping is also
used to effect the conversion of attachments between MIME and several
proprietary mail formats. Use of the Pathworks Mail conversion is
described in Section 18.3.
The following sections give examples of some of the other sorts of
message reformatting which can be affected with the
CHARSET-CONVERSION
mapping.
6.3.1 Non-MIME Binary Attachment Conversion
Mail in certain non-standard (non-MIME) formats, e.g., mail in
certain proprietary Sun formats or mail from the Microsoft Mail
(MSMAIL) SMTP gateway, is automatically converted into MIME format if
CHARSET-CONVERSION
is enabled for any of the channels
involved in handling the message. If you have a tcp_local
channel then it is normally the incoming channel for messages from a
Microsoft Mail SMTP gateway, and the following will enable the
conversion of messages delivered to your local users:
CHARSET-CONVERSION IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT Yes |
mr_local
channel:3
CHARSET-CONVERSION IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT Yes IN-CHAN=tcp_local;OUT-CHAN=mr_local;CONVERT Yes |
OUT-CHAN=*
instead of OUT-CHAN=l
. However,
this may bring about an increase in message processing overhead as all
messages coming in the tcp_local
channel will now be
scrutinized instead of just those bound to specific channels.
More importantly, such undiscriminated conversions may place your system in the dubious and frowned upon position of converting messages --- not necessarily your own site's --- which are merely passing through your system, a situation in which you should merely be acting as a transport and not necessarily altering anything beyond the message envelope and related transport information. |
To convert MIME into the format Microsoft Mail SMTP gateway
understands, use a separate channel in your PMDF configuration for the
Microsoft Mail SMTP gateway, e.g., tcp_msmail
,
and put the following in the mappings.
file:
CHARSET-CONVERSION IN-CHAN=*;OUT-CHAN=tcp_msmail;CONVERT RFC1154 |
6.3.2 Relabelling MIME Headers
Some user agents or gateways may emit messages with MIME headers which
are less informative than they might be, but which nevertheless contain
enough information to construct more precise MIME headers. Although the
best solution is to properly configure such user agents or gateways, if
they are not under your control, you can instead ask PMDF to try to
reconstruct more useful MIME headers.
If the first probe of the CHARSET-CONVERSION
mapping table
yields a "Yes
" or
"Always
" keyword, then PMDF will check for the
presence of a conversions file, (named by the logical
PMDF_CONVERSION_FILE
on OpenVMS or the
PMDF_CONVERSION_FILE
option in the PMDF tailor file on
UNIX, hence usually PMDF_TABLE:conversions.
on OpenVMS, or
/pmdf/table/conversions
on UNIX, or
C:\pmdf\table\conversions
on NT). If a conversions file
exists, then PMDF will look in it for an entry with
RELABEL=1
and if it finds such an entry, PMDF will then
perform any MIME relabellings specified in the entry. See
Section 22.1.3 for complete information on PMDF conversions file
entries.
For instance, the combination of a CHARSET-CONVERSION
table such as
CHARSET-CONVERSION IN-CHAN=tcp_local;OUT-CHAN=mr_local;CONVERT Yes |
out-chan=mr_local; in-type=application; in-subtype=octet-stream; in-parameter-name-0=name; in-parameter-value-0=*.ps; out-type=application; out-subtype=postscript; parameter-copy-0=*; relabel=1 out-chan=mr_local; in-type=application; in-subtype=octet-stream; in-disposition=attachment; in-dparameter-name-0=filename; in-dparameter-value-0=*.ps; out-type=application; out-subtype=postscript; out-disposition=attachment; dparameter-copy-0=*; relabel=1 out-chan=mr_local; in-type=application; in-subtype=octet-stream; in-parameter-name-0=name; in-parameter-value-0=*.msw; out-type=application; out-subtype=msword; parameter-copy-0=*; relabel=1 out-chan=mr_local; in-type=application; in-subtype=octet-stream; in-disposition=attachment; in-dparameter-name-0=filename; in-dparameter-value-0=*.msw; out-type=application; out-subtype=msword; out-disposition=attachment; dparameter-copy-0=*; relabel=1 |
tcp_local
channel and are routed to the mr_local
channel, and that
arrive originally with MIME labelling of
application/octet-stream
but have a filename parameter
with the extension "ps
" or
"msw
", being relabelled as
application/postscript
or application/msword
,
respectively. (Note that this more precise labelling is what the
original user agent or gateway should have performed itself.) Such a
relabelling can be particularly useful in conjunction with a
MIME-CONTENT-TYPES-TO-MR
mapping table, used to convert
such resulting MIME types back into appropriate MRTYPE
tags, which needs precise MIME labelling in order to function
optimally; if all content types were left labelled only as
application/octet-stream
, the
MIME-CONTENT-TYPES-TO-MR
mapping table could only, at
best, unconditionally convert all such to one sort of
MRTYPE
.
With the above example and MIME-CONTENT-TYPES-TO-MR
mapping table entries including
APPLICATION/POSTSCRIPT PS APPLICATION/MSWORD MW |
Content-type: application/octet-stream; name=stuff.ps |
Content-type: application/postscript |
MRTYPE
tag PS
to
let Message Router know to expect PostScript.
Sometimes it is useful to do relabelling in the opposite sort of
direction, "downgrading" specific MIME attachment labelling
to application/octet-stream
, the label for generic binary
data. In particular, "downgrading" specific MIME labelling is
often used in conjunction with the convert_octet_stream
channel keyword on the mime_to_x400
channel (PMDF-X400) or
xapi_local
channel (PMDF-MB400) to force all
binary MIME attachments to be converted to X.400 bodypart 14 format.
For instance, the combination of a CHARSET-CONVERSION
mapping table such as
CHARSET-CONVERSION IN-CHAN=*;OUT-CHAN=mime_to_x400*;CONVERT Yes |
out-chan=mime_to_x400*; in-type=application; in-subtype=*; out-type=application; out-subtype=octet-stream; relabel=1 out-chan=mime_to_x400*; in-type=audio; in-subtype=*; out-type=application; out-subtype=octet-stream; relabel=1 out-chan=mime_to_x400*; in-type=image; in-subtype=*; out-type=application; out-subtype=octet-stream; relabel=1 out-chan=mime_to_x400*; in-type=video; in-subtype=*; out-type=application; out-subtype=octet-stream; relabel=1 |
application/octet-stream
labelling (so that
convert_octet_stream
will apply) for all messages going to
mime_to_x400*
channels.
6.3.3 MacMIME Format Conversions
Macintosh files have two parts, a resource fork which contains
Macintosh specific information, and a data fork which contains data
usable on other platforms. This introduces an additional complexity
when transporting Macintosh files, as there are four different formats
in common use for transporting the Macintosh file parts.5
Three of the formats, Applesingle, Binhex, and Macbinary, consist of
the Macintosh resource fork and Macintosh data fork encoded together in
one piece. The fourth format, Appledouble, is a multipart format with
the resource fork and data fork in separate parts. Appledouble is hence
the format most likely to be useful on non-Macintosh platforms, as in
this case the resource fork part may be ignored and the data fork part
is available for use by non-Macintosh applications. But the other
formats may be useful when sending specifically to Macintoshes.
PMDF can convert between these various Macintosh formats. The
CHARSET-CONVERSION
keywords Appledouble
Applesingle
, Binhex
, or
Macbinary
tell PMDF to convert other MacMIME structured
parts to a MIME structure of multipart/appledouble
,
application/applefile
,
application/mac-binhex40
, or
application/macbinary
, respectively. Further the
Binhex
or Macbinary
keywords also request
conversion to the specified format of non-MacMIME format parts that do
nevertheless contain X-MAC-TYPE
and
X-MAC-CREATOR
parameters on the MIME
Content-type:
header. The CHARSET-CONVERSION
keyword Block
tells PMDF to extract just the data fork
from MacMIME format parts, discarding the resource fork; (since this
loses information, use of Appledouble
instead is generally
preferable).
For instance, the following CHARSET-CONVERSION
table would
tell PMDF to convert to Appledouble format when delivering to the VMS
MAIL mailbox or a GroupWise postoffice, and to convert to Macbinary
format when delivering to the Message Router channel:
CHARSET-CONVERSION IN-CHAN=*;OUT-CHAN=l;CONVERT Appledouble IN-CHAN=*;OUT-CHAN=wpo_local;CONVERT Appledouble IN-CHAN=*;OUT-CHAN=mr_local;CONVERT Macbinary |
X-MAC-TYPE
and X-MAC-CREATOR
parameters on the MIME
Content-type:
header.
When doing conversion to Appledouble or Block format, the
MAC-TO-MIME-CONTENT-TYPES
mapping table may be used to
indicate what specific MIME label to put on the data fork of the
Appledouble part, or the Block part, depending on what the Macintosh
creator and Macintosh type information in the original Macintosh file
were. Probes for this table have the form
format|type|creator|filename
where format
is one of SINGLE
,
BINHEX
or MACBINARY
, where
type
and creator
are the
Macintosh type and Macintosh creator information in hex, respectively,
and where filename
is the file name. For
instance, to convert to Appledouble when sending to the l
channel and when doing so to use specific MIME labels for any MS Word
or PostScript documents converted from MACBINARY or BINHEX parts,
appropriate tables might be:
CHARSET-CONVERSION IN-CHAN=*;OUT-CHAN=l;CONVERT Appledouble MAC-TO-MIME-CONTENT-TYPES ! PostScript MACBINARY|45505346|76677264|* APPLICATION/POSTSCRIPT$Y BINHEX|45505346|76677264|* APPLICATION/POSTSCRIPT$Y ! Microsoft Word MACBINARY|5744424E|4D535744|* APPLICATION/MSWORD$Y BINHEX|5744424E|4D535744|* APPLICATION/MSWORD$Y |
$Y
flag set in order for the specified labelling to be
performed. Sample entries for additional types of attachments may be
found in the file mac_mappings.sample
in the PMDF table
directory.
If you want to convert non-MacMIME format parts to Binhex or Macbinary
format, such parts need to have X-MAC-TYPE
and
X-MAC-CREATOR
MIME Content-type:
parameter
values provided. Note that MIME relabelling can be used to force such
parameters onto parts that would not otherwise have them; see
Section 6.3.2 for a discussion of MIME relabelling.
3 There is no need to make entries for cc:Mail or Novell MHS channels as they will automatically perform the necessary conversions.5 See RFC 1740 (MacMIME) and RFC 1741 (Binhex). |
Previous | Next | Contents | Index |