Arquitectura de almacenamiento de Exchange

 

Última modificación del tema: 2005-05-23

Los servidores de Exchange almacenan los datos en dos archivos: un archivo .edb y un archivo .stm. Juntos, el archivo .edb y el archivo .stm forman un repositorio de almacén de Exchange. Por ejemplo, el almacén de buzones predeterminado de un servidor Exchange utiliza los archivos Priv1.edb y Priv1.stm. El almacén de carpetas públicas predeterminado utiliza los archivos Pub1.edb y Pub1.stm. El archivo .edb contiene muchas tablas que albergan metadatos de todos los mensajes de correo electrónico y otros elementos del almacén de Exchange, así como el contenido de los mensajes MAPI. El archivo .edb es una base de datos ESE y, como se utiliza principalmente para almacenar mensajes y datos adjuntos MAPI, se denomina también base de datos basada en MAPI. El archivo .stm, sin embargo, almacena contenido de Internet nativo. Puesto que el contenido de Internet se escribe en formato nativo, no es necesario convertir los mensajes ni demás elementos al formato de Exchange (como ocurría en Exchange 5.5 y versiones anteriores). El archivo .stm es también una base de datos ESE, denominada base de datos de secuencias. Los archivos .edb y .stm funcionan a la par, y la firma de base de datos (un número aleatorio de 32 bits combinado con la hora de creación de la base de datos) se almacena como encabezado en ambos archivos. El esquema interno de las páginas .stm se almacena en el archivo .edb.

Nota

Puede cambiar el nombre de las bases de datos .edb y .stm y moverlas a directorios distintos en el Administrador del sistema de Exchange. Puesto que los archivos .edb y .stm juntos crean un repositorio completo del almacén de Exchange, debe mantenerlos juntos y asignarles un nombre común con extensiones distintas (.edb y .stm).

Exchange Server 2003 utiliza transacciones para controlar los cambios en los grupos de almacenamiento. Estas transacciones se recogen en un registro de transacciones, de forma similar a como se almacenan las transacciones en las bases de datos tradicionales. Los cambios se validan o se deshacen en función del éxito de la transacción. Si se produce un error, se utilizan los registros de transacciones (juntos con los archivos de base de datos y, en algunas ocasiones, el archivo de punto de control) para restaurar la base de datos. La utilidad que administra las transacciones es el servicio Almacén de información de Microsoft Exchange (Store.exe). Todas las entradas no validadas del registro de transacciones se consideran también parte de una base de datos Exchange actual, como se ilustra en la figura siguiente.

c236b0b1-1e8b-4f56-9643-4813d0d54acc

Hay dos tipos de bases de datos disponibles en Exchange Server 2003:

  • Bases de datos de almacén privado   Estas bases de datos almacenan buzones y colas de mensajes para los conectores de mensajería basados en MAPI.
  • Bases de datos del almacén público   Estas bases de datos almacenan jerarquías y contenido de carpetas públicas.

En la figura siguiente se ilustra la arquitectura interna del almacén de Exchange. El servicio Almacén de información de Microsoft Exchange (Store.exe) utiliza el Motor de almacenamiento extensible (ESE) para obtener acceso a los archivos de base de datos en el sistema de archivos, y proporciona acceso a los datos a través de distintas interfaces, como MAPIsvr, ExPOP, ExIMAP, ExSMTP y ExOLEDB. Las interfaces de programación de aplicaciones y aplicaciones cliente, como Objetos de datos de colaboración para Exchange (CDOEX), pueden utilizar estas interfaces o comunicarse con el módulo de base de datos de mensajería (MDB).

40668745-b91e-4505-a7b9-ab88974a9ad0

Grupos de almacenamiento

Cada grupo de almacenamiento está formado por un conjunto de archivos de registro y archivos auxiliares (bases de datos temporales internas, el archivo de punto de control y los registros reservados) para todas las bases de datos (archivos .edb y .stm) del grupo. Exchange Server 2003 admite varios grupos de almacenamiento y varias bases de datos en cada grupo de almacenamiento. En Exchange Server 2003, un servidor admite hasta cuatro grupos de almacenamiento y un grupo de almacenamiento admite hasta cinco bases de datos. Gracias a la compatibilidad con varias bases de datos, se puede distribuir un gran número de buzones y carpetas públicas entre muchas bases de datos más pequeñas y, de ese modo, facilitar la administración de las bases de datos. Exchange 2000 Server y Exchange Server 2003 admiten hasta 20 bases de datos de buzones y carpetas públicas en un único servidor.

