1. Introduction▲
DreamMail (en abrégé DM) est un client mail gratuit d'origine chinoise, développé depuis plusieurs années par une petite équipe conduite par Zeng Xiquan 1. Malheureusement, comme souvent en pareil cas, la documentation est la première victime de ce projet aux moyens limités.
Si la plupart des fonctions de ce logiciel sont triviales à mettre en oeuvre, une connaissance plus approfondie de la manière dont DM manipule et conserve ses données peut se révéler utile, autant pour en rétablir l'intégrité que pour y accéder en contournant le logiciel lui-même.
C'est donc à une visite - under the hood - que je vous convie, en gardant toutefois à l'esprit le principe fondateur que tout utilisateur devrait s'imprimer au fer rouge sur la main : « SAUVEZ-LES »
2. Quoi de neuf▲
La version 4.6.5 a introduit la notion de dossiers virtuels qui permet de rassembler automatiquement des messages selon des critères pré-définis. Cette nouvelle fonction se traduit par l'apparition d'une table supplémentaire dans le fichier DmData.dao dénommée VirtualBox. Une modification mineure est également apportée à la table Email (ajout d'un champ et modification du rang de la clé primaire).
3. Identification et emplacements▲
DM utilise pour gérer ses données le moteur MS Jet DB 4.0 qui est également le format natif de l'application MS Access® 2000 & 2003. DM est un client mail multi-utilisateurs ce qui a conduit les concepteurs à adopter la structure suivante :
3-A. MultUser▲
Un fichier racine dénommé MultUser.dao. Il est toujours situé dans le répertoire de l'exécutable.
3-B. DmData▲
Autant de fichiers dénommés DmData.dao qu'il existe d'utilisateurs définis dans le logiciel. L'emplacement est libre et peut être choisi lors de la création de l'utilisateur. Le chemin peut être retrouvé et modifié dans ses propriétés. (voir : Fichier | gestionnaire d'utilisateurs | propriétés | base de données).
Par défaut, il s'agira d'un sous-répertoire du sous-répertoire User du répertoire d'installation de DM. Ce sous-répertoire constituera le répertoire racine des sous-répertoires propres à l'utilisateur considéré.
3-C. Fichiers dmd ou eml▲
DM, comme la plupart des clients mails, est également multi-comptes. Chacun d'entre eux donne lieu à la création d'un sous-répertoire portant le nom de l'adresse mail correspondante. Chaque message du compte, quelque soit sa nature (envoyé, reçu, spam, brouillon, etc.) et son emplacement (dossier), sera stocké individuellement dans un sous-répertoire "mensuel" composé de l'année et du mois - AAAAMM - sous une forme compressée propriétaire dmd ou dans le format eml.
Afin d'assurer le caractère unique du nom de message, celui-ci est composé du jour et de l'instant de création du fichier, millisecondes comprises, soit JJHHMMSSLLL pour un total de onze caractères. Exemple d'un message reçu le 11 janvier 2010 à 15 heures 32 minutes 23 secondes 902 millisecondes : ..\201001\11153223902.dmd ou eml.
Schéma de l'arborescence :
4. Structure interne▲
L'accès des fichiers dao est protégé par un mot de passe qui ne doit pas être confondu avec ceux qui protègent l'accès des comptes utilisateurs. Ce mot de passe d'une longueur de 20 caractères est indispensable pour accéder à l'organisation interne de ces fichiers dao : @i_10ve_U&^@^Rapid_?
4-A. Fichier MultUser.dao (table unique)▲
4-A-1. Table multuser (7 champs) - Paramètres des comptes utilisateurs▲
nom champ | type | nature |
---|---|---|
Id | num | ID de l'utilisateur (incrément auto à partir de 1) |
mUserName | ch150 | nom de l'utilisateur |
mPassword | ch50 | mot de passe - encodé - (facultatif) |
mIsDefault | num | flag utilisateur par défaut (activé : 1 ; inactif : 0) |
mDBFileName* | ch255 | nom complet de la base de données (avec son répertoire) |
mQuestion | ch250 | énoncé de la question en cas d'oubli du mdp (facultatif) |
mAnswer | ch250 | réponse (facultatif) |
* ${DreamMail} désigne le répertoire d'installation du programme
Si le mot de passe est conservé codé, tel n'est pas le cas de la question de "rattrapage" dont le contenu
figure en clair dans la base.
Conclusion : la protection est illusoire sauf s'il s'agit de protéger vos mails de votre petit neveu de cinq ans (et encore...)
4-B. Fichier DmData.dao (13 tables)▲
Observations générales (cet article est le résultat d'un travail de reverse qui peut comporter une part d'incertitude)
- Toutes les tables ont une clé primaire numérique dénommée Id et un champ OrgId qui conserve peut-être la valeur de la clé d'origine en cas d'import.
- Les champs indexés sont signalés par le caractère # suivi du nom de l'index (il n'y a pas de clés composées).
- Sauf indication contraire, les items des listes memo sont séparés par des retours à la ligne.
- Enfin, certains champs n'ont pas (encore) de fonction identifiée et sont signalés par le préfixe >.
4-B-1. Table Account (23 + 28 champs) - Paramètres des comptes mails▲
nom champ - 23 | type | nature |
---|---|---|
Id # | num | ID du compte mail (incrément auto à partir de 1) |
OrgId | num | ID |
aDisplayName | ch40 | libellé du compte qui sera affiché dans les messages sortants |
aEmailAddress | ch100 | adresse mail |
aReplyAddress | ch100 | adresse de réponse pour le destinataire |
aAccountIndex | num | index du compte |
aPop3 | ch200 | adresse du serveur pop3 |
aPop3Port | num | port pop3 (messages entrants) |
aSmtp | num | adresse du serveur smtp |
aSmtpPort | num | port smtp (messages sortants) |
aAccountName | ch60 | nom du compte utilisateur du serveur pop3 |
aPassword | ch250 | mot de passe - encodé |
aIsVerifyAsPop3 | num | mode authentification smtp - 1 : comme pop3 ; 0 : infos propre au smtp |
aVerifyUserName | ch60 | info propre à l'authentification smtp (nom utilisateur) |
aVerifyPassword | ch250 | info propre à l'authentification smtp (mot de passe) |
aIsActive | num | flag compte actif - 0 : désactivé ; 1 : activé |
aIsDelAfterRetr | num | flag « Laisser une copie sur le serveur » 0 : coché ; 1 : décoché |
aAccountType | num | 0 : compte smtp/pop3 ; 3 : compte webmail |
aMailColor | num | info couleur par défaut de la police des messages du compte (RVB) |
aAccountDisplayName | ch100 | nom du compte affiché dans l'interface DM |
aDelSrvBakMailDays | num | supprimé du serveur après n jours (si n=0 pas de suppression) |
aDelSrvBakOnMailDel | num | suppprimé du serveur si corbeille - 0 : décoché ; 1 : coché |
aOptions | memo | stockage de paramètres complémentaires (voir détail dans le tableau ci-dessous) |
aOptions - 28 champs | format : nomparamètre=valeurparamètre |
---|---|
SumType | nom du groupe |
> MailAssignID | par défaut valeur 1 ou -1 |
ProxyName | nom du proxy spécifique du compte (facultatif) |
SpecialAutoReceive | vérification auto des nouveaux messages - 0 : décoché ; 1 : coché |
AutoReceiveMin | nb de minutes entre chaque vérification |
NewMailTemplet* | nom complet du modèle nouveau (facultatif) |
ReplyMailTemplet* | nom complet du modèle réponse (facultatif) |
FwMailTemplet* | nom complet du modèle transfert (facultatif) |
FastReplyMailTemplet* | nom complet du modèle réponse rapide (facultatif) |
UsedNewMailTemplet | utilisation d'un modèle nouveau - 0 : décoché ; 1 : coché |
UsedReplyMailTemplet | nom complet du modèle réponse (facultatif) |
UsedFwMailTemplet | utilisation d'un modèle transfert - 0 : décoché ; 1 : coché |
UsedFastReplyMailTemplet | utilisation d'un modèle réponse rapide - 0 : décoché ; 1 : coché |
NewMailUserDefAccount | utilisation du compte par défaut lors de l'envoi - 0 : décoché ; 1 : coché |
POP3WithSSL | connexion au serveur pop3 avec ssl - 0 : décoché ; 1 : coché |
SmtpWithSSL | connexion au serveur smtp avec ssl - 0 : décoché ; 1 : coché |
> POP3SslType | par défaut valeur 1 |
> SmtpSslType | par défaut valeur 0 |
POP3LoginType | 0 : nom user + mdp ; 1 : APOP ; 2 : SASL |
SmtpLoginType | 0 : aucun ; 1 : ESMTP ; 2 : SASL |
SplitSendMail | découper automatiquement les messages - 0 : décoché ; 1 : coché |
SplitSendMail_Size | limite de taille de découpage (ko) |
SendVCardGuid | GUID de la vCard sélectionné pour l'envoi auto avec le message |
WebMailDefURL | URL du login par défaut (compte webmail uniquement) |
AutoReconnectOnSend | reconnexion auto limite serveur - 0 : décoché ; 1 : coché |
AutoReconnectTimes | nb de messages avant reconnexion auto |
> ReceiveHalfMail | par défaut valeur 0 |
> ListMailOnUnUsed | par défaut valeur 0 |
4-B-2. Table Assign (4 champs) - Paramètres des signatures▲
nom champ - 4 | type | nature |
---|---|---|
Id # | num | ID (incrément auto à partir de 1) |
OrgId | num | ID |
aName | ch100 | nom de la signature |
aHtml | memo | contenu de la signature (format html) |
4-B-3. Table BakUidl (8 champs) - Gestion des UIDL (Unique IDentification Listing) ▲
nom champ | type | nature |
---|---|---|
Id # | num | ID de l'enregistrement Uidl (incrément auto à partir de 1) |
OrgId | num | ID |
sAccountID # BakAccountIDIndex | num | identifiant du compte mail concerné (cf champ Id de la table Account) |
sReceiveDate | ch10 | date de réception format AAAAMMJJHH |
sUidl # BakUidlIndex | ch120 | identifiant unique du message reçu format UIDL |
> sMailSize | num | vide ne semble pas exploité ? |
sIsDelete | num | flag indiquant si le mail a été supprimé du serveur (0 : non ; 1 : oui) |
sNeverReceive | num | flag indiquant que le mail n'a pas été reçu (0 : reçu ; 1 : pas reçu) |
4-B-4. Table Contact (81 champs) - Paramètres des contacts▲
nom champ | type | nature |
---|---|---|
OrgId | num | ID |
iMailCount # ContactMailCountIndex | num | nombre de mails associés à ce contact |
Stars | num | évaluation du contact (0 à 5 étoiles comme les hôtels...) |
FirstName | ch100 | prénom |
LastName | ch100 | nom |
ShowAsName # ContactShowAsNameIndex | ch100 | nom affiché |
> ShowAsModifyed | num | vide ? |
Picture | blob | contenu de l'image associée au contact (photo identité) |
PicFileName | ch200 | nom complet du fichier image (photo identité) |
Email1 # ContactEmail1Index | ch100 | mail 1 |
Email2 # ContactEmail2Index | ch100 | mail 2 |
Email3 # ContactEmail3Index | ch100 | mail 3 |
Email4 # ContactEmail4Index | ch100 | mail 4 |
Email5 # ContactEmail5Index | ch100 | mail 5 |
ch100 | identifiant QQ (ICQ sauce chinoise) | |
Msn | ch100 | identifiant MSN |
Icq | ch100 | identifiant ICQ |
Skype | ch100 | identifiant Skype |
Online1 | ch100 | identifiant 1 pour d'autres réseaux |
Online2 | ch100 | identifiant 2 pour d'autres réseaux |
CorpName | ch200 | nom de l'entreprise |
CorpDepartment | ch100 | nom du service |
CorpTitle | ch100 | titre |
CorpWebPage | ch200 | page web de l'entreprise |
CorpOffice | ch100 | nom du bureau |
CorpVocation | ch100 | profession |
CorpManagerName | ch100 | nom du directeur |
CorpAssistantName | ch100 | nom de l'assistant |
CorpPostCode | ch20 | code postal travail |
CorpProvince | ch100 | département travail |
CorpCity | ch100 | ville travail |
CorpStreet | ch250 | rue travail |
CorpCountry | ch100 | pays travail |
CorpAddressIsDef | num | flag adresse travail par défaut - 0 : décoché ; 1 : coché |
PersnWebPage | ch200 | page web perso |
PersnPostCode | ch20 | code postal perso |
PersnProvince | ch100 | département perso |
PersnCity | ch100 | ville perso |
PersnStreet | ch250 | rue perso |
PersnCountry | ch100 | pays perso |
PersnAddressIsDef | num | flag adresse perso par défaut - 0: décoché ; 1 : coché |
Memos | memo | contenu du champ mémo |
NickName # ContactNickNameIndex | ch100 | surnom |
Appellation | ch100 | titre (formule politesse) |
Sex | ch10 | sexe |
PinYin # ContactPinYinIndex | ch1 | initiale |
PinYinModifyed | num | flag modification initiale - 0 : non ; 1 : oui |
SearchPinYin | ch200 | mots-clés recherche initiale |
Lovely | ch200 | préférences |
OnesStrong | ch200 | points forts |
Birthday # ContactBirthdayIndex | ch20 | date anniversaire |
Specialday # ContactSpecialdayIndex | ch20 | date spéciale à retenir |
BirthRemind # ContactBirthRemindIndex | num | flag rappel de la date anniversaire - 0 : non ; 1 : oui |
SpecialRemind # ContactSpecialRemindIndex | num | flag rappel de la date spéciale - 0 : non ; 1 : oui |
FamilyNumber | ch200 | n° assuré social |
Consort | ch100 | nom du conjoint |
Code_CorpPhone1 | ch100 | tel 1 travail |
Code_CorpPhone2 | ch100 | tel 2 travail |
Code_HomePhone1 | ch100 | tel1 domicile |
Code_HomePhone2 | ch100 | tel2 domicile |
Code_MainPhone | ch100 | tel principal |
Code_OtherPhone | ch100 | autre tel |
Code_SmallLT | ch100 | tel SmallLT |
Code_CorpFax | ch100 | n° télécopie travail |
Code_OtherFax | ch100 | autre n° de télécopie |
Code_MobilePhone | ch100 | tel portable |
Code_Assistant | ch100 | tel assistant |
Code_ISDN | ch100 | n° ISDN (ligne numérique spéciale) |
Code_Telegraph | ch100 | n° de télégraphe |
Code_ReplyPhone | ch100 | tel réponse |
Code_CarPhone | ch100 | tel voiture |
Code_TTYTDD | ch100 | n° téléscripteur |
ContactList | memo | liste des ID des contacts liés |
ModifyTime | ch20 | date de la dernière modification |
ModifyHistory | memo | historique des modifications apportées au contact depuis sa création |
CardGUID | ch40 | identifiant vCard |
Custom1 | ch100 | perso1 |
Custom2 | ch100 | perso2 |
Custom3 | ch100 | perso3 |
Custom4 | memo | commentaires |
ID | num | ID du contact (incrément auto à partir de 1) |
4-B-5. Table ContactGroup (6 champs) - Paramètres des groupes▲
nom champ | type | nature |
---|---|---|
Id # | num | ID du groupe |
OrgId | num | ID |
sFatherID | num | ID du groupe de niveau supérieur (0 = groupe principal) |
> sIndex | num | par défaut vide |
sName | ch120 | nom du groupe |
sPinYin | ch20 | initiale |
4-B-6. Table ContactInGroup (4 champs) - Table de liaison N à N Contact/ContactGroup▲
nom champ | type | nature |
---|---|---|
Id # | num | ID auto (incrément auto à partir de 1) |
OrgId | num | ID |
GroupID # AddrInGrpGroupIDIndex | num | ID du groupe de contacts |
ContactID # AddrInGrpContactIDIndex | num | ID du contact |
4-B-7. Table ContactPicture (9 champs) - Paramètres des images contacts▲
nom champ | type | nature |
---|---|---|
Id # | num | ID auto (incrément auto à partir de 1) |
OrgId | num | ID |
ContactID # ContactPicContactIDIndex | num | ID du contact associé à l'image |
PicFileName | ch200 | nom simple du fichier image (sans le chemin) |
SmallPicture | blob | stockage binaire de l'image réduite |
LargePicture | blob | stockage binaire de l'image normale |
Memos | ch200 | mémo associé au contact |
IsLink | num | flag image liée - oui : 1 ; non : 0 |
LinkUrl | ch250 | nom complet ou url du fichier image |
4-B-8. Table Email (49 champs) - Paramètres des messages▲
nom champ | type | nature |
---|---|---|
ID # | num | ID auto (incrément auto à partir de 1) |
OrgId | num | ID |
mAccountID # EmAccountIdIndex | num | ID du compte |
mMailBoxID # EmMailBoxIDIndex | num | ID du dossier (voir note en fin de tableau) |
> mCustomID | num | par défaut vide |
> mCaseID | num | par défaut vide |
mDisplayColor | num | code couleur de la police du message (RVB) |
mSize # EmSizeIndex | num | taille du message (octets) |
mPriority # EmPriorityIndex | num | priorité 4 : basse ; 2 : normale ; 0 : haute |
mIsRead # EmIsReadIndex | num | flag lecture faite - 0 : non ; 1 : oui |
> mReplyMailID # ReplyMailIDIndex | num | par défaut 0 |
> mFwMailID # FwMailIDIndex | num | par défaut 0 |
> mIsFlag # EmIsFlagIndex | num | par défaut 0 |
> mMailType # EmMailTypeIndex | num | par défaut 0 |
> mMailType_Text1 | ch100 | par défaut vide |
> mMailType_Text2 | ch100 | par défaut vide |
> mIsAttrExists # EmIsAttrExistsIndex | num | par défaut 0 |
mIsAskReadReply | num | flag accusé réception demandé - 0 : non ; 1 : oui |
mAskReadReplyAddress | ch200 | adresse mail de retour de l'AR |
mMessageID # EmMessageIDIndex | ch200 | Message-ID (champ standard RFC 5322, voir note en fin de tableau) |
mReferences # EmReferencesIndex | ch200 | Références (champ standard facultatif) |
mUidl # EMUidlIndex | ch50 | UIDL voir table BakUidl (défini que pour les messages reçus) |
mDate # EmDateIndex | ch100 | date du message format : AAAA-MM-JJ, hh:mm:ss |
mCreateDate # EmCreateDateIndex | ch30 | date de création du message dans DM (même format) |
mCharset | ch100 | code du charset |
mTrueFromIP # EmTrueFromIPIndex | ch255 | inexploitable, censée contenir l'IP de l'expéditeur... |
mSubject # EmSubjectIndex | ch250 | sujet |
mReplyTo | ch100 | adresse mail à utiliser pour la réponse (entre guillemets) |
mFrom # EmFromIndex | ch255 | champ standard expéditeur normalement "nom"<adresse mail> |
mFromShowName # EmFromShowNameIndex | ch255 | nom de l'expéditeur |
mFromShowAddr | ch255 | adresse de l'expéditeur |
mTo | memo | champ standard destinataire(s) séparés par une virgule |
mToShowName # EmToShowNameIndex | ch255 | nom de(s) destinataire(s) séparés par une virgule |
mToShowAddr | ch255 | adresse de(s) destinataire(s) |
mCc | memo | champ standard copie(s) items séparés par une virgule |
mCcShowName | ch255 | nom destinataire(s) copie items séparés par une virgule |
mCcShowAddr # EmCcShowAddrIndex | ch255 | adresse destinataire(s) copie items séparés par une virgule |
mHeaderMD5 | ch32 | valeur hash du header |
mBcc | memo | champ standard copie(s) cachée(s) items séparés par une virgule |
mWaitToSendTime # EmWaitToSendTimeIndex | ch50 | date de l'envoi différé format : AAAA-MM-JJ, hh:mm:ss |
mDisplayDecodeType | num | mode décodage du message (par défaut 0 : automatique) |
mAttrList | memo | liste des fichiers attachés - format : nomfichier|taillefichier (en octets) |
> mExtAttrList | memo | liste vide ? |
mDetail | memo | commentaire associé au message |
mZipText | blob | zip du contenu texte (utilisé par le volet prévisualisation) |
mZipHtml | blob | zip du contenu html (utilisé par le volet prévisualisation) |
mZipSource | blob | a priori vide remplacé par le fichier dmd ou eml depuis la v4 |
> mOtherInfo | memo | liste vide ? |
mSourceSaveFile* | ch255 | nom complet du fichier message (dmd ou eml) |
mIsEditMail | num | flag édition - 0 : message non édité ; 1 : message édité |
* ${DBPATH} désigne le répertoire racine des données de
l'utilisateur (emplacement de DmData.dao).
Note mMailBoxID : 0 : « Dossier local » ;
1 : « Reçus » ; 2 : « Non-Envoyés » ; 3 : « Envoyés » ; 4 : « Corbeille » ; 5 : « Brouillons » ; 6 : « Spam » ;
1000 et > : dossiers créés
Note mMessageID : les messages créés depuis le
client mail ont une valeur générique : DreamMailOutBox.
4-B-9. Table EmailBox (9 champs) - Paramètres des dossiers▲
nom champ | type | nature |
---|---|---|
Id # | num | ID du dossier (voir mMailBoxID ci-dessus pour les valeurs) |
OrgId | num | ID |
> bAccountID | num | par défaut 0 |
bIndex | num | n° d'ordre du dossier (base 0) à son niveau d'arborescence |
bName | ch120 | libellé du dossier |
bPassword | ch250 | mot de passe d'accès au dossier |
bAccountList | memo | ID du compte associé au dossier |
> bRevAccountList | memo | liste vide ? |
bParentid | num | ID du dossier parent (0 signifie pas de parent cad dossier local) |
4-B-10. Table FileList (5 champs) - Paramètres des fichiers ▲
nom champ | type | nature |
---|---|---|
Id # | num | ID auto (incrément auto à partir de 1) |
OrgId | num | ID |
aFileType | num | type |
aFileName | ch100 | nom du fichier |
aFileContent | blob | contenu binaire |
4-B-11. Table Filter (28 champs) - Paramètres des règles de messages▲
nom champ | type | nature |
---|---|---|
Id # | num | ID auto (incrément auto à partir de 1) |
OrgId | num | ID |
fName | ch100 | nom de la règle |
F_IN | num | flag réception - 0 : pas applicable à la réception ; 1 : applicable |
F_OUT | num | flag envoi - 0 : pas applicable à l'envoi ; 1 : applicable |
FAccountList | memo | liste des ID des comptes concernés par la règle (-1 : tous les comptes) |
FConditionText | memo | liste des conditions définies pour cette règle (syntaxe voir note en fin de tableau) |
FANDOR | num | toutes conditions (AND) : 0 - au moins une (OR) : 1 |
> fCaseSensi | num | flag casse ? par défaut 0 |
> fCopyToAccount | num | par défaut vide |
fCopyTo | num | ID du compte vers lequel le msg sera copié (-1 si option non activée) |
> fMoveToAccount | num | par défaut vide |
fMoveTo | num | ID du compte vers lequel le msg sera déplacé (-1 si option non activée) |
fAutoReply | num | flag réponse automatique - 0 : décochée ; 1 : cochée |
fReTempletFile | ch255 | nom complet du modèle utilisé pour cette réponse auto |
fAutoFw | num | flag transmission auto - 0 : décochée ; 1 : cochée |
fAutoFWList | memo | liste des adresses mails destinataires du transfert |
fFwTempletFile | ch255 | nom complet du modèle utilisé pour ce transfert auto |
fAddFlag | num | marquer comme (syntaxe note en fin de tableau) |
fPlaySnd | ch255 | nom complet du fichier wav |
fExecFile | ch255 | nom complet de l'exécutable |
fPassAfter | num | flag «ignorer les règles suivantes» - 0 : décochée ; 1 : cochée |
fReject | num | flag « refuser la réception » - 0 : décochée ; 1 : cochée |
fDelete | num | flag « effacer directement du serveur » - 0 : décochée ; 1 : cochée |
fAllMail | num | flag « tous les messages » - 0 : décochée ; 1 : cochée |
fIndex | num | position dans la liste affichée (base 0) |
fMovetoAccountList | ch255 | liste contenant la même info que fMoveTo |
fCopytoAccountList | ch255 | liste contenant la même info que fCopyTo |
Note FConditionText :
son format est : élément_message|opérateur|item
élément_message et opérateur sont exprimés par un indice numérique,
l'item est une chaine libre
valeur | élément_message | opérateur |
---|---|---|
1 | De | Contient |
2 | A | Ne contient pas |
3 | CC | Est égal à |
4 | BCC | Différent de |
5 | Sujet | Débute par |
6 | Fichier joint | Termine par |
7 | En-tête | |
8 | Contenu du message | |
9 | Source | |
10 | IP | |
11 | Message en anglais | (combiné avec la valeur 255) |
Note fAddFlag :
-88 : Supprimer plus tard | -89 : Intéressant | -90 : Romantique | -91 : Technologie | -92 : Business | -93 : Société | -94 : Ami |
-95 : Important | -96 : Non-répondu | -97 : Dangereux | -98 : Liste noire | -99 : Normal | -100 : Tête de liste |
4-B-12. Table OtherInfo (10 + 4 champs) - Divers▲
nom champ | type | nature |
---|---|---|
Id # | num | ID |
OrgId | num | ID |
mVersion | ch40 | date de version du logiciel |
mUserInfo | memo | liste params du compte utilisateur (voir tableau suivant) |
mBlackList | memo | liste noire |
mWhiteList | memo | liste blanche |
> mStationery | memo | liste vide ? |
> mFolderList | memo | liste vide ? |
> mProxyList | memo | liste vide ? |
> mFolderAutoDelete | memo | liste des auto-purges des dossiers ? |
mUserInfo - 4 champs | format : nomparamètre=valeurparamètre |
---|---|
Password | mot de passe encodé |
Question | énoncé de la question en cas d'oubli du mdp (facultatif) |
Answer | réponse (facultatif) |
UserName | nom du compte utilisateur |
4-B-13. Table VirtualBox (7 + 34 champs) - Dossiers virtuels▲
nom champ | type | nature |
---|---|---|
Id # | num | ID incrément auto à partir de 200000 |
OrgId | num | ID par défaut vide |
> bIndex | num | par défaut 0 |
bName | ch120 | nom du dossier virtuel |
RawText | memo | contient les paramètres de définition du dossier (voir tableau ci-dessous) |
SQLText | memo | chaine de sélection en langage SQL |
bParentid | num | ID du dossier parent (10 signifie pas de parent cad dossier virtuel racine) |
RawText - 34 champs | format : nomparamètre=valeurparamètre |
---|---|
DynamicMailCount | flag Actualiser automatiquement le compteur - 0 : non coché ; 1 : coché |
UnRead | flag Non-Lus - 0 : non coché ; 1 : coché |
HasAttr | flag Fichier joint - 0 : non coché ; 1 : coché |
UnReply | flag Non-Répondus - 0 : non coché ; 1 : coché |
HasDetail | flag Commentaire - 0 : non coché ; 1 : coché |
HasFlag | flag Catégorie - 0 : non coché ; 1 : coché |
IsHighPriority | flag Priorité élevée - 0 : non coché ; 1 : coché |
Attr | nom fichier joint |
Detail | contenu commentaire |
FlagIndex | indice de la catégorie (-1 : toutes) |
IsIncludeFrom | flag "De" contient - 0 : non coché ; 1 : coché |
IncludeFrom | contenu du champ expéditeur |
IsIncludeSendTo | flag "A/CC" contient - 0 : non coché ; 1 : coché |
IncludeSendTo | contenu du champ destinataire/copie |
IsIncludeSubject | flag "Sujet" contient - 0 : non coché ; 1 : coché |
IncludeSubject | contenu du sujet |
IsIncludeSize | flag Plus grand que - 0 : non coché ; 1 : coché |
IncludeSize | taille (en Ko) |
IsIncludeTime | flag En fonction de la date - 0 : non coché ; 1 : coché |
TimeToday | flag Aujourd'hui - 0 : non activé ; 1 : activé |
TimeLast3 | flag Moins de 3 jours - 0 : non activé ; 1 : activé |
TimeLast7 | flag Une semaine - 0 : non activé ; 1 : activé |
TimeLastOther | flag Autre - 0 : non activé ; 1 : activé |
TimeLastOtherDay | nombre de jours |
TimeOtherRange | flag Du .. Au .. - 0 : non activé ; 1 : activé |
TimeOtherBegin | date début - format : jj/mm/yyyy hh:mm:ss |
TimeOtherEnd | date fin - format : jj/mm/yyyy hh:mm:ss |
TimeRangeType | flag date - 1 : par date d'envoi/réception ; 2 : par date de création du message |
Cond_IsOr | flag Traitement - 0 : toutes conditions remplies ; 1 : au moins une condition remplie |
ExcludeDeleteBox | flag Ne pas traiter Corbeille - 0 : non coché ; 1 : coché |
ExcludeBulkBox | flag Ne pas traiter Spam (Indésirables) - 0 : non coché ; 1 : coché |
ExcludeInMails | flag Ne pas traiter Reçus - 0 : non coché ; 1 : coché |
ExcludeOutMails | flag Ne pas traiter Envoyés - 0 : non coché ; 1 : coché |
ExcludeEncyptFolder | flag Ne pas traiter Dossiers chiffrés - 0 : non coché ; 1 : coché |
5. Conclusion▲
La connaissance précise de l'organisation des données du programme permet de réaliser des tâches utiles comme le rétablissement de l'intégrité de la base en cas de corruption ou une sauvegarde plus sélective que celle proposée par DM. Des tâches plus originales, comme l'envoi de mails par injection directe dans la base de données, donneront lieu à des exemples en Vbscript.
6. Liens▲
7. Remerciements▲
Je tiens à remercier airballman et jacques jean pour leur relecture attentive et leurs observations pertinentes.