Arquitectura de los grupos de almacenamiento

Como se ilustra en la figura siguiente, todos los grupos de almacenamiento se alojan desde el mismo proceso Store.exe. Cada grupo de almacenamiento se representa por una instancia de ESE.

6ff925c2-ec78-489a-b8ed-30891a3d25f2

Dentro de cada grupo de almacenamiento, cada pareja de bases de datos .edb y .stm representa un almacén de buzones o un almacén de carpetas públicas. Como se muestra en la figura 10.3, todos los almacenes de buzones y carpetas públicas de un determinado grupo de almacenamiento comparten un conjunto común de archivos de registro y otros archivos del sistema. Estos archivos permiten el procesamiento orientado a transacciones.

Los archivos de registro y otros archivos del sistema de cada grupo de almacenamiento tienen los siguientes fines:

  • <Prefijo de registro>xxx.chk   Éste es el archivo de punto de control (por ejemplo, E00.chk) que determina qué transacciones deben procesarse para moverlas desde los archivos de registro de transacciones a las bases de datos. Los archivos de punto de control se actualizan cuando ESE escribe una determinada transacción en un archivo de base de datos de un disco. Esta actualización hace que el archivo de punto de control apunte siempre a la última transacción que se ha transferido correctamente a la base de datos, lo que proporciona un mecanismo rápido de recuperación. Sin embargo, los archivos de punto de control no son necesarios para validar transacciones en las bases de datos. ESE tiene la capacidad de procesar directamente archivos de registro de transacciones y determinar por sí mismo qué transacciones aún no se han transferido. Este proceso es bastante más lento que utilizar puntos de control.

    Nota

    El Motor de almacenamiento extensible garantiza que las transacciones no se escriban varias veces en una base de datos.

  • Exx.log   Éste es el archivo actual del registro de transacciones del grupo de almacenamiento. Los archivos de registro de transacciones permiten que ESE administre el almacenamiento de datos con gran rapidez. ESE almacena las nuevas transacciones, como la entrega de un mensaje, en memoria caché y en el registro de transacciones a la vez. Los datos se escriben secuencialmente. Los nuevos datos se agregan a los existentes sin necesidad de operaciones de bases de datos complejas. Posteriormente, las transacciones se transfieren en grupo desde la memoria caché a las bases de datos reales, que las actualizan.
    De forma predeterminada, el grupo de almacenamiento predeterminado, llamado Primer grupo de almacenamiento, utiliza el prefijo E00, lo que produce un archivo de registro de transacciones denominado E00.log. El archivo E00.log se utiliza para todos los almacenes de buzones y carpetas públicas de este grupo de almacenamiento. Si crea otros grupos de almacenamiento, el número de prefijo se incrementa en E01, E02 y E03.

  • <Prefijo de registro>XXXXX.log   Éstos son los archivos de registro de transacciones que no contienen más espacio para otros datos. De forma predeterminada, los archivos de registro de transacciones tienen un tamaño exacto de 5.242.880 bytes (cinco megabytes). En teoría, es posible, aunque no recomendable, cambiar el tamaño de los archivos de registro. Cuando un registro está lleno, se cambia de nombre para permitir la creación de un nuevo archivo de registro de transacciones vacío. Los archivos de registro de transacciones renombrados se denominan archivos de registro anteriores. El formato de nombre de los archivos de registro anteriores es <Prefijo de registro>XXXXX.log (como E00XXXXX.log), donde XXXXX representa un número hexadecimal de cinco dígitos desde 00000 a FFFFF. Los archivos de registro anteriores residen en los mismos directorios que el archivo de registro de transacciones actual.

  • Res1.log y Res2.log   Éstos son archivos de registro de transacciones reservados para el grupo de almacenamiento. Los archivos de registro reservados son un repositorio de emergencia de las transacciones. Proporcionan espacio en disco suficiente para escribir una transacción desde la memoria al disco duro, aunque el disco de un servidor esté demasiado lleno para admitir nuevas transacciones en un archivo de registro. Los archivos de registro reservados se encuentran en el directorio de registro de transacciones. Se crean automáticamente cuando se inicializan las bases de datos. No se pueden crear posteriormente.
    ESE sólo utiliza estos archivos para realizar un proceso de transacción actual. A continuación, envía una notificación de error a Store.exe para desmontar de forma segura el almacén de Exchange. El registro de sucesos de aplicación contiene una entrada que indica el problema. En esta situación, deberá crear espacio libre adicional en el disco duro (por ejemplo, deberá agregar un nuevo disco duro) antes de volver a montar la base de datos.

  • Tmp.edb   Ésta es un área de trabajo temporal para el procesamiento de transacciones. Tmp.edb contiene información temporal que se elimina cuando se desmontan todos los almacenes del grupo de almacenamiento o cuando se detiene el servicio Almacén de información de Exchange.

    Nota

    Tmp.edb no se incluye en las copias de seguridad en línea.

  • <nombre de archivo>.edb   Éstos son archivos de base de datos de texto enriquecido para almacenes privados o públicos. El archivo de base de datos de texto enriquecido del almacén privado predeterminado se llama Priv1.edb. El archivo del almacén público predeterminado se llama Pub1.edb.

  • <nombre de archivo>.stm   Éstos son archivos de contenido de secuencias de Internet para bases de datos individuales. El archivo de base de datos de secuencias del almacén privado predeterminado se llama Priv1.stm. El archivo del almacén público predeterminado se llama Pub1.stm.

Atributos del grupo de almacenamiento en Active Directory

Puede determinar la ruta de acceso de un archivo de registro de transacciones de un grupo de almacenamiento y su nombre en el Administrador del sistema de Exchange. Haga clic con el botón secundario del mouse (ratón) en el grupo de almacenamiento que desee, seleccione Propiedades y, en la ficha General, examine la información de los campos Ubicación del registro de transacciones y Prefijo del archivo de registro. Mediante los botones Examinar, puede mover los archivos de registro de transacciones y del sistema a una nueva ubicación, como otra unidad física.

Las opciones de configuración de los grupos de almacenamiento se almacenan en Active Directory. Si desea utilizar Edición de ADSI para localizar el objeto de directorio de un grupo de almacenamiento, debe abrir el contexto de nomenclatura de configuración, expandir los nodos de los servicios, expandir CN=Microsoft Exchange y después expandir el objeto de organización de Exchange, el grupo administrativo y el contenedor de servidores. Debajo encontrará un contenedor llamado CN=InformationStore, que incluye los grupos de almacenamiento, como CN=First Storage Group. La clase de los objetos de grupo de almacenamiento es msExchStorageGroup. Si piensa utilizar secuencias de comandos personalizadas para administrar los recursos del almacén de Exchange, puede tener acceso a los objetos msExchStorageGroup mediante las interfaces de servicio de Active Directory (ADSI).

El siguiente código de ejemplo muestra cómo tener acceso al grupo de almacenamiento predeterminado en un servidor llamado SERVER01 en una organización de Exchange llamada Contoso. Muestra la ruta de acceso actual a los archivos de registro de transacciones de ese grupo de almacenamiento.

strStorageGroupDN = "CN=First Storage Group," _
                  & "CN=InformationStore," _
                  & "CN=SERVER01,CN=Servers," _
                  & "CN=First Administrative Group," _
                  & "CN=Administrative Groups," _
                  & "CN=Contoso,CN=Microsoft Exchange," _
                  & "CN=Services,CN=Configuration," _
                  & "DC=Contoso,DC=com"
Set oStorageGroup = GetObject("LDAP://" & strStorageGroupDN)
MsgBox oStorageGroup.Get("msExchESEParamLogFilePath")

A continuación, se incluyen los atributos relevantes de los objetos msExchStorageGroup que se pueden utilizar en secuencias de comandos personalizadas basadas en ADSI:

  • msExchESEParamCircularLog   Éste es un indicador booleano que determina si el registro circular está habilitado o deshabilitado. El valor de 0 indica que el registro circular está deshabilitado y el valor de 1 indica que está habilitado.
    El registro circular hace que ESE descarte las transacciones cuando los cambios validados se transmiten al archivo de base de datos del disco. El archivo de punto de control indica los archivos de registro y las entradas de transacciones que se han validado correctamente en la base de datos. Todos los registros anteriores se eliminan, y las transacciones del archivo de registro de transacciones actual se marcan como obsoletas. Las nuevas transacciones sobrescribirán las entradas obsoletas en el registro de transacciones actual antes de que se cree un nuevo archivo de registro.

    Nota

    Mediante la depuración de transacciones, el registro circular reduce el consumo de espacio en disco. Sin embargo, el registro circular no es compatible con configuraciones de tolerancia a errores complejas ni con algunos tipos de copia de seguridad en línea que dependen de la existencia de registros de transacciones. Cuando el registro circular está habilitado, sólo puede realizar copias de seguridad completas. No puede realizar copias de seguridad que dependan de archivos de registro de transacciones, como copias de seguridad diferenciales o incrementales. Cuando recupere los datos, no podrá reproducir los archivos de registro de transacciones, por lo que no será posible restaurar datos posteriores a la copia de seguridad más reciente. Por el contrario, si las transacciones no se eliminan automáticamente mediante el registro circular, podrá recuperar datos posteriores a la copia de seguridad más reciente reproduciendo transacciones que aún existan en un disco duro. Mientras que el registro circular está habilitado de forma predeterminada en Exchange Server 5.5, está deshabilitado de forma predeterminada en Exchange 2000 Server y Exchange Server 2003.

  • msExchESEParamEventSource   Ésta es una cadena del descriptor de procesos independiente del lenguaje que apunta a la clave del servicio Almacén de información de Microsoft Exchange (MsExchangeIS) en el Registro bajo HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.

  • msExchESEParamLogFilePath   Este atributo determina la ruta de acceso a archivos de registro de transacciones de un grupo de almacenamiento, como C:\Archivos de programa\Exchsrvr\mdbdata.

  • msExchESEParamLogFileSize   Este atributo especifica el tamaño del archivo de registro en kilobytes (KB). El valor predeterminado es 5.120. Este valor no debe cambiarse nunca.

  • msExchESEParamSystemPath   Este atributo especifica la ruta de acceso al archivo de punto de control, como C:\Archivos de programa\Exchsrvr\mdbdata, así como la ruta de acceso a todas las bases de datos temporales que puedan existir.

  • msExchESEParamZeroDatabaseDuringBackup   Éste es un indicador booleano que determina si los registros eliminados y los valores de tipo Long se sobrescriben con ceros durante las operaciones de copia de seguridad. El valor de 0 indica que los registros no se sobrescriben. El valor de 1 indica que las bases de datos se sobrescriben con ceros.

  • msExchESEParamEnableOnlineDefrag   Éste es un indicador booleano que determina si el servicio Almacén de información de Microsoft Exchange debe realizar la desfragmentación en línea de bases de datos. El valor de 0 indica que no debe realizarse la desfragmentación en línea. El valor de 1 indica que debe realizarse la desfragmentación en línea durante los ciclos de mantenimiento programados.

    Nota

    La desfragmentación en línea libera espacio en las bases de datos, pero no reduce el tamaño de los archivos de base de datos. Las incoherencias de la base de datos se corrigen al iniciar y apagar el servidor en un proceso denominado recuperación de software.

  • msExchESEParamEnableIndexChecking   Éste es un indicador booleano que determina si deben comprobarse los índices Unicode en la versión del sistema operativo. El valor de  0 indica que no se realiza la comprobación de índices. El valor de  1 indica que se realiza la comprobación de índices. Este parámetro detecta los cambios en el sistema operativo resultantes de actualizar a una versión más reciente o de aplicar un Service Pack. Este indicador determina si el criterio de ordenación de Unicode ha cambiado. Siempre que se produce este cambio en el sistema operativo, se efectúa automáticamente una nueva indización.

  • msExchESEParamBaseName   Este atributo especifica el nombre base de los archivos de registro de este grupo de almacenamiento. Por ejemplo, un nombre base de E00 produce el nombre del archivo de registro de transacciones E00.log.

  • msExchESEParamDbExtensionSize   Este atributo especifica el tamaño de extensión de la base de datos en páginas. El valor predeterminado es 2 megabytes (MB).

  • msExchESEParamPageTempDBMin   Este atributo especifica el tamaño mínimo de la base de datos temporal en páginas. El valor predeterminado es 0.

  • msExchESEParamCheckpointDepthMax   Este atributo especifica la profundidad de punto de control máxima preferida (no de hardware) en bytes.

Requisitos de espacio mínimo en disco de los grupos de almacenamiento

Cada grupo de almacenamiento consume alrededor de 50 MB de espacio en disco libre. Los archivos que el grupo de almacenamiento necesita anteriormente indicados utilizan un mínimo de 11 MB de espacio en disco. El espacio en disco mínimo para los almacenes privado y público es de 5 MB y 8 MB, respectivamente. Aunque el total de espacio en disco utilizado es alrededor de 24 MB, se necesita espacio en disco adicional para la creación real del grupo de almacenamiento y para las operaciones de lectura y escritura.

Cuando trabaje con grupos de almacenamiento, tenga en cuenta lo siguiente:

  • Un servidor que ejecuta Exchange Server 2003 puede contener hasta cinco grupos de almacenamiento. Dado que uno de estos grupos está reservado para las operaciones de recuperación de base de datos, sólo se pueden utilizar los cuatro restantes para alojar bases de datos que estén accesibles a los clientes. Si se intentan crear más de cuatro grupos de almacenamiento, aparecerá un mensaje de error.
  • Sólo se pueden crear cinco bases de datos en un grupo de almacenamiento. Si se intentan crear más bases de datos, aparecerá un mensaje de error.

Bases de datos del almacén de Exchange

Exchange Server utiliza ESE como un motor de base de datos integrado que determina la estructura de las bases de datos y administra la memoria. El motor de base de datos almacena en caché las bases de datos en memoria transfiriendo fragmentos de datos (páginas) de cuatro kilobytes dentro y fuera de la memoria. Actualiza las páginas en memoria y vuelve a escribir páginas nuevas o actualizadas en el disco. Cuando llegan solicitudes al sistema, el motor de base de datos puede almacenar los datos en memoria en un búfer para que no sea necesario tener acceso al disco constantemente. Con esto se aumenta la eficacia del sistema, ya que escribir en memoria es aproximadamente 200.000 veces más rápido que escribir en disco. Cuando los usuarios realizan solicitudes, el motor de base de datos empieza a cargar las solicitudes en memoria y marca las páginas como sucias. Una página sucia es una página en memoria que contiene datos. Estas páginas sucias se almacenan posteriormente en las bases de datos del servicio Almacén de información de Microsoft Exchange del disco.

Aunque el almacenamiento en caché de los datos en memoria es la forma más rápida y eficaz de procesar los datos, implica que mientras Exchange se encuentra en ejecución, la información del disco nunca se actualiza completamente. La última versión de la base de datos está en memoria y, puesto que muchos cambios en memoria aún no están en el disco, la base de datos y la memoria no están sincronizadas. Si hay alguna página sucia en memoria que no se ha transferido y escrito en disco, las bases de datos se marcan como incoherentes. Las bases de datos de Exchange sólo se sincronizan cuando todas las páginas sucias en memoria se transfieren a disco. Esto ocurre cuando se cierra correctamente el servicio Almacén de información de Microsoft Exchange. Durante el proceso de cierre, el servicio Almacén de información de Microsoft Exchange vuelca todas las páginas a disco.

Archivo de base de datos MAPI

El archivo de base de datos MAPI de Exchange Server 2003 contiene las tablas que albergan los metadatos de todos los mensajes de correo electrónico, otros objetos de la base de datos y el contenido de los mensajes MAPI. Cada carpeta mostrada en Microsoft Office Outlook es una tabla de base de datos distinta del almacén de Exchange. Cada criterio de ordenación utilizado para ver estas carpetas se representa mediante un índice distinto en esa tabla. El proceso Store.exe administra estos criterios de ordenación.

Los mensajes de los clientes MAPI, como Outlook, se almacenan en la base de datos MAPI, del mismo modo que se almacenaban en las versiones anteriores de Exchange Server. Los clientes basados en MAPI pueden tener acceso entonces a estos mensajes sin conversión. Sin embargo, si un cliente basado en el protocolo de Internet intenta leer un mensaje de esta base de datos, el mensaje se convierte al formato solicitado.

El archivo .edb tradicional y el archivo .stm que lo acompaña forman una única unidad. Uno de estos archivos apenas sirve para nada sin el otro archivo. Es importante comprender que una sola base de datos del servicio Almacén de información de Microsoft Exchange contiene dos archivos, el archivo .edb y el archivo .stm.

Un registro del archivo .edb contiene una columna (del tipo de datos JET_coltypSLV) que hace referencia a una lista de páginas del archivo de secuencias que contiene los datos sin procesar. Los datos de uso de espacio (cuatro kilobytes de páginas como máximo) y de suma de comprobación de los datos del archivo de secuencias se almacenan en el archivo .edb.

Archivo de base de datos de secuencias

En Exchange Server 5.5 y versiones anteriores, los mensajes se almacenan en formato encapsulado de base de datos de mensajes (MDBEF). Éste es el formato nativo para los clientes de Outlook. Cuando un cliente que no se basa en MAPI solicita un mensaje, el servicio Almacén de información de Microsoft Exchange convierte el contenido de MDBEF al formato correspondiente en el que el cliente lo solicita. Esta conversión consume ancho de banda del procesador y reduce el rendimiento del servidor.

Las últimas versiones de ESE permiten que los clientes de mensajería de Internet almacenen los datos sin procesar en formato nativo. El repositorio de estos datos sin procesar recibe el nombre de base de datos de secuencias o, simplemente, de archivo de secuencias. El archivo de secuencias no tiene sobrecarga de árbol equilibrado (árbol B), sino que contiene dos páginas de cuatro kilobytes de información de encabezado y páginas de cuatro kilobytes de datos sin procesar. Esta estructura de datos plana está diseñada para los objetos binarios grandes (BLOB) de datos que probablemente no necesitan conversión de contenido y que pueden recibirse y transmitirse muy rápidamente.

Promoción de propiedades

La promoción de propiedades determina dónde se almacenan los datos en una base de datos ESE y, por tanto, es un concepto importante que debe conocerse. El servicio Almacén de información de Microsoft Exchange admite la promoción de propiedades de los datos incluidos en el archivo .stm y el archivo .edb. La promoción de propiedades permite mantener de forma eficaz las vistas de carpeta y los índices. Por ejemplo, las propiedades de un mensaje distribuido al archivo .stm, como el remitente, el asunto y la fecha de envío y recepción, se promueven a los registros que representan el mensaje en el archivo .edb.

Cuando un cliente MAPI, como Microsoft Outlook, envía un mensaje al servicio Almacén de información de Microsoft Exchange, el contenido de ese mensaje se almacena en el archivo .edb. Si un cliente no basado en MAPI abre el mensaje, el servicio Almacén de información de Microsoft Exchange realiza una conversión inmediata del contenido MAPI al formato de Internet efectuando parte de la conversión y llamando a IMAIL que, a su vez, llama a RTFHTML para completar la conversión. Ninguna parte de esta conversión es permanente, lo que significa que los datos no se extraen del archivo .edb ni se escriben en el archivo .stm.

Si un cliente de Internet envía un mensaje al servicio Almacén de información de Microsoft Exchange, el contenido de ese mensaje se almacena en el archivo .stm. Algunos encabezados del mensaje de Internet se duplican en el archivo .edb para que el servicio Almacén de información de Microsoft Exchange pueda encontrar el mensaje. Este proceso se denomina conversión de estado 0.

Si un cliente pide una propiedad, como PR_Subject, o uno de sus muchos alias, el servicio Almacén de información de Microsoft Exchange promueve toda la información del encabezado del mensaje de Internet a Properties. Este proceso se denomina conversión de estado 1.

Si un cliente pide información sobre los datos adjuntos, el servicio Almacén de información de Microsoft Exchange crea un pseudoduplicado (en formato MAPI) del mensaje de Internet. Al principio, el mensaje continúa en el archivo .stm. Sin embargo, muchos de los datos necesarios para el acceso MAPI se encuentran en el archivo .edb. Si un cliente altera el mensaje de forma que cambia las extensiones multipropósito de correo Internet (MIME), la versión del archivo .stm del mensaje se descarta y se conserva el archivo .edb del mensaje. Este proceso se denomina conversión de estado 2.

Independientemente de cómo se envíe un mensaje al servicio Almacén de información de Microsoft Exchange, si Exchange Server recibe contenido de Internet que incluye contenido Aplicación/ms-tnef, el mensaje pasa inicialmente al archivo .stm, pero inmediatamente después se descodifica y se mueve al archivo .edb. Lo mismo ocurre con los mensajes con datos adjuntos winmail.dat codificados mediante UUEncode. El formato de encapsulamiento neutro para el transporte (TNEF) y Winmail.dat son métodos de encapsulamiento de mensajes MAPI que conservan las propiedades MAPI en transportes que no admiten MAPI. Por tanto, el principio general de que los mensajes MAPI residen en el archivo .edb y los mensajes de Internet residen en el archivo .stm es correcto. En el modo de funcionamiento actual, el TNEF está descodificado antes de que se lea alguna de las propiedades MAPI